<?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>205578</bug_id>
          
          <creation_ts>2019-12-24 01:16:05 -0800</creation_ts>
          <short_desc>Not using strict mode within ClassDeclaration statement</short_desc>
          <delta_ts>2020-04-08 04:20:19 -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>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210181</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>sunlili</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>annulen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>psaavedra</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1601382</commentid>
    <comment_count>0</comment_count>
    <who name="">sunlili</who>
    <bug_when>2019-12-24 01:16:05 -0800</bug_when>
    <thetext>The bug can be reproduced in latest jsc version.
code:

class c extends(d = function() {
    return 0;
}, d) {};

JSC print nothing, however, it should throw an error.

According to ecma-262
• All parts of a ClassDeclaration or a ClassExpression are strict mode code.
• In strict mode code, assignment to an undeclared identifier or otherwise unresolvable reference does not create a property in the global object. When a simple assignment occurs within strict mode code, its LeftHandSideExpression must not evaluate to an unresolvable Reference. If it does, a ReferenceError exception is thrown.
So, assignment to ‘d’, which is undeclared, should throw a ReferenceError exception.

ISec Lab
2019.12.24</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601494</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-25 10:36:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/58194589&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632991</commentid>
    <comment_count>2</comment_count>
      <attachid>394293</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-23 13:22:36 -0700</bug_when>
    <thetext>Created attachment 394293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633001</commentid>
    <comment_count>3</comment_count>
      <attachid>394293</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-23 13:40:07 -0700</bug_when>
    <thetext>Comment on attachment 394293
Patch

Can you check whether bytecode execution works if we have `codeBlock-&gt;isStrictMode()` thing in runtime code?
For example, we are checking `codeBlock()-&gt;isStrictMode()` in deleteById called from operationDeleteByIdOptimize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633021</commentid>
    <comment_count>4</comment_count>
      <attachid>394293</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-23 14:11:17 -0700</bug_when>
    <thetext>Comment on attachment 394293
Patch

You are right, we use that in several places, this is not correct...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634894</commentid>
    <comment_count>5</comment_count>
      <attachid>394733</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-27 11:11:34 -0700</bug_when>
    <thetext>Created attachment 394733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635003</commentid>
    <comment_count>6</comment_count>
      <attachid>394759</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-27 14:46:05 -0700</bug_when>
    <thetext>Created attachment 394759
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635012</commentid>
    <comment_count>7</comment_count>
      <attachid>394759</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-27 14:58:48 -0700</bug_when>
    <thetext>Comment on attachment 394759
Patch

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

&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:513
&gt; +        ecmaMode: ECMAMode,

Can you merge ecmaMode into PutByIdFlags? size of put_by_id is important to make bytecodes small to save memory.

&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:790
&gt; +        ecmaMode: ECMAMode,

I think this is dangerous. A lot of place is assuming that op_call / op_call_xxx etc.&apos;s bytecode length are same IIRC.
Can you add `call_eval_sloppy` / `call_eval_strict` instead to keep the above invariant?

&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:971
&gt; +        ecmaMode: ECMAMode,

Can you add this into GetPutInfo to squeeze the length of put_to_scope. This is important to save memory.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:87
&gt; +    static constexpr uint8_t NotStrictMode = 1;

You can name it SloppyMode. This is not official term, but well-used term in practice.
https://developer.mozilla.org/en-US/docs/Glossary/Sloppy_mode

&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:92
&gt; +    static constexpr ECMAMode notStrict() { return ECMAMode(NotStrictMode); }

change it to `sloppy()`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635257</commentid>
    <comment_count>8</comment_count>
      <attachid>394759</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-28 17:13:43 -0700</bug_when>
    <thetext>Comment on attachment 394759
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:513
&gt;&gt; +        ecmaMode: ECMAMode,
&gt; 
&gt; Can you merge ecmaMode into PutByIdFlags? size of put_by_id is important to make bytecodes small to save memory.

Done.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:790
&gt;&gt; +        ecmaMode: ECMAMode,
&gt; 
&gt; I think this is dangerous. A lot of place is assuming that op_call / op_call_xxx etc.&apos;s bytecode length are same IIRC.
&gt; Can you add `call_eval_sloppy` / `call_eval_strict` instead to keep the above invariant?

I don&apos;t think that&apos;s true anymore. With the new bytecode format there should be no assumptions about the size of any bytecodes.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:971
&gt;&gt; +        ecmaMode: ECMAMode,
&gt; 
&gt; Can you add this into GetPutInfo to squeeze the length of put_to_scope. This is important to save memory.

Done

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:87
&gt;&gt; +    static constexpr uint8_t NotStrictMode = 1;
&gt; 
&gt; You can name it SloppyMode. This is not official term, but well-used term in practice.
&gt; https://developer.mozilla.org/en-US/docs/Glossary/Sloppy_mode

I thought about, but figured I&apos;d keep the naming. I&apos;ll update it.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:92
&gt;&gt; +    static constexpr ECMAMode notStrict() { return ECMAMode(NotStrictMode); }
&gt; 
&gt; change it to `sloppy()`.

👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635738</commentid>
    <comment_count>9</comment_count>
      <attachid>394965</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-30 14:39:46 -0700</bug_when>
    <thetext>Created attachment 394965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635897</commentid>
    <comment_count>10</comment_count>
      <attachid>394998</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-30 18:30:44 -0700</bug_when>
    <thetext>Created attachment 394998
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635921</commentid>
    <comment_count>11</comment_count>
      <attachid>395008</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-30 20:02:23 -0700</bug_when>
    <thetext>Created attachment 395008
Patch

Fix WebCore build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636066</commentid>
    <comment_count>12</comment_count>
      <attachid>395054</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-31 09:53:18 -0700</bug_when>
    <thetext>Created attachment 395054
Patch

Fix Fits&lt;GetPutInfo&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636234</commentid>
    <comment_count>13</comment_count>
      <attachid>395089</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-03-31 14:21:43 -0700</bug_when>
    <thetext>Created attachment 395089
Patch

Fix Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638245</commentid>
    <comment_count>14</comment_count>
      <attachid>395601</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-04-06 12:40:11 -0700</bug_when>
    <thetext>Created attachment 395601
Patch

Try to fix i386 build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638266</commentid>
    <comment_count>15</comment_count>
      <attachid>395607</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-04-06 13:09:53 -0700</bug_when>
    <thetext>Created attachment 395607
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638344</commentid>
    <comment_count>16</comment_count>
      <attachid>395623</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-04-06 15:23:37 -0700</bug_when>
    <thetext>Created attachment 395623
Patch

Fix CMake builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638429</commentid>
    <comment_count>17</comment_count>
      <attachid>395623</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-06 20:07:04 -0700</bug_when>
    <thetext>Comment on attachment 395623
Patch

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

r=me, nice.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:-239
&gt; -        if (reg == thisRegister() &amp;&amp; !isStrictMode())
&gt; -            return true;
&gt; -

Can we make it work by passing ECMAMode to this function?

&gt; Source/JavaScriptCore/bytecode/Fits.h:375
&gt; +    // a pair of (ResultType::Type, ResultType::Type) - try to fit each type into 4 bits
&gt; +    // additionally, encode unknown types as 0 rather than the | of all types
&gt; +    static constexpr unsigned typeWidth = 4;
&gt; +    static constexpr unsigned maxType = (1 &lt;&lt; typeWidth) - 1;

ECMAMode does not include ResultType. Can you fix this implementation? I think ECMAMode is 1bit flag.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1317
&gt; +    class StrictModeScope {

Let&apos;s implement it by using WTF::SetForScope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638594</commentid>
    <comment_count>18</comment_count>
      <attachid>395623</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-04-07 09:50:48 -0700</bug_when>
    <thetext>Comment on attachment 395623
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:-239
&gt;&gt; -
&gt; 
&gt; Can we make it work by passing ECMAMode to this function?

That&apos;s what I started with, but it&apos;s used from many places where we don&apos;t currently have the mode. We&apos;d need to add it to many more opcodes. I discussed it with Saam offline and he seemed to believe it should be ok to remove this optimization.

&gt;&gt; Source/JavaScriptCore/bytecode/Fits.h:375
&gt;&gt; +    static constexpr unsigned maxType = (1 &lt;&lt; typeWidth) - 1;
&gt; 
&gt; ECMAMode does not include ResultType. Can you fix this implementation? I think ECMAMode is 1bit flag.

Oops, this is just left over from copy paste. The implementation below doesn&apos;t use it, I&apos;ll remove.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1317
&gt;&gt; +    class StrictModeScope {
&gt; 
&gt; Let&apos;s implement it by using WTF::SetForScope.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638720</commentid>
    <comment_count>19</comment_count>
      <attachid>395722</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-04-07 12:24:34 -0700</bug_when>
    <thetext>Created attachment 395722
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638742</commentid>
    <comment_count>20</comment_count>
      <attachid>395727</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-04-07 12:53:22 -0700</bug_when>
    <thetext>Created attachment 395727
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638772</commentid>
    <comment_count>21</comment_count>
      <attachid>395727</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-04-07 13:33:34 -0700</bug_when>
    <thetext>Comment on attachment 395727
Patch for landing

I&apos;ll add an extra test provided by Saam</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638814</commentid>
    <comment_count>22</comment_count>
      <attachid>395741</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-04-07 14:55:01 -0700</bug_when>
    <thetext>Created attachment 395741
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638848</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-07 15:32:28 -0700</bug_when>
    <thetext>Committed r259676: &lt;https://trac.webkit.org/changeset/259676&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395741.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638926</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-07 20:38:27 -0700</bug_when>
    <thetext>Looks like this broke the 32-bit JSCOnly bots pretty badly. DFGSpeculativeJIT32_64.cpp was not updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638963</commentid>
    <comment_count>25</comment_count>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-04-08 00:48:02 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #24)
&gt; Looks like this broke the 32-bit JSCOnly bots pretty badly.
&gt; DFGSpeculativeJIT32_64.cpp was not updated.

yes. I just filled a bug reporting the same: https://bugs.webkit.org/show_bug.cgi?id=210176</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394293</attachid>
            <date>2020-03-23 13:22:36 -0700</date>
            <delta_ts>2020-03-27 11:11:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200323132235.patch</filename>
            <type>text/plain</type>
            <size>7723</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZDg1OWY1NDQyNzFiOTMzZDJmNzY3NmQxMzFiYjhlMDg2YTY0YmI3Li44OTg4ZTZjMjZlZWNhYTJm
ODBlNDQ4YzRiODZlZTQ4YWQ4YjBlZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMC0wMy0yMyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBDbGFzc0V4cHJOb2RlIHNob3VsZCBlbWl0IGJ5dGVjb2RlIGluIHN0cmlj
dCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU1NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNvcnJlY3RseSBzZXQgc3RyaWN0
IG1vZGUgd2hlbiBwYXJzaW5nIGNsYXNzZXMsIGJ1dCB3ZSBkaWQgbm90IHNldCBpdCB3aGVuIGVt
aXR0aW5nIGJ5dGVjb2RlLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzU3RyaWN0TW9kZSBjb25zdCk6CisgICAgICAg
IChKU0M6OlN0cmljdE1vZGVTY29wZTo6U3RyaWN0TW9kZVNjb3BlKToKKyAgICAgICAgKEpTQzo6
U3RyaWN0TW9kZVNjb3BlOjp+U3RyaWN0TW9kZVNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKwogMjAyMC0wMy0yMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CiAKICAgICAgICAgUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdIGRvZXNuJ3QgY29l
cmNlIHJlc3VsdCBpbmRleCB0byBpbnRlZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGEwMWQ0N2Q3
ZGMwYmMxYjQ4MDE2NWJiY2QyNjZkMTFhNmMyMzJiNDUuLmU4ZmJhYjdmMjI3ZmFhNDhkNzllNDEx
ZjM0YjA4MTM5NTEyNTc0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMDUsNiArMzA1LDcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUq
IHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29kZSkKICAg
ICAsIG1fdm0odm0pCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChw
cm9ncmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwo
KSkKKyAgICAsIG1faXNTdHJpY3RNb2RlKG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKQEAgLTM1NSw2ICszNTYsNyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9k
ZSwgVW5saW5rZQogICAgIC8vIE5vdGUgdGhhdCB3ZSBpbnRlbnRpb25hbGx5IGVuYWJsZSB0YWls
IGNhbGwgZm9yIG5ha2VkIGNvbnN0cnVjdG9ycyBzaW5jZSBpdCBkb2VzIG5vdCBoYXZlIHNwZWNp
YWwgY29kZSBmb3IgInJldHVybiIuCiAgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVz
ZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9uZWVkc1Rv
VXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlv
bigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1faXNTdHJpY3RNb2RlKG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNv
ZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0
aW9uU3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwpAQCAtODQyLDYgKzg0
NCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxO
b2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgLCBtX3ZtKHZtKQogICAgICwgbV91
c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCkpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChl
dmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBldmFsTm9kZS0+dXNlc0V2YWwoKSkKKyAg
ICAsIG1faXNTdHJpY3RNb2RlKG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1f
ZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CiAg
ICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CkBAIC05MDAsNiArOTAzLDcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3Jh
bU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICAsIG1fdm0odm0pCiAgICAgLCBtX3VzZXNOb25T
dHJpY3RFdmFsKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3Jh
bU5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2lzU3RyaWN0TW9kZShtX2NvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
Mjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJhZTc0YmFmZjU1Yi4uODQxM2QwNWIxN2Q4ZGI3
YzRkMmQ4ODA4ODAxYTRiNWU2ZDE3Yzg5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzgwLDYgKzM4MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgRmluYWxseUNvbnRleHQ7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBmcmll
bmQgY2xhc3MgU3RydWN0dXJlRm9ySW5Db250ZXh0OworICAgICAgICBmcmllbmQgY2xhc3MgU3Ry
aWN0TW9kZVNjb3BlOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0
YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCkBAIC0xMDE5LDcgKzEwMjAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9v
a3MoKSBjb25zdCB7IHJldHVybiBtX2NvZGVHZW5lcmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2Vu
ZXJhdGlvbk1vZGU6OlR5cGVQcm9maWxlcik7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0Q29u
dHJvbEZsb3dQcm9maWxlckhvb2tzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlR2VuZXJhdGlvbk1v
ZGUuY29udGFpbnMoQ29kZUdlbmVyYXRpb25Nb2RlOjpDb250cm9sRmxvd1Byb2ZpbGVyKTsgfQog
ICAgICAgICAKLSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgICAgICB2b2lkIHNldFVzZXNDaGVj
a3BvaW50cygpIHsgbV9jb2RlQmxvY2stPnNldEhhc0NoZWNrcG9pbnRzKCk7IH0KIAogICAgICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PnBhcnNlTW9kZSgpOyB9CkBAIC0xMjk3LDggKzEyOTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBt
X3VzZXNOb25TdHJpY3RFdmFsIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0
aW9uIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9u
Q29udGV4dDsKICAgICAgICAgYm9vbCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaIHsgZmFs
c2UgfTsKKyAgICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCA6
IDE7CisgICAgICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgbV9kZXJpdmVkQ29udGV4dFR5cGUgeyBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUg
fTsKIAogICAgICAgICBDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSBtX2NhY2hlZFZhcmlhYmxl
c1VuZGVyVERaOwpAQCAtMTMxMiw2ICsxMzE0LDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBWZWN0b3I8Q2F0Y2hFbnRyeT4gbV9leGNlcHRpb25IYW5kbGVyc1RvRW1pdDsKICAgICB9Owog
CisgICAgY2xhc3MgU3RyaWN0TW9kZVNjb3BlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFN0cmlj
dE1vZGVTY29wZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQorICAgICAgICAgICAgOiBt
X2dlbmVyYXRvcihnZW5lcmF0b3IpCisgICAgICAgICAgICAsIG1fd2FzU3RyaWN0TW9kZShnZW5l
cmF0b3IubV9pc1N0cmljdE1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZ2VuZXJhdG9y
Lm1faXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIH5TdHJpY3RNb2Rl
U2NvcGUoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2dlbmVyYXRvci5tX2lzU3RyaWN0TW9k
ZSA9IG1fd2FzU3RyaWN0TW9kZTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3ImIG1fZ2VuZXJhdG9yOworICAgICAgICBib29sIG1fd2FzU3RyaWN0
TW9kZTsKKyAgICB9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggM2IzY2Q0YmU0ODliYzAyOGNiMGJiYjQ5NWVkNGMwYmM3ZTUyNjIwMi4uNDcxZjRl
ZDMyMDAwMzU0MGM2NDM4OWI0YWQ1YjdkOGZjZmQ5OTllYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDM4Myw2ICs0
MzgzLDggQEAgdm9pZCBDbGFzc0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB7CisgICAgU3RyaWN0TW9kZVNjb3BlIHN0cmljdE1vZGVTY29wZShnZW5lcmF0b3IpOwor
CiAgICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4
aWNhbFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6
T3B0aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsK
IApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCBiYmM3ZDM4MDYzZWI0NTE0ZDZhNmJhM2NjZDUwY2QzNTQ0MjI5NjhjLi5kOTA5YmVhNmJiMDEz
Njg1MDUyNzA5NWE1OTI1ZGYzZjhmMmYzNzc0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxv
ZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAzLTIzICBU
YWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIENsYXNzRXhwck5v
ZGUgc2hvdWxkIGVtaXQgYnl0ZWNvZGUgaW4gc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTU3OAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTgxOTQ1ODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZXh0ZW5kcy1zdHJpY3QtbW9kZS5qczogQWRkZWQuCisg
ICAgICAgICh0cnkuYyk6CisgICAgICAgIChjYXRjaCk6CisKIDIwMjAtMDMtMjAgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFJlZ0V4cC5wcm90b3R5
cGVbQEByZXBsYWNlXSBkb2Vzbid0IGNvZXJjZSByZXN1bHQgaW5kZXggdG8gaW50ZWdlcgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZXh0ZW5kcy1zdHJpY3QtbW9kZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWV4dGVuZHMtc3RyaWN0LW1vZGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc1
NzVhNWEyNjcwNjU5OGMzODFhZmVmYjZkMjgzNGUyMzE1NDkyMQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWV4dGVuZHMtc3RyaWN0LW1vZGUuanMKQEAgLTAsMCArMSwx
MSBAQAordmFyIGVycm9yOwordHJ5IHsKKyAgICBjbGFzcyBjIGV4dGVuZHMoZCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9LCBkKSB7fQorfSBjYXRjaCAoZSkgeworICAg
IGVycm9yID0gZTsKK30KKworaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJDYW4ndCBm
aW5kIHZhcmlhYmxlOiBkIikKKyAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUg
dGhyb3duIGEgcmVmZXJlbmNlIGVycm9yIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394733</attachid>
            <date>2020-03-27 11:11:34 -0700</date>
            <delta_ts>2020-03-27 14:45:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200327111133.patch</filename>
            <type>text/plain</type>
            <size>213269</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZDg1OWY1NDQyNzFiOTMzZDJmNzY3NmQxMzFiYjhlMDg2YTY0YmI3Li45OTE3YzcyNTBhZjU5MWJl
MDhiYTUyZDYwNzA4MDI4NDgyMDg2Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNzIgQEAKKzIwMjAtMDMtMjcgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgQ2xhc3NFeHByTm9kZSBzaG91bGQgZW1pdCBieXRlY29kZSBpbiBzdHJp
Y3QgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0IHN0cmlj
dCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQgd2hlbiBl
bWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0IHdlIGNh
biBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0IG11c3Qg
YmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUgYmxvY2sg
aXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9ubHkgdGVu
CisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5lc3MsIHNv
IGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVzLgorICAg
ICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBiYXNlbGlu
ZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oOgor
ICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAg
ICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3RydWN0b3IgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjppc1N0cmljdE1vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmVjbWFNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojppc0tub3duTm90SW1tZWRpYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUlu
Zm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6dXNlc0V2YWwgY29uc3QpOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAg
KEpTQzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAg
IChKU0M6OklubGluZUNhbGxGcmFtZTo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omlz
Q29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNT
dHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvcjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
aXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
dGVCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplY21h
TW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVTY29wZTo6U3RyaWN0TW9kZVNj
b3BlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVNjb3BlOjp+U3RyaWN0TW9kZVNjb3BlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzU3RyaWN0TW9kZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAg
IChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpF
bXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpBc3Np
Z25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6
dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmlzU3RyaWN0TW9kZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmVjbWFNb2RlRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc0VDTUFNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjplY21hTW9kZSk6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6CisgICAgICAgICog
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlRG91YmxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5
bWJvbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5h
bWljVmFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRE
aXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJ
ZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRv
VGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aXNTdHJpY3RNb2RlRm9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplY21hTW9kZUZvcik6IERlbGV0ZWQuCisgICAg
ICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZh
bCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRH
ZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAg
ICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlRGVsZXRl
QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Y29t
bW9uQ2FsbEV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YXJyYXlQ
cm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9p
bik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJy
YXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5
UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGljZSk6Cisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5
UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFzdEluZGV4
T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWNoZWRDb2RlQmxvY2s6OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJs
b2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxv
Y2s6OmlzU3RyaWN0TW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVT
cGVjaWFscyk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlND
OjpnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpE
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2
YWxFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAg
ICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0
RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmR1bXAg
Y29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpF
Q01BTW9kZTo6ZnJvbUJ5dGUpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6c3RyaWN0KToKKyAg
ICAgICAgKEpTQzo6RUNNQU1vZGU6Om5vdFN0cmljdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2Rl
Ojppc1N0cmljdCBjb25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjp2YWx1ZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpFQ01BTW9kZSk6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhpcyk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c2VsZWN0U3Ry
dWN0dXJlRm9yTmV3RnVuY0V4cCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNhbGxlckdl
dHRlcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6Cisg
ICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1By
b3RvR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToKKyAgICAg
ICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElu
bGluZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xl
Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpT
U2NvcGU6OnRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAg
IChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZSk6Cisg
ICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0Q2FsbGVyU3Ry
aWN0bmVzc0Z1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpOdWxsU2V0
dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAgICAgICogcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNW
YWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJv
dG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3Vw
R2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpOgorICAgICAg
ICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9i
YWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnBlcmZvcm1Q
cm94eUNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oOgorICAgICAg
ICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc0Fycm93RnVuY3Rpb25Db250ZXh0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aXNJblN0cmljdENvbnRleHQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc1N0cmljdE1vZGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplY21hTW9kZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKwogMjAyMC0wMy0yMCAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgUmVnRXhwLnByb3Rv
dHlwZVtAQHJlcGxhY2VdIGRvZXNuJ3QgY29lcmNlIHJlc3VsdCBpbmRleCB0byBpbnRlZ2VyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4
IGM5OTEwNTNhMTkxOWY4ZTFiYTRlYTk4Yjc3ZDhlMWE5ZDFiN2RkZTguLmY4ZjRlODk3NjFiZmJi
YTZlNTU3M2ZlMDc0ZDliMTlhMGMzMjEzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09i
amVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAg
SlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAg
ICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6bm90U3RyaWN0
KCkpKSk7CiAKICAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkpOwogICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1l
bnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaAppbmRleCAwMmNlZGM3OTY2YmVjMGE1M2E5YmMwMmE5ZjM3ODNlNzlmNzMy
ZTJmLi4xMGIzMDcxYTZlNDY1MDIzNGY4MTZlYWViYzBiNGJjYjk4ODQ5ODFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aApAQCAtNTIzLDcgKzUyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAKICAgICBKU0Nv
bnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYg
ZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0
UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNPYmpl
Y3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6Om5vdFN0cmljdCgpKSkpOwog
ICAgIAogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pio+KHRvSlMoZnVuY3Rpb25SZWYpKS0+Y2xhc3NSZWYoKTsganNDbGFzczsganND
bGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxB
c0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlv
bikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDIy
MmE0ZWUyMGRjYmFkYjA3YjdiYzY1NGRjZjhhYTgwY2YyYzEyYmUuLjYwZDdlZGFhNTAzMTE2MTVk
MDk5Y2NjZGY1NzY1ZTc4M2ZjMDA0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRH
ZXRHbG9iYWxPYmplY3QoSlNDb250ZXh0UmVmIGN0eCkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKLSAgICByZXR1cm4gdG9S
ZWYoanNDYXN0PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhp
cyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICByZXR1
cm4gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PnRvVGhpcyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6Om5vdFN0cmljdCgp
KSkpOwogfQogCiBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRS
ZWYgY3R4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggOWYyYWJhMzlmMmNlNzA4ZDMx
M2I4ZDk0MGNmOTZmYmE0MmZjYzk0ZS4uNTg0Y2VmN2U3YTBjMzUxMGNkOTM1ODFlZTg3Mjk1MjQ1
NjgwNzgwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0yNTEsNyArMjUxLDggQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICAgICAgICAgICAgICAg
ICAgb3BlcmFuZCwgLy8gdmFsdWUKICAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05v
dFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5v
dEluaXRpYWxpemF0aW9uKSwgLy8gaW5mbwogICAgICAgICAgICAgICAgICAgICBTeW1ib2xUYWJs
ZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgbV9nZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXggfSksIC8vIHN5bWJvbCB0YWJsZSBjb25zdGFudCBpbmRleAot
ICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpIC8vIHNjb3Bl
IG9mZnNldAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgp
LCAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgbV9ieXRlY29kZUdlbmVyYXRv
ci5lY21hTW9kZSgpCiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAzNDgz
NDdjNmI0Y2Q3NTQ2ODBjMTI2YTBmNzI3NTM2ZjFiZTM3YzRlLi5lMzZmYTMyZWNhZjljMzhjMDM0
NjRjNTdkODAwMmZkOTY4N2FmZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTI3LDYgKzI3LDcgQEAgdHlwZXMgWwogICAgIDpCYXNp
Y0Jsb2NrTG9jYXRpb24sCiAgICAgOkJvdW5kTGFiZWwsCiAgICAgOkRlYnVnSG9va1R5cGUsCisg
ICAgOkVDTUFNb2RlLAogICAgIDpFcnJvclR5cGUsCiAgICAgOkdldEJ5SWRNb2RlLAogICAgIDpH
ZXRCeUlkTW9kZU1ldGFkYXRhLApAQCAtMTc0LDYgKzE3NSw3IEBAIG9wIDphcmd1bWVudF9jb3Vu
dCwKIG9wIDp0b190aGlzLAogICAgIGFyZ3M6IHsKICAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7CiAgICAgICAgIGNhY2hlZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKQEAgLTUwOCw2ICs1
MTAsNyBAQCBvcCA6cHV0X2J5X2lkLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAg
ICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGZsYWdzOiBQdXRCeUlkRmxhZ3Ms
CisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAg
ICAgICAgIG9sZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKQEAgLTUyMiw2ICs1MjUsNyBAQCBv
cCA6cHV0X2J5X2lkX3dpdGhfdGhpcywKICAgICAgICAgdGhpc1ZhbHVlOiBWaXJ0dWFsUmVnaXN0
ZXIsCiAgICAgICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOmRlbF9i
eV9pZCwKQEAgLTUyOSw2ICs1MzMsNyBAQCBvcCA6ZGVsX2J5X2lkLAogICAgICAgICBkc3Q6IFZp
cnR1YWxSZWdpc3RlciwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9CiAK
IG9wIDpnZXRfYnlfdmFsLApAQCAtNTQ4LDYgKzU1Myw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAg
ICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVjbWFNb2Rl
OiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmls
ZTogQXJyYXlQcm9maWxlLApAQCAtNTU5LDYgKzU2NSw3IEBAIG9wIDpwdXRfYnlfdmFsX3dpdGhf
dGhpcywKICAgICAgICAgdGhpc1ZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3Bl
cnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9CiAKIG9wIDpwdXRfYnlfdmFsX2RpcmVj
dCwKQEAgLTU2Niw2ICs1NzMsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJh
c2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFN
b2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJh
eVByb2ZpbGUsCkBAIC01NzYsNiArNTg0LDcgQEAgb3AgOmRlbF9ieV92YWwsCiAgICAgICAgIGRz
dDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAg
ICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9CiAKIG9wIDpwdXRfZ2V0dGVyX2J5X2lkLApAQCAtNzc4LDYgKzc4Nyw3IEBAIG9w
IDpjYWxsX2V2YWwsCiAgICAgICAgIGNhbGxlZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBh
cmdjOiB1bnNpZ25lZCwKICAgICAgICAgYXJndjogdW5zaWduZWQsCisgICAgICAgIGVjbWFNb2Rl
OiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCkBAIC05NTgsNiArOTY4LDcgQEAgb3AgOnB1dF90b19zY29w
ZSwKICAgICAgICAgZ2V0UHV0SW5mbzogR2V0UHV0SW5mbywKICAgICAgICAgc3ltYm9sVGFibGVP
clNjb3BlRGVwdGg6IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoLAogICAgICAgICBvZmZzZXQ6IHVu
c2lnbmVkLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0
YTogewogICAgICAgICBnZXRQdXRJbmZvOiBHZXRQdXRJbmZvLCAjIG9mZnNldCA0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDc0MzY5NTM0ZTkw
ZWM3N2EzMTVkNWU5YzIwMDhmMmZjOWVjMTI0ZmUuLmY4MzViNzg5MjljOWI2NjUxODlmNGJiNDc5
MTBlN2E3MTY3Mjc4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBBc3N1bWlu
Z0pJVFR5cGUoUHJpbnRTdHJlYW0mIG91dCwgSklUVHlwZSBqaXRUeXBlKSBjb25zdAogICAgICAg
ICBvdXQucHJpbnQoIiAoTmV2ZXJGVExPcHRpbWl6ZSkiKTsKICAgICBpZiAob3duZXJFeGVjdXRh
YmxlKCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkKICAgICAgICAgb3V0LnByaW50KCIgKERpZFRy
eVRvRW50ZXJJbkxvb3ApIik7Ci0gICAgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICBpZiAob3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCiAg
ICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2RlKSIpOwogICAgIGlmIChtX2RpZEZhaWxKSVRD
b21waWxhdGlvbikKICAgICAgICAgb3V0LnByaW50KCIgKEpJVEZhaWwpIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNjcxZmIzZTM3NTVhNDUzMzdk
Njg1YjI4NDk3NjM2ZTRiOThhZmQzYS4uOWNiNjcxMDc1OTQ2ZWRhZDZhM2VjOTg3MmRlNWQwOWRi
NjY3MGJiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApA
QCAtMjIyLDkgKzIyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHVtcE1hdGhJQ1N0YXRzKCk7
CiAKLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2Rl
LT5pc1N0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRDb2RlLT5pc0NvbnN0cnVjdG9yKCk7IH0KLSAgICBFQ01BTW9kZSBlY21h
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0
cmljdE1vZGU7IH0KICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRDb2RlLT5jb2RlVHlwZSgpOyB9CiAKICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5zY3JpcHRNb2RlKCk7IH0KQEAg
LTIzMiwxMSArMjMwLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzSW5zdGFsbGVkVk1UcmFwQnJl
YWtwb2ludHMoKSBjb25zdDsKICAgICBib29sIGluc3RhbGxWTVRyYXBCcmVha3BvaW50cygpOwog
Ci0gICAgaW5saW5lIGJvb2wgaXNLbm93bk5vdEltbWVkaWF0ZShWaXJ0dWFsUmVnaXN0ZXIgcmVn
KQorICAgIGlubGluZSBib29sIGlzS25vd25DZWxsKFZpcnR1YWxSZWdpc3RlciByZWcpCiAgICAg
ewotICAgICAgICBpZiAocmVnID09IHRoaXNSZWdpc3RlcigpICYmICFpc1N0cmljdE1vZGUoKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgICAgIGlmIChyZWcuaXNDb25zdGFudCgp
KQogICAgICAgICAgICAgcmV0dXJuIGdldENvbnN0YW50KHJlZykuaXNDZWxsKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggNzdm
MTkyOTA2OTA4MzM2ZWJkMDA4ZGNmMGMzNmY0YWM2ZTllNzVkNC4uNDllZGQ1Mjg1ZDVjMmMyOGIx
YzlhNGJjZWVmNDUxNzE5OTBiZTkxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTM2LDkgKzM2LDggQEAgZW51bSBjbGFzcyBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciA6IHVpbnQ4X3QgeyBObywgWWVzIH07CiAvLyBGSVhNRTog
VGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tz
IHNob3VsZCBiZSByZW9yZ2FuaXplZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJs
ZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3Rv
ciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCisgICAgRXhlY3V0YWJsZUluZm8o
Ym9vbCB1c2VzRXZhbCwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9u
LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxD
b250ZXh0VHlwZSkKICAgICAgICAgOiBtX3VzZXNFdmFsKHVzZXNFdmFsKQotICAgICAgICAsIG1f
aXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXND
b25zdHJ1Y3RvcikKICAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0
aW9uKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
b25zdHJ1Y3RvcktpbmQpKQpAQCAtNTcsNyArNTYsNiBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8g
ewogICAgIH0KIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFs
OyB9Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9k
ZTsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1
Y3RvcjsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QnVpbHRpbkZ1bmN0aW9uOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3Rv
cktpbmQpOyB9CkBAIC03Miw3ICs3MCw2IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAKIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7Ci0gICAgdW5zaWduZWQgbV9pc1N0
cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5z
aWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Zp
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggNTc3ODli
YzJjNjY5ZjdjYWQ4ODgzZGVjZjM1MTMyNzg0NDljODI0Zi4uMmM4NTJkMDZkM2RmYzVmNWJiYzRk
MzAxNzNlY2UxNTQyOTBhYzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5o
CkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBGaXRzOwogCiAvLyBJbXBsaWNpdCBjb252ZXJzaW9u
IGZvciB0eXBlcyBvZiB0aGUgc2FtZSBzaXplCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBPcGNvZGVT
aXplIHNpemU+Ci1zdHJ1Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihU
KSA9PSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IHsKK3N0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6
ZW5hYmxlX2lmX3Q8c2l6ZW9mKFQpID09IHNpemUgJiYgc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQ+
Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiB7CiAgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVu
YW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKIAogICAgIHN0YXRpYyBib29sIGNo
ZWNrKFQpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTMyNyw0ICszMjcsMjkgQEAgc3RydWN0IEZpdHM8
R2VuZXJpY0JvdW5kTGFiZWw8R2VuZXJhdG9yVHJhaXRzPiwgc2l6ZT4gOiBwdWJsaWMgRml0czxp
bnQsIHNpemU+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1
Y3QgRml0czxFQ01BTW9kZSwgc2l6ZT4gOiBwdWJsaWMgRml0czx1aW50OF90LCBzaXplPiB7Cisg
ICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICAvLyBhIHBhaXIgb2Yg
KFJlc3VsdFR5cGU6OlR5cGUsIFJlc3VsdFR5cGU6OlR5cGUpIC0gdHJ5IHRvIGZpdCBlYWNoIHR5
cGUgaW50byA0IGJpdHMKKyAgICAvLyBhZGRpdGlvbmFsbHksIGVuY29kZSB1bmtub3duIHR5cGVz
IGFzIDAgcmF0aGVyIHRoYW4gdGhlIHwgb2YgYWxsIHR5cGVzCisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCB0eXBlV2lkdGggPSA0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bWF4VHlwZSA9ICgxIDw8IHR5cGVXaWR0aCkgLSAxOworCisgICAgc3RhdGljIGJvb2wgY2hlY2so
RUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y2hlY2soZWNt
YU1vZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdl
dFR5cGUgY29udmVydChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBC
YXNlOjpjb252ZXJ0KGVjbWFNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyBFQ01B
TW9kZSBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgZWNtYU1vZGUpCisgICAgewor
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKEJhc2U6OmNvbnZlcnQoZWNtYU1vZGUp
KTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAKaW5kZXggM2UzZTY1ZjU5YzUx
MzAxZWIyZjQ0YjJkMjMxZWZjZWNhOTFlY2NmMS4uNzk5MWFjMmE4ZTY3Yzg4MGViMzhlNzY0NWY0
NGIyOWRkMzdhY2FmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUNhbGxGcmFtZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBJbmxpbmVDYWxsRnJh
bWU6OmR1bXBCcmllZkZ1bmN0aW9uSW5mb3JtYXRpb24oUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1
bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIG91dC5wcmludChicmllZkZ1bmN0aW9u
SW5mb3JtYXRpb24oKSwgIjo8IiwgUmF3UG9pbnRlcihiYXNlbGluZUNvZGVCbG9jay5nZXQoKSkp
OwotICAgIGlmIChpc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoaXNJblN0cmljdENvbnRleHQoKSkK
ICAgICAgICAgb3V0LnByaW50KCIgKFN0cmljdE1vZGUpIik7CiAgICAgb3V0LnByaW50KCIsICIs
IGRpcmVjdENhbGxlci5ieXRlY29kZUluZGV4KCksICIsICIsIHN0YXRpY19jYXN0PEtpbmQ+KGtp
bmQpKTsKICAgICBpZiAoaXNDbG9zdXJlQ2FsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAppbmRleCBlMjlmMzg0ZDFkMDY3MmZlZWEwNzEy
MDViY2FhMjgxYTY0OWIyMjI5Li43NWY5YmIxYTg0NjhhNjFkN2JlOTZjM2FjOWI5MWU5NTNlYTNi
ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxG
cmFtZS5oCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RydWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAg
cHRyZGlmZl90IGNhbGxlckZyYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3RhY2tPZmZzZXQg
KiBzaXplb2YoUmVnaXN0ZXIpICsgQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZU9mZnNldCgpOyB9CiAg
ICAgcHRyZGlmZl90IHJldHVyblBDT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3RhY2tPZmZzZXQg
KiBzaXplb2YoUmVnaXN0ZXIpICsgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpOyB9CiAKLSAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKTsgfQorICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBiYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250
ZXh0KCk7IH0KIAogICAgIHZvaWQgZHVtcEJyaWVmRnVuY3Rpb25JbmZvcm1hdGlvbihQcmludFN0
cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
aW5kZXggNTg5MWYyYTVjMjU3N2I5OWM1MjkyMmQzZGZkZjU5NmJhMmZlNTZiZi4uNTRkYTU3ZGFi
NjljYTI2MWFlZmRjZWI5MzhmZmEwZjRmZjAzNzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC01Nyw3ICs1Nyw2
IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5r
ZWRDb2RlQmxvY2siLCBudWxscHRyLCBudWxsCiBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRD
b2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZVR5cGUs
IGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiBjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBt
X3VzZXNFdmFsKGluZm8udXNlc0V2YWwoKSkKLSAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8uaXNT
dHJpY3RNb2RlKCkpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5pc0NvbnN0cnVjdG9yKCkp
CiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5G
dW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGRkMjE3YjdmZDRmZWY1
NmRmOGQ4MWMzNWMyODEzM2Q1Yzg3YTFhOWMuLjAwZGM2MTYzMzVmZDMxYjA0MzI1MWUzNDQwMGU1
N2RlZjUzMTVkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCkBAIC0xMjMsNyArMTIzLDYgQEAgcHVibGljOgogICAgIGVudW0g
eyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAogICAgIGJvb2wgaXNDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQotICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFs
KCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9k
ZSgpKTsgfQpAQCAtMzM1LDcgKzMzNCw2IEBAIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fc2NvcGVSZWdpc3RlcjsKIAogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVu
c2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3Ig
OiAxOwogICAgIHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2ln
bmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCAy
MTNhM2E4MzJkN2VhYWE5Yjk3MTBmMDFhODY0ZGE5MzViZGQ3ZWE1Li4yZWI5ODRjMWIwNWE0NWUw
YWE1MjBlMWZkMzc4YWQ5ZTJmYzkzMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtNTAs
NyArNTAsNiBAQCBwdWJsaWM6CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAgIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1v
ZGUoKTsgfQogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKCk7IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7
IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVu
Y3Rpb24oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNGRjMGU5MTViYzM4MjMx
OWE5MmE5NjcxYjYzYjI4YjQ3MGRlODEzZC4uNTRlZjkyNGMwZGYxNDY3YmQyMzI2MTEzOGI1NDUx
NjI4MWZkNTE3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC03MSwxMCArNzEsMTEg
QEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaygKIAogICAgIGJvb2wgaXNDbGFzc0NvbnRleHQgPSBleGVjdXRhYmxlLT5z
dXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsKIAotICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0
ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwg
ZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0
aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0
b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1v
ZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0
VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
azo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2Vz
RXZhbCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtl
ZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1v
ZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRl
cml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFs
Q29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAKICAgICBWYXJpYWJsZUVudmlyb25tZW50
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJp
YWJsZXMoKTsKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVu
Y3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsICZwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcyk7CisgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5p
c0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6Om5vdFN0
cmljdCgpOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5j
dGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgJnBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYTAxZDQ3ZDdkYzBi
YzFiNDgwMTY1YmJjZDI2NmQxMWE2YzIzMmI0NS4uOTM0Y2I1MjM2NzI5ODMzNWExMmRiYTJlMzQ5
OGQ5Y2ZmMjA5OTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI5NywxNCArMjk3LDIxIEBAIFBh
cnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgcmV0dXJuIFBhcnNl
ckVycm9yKFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVu
aXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9j
azo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAg
ICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29w
ZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNB
cmd1bWVudE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2RlKQogICAgICwgbV92
bSh2bSkKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25U
b29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKKyAgICAsIG1f
dXNlc05vblN0cmljdEV2YWwoZmFsc2UpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQor
ICAgICwgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWihmYWxzZSkKICAgICAsIG1fbmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlv
bigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKQEAgLTMzOCwxNCArMzQ1LDE3IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9n
cmFtTm9kZSwgVW5saW5rZWRQCiAgICAgfQogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVu
aXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9j
azo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAg
ICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29w
ZU5vZGUoZnVuY3Rpb25Ob2RlKQogICAgICwgbV9jb2RlVHlwZShGdW5jdGlvbkNvZGUpCiAgICAg
LCBtX3ZtKHZtKQorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIGZsYWcKKyAgICAsIG1f
dXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQog
ICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkp
Ci0gICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJs
b2NrLT51c2VzRXZhbCgpICYmICFlY21hTW9kZS5pc1N0cmljdCgpKQogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgYWJsZSB0byBoYXZlIHRhaWwgY2FsbCBlbGltaW5hdGlvbiB3aXRoIHRoZSBw
cm9maWxlcgogICAgIC8vIGVuYWJsZWQuIFRoaXMgaXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSBi
ZWNhdXNlIHRoZSBwcm9maWxlciBleHBlY3RzCiAgICAgLy8gb3Bfd2lsbF9jYWxsIC8gb3BfZGlk
X2NhbGwgcGFpcnMgYmVmb3JlIGFuZCBhZnRlciBhIGNhbGwsIHdoaWNoIGFyZSBub3QKQEAgLTM1
Myw4ICszNjMsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODE5CiAgICAgLy8KICAgICAvLyBOb3Rl
IHRoYXQgd2UgaW50ZW50aW9uYWxseSBlbmFibGUgdGFpbCBjYWxsIGZvciBuYWtlZCBjb25zdHJ1
Y3RvcnMgc2luY2UgaXQgZG9lcyBub3QgaGF2ZSBzcGVjaWFsIGNvZGUgZm9yICJyZXR1cm4iLgot
ICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25zOjp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAm
JiBpc1N0cmljdE1vZGUoKSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFp
bENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAgICAsIG1faGFzQ2Fj
aGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1
bmN0aW9uQ29udGV4dChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZnVuY3Rp
b25Ob2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAsIG1f
ZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CiAg
ICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRl
KG1fdm0pOwpAQCAtNDM3LDcgKzQ0OSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
aWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9u
Tm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7CiAgICAgICAgIEFTU0VSVCghaXNBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKTsKLSAgICAgICAgYm9vbCBpc0R5bmFt
aWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwo
KSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIGJvb2wgaXNEeW5hbWljU2Nv
cGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGVj
bWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQg
PSBjYXB0dXJlcyhmdW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBt
YXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7
CiAgICAgICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgp
LCAmbV9jYWxsZWVSZWdpc3RlciwgbWFya0FzQ2FwdHVyZWQpOwpAQCAtNDg3LDcgKzQ5OSw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9k
ZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIG1fYXJndW1lbnRzUmVnaXN0ZXItPnJl
ZigpOwogICAgIH0KICAgICAKLSAgICBpZiAobmVlZHNBcmd1bWVudHMgJiYgIWNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkgJiYgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgaWYgKG5lZWRz
QXJndW1lbnRzICYmICFlY21hTW9kZS5pc1N0cmljdCgpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlz
dCkgewogICAgICAgICAvLyBJZiB3ZSBjYXB0dXJlZCBhbnkgZm9ybWFsIHBhcmFtZXRlciBieSBu
YW1lLCB0aGVuIHdlIHVzZSBTY29wZWRBcmd1bWVudHMuIE90aGVyd2lzZSB3ZQogICAgICAgICAv
LyB1c2UgRGlyZWN0QXJndW1lbnRzLiBXaXRoIFNjb3BlZEFyZ3VtZW50cywgd2UgbGlmdCBhbGwg
b2Ygb3VyIGFyZ3VtZW50cyBpbnRvIHRoZQogICAgICAgICAvLyBhY3RpdmF0aW9uLgpAQCAtNTE2
LDcgKzUyOCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgICAg
IGVudHJ5LmRpc2FibGVXYXRjaGluZyhtX3ZtKTsKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b25TeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgbmFtZSwgZW50cnkpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywg
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgVUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5k
LCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24p
LCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsg
c3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBvZmZzZXQub2Zmc2V0KCkpOworICAgICAgICAg
ICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lz
dGVyLCBVSU5UX01BWCwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEg
KyBpKSwgR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRo
OjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgg
fSksIG9mZnNldC5vZmZzZXQoKSwgZWNtYU1vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBzY29wZWQgYXJndW1lbnRzIG9iamVj
dCBhbmQgY29waWVzIHRoZSBvdmVyZmxvdyBhcmd1bWVudHMgaW50byB0aGUKQEAgLTU1NCwxMSAr
NTY2LDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Y29uc3QgQmluZGluZ05vZGUqPihwYXJhbWV0ZXJzLmF0KGkpLmZpcnN0KS0+Ym91bmRQ
cm9wZXJ0eSgpOwogICAgICAgICAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2lu
Z05lY2Vzc2FyeSwgbmFtZSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3RlciwgYWRkQ29uc3RhbnQoaWRlbnQpLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RG
b3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0
aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3Rl
ciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsKKyAgICAg
ICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lz
dGVyLCBhZGRDb25zdGFudChpZGVudCksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVk
aW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVW
YXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLCBTeW1ib2xUYWJsZU9y
U2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25z
dGFudEluZGV4IH0pLCBvZmZzZXQub2Zmc2V0KCksIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICBpZiAobmVlZHNBcmd1bWVudHMgJiYgKGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkgfHwgIWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkpIHsKKyAgICBpZiAobmVlZHNBcmd1bWVu
dHMgJiYgKGVjbWFNb2RlLmlzU3RyaWN0KCkgfHwgIWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkpIHsK
ICAgICAgICAgLy8gQWxsb2NhdGUgYSBjbG9uZWQgYXJndW1lbnRzIG9iamVjdC4KICAgICAgICAg
T3BDcmVhdGVDbG9uZWRBcmd1bWVudHM6OmVtaXQodGhpcywgbV9hcmd1bWVudHNSZWdpc3Rlcik7
CiAgICAgfQpAQCAtNzEyLDcgKzcyNCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFRvVGhpcyA9IGZhbHNlOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNl
c0V2YWwoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlVGhpcygp
IHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VFdmFsKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRFbWl0VG9UaGlzID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoKGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVydHkoKSB8fCBt
X3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpKSAm
JiAhY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmICgoZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQcm9wZXJ0eSgpIHx8IG1fc2NvcGVOb2RlLT5k
b0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlclByb3BlcnR5KCkpICYmICFlY21hTW9kZS5p
c1N0cmljdCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IGVtaXQgdG9f
dGhpcyB3aGVuIHdlJ3JlIG5vdCBpbiBzdHJpY3QgbW9kZSBiZWNhdXNlIHdlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyB3aWxsIGNvbnZlcnQgfHRoaXN8IHRvIGFuIG9iamVjdCwgYW5kIHRo
YXQgb2JqZWN0IG1heSBiZSBwYXNzZWQKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGEg
c3RyaWN0IGZ1bmN0aW9uIGFzIHx0aGlzfC4gVGhpcyBpcyBvYnNlcnZhYmxlIGJlY2F1c2UgdGhh
dApAQCAtODMzLDE1ICs4NDUsMjEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBwdXNo
TGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUs
IE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVC
bG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMp
CitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSog
ZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6
IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNw
YWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2Rl
R2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkKICAgICAsIG1fdGhp
c1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVU
eXBlKEV2YWxDb2RlKQogICAgICwgbV92bSh2bSkKLSAgICAsIG1fdXNlc05vblN0cmljdEV2YWwo
Y29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAg
ICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFs
c2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQorICAgICwgbV91c2VzTm9uU3Ry
aWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpCisg
ICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQorICAgICwgbV9oYXNDYWNoZWRWYXJpYWJsZXNV
bmRlclREWihmYWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0
KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQor
ICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNv
ZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE51
bVBhcmFtZXRlcnMoMSk7CkBAIC04OTEsMTUgKzkwOSwyMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZh
bENvZAogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0
aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hv
dWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVBy
b2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQ
cm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFN
b2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVD
YWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRp
b25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dy
YW1Ob2RlKQogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZz
ZXQoKSkKICAgICAsIG1fY29kZVR5cGUoTW9kdWxlQ29kZSkKICAgICAsIG1fdm0odm0pCisgICAg
LCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxz
ZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCiAgICAgLCBtX3VzZXNOb25TdHJp
Y3RFdmFsKGZhbHNlKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFz
Q2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJv
d0Z1bmN0aW9uQ29udGV4dChtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8
fCBtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1v
ZGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCkBAIC0yNDI5LDcgKzI0NTMsNyBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvU2NvcGUoUmVnaXN0ZXJJRCogc2Nv
cGUsIGNvbnN0IFZhcmlhYmxlJgogICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8o
cmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBlKCksIGluaXRpYWxpemF0aW9uTW9kZSk7CiAgICAgICAg
ICAgICBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCA9IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpz
Y29wZURlcHRoKGxvY2FsU2NvcGVEZXB0aCgpKTsKICAgICAgICAgfQotICAgICAgICBPcFB1dFRv
U2NvcGU6OmVtaXQodGhpcywgc2NvcGUsIGFkZENvbnN0YW50KHZhcmlhYmxlLmlkZW50KCkpLCB2
YWx1ZSwgZ2V0UHV0SW5mbywgc3ltYm9sVGFibGVPclNjb3BlRGVwdGgsICEhb2Zmc2V0ID8gb2Zm
c2V0Lm9mZnNldCgpIDogMCk7CisgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBzY29w
ZSwgYWRkQ29uc3RhbnQodmFyaWFibGUuaWRlbnQoKSksIHZhbHVlLCBnZXRQdXRJbmZvLCBzeW1i
b2xUYWJsZU9yU2NvcGVEZXB0aCwgISFvZmZzZXQgPyBvZmZzZXQub2Zmc2V0KCkgOiAwLCBlY21h
TW9kZSgpKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0gfQogICAgIApAQCAtMjUwNyw3
ICsyNTMxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJl
Z2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHAKIAogICAgIG1fc3RhdGljUHJvcGVy
dHlBbmFseXplci5wdXRCeUlkKGJhc2UsIHByb3BlcnR5SW5kZXgpOwogCi0gICAgT3BQdXRCeUlk
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBQdXRCeUlkTm9uZSk7IC8v
IGlzIG5vdCBkaXJlY3QKKyAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHlJ
bmRleCwgdmFsdWUsIFB1dEJ5SWROb25lLCBlY21hTW9kZSgpKTsgLy8gaXMgbm90IGRpcmVjdAog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjUxNyw3ICsyNTQxLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHRoaXNWYWwKIAogICAgIHVuc2lnbmVkIHByb3BlcnR5SW5kZXggPSBhZGRDb25zdGFudChw
cm9wZXJ0eSk7CiAKLSAgICBPcFB1dEJ5SWRXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlz
VmFsdWUsIHByb3BlcnR5SW5kZXgsIHZhbHVlKTsKKyAgICBPcFB1dEJ5SWRXaXRoVGhpczo6ZW1p
dCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBlY21hTW9kZSgp
KTsKIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTI1MzEsNyArMjU1NSw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFz
ZSwgcHJvcGVydHlJbmRleCk7CiAKICAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBlID09
IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8pID8gUHV0QnlJZElzRGlyZWN0IDogUHV0QnlJZE5vbmU7Ci0g
ICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCB0eXBl
KTsKKyAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHlJbmRleCwgdmFsdWUs
IHR5cGUsIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjU5MCw3ICsy
NjE0LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEFzeW5jR2VuZXJhdG9yRmll
bGRzKFJlZ2lzdGVySUQqIG5leHRGdW5jdGlvbikKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxldGVCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0gICAgT3BEZWxCeUlkOjplbWl0KHRoaXMs
IGRzdCwgYmFzZSwgYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICBPcERlbEJ5SWQ6OmVtaXQo
dGhpcywgZHN0LCBiYXNlLCBhZGRDb25zdGFudChwcm9wZXJ0eSksIGVjbWFNb2RlKCkpOwogICAg
IHJldHVybiBkc3Q7CiB9CiAKQEAgLTI2MzQsMjUgKzI2NTgsMjUgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIFIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
CiB7Ci0gICAgT3BQdXRCeVZhbDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOwor
ICAgIE9wUHV0QnlWYWw6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9k
ZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRC
eVZhbFdpdGhUaGlzOjplbWl0KHRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVl
KTsKKyAgICBPcFB1dEJ5VmFsV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBw
cm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAg
T3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAg
IE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21h
TW9kZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSkKIHsKLSAgICBPcERlbEJ5VmFsOjplbWl0KHRoaXMsIGRz
dCwgYmFzZSwgcHJvcGVydHkpOworICAgIE9wRGVsQnlWYWw6OmVtaXQodGhpcywgZHN0LCBiYXNl
LCBwcm9wZXJ0eSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMzI0Niw3
ICszMjcwLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjCiAgICAgLy8gRW1pdCBjYWxsLgog
ICAgIEFTU0VSVChkc3QpOwogICAgIEFTU0VSVChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKTsKLSAg
ICBDYWxsT3A6OmVtaXQodGhpcywgZHN0LCBmdW5jLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKCksIGNhbGxBcmd1bWVudHMuc3RhY2tPZmZzZXQoKSk7CisgICAgaWYg
Y29uc3RleHByIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpCisgICAgICAgIENhbGxPcDo6ZW1p
dCh0aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpLCBlY21hTW9kZSgpKTsKKyAgICBlbHNl
CisgICAgICAgIENhbGxPcDo6ZW1pdCh0aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpKTsK
ICAgICAKICAgICBpZiAoZXhwZWN0ZWRGdW5jdGlvbiAhPSBOb0V4cGVjdGVkRnVuY3Rpb24pCiAg
ICAgICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKQEAgLTM3ODksNyArMzgxNiw3IEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHksIFJlCiAgICAgdW5zaWduZWQgbnVtVmFycyA9IG1fY29kZUJsb2NrLT5u
dW1WYXJzKCk7CiAgICAgcHVzaExleGljYWxTY29wZUludGVybmFsKG5hbWVTY29wZUVudmlyb25t
ZW50LCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNO
b3ROZXN0ZWQsIG51bGxwdHIsIFREWlJlcXVpcmVtZW50OjpOb3RVbmRlclREWiwgU2NvcGVUeXBl
OjpGdW5jdGlvbk5hbWVTY29wZSwgU2NvcGVSZWdpc3RlclR5cGU6OlZhcik7CiAgICAgQVNTRVJU
X1VOVVNFRChudW1WYXJzLCBtX2NvZGVCbG9jay0+bnVtVmFycygpID09IHN0YXRpY19jYXN0PGlu
dD4obnVtVmFycyArIDEpKTsgLy8gU2hvdWxkIGhhdmUgb25seSBjcmVhdGVkIG9uZSBuZXcgInZh
ciIgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIHNjb3BlLgotICAgIGJvb2wgc2hvdWxkVHJlYXRBc0xl
eGljYWxWYXJpYWJsZSA9IGlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgc2hvdWxkVHJlYXRBc0xl
eGljYWxWYXJpYWJsZSA9IGVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKICAgICBWYXJpYWJsZSBmdW5j
dGlvblZhciA9IHZhcmlhYmxlRm9yTG9jYWxFbnRyeShwcm9wZXJ0eSwgbV9sZXhpY2FsU2NvcGVT
dGFjay5sYXN0KCkubV9zeW1ib2xUYWJsZS0+Z2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgcHJvcGVy
dHkuaW1wbCgpKSwgbV9sZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zeW1ib2xUYWJsZUNvbnN0
YW50SW5kZXgsIHNob3VsZFRyZWF0QXNMZXhpY2FsVmFyaWFibGUpOwogICAgIGVtaXRQdXRUb1Nj
b3BlKG1fbGV4aWNhbFNjb3BlU3RhY2subGFzdCgpLm1fc2NvcGUsIGZ1bmN0aW9uVmFyLCBjYWxs
ZWUsIFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlv
bik7CiB9CkBAIC0zOTcyLDcgKzM5OTksNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZChjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCiB7CiAg
ICAgLy8gSWYgd2UncmUgaW4gc3RyaWN0IG1vZGUsIHdlIGFsd2F5cyB0aHJvdy4KICAgICAvLyBJ
ZiB3ZSdyZSBub3QgaW4gc3RyaWN0IG1vZGUsIHdlIHRocm93IGZvciAiY29uc3QiIHZhcmlhYmxl
cyBidXQgbm90IHRoZSBmdW5jdGlvbiBjYWxsZWUuCi0gICAgaWYgKGlzU3RyaWN0TW9kZSgpIHx8
IHZhcmlhYmxlLmlzQ29uc3QoKSkgeworICAgIGlmIChlY21hTW9kZSgpLmlzU3RyaWN0KCkgfHwg
dmFyaWFibGUuaXNDb25zdCgpKSB7CiAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKG1fdm0sIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTUwNTUsNyArNTA4Miw3IEBAIHZvaWQgU3RhdGlj
UHJvcGVydHlBbmFseXNpczo6cmVjb3JkKCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFRvVGhpcygpCiB7Ci0gICAgT3BUb1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVnaXN0
ZXIpKTsKKyAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlciksIGVj
bWFNb2RlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyOTg5
Mzc0MGE4NWE1ODQ5ZTM5NzI4ODU2NTAzMmFlNzRiYWZmNTViLi43MDc1OTZhNDk3NzIwMWNlZTc0
MWUzMmExNzg3MzZkNTRhMTYyNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zODAsMTMgKzM4MCwxNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEZpbmFsbHlDb250ZXh0Owog
ICAgICAgICBmcmllbmQgY2xhc3MgSW5kZXhlZEZvckluQ29udGV4dDsKICAgICAgICAgZnJpZW5k
IGNsYXNzIFN0cnVjdHVyZUZvckluQ29udGV4dDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFN0cmlj
dE1vZGVTY29wZTsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFj
a3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIAotICAgICAgICBCeXRlY29kZUdlbmVy
YXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKLSAg
ICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9k
ZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCopOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNN
QU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCosIEVDTUFNb2RlKTsKIAogICAgICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3IoKTsKICAgICAgICAg
CkBAIC00MDYsMTQgKzQwNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQogCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrPgot
ICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogZW52aXJvbm1lbnQpCisgICAgICAgIHN0YXRp
YyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIE1vbm90b25pY1RpbWUgYmVmb3JlOwogICAgICAgICAgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKQogICAgICAgICAg
ICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICBEZWZl
ckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9y
ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJs
b2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsKKyAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9k
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQsIGVj
bWFNb2RlKTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0b3ItPmdl
bmVyYXRlKCk7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRl
Y29kZUNvbXBpbGVUaW1lcygpKSkgewpAQCAtMTAxOSw3ICsxMDIwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFR5cGVQcm9maWxlckhvb2tzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlR2VuZXJhdGlvbk1vZGUuY29udGFpbnMoQ29kZUdlbmVyYXRpb25Nb2RlOjpU
eXBlUHJvZmlsZXIpOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdENvbnRyb2xGbG93UHJvZmls
ZXJIb29rcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUdlbmVyYXRpb25Nb2RlLmNvbnRhaW5zKENv
ZGVHZW5lcmF0aW9uTW9kZTo6Q29udHJvbEZsb3dQcm9maWxlcik7IH0KICAgICAgICAgCi0gICAg
ICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpOyB9CisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9lY21hTW9kZTsgfQogICAgICAgICB2b2lkIHNldFVzZXNDaGVja3BvaW50cygpIHsgbV9jb2Rl
QmxvY2stPnNldEhhc0NoZWNrcG9pbnRzKCk7IH0KIAogICAgICAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CkBA
IC0xMjk3LDggKzEyOTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2lzQnVp
bHRpbkZ1bmN0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX3VzZXNOb25TdHJpY3RFdmFs
IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFsc2UgfTsKLSAg
ICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICAgICAg
Ym9vbCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaIHsgZmFsc2UgfTsKKyAgICAgICAgYm9v
bCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CisgICAgICAgIEVDTUFN
b2RlIG1fZWNtYU1vZGU7CiAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250
ZXh0VHlwZSB7IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSB9OwogCiAgICAgICAgIENvbXBhY3RW
YXJpYWJsZU1hcDo6SGFuZGxlIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFo7CkBAIC0xMzEyLDYg
KzEzMTQsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxDYXRjaEVudHJ5PiBt
X2V4Y2VwdGlvbkhhbmRsZXJzVG9FbWl0OwogICAgIH07CiAKKyAgICBjbGFzcyBTdHJpY3RNb2Rl
U2NvcGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgU3RyaWN0TW9kZVNjb3BlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IpCisgICAgICAgICAgICA6IG1fZ2VuZXJhdG9yKGdlbmVyYXRvcikK
KyAgICAgICAgICAgICwgbV9wcmV2aW91c0VDTUFNb2RlKGdlbmVyYXRvci5tX2VjbWFNb2RlKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2dlbmVyYXRvci5tX2VjbWFNb2RlID0gRUNNQU1vZGU6
OnN0cmljdCgpOworICAgICAgICB9CisKKyAgICAgICAgflN0cmljdE1vZGVTY29wZSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fZ2VuZXJhdG9yLm1fZWNtYU1vZGUgPSBtX3ByZXZpb3VzRUNN
QU1vZGU7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEJ5dGVjb2RlR2VuZXJh
dG9yJiBtX2dlbmVyYXRvcjsKKyAgICAgICAgRUNNQU1vZGUgbV9wcmV2aW91c0VDTUFNb2RlOwor
ICAgIH07CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRl
eCAzYjNjZDRiZTQ4OWJjMDI4Y2IwYmJiNDk1ZWQ0YzBiYzdlNTI2MjAyLi5jYmE2M2Y4MjRiZThm
ZGY2MWI0ODA1MWQ3OGM3ZjZkOTNlY2Y5MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yODg5LDcgKzI4ODksNyBA
QCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGdlbmVyYXRvci5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwog
ICAgIGlmIChtX2Fzc2lnbm1lbnRDb250ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpBc3NpZ25t
ZW50RXhwcmVzc2lvbikKQEAgLTI5MDYsNyArMjkwNiw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHJldHVyblJlc3VsdCA9IHJlc3VsdC5n
ZXQoKTsKICAgICBpZiAoIWlzUmVhZE9ubHkpIHsKLSAgICAgICAgcmV0dXJuUmVzdWx0ID0gZ2Vu
ZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHJlc3VsdC5nZXQoKSwgZ2Vu
ZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIGluaXRpYWxpemF0aW9uTW9kZUZvckFzc2lnbm1lbnRDb250ZXh0KG1fYXNzaWdubWVu
dENvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuUmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRQdXRUb1Nj
b3BlKHNjb3BlLmdldCgpLCB2YXIsIHJlc3VsdC5nZXQoKSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0
aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Fzc2lnbm1lbnRDb250ZXh0KSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmVzdWx0LmdldCgpLCB2YXIsIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogCkBAIC0zMTI2LDcgKzMxMjYsNyBAQCBS
ZWdpc3RlcklEKiBFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7
CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChu
dWxscHRyLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3Bl
KHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkg
PyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25N
b2RlOjpJbml0aWFsaXphdGlvbik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShz
Y29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXph
dGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZSh2YWx1ZS5nZXQoKSwgdmFyLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsgbV9pZGVudC5s
ZW5ndGgoKSk7IAogICAgIH0KIApAQCAtMzMzNiwxMyArMzMzNiwxMyBAQCB2b2lkIEZvckluTm9k
ZTo6ZW1pdExvb3BIZWFkZXIoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogcHJvcGVydAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRp
b25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUobG9jYWwsIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlz
U3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgaWYgKHZhci5pc1Jl
YWRPbmx5KCkpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlv
bklmTmVlZGVkKHZhcik7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2
YXIsIHByb3BlcnR5TmFtZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZv
dW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlh
bGl6YXRpb24pOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdl
dCgpLCB2YXIsIHByb3BlcnR5TmFtZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/
IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1v
ZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKHByb3BlcnR5TmFtZSwgdmFyLCBtX2xleHByLT5wb3NpdGlvbigpLCBtX2xl
eHByLT5wb3NpdGlvbigpICsgaWRlbnQubGVuZ3RoKCkpOwogICAgIH07CkBAIC0zNTkzLDEzICsz
NTkzLDEzIEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IubW92ZShsb2NhbCwgdmFsdWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAg
IGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHZhci5pc1JlYWRPbmx5KCkpCiAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIp
OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5l
bWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwot
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFy
LCB2YWx1ZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9O
b3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24p
OworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwg
dmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RG
b3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGUodmFsdWUsIHZhciwgbV9sZXhwci0+cG9zaXRpb24oKSwgbV9sZXhwci0+cG9zaXRp
b24oKSArIGlkZW50Lmxlbmd0aCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChtX2xleHByLT5pc0Rv
dEFjY2Vzc29yTm9kZSgpKSB7CkBAIC00MzgzLDYgKzQzODMsOCBAQCB2b2lkIENsYXNzRGVjbE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KikKIAogUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBTdHJpY3RNb2RlU2Nv
cGUgc3RyaWN0TW9kZVNjb3BlKGdlbmVyYXRvcik7CisKICAgICBpZiAobV9uZWVkc0xleGljYWxT
Y29wZSkKICAgICAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVH
ZW5lcmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0
b3I6Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQpOwogCkBAIC00ODE3LDcgKzQ4MTksNyBAQCB2
b2lkIEJpbmRpbmdOb2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogdmFsdWUpIGNvbgogICAgICAgICAgICAgZ2VuZXJhdG9yLmxpZnRURFpDaGVj
a0lmUG9zc2libGUodmFyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoZ2VuZXJh
dG9yLmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmlj
dCgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CkBAIC00ODI3LDcgKzQ4MjksNyBAQCB2b2lkIEJpbmRpbmdOb2RlOjpiaW5kVmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUpIGNvbgogICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZh
ciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERv
Tm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4
dChtX2JpbmRpbmdDb250ZXh0KSk7CisgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3Bl
LmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhy
b3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIGluaXRpYWxpemF0aW9uTW9kZUZv
ckFzc2lnbm1lbnRDb250ZXh0KG1fYmluZGluZ0NvbnRleHQpKTsKICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKHZhbHVlLCB2YXIsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAg
aWYgKG1fYmluZGluZ0NvbnRleHQgPT0gQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3Rh
dGVtZW50IHx8IG1fYmluZGluZ0NvbnRleHQgPT0gQXNzaWdubWVudENvbnRleHQ6OkNvbnN0RGVj
bGFyYXRpb25TdGF0ZW1lbnQpCiAgICAgICAgIGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3Np
YmxlKHZhcik7CkBAIC00ODY1LDcgKzQ4NjcsNyBAQCB2b2lkIEFzc2lnbm1lbnRFbGVtZW50Tm9k
ZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaWYgKGdlbmVyYXRvci5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90RW5kKCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZh
cik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIG51bGxw
dHIsIHNjb3BlLmdldCgpKTsKQEAgLTQ4NzYsNyArNDg3OCw3IEBAIHZvaWQgQXNzaWdubWVudEVs
ZW1lbnROb2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCoKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90RW5kKCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGlmICghaXNSZWFk
T25seSkgewotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgp
LCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQg
OiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbik7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCks
IHZhciwgdmFsdWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90
Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0
aWFsaXphdGlvbik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVl
LCB2YXIsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKG1fYXNzaWdubWVudFRhcmdldC0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5k
ZXggYzNkNGMzZjk0NjNmOThkNzdiNzUzYjBlZGM2ODJjNWM0MDlhNzBjMy4uZGVmNWI2OGNlNjM4
ZjcwNTJkOTk5MDA1YmQ2N2YwMDQwMDlkOTgwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yMTIsOSArMjEyLDkg
QEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKFZNJiB2bSkgY29uc3QKICAg
ICBpZiAoIXRoaXNWYWx1ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBF
Q01BTW9kZSBlY21hTW9kZSA9IE5vdFN0cmljdE1vZGU7Ci0gICAgaWYgKGNvZGVCbG9jayAmJiBj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICBlY21hTW9kZSA9IFN0cmljdE1vZGU7
CisgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBFQ01BTW9kZTo6bm90U3RyaWN0KCk7CisgICAgaWYg
KGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29u
dGV4dCgpKQorICAgICAgICBlY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsKICAgICByZXR1
cm4gdGhpc1ZhbHVlLnRvVGhpcyhtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KHZtKSwgZWNtYU1vZGUpOwogfQogCkBAIC0yNTMsNyArMjUzLDggQEAgSlNWYWx1ZSBEZWJ1
Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIEpTT2IKICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwog
ICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNT
Y29wZSgpLCB2YXJpYWJsZXNVbmRlclREWik7CiAKLSAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxs
RnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
LCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBj
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGV2
YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBFQ01BTW9kZSBlY21hTW9k
ZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBF
Q01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6bm90U3RyaWN0KCk7CisgICAgYXV0byogZXZh
bCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNl
KHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51
bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUs
ICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOwogICAgIGlmIChVTkxJS0VMWShjYXRjaFNj
b3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2Vw
dGlvbigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggZTk1ODAwYWZmMjY3OTVhNDJkOTQ2Mzk0Y2JkZTUzMDk2ODhjZGM0Ni4uM2Iy
M2U0YmFjOTE5YjY0NWUyNmZmYWU4N2Q4ZTFhYjkzZDNjYmZlZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMTg1LDEwICsxODUsMTAgQEAgZW51bSBjbGFzcyBUb1RoaXNSZXN1bHQgewogICAgIEds
b2JhbFRoaXMsCiAgICAgRHluYW1pYywKIH07Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlz
QW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1
ZUZvck5vZGUpCitpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0s
IEVDTUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCiB7CiAgICAg
Ly8gV2UgbG9vayBhdCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9zdCBj
YXNlcyBhbmQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVzLgot
ICAgIGlmIChpc1N0cmljdE1vZGUpIHsKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkgewog
ICAgICAgICBpZiAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUg
JiBTcGVjT2JqZWN0T3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRl
bnRpdHk7CiAgICAgfSBlbHNlIHsKQEAgLTIwMiwyMCArMjAyLDIwIEBAIGlubGluZSBUb1RoaXNS
ZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3Ry
YWN0VmFsdWUmCiAgICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9kID09ICZKU09iamVjdDo6dG9U
aGlzKQogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwogICAg
ICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNTY29wZTo6dG9UaGlzKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgICAgICBpZiAoZWNtYU1vZGUu
aXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6VW5k
ZWZpbmVkOwogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoKGlzU3RyaWN0TW9k
ZSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3Bl
Y09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAg
IGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZh
bHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1
Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICBib29sIGFsbFN0cnVjdHVyZXNBcmVKU1Njb3Bl
ID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7CiAgICAgICAgIGJvb2wgb3Zl
cnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5m
b3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAg
VHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKICAgICAgICAgICAgIEFTU0VS
VCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5
cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOwotICAgICAg
ICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCisgICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3Ry
aWN0KCkpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAg
ICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJl
IHNpbmNlIGVpdGhlcjoKICAgICAgICAgICAgIC8vIDEpIFdlIGFyZSBpbiBzdHJpY3QgbW9kZSBh
bmQgc3RyaW5ncy9zeW1ib2xzIGFyZSBub3Qgd3JhcHBlZApAQCAtMjI5LDcgKzIyOSw3IEBAIGlu
bGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmlj
dE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGlmICghb3ZlcnJpZGVzVG9UaGlzKQogICAg
ICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgICAgIGlmIChhbGxT
dHJ1Y3R1cmVzQXJlSlNTY29wZSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKKyAg
ICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1
bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgIH0KQEAgLTI3MjksOSArMjcyOSw5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1
ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0VmFs
dWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsKLSAgICAgICAgYm9vbCBzdHJpY3RNb2Rl
ID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAg
ICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogCi0gICAgICAgIFRvVGhp
c1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV92bSwgc3RyaWN0TW9kZSwgc291
cmNlKTsKKyAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eSht
X3ZtLCBlY21hTW9kZSwgc291cmNlKTsKICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAg
ICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgogICAgICAgICAgICAgbV9zdGF0ZS5zZXRT
aG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7CkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgZGVzdGluYXRpb24uc2V0VHlwZShtX2dy
YXBoLCBTcGVjT2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRvVGhp
c1Jlc3VsdDo6RHluYW1pYzoKLSAgICAgICAgICAgIGlmIChzdHJpY3RNb2RlKQorICAgICAgICAg
ICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24u
bWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uID0gc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCBlNmQ1YjY1YTRkMDExNmM2ODZhZTA2ZTExOGNkN2ZjYTkzNzY3
MWNmLi40NTYwODBhNTJjNTExMDYzNWQ1MjA2MmM4NGVlNWE5MmEyMWY2MDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjQ1LDEw
ICsyNDUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvblNpemUpOwogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCi0gICAgICAgIE5vZGUq
IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0
QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJlY3QpOworICAgICAgICBOb2RlKiBiYXNlLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLCBi
b29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CiAgICAgdm9pZCBoYW5kbGVQdXRCeUlkKAogICAgICAg
ICBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29u
c3QgUHV0QnlJZFN0YXR1cyYsCi0gICAgICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGludHJ1
Y3Rpb25TaXplKTsKKyAgICAgICAgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW50cnVjdGlvblNp
emUsIEVDTUFNb2RlKTsKICAgICAKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50
IG9yIGVtaXQgYSBjaGVjayBmb3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhl
CiAgICAgLy8gY29uZGl0aW9uIG5vIGxvbmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFz
b25hYmxlIGNoZWNrIGNhbiBiZSBlbWl0dGVkLgpAQCAtODQ2LDE4ICs4NDYsMTggQEAgcHJpdmF0
ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1
cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBO
b2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxD
YWxsKSB7CiAgICAgICAgICAgICBpZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJ
bmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8o
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChv
cCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOwog
ICAgICAgICAgICAgb3AgPSBUYWlsQ2FsbElubGluZWRDYWxsZXI7CiAgICAgICAgIH0KIAogCiAg
ICAgICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAg
ICAgICBvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zm
c2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVl
LCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAg
IGlmIChyZXN1bHQuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2V0KHJlc3VsdCwgY2FsbCk7CiAg
ICAgICAgIHJldHVybiBjYWxsOwpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgQnl0ZUNvZGVQYXJzZXI6
OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRy
LCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQs
IHByZWRpY3Rpb24pOworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBP
cEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVy
T2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENh
bGxWYXJhcmdzICYmIGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwog
ICAgIHJldHVybiBjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCA/IFRlcm1pbmFsIDogTm9uVGVy
bWluYWw7CiB9CkBAIC0yMTgyLDcgKzIxODIsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGlt
aXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSog
bXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRh
a2VTbG93UGF0aCkgewogICAgICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0LCBjYWxs
T3AsIG51bGxwdHIsIG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LAorICAgICAgICAgICAgcmVzdWx0LCBjYWxsT3AsIE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2Rl
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
LCBwcmVkaWN0aW9uKTsKICAgICAgICAgVkVSQk9TRV9MT0coIldlIGFkZGVkIGEgY2FsbCBpbiB0
aGUgc2xvdyBwYXRoXG4iKTsKICAgICB9IGVsc2UgewpAQCAtMzY1Niw3ICszNjU2LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNM
VURJTkdfVEhJUywgIkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRy
YXJ5IGxlbmd0aCBhcmd1bWVudHMuIik7CiAKICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICBhZGRD
YWxsKHJlc3VsdCwgQ2FsbCwgc2lnbmF0dXJlLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIGFkZENhbGwocmVz
dWx0LCBDYWxsLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNDYxNSwyMiArNDYxNSwyMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVHZXRCeUlkKAogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKLSAgICBO
b2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3Qg
UHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCkKKyAgICBOb2RlKiBi
YXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJ
ZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUp
CiB7CiAgICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3Qs
IE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSwgdmFsdWUpOworICAgICAgICBhZGRUb0dy
YXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKGVjbWFN
b2RlKSwgYmFzZSwgdmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgYWRkVG9HcmFwaChwdXRCeUlk
U3RhdHVzLm1ha2VzQ2FsbHMoKSA/IFB1dEJ5SWRGbHVzaCA6IFB1dEJ5SWQsIE9wSW5mbyhpZGVu
dGlmaWVyTnVtYmVyKSwgYmFzZSwgdmFsdWUpOworICAgICAgICBhZGRUb0dyYXBoKHB1dEJ5SWRT
dGF0dXMubWFrZXNDYWxscygpID8gUHV0QnlJZEZsdXNoIDogUHV0QnlJZCwgT3BJbmZvKGlkZW50
aWZpZXJOdW1iZXIpLCBPcEluZm8oZWNtYU1vZGUpLCBiYXNlLCB2YWx1ZSk7CiB9CiAKIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgTm9kZSogYmFzZSwgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsCi0gICAgY29uc3QgUHV0QnlJZFN0YXR1cyYg
cHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQor
ICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIHVu
c2lnbmVkIGluc3RydWN0aW9uU2l6ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYgKCFw
dXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSB8
fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBpZiAoIXB1dEJ5SWRT
dGF0dXMuaXNTZXQoKSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKLSAg
ICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRT
dGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51
bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCkBAIC00NjM4LDcgKzQ2MzgsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRM
KCkgfHwgcHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25z
Ojp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1dEJ5SWRT
dGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmdMaXN0U2l6ZSgpKSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1p
dFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlz
RGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC00NjQ3LDcgKzQ2NDcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eUlkKAogICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0ua2lu
ZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrKHB1dEJ5SWRTdGF0dXNbdmFyaWFu
dEluZGV4XS5jb25kaXRpb25TZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5
SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00
NjkwLDcgKzQ2OTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogCiAg
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVj
dHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwogICAgICAgICBpZiAoIWNo
ZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChi
YXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwor
ICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1
dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtNDc1Nyw3ICs0NzU3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0QnlJZCgKIAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQoU3BlY0NlbGxP
dGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgICAgIGlmICghbG9h
ZGVkVmFsdWUpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1i
ZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0
QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJl
Y3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAK
QEAgLTQ4MDEsNyArNDgwMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQo
CiAgICAgfQogICAgIAogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwg
aWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAg
ICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0
dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IH0KIH0KQEAg
LTQ5NzMsNyArNDk3Myw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7CiAgICAg
ICAgICAgICBOb2RlKiBvcDEgPSBnZXRUaGlzKCk7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0
YSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEoY29kZUJsb2Nr
KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
VG9UaGlzPigpOworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQg
PSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlKiBj
YWNoZWRTdHJ1Y3R1cmUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVy
ZUlEKQpAQCAtNDk4NCw3ICs0OTg1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAg
ICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKQogICAgICAgICAgICAgICAgIHx8IChvcDEtPm9wKCkg
PT0gR2V0TG9jYWwgJiYgb3AxLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c3RydWN0dXJlQ2hlY2tI
b2lzdGluZ0ZhaWxlZCgpKSkgewotICAgICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChU
b1RoaXMsIE9wSW5mbygpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CisgICAgICAg
ICAgICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNt
YU1vZGUpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIENo
ZWNrU3RydWN0dXJlLApAQCAtNTgyMyw3ICs1ODI0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHRo
aXNWYWx1ZSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CiAgICAgICAg
ICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6
OlZhckFyZywgUHV0QnlWYWxXaXRoVGhpcywgT3BJbmZvKDApLCBPcEluZm8oMCkpOworICAgICAg
ICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbyhi
eXRlY29kZS5tX2VjbWFNb2RlKSwgT3BJbmZvKDApKTsKIAogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CkBAIC01ODk5LDcgKzU5MDAs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0
U3RhY2ssCiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5pZGVu
dGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
aGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1
cywgZGlyZWN0LCBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICBoYW5k
bGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBk
aXJlY3QsIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpLCBieXRlY29kZS5tX2VjbWFNb2RlKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV9pZCk7CiAgICAgICAgIH0KIApAQCAt
NTkxMCw3ICs1OTExLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUp
OwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tU
b3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwogCi0gICAgICAgICAg
ICBhZGRUb0dyYXBoKFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBi
YXNlLCB0aGlzVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZFdp
dGhUaGlzLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFN
b2RlKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKICAgICAgICAgfQogCkBAIC01OTQ0LDcgKzU5NDUsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigp
OwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwogICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRl
bnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwotICAgICAgICAgICAgc2V0KGJ5dGVj
b2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVy
KSwgYmFzZSkpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERl
bGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNt
YU1vZGUpLCBiYXNlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwog
ICAgICAgICB9CiAKQEAgLTU5NTIsNyArNTk1Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOwogICAgICAgICAgICAgTm9kZSogYmFz
ZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwogICAgICAgICAgICAgTm9kZSoga2V5ID0gZ2V0KGJ5
dGVjb2RlLm1fcHJvcGVydHkpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRU
b0dyYXBoKERlbGV0ZUJ5VmFsLCBiYXNlLCBrZXkpKTsKKyAgICAgICAgICAgIHNldChieXRlY29k
ZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeVZhbCwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpLCBiYXNlLCBrZXkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV92YWwp
OwogICAgICAgICB9CiAKQEAgLTY0NzUsNyArNjQ3Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7
CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENh
bGxFdmFsPigpOwogICAgICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1f
YXJndjsKLSAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBudWxs
cHRyLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpLCBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zm
c2V0LCBnZXRQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYWRkQ2FsbChieXRlY29kZS5tX2Rz
dCwgQ2FsbEV2YWwsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgZ2V0KGJ5dGVjb2RlLm1f
Y2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigp
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIApAQCAtNjgyNCw3ICs2ODI1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGlmIChuZWVkc0R5bmFtaWNMb29r
dXAocmVzb2x2ZVR5cGUsIG9wX3B1dF90b19zY29wZSkpIHsKICAgICAgICAgICAgICAgICBBU1NF
UlQoaWRlbnRpZmllck51bWJlciAhPSBVSU5UX01BWCk7CiAgICAgICAgICAgICAgICAgdWludDY0
X3Qgb3BJbmZvMSA9IG1ha2VEeW5hbWljVmFyT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIsIGdldFB1
dEluZm8ub3BlcmFuZCgpKTsKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dER5bmFtaWNW
YXIsIE9wSW5mbyhvcEluZm8xKSwgT3BJbmZvKCksIGdldChieXRlY29kZS5tX3Njb3BlKSwgZ2V0
KGJ5dGVjb2RlLm1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dER5bmFt
aWNWYXIsIE9wSW5mbyhvcEluZm8xKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQo
Ynl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfcHV0X3RvX3Njb3BlKTsKICAgICAgICAgICAgIH0KIApAQCAtNjg0
Niw3ICs2ODQ3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMQogICAg
ICAgICAgICAgICAgICAgICB8fCBzdGF0dXNbMF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpS
ZXBsYWNlCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5zdHJ1Y3R1cmUoKS5zaXpl
KCkgIT0gMSkgewotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5m
byhpZGVudGlmaWVyTnVtYmVyKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNvZGUu
bV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5m
byhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0
ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2JqZWN0KTsKQEAgLTc0OTIsOCArNzQ5Myw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAiIGZv
ciBpbmxpbmluZyBhdCAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUVHlw
ZTo6REZHSklUKSwKICAgICAgICAgICAgICAgICAiICIsIGlubGluZUNhbGxGcmFtZSgpLT5kaXJl
Y3RDYWxsZXIpOwogICAgICAgICB9Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiLCBp
c1N0cmljdE1vZGUgPSAiLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1v
ZGUoKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2dMbigpOwogICAgICAgICBjb2RlQmxvY2stPmJh
c2VsaW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNvZGUoKTsKICAgICB9CiAgICAgCkBAIC03NTk4LDcg
Kzc1OTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBi
eXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBp
ZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0
aW9uU2l6ZSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1i
ZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgaW5zdHJ1Y3Rpb25TaXplLCBieXRl
Y29kZS5tX2VjbWFNb2RlKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7
CkBAIC03NjA5LDcgKzc2MDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bChCeXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogICAgICAgICBh
ZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2
ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsg
Ly8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFy
ZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2Rl
LmFzV29yZCgpKSwgT3BJbmZvKDApKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcs
IGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5h
c1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQg
YXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2Ug
dGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggYjQzZjdjZjU0ZTEyMTc0NzE3
NmRkY2U5NjViNmM4MThmMjkxNjE4NS4uOGU2ZmNhNzc5MTc0ZDI4ZmI4NGQ2NzBmNTk2ZjAwZGQw
Yjg2NWZlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTc0MCw3ICs3NDAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAgICAgICAgICAgIFRv
VGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3ZtLCBtX2dy
YXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0
ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5KSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZTk3
ZGUxMGY2ZjRjZGMxNWJhZWZiMTBiN2VjNjA2MjgyNzgzNTk1NS4uMTMwNWYzYzFmNjI0OGJjYTA2
NzJmNjEzZTkwZTQ4NGQxY2IwODFhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCkBAIC0yODMyLDcgKzI4MzIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBmaXh1cFRvVGhpcyhOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgYm9vbCBpc1N0cmljdE1v
ZGUgPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKIAog
ICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCmluZGV4IDk0N2VmYWFiYTllNjQ5NmIzYjA1YzZmNTUxNDJhYjdjNzdiNWI1YTIuLjFk
YjU5YTViMzU0NmEwNmFmMDBkMjJjYzVhZmUyZDdjOGQxYzUyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmpl
Y3QqIGdsb2JhbFRoaXNPYmplY3RGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIG9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KTsKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUo
bV92bSktPnRvVGhpcyhvYmplY3QsIG9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgICAgICBy
ZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlz
KG9iamVjdCwgb2JqZWN0LCBFQ01BTW9kZTo6bm90U3RyaWN0KCkpKTsKICAgICB9CiAgICAgCiAg
ICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSkKQEAgLTQ2OSwxOCArNDY5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2lu
LCBtX3Byb2ZpbGVkQmxvY2spOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3RyaWN0TW9kZUZv
cihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICBpZiAoIWNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpOwotICAgICAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKS0+
aXNTdHJpY3RNb2RlKCk7Ci0gICAgfQotICAgIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlRm9yKENv
ZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdE1vZGVG
b3IoY29kZU9yaWdpbikgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKLSAgICB9Ci0gICAg
CiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZChj
b25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQo
KS0+aXNTdGlsbFZhbGlkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEz
NDU1YjVjMjlmMDcwZmVmMmY5OTE5NTJiY2ZmMDA3ZmVhOTE3MjYuLmNkMDM2NTE5ZGI3OThjNWQ4
MjZhZWMyYzgyYjMyZjhiNTNjYTNiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CkBAIC0yMTg5LDYgKzIxODksNTMgQEAgcHVibGljOgogICAgICAgICBtX29wSW5mbyA9IGFycmF5
TW9kZS5hc1dvcmQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCisgICAgYm9vbCBo
YXNFQ01BTW9kZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2Fz
ZSBDYWxsRXZhbDoKKyAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAgICBjYXNlIERlbGV0
ZUJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVj
dDoKKyAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhU
aGlzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6
CisgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRo
VGhpczoKKyAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFRvVGhpczoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgRUNNQU1vZGUgZWNtYU1vZGUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0VDTUFNb2RlKCkpOworICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKKyAgICAgICAgY2FzZSBDYWxsRXZhbDoKKyAgICAgICAgY2FzZSBEZWxldGVCeVZh
bDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIFRvVGhpczoK
KyAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhf
dD4oKSk7CisgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgor
ICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgor
ICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAg
ICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0Ogor
ICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6
OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1aW50OF90PigpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gRUNNQU1vZGU6OnN0cmljdCgpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGJvb2wg
aGFzQXJpdGhNb2RlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaApp
bmRleCA3N2VmY2ZiMjQ4MDAyYTRiZjVlYTYwYTZlNjY1MjBmZTA1MTQ0YmNjLi5lMjhkNzU1YTQy
N2QxYzJmMTk5NGY2MjM5ZDZhMzQwMjA3OGYyNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BJbmZvLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgICAgIDog
bV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpKSB7IH0KICAgICBleHBsaWNpdCBP
cEluZm8oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlKSkpIHsgfQogICAg
IGV4cGxpY2l0IE9wSW5mbyhPcGVyYW5kIG9wKSA6IG1fdmFsdWUob3AuYXNCaXRzKCkpIHsgfQor
ICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFNb2Rl
LnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQg
T3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCmluZGV4IDJmZGI5YzlkNzY3ZTY4NzJmZGNhZDY4NzNkZWY4ZTk0ODFlZjgxZDkuLmRhZjI5
MmY2NWM1NTcwMjc0NjkyMDllYmI0N2U1ZGQ1OTdjNjNmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6Om5vdFN0cmljdCgpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTMwNiw3ICszMDYs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmlj
dE1vZGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwogfQogCiBK
U0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkKQEAgLTM0MDcsNyAr
MzQwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90
eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlz
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKaW5kZXggMzYxODFhMjgyMTMzOWU4OGI2NjNjNjU4NzFj
MGRhM2NjNDRkZThhMi4uYmFhMjFjMGJiZmEyYWNmYmE1MGQ1YThmOTkzMmQzMTRkYjU0NDlmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9i
YmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxD
bG9iYmVyaXplLmgKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJtb3N0IGFy
Z3VtZW50cywgZXhjZXB0IHRoaXMsIGFyZSByZWFkIGluIHNsb3BweSBtb2RlLgotICAgICAgICAg
ICAgaWYgKCFtX2dyYXBoLm1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAg
ICAgaWYgKCFtX2dyYXBoLm1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmlj
dENvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgu
bV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAg
bV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CiAgICAg
ICAgICAgICB9CkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBSZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50cyBhbmQgY2FsbCBmcmFtZSBo
ZWFkZXJzIHRoYXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4KICAgICAgICAgICAgIGZvciAo
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWUoKTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBp
bmxpbmVDYWxsRnJhbWUtPmdldENhbGxlcklubGluZUZyYW1lU2tpcHBpbmdUYWlsQ2FsbHMoKSkg
ewotICAgICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKSkg
eworICAgICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0luU3RyaWN0Q29udGV4
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKS5vZmZzZXQoKSkp
OwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4ODU4YjM4
YzE2YTY1YThjOGViZGI5ZDQzNzAxMjgzNDcyYTUwYS4uYTA3YmJmNDY2MTczYTBjM2IyNTljZjU2
NGM3OGEyNmMxOGNiYzNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUwNiw3ICs1MDYs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7CiAgICAg
ICAgICAgICAvLyBUb1RoaXMgaW4gbWV0aG9kcyBmb3IgcHJpbWl0aXZlIHR5cGVzIHNob3VsZCBz
cGVjdWxhdGUgcHJpbWl0aXZlIHR5cGVzIGluIHN0cmljdCBtb2RlLgotICAgICAgICAgICAgYm9v
bCBpc1N0cmljdE1vZGUgPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCk7CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0Jvb2xlYW4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA3ZDA0YWQ2MTBiNmNmMzZiYWRjMWIzZTgwZTM1ZjFhMDE2ZDhiZDgyLi4xMDY1MGRlYzg4
MTI4Y2Y2NWVhOGNhMTgwYzNiZjUwNDIyMjM3YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjExOSw3ICsyMTE5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUsIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kJiBiYXMKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCi0g
ICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAg
ICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1
dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRE
b3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICA6
IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxE
aXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFs
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVn
KSk7CkBAIC0zMTUwLDI0ICszMTUwLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAg
ICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZUdQUikpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAg
ICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRp
b25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LAorICAgICAgICAg
ICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1
bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWVHUFIp
KTsKICAgICAgICAgfQogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhp
cywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1
dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1
bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBKU1ZhbHVlUmVncyhwcm9wZXJ0
eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVHUFIpKSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAg
ICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmlj
dCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QsCiAg
ICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1
ZVRhZ0dQUiwgdmFsdWVHUFIpKSk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzI5OSw3ICszMjk5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJp
bmcoTm9kZSogbm9kZSwgRWRnZSYgY2hpbGQxLAogICAgIHNwZWN1bGF0ZVN0cmluZyhjaGlsZDIs
IGFyZzJHUFIpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1f
aml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0
QnlWYWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3Ry
aWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1Jl
Z3MpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3Bl
cmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3Ry
aW5nTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQ
UiwgYXJnM1JlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3Vs
dChub2RlKTsKQEAgLTMzMTgsNyArMzMxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwKICAg
ICBzcGVjdWxhdGVTeW1ib2woY2hpbGQyLCBhcmcyR1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVj
bWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMTMyOSw3ICsxMTMyOSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBv
cGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJh
dGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBz
Y29wZUdQUiwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIo
KSksIG5vZGUtPmdldFB1dEluZm8oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjE1LDcgKzEyMjE1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgY2Fj
aGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2Ny
YXRjaEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBOb3REaXJlY3QsIE1hY3JvQXNzZW1i
bGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+aWRlbnRpZmll
ck51bWJlcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1ibGVyOjpK
dW1wKCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjMwLDcg
KzEyMjMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9k
ZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgTm90RGlyZWN0KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2Rl
LT5pZGVudGlmaWVyTnVtYmVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjQ1LDcgKzEyMjQ1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKSwgRGlyZWN0KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCks
IERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAg
LTEyMjYwLDcgKzEyMjYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRX
aXRoVGhpcyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpz
VmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24o
bV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25Q
dXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCisgICAgY2Fs
bE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeUlk
V2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCiAgICAgICAgIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1JlZ3MsIHZhbHVlUmVncywgaWRl
bnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCkBAIC0xMjYyOSw3ICsxMjYyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1RoaXMoTm9kZSogbm9kZSkKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKHRoaXNW
YWx1ZVJlZ3MsIHRlbXBSZWdzKTsKIAogICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwot
ICAgIGlmIChtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAg
ICBpZiAobm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBmdW5jdGlvbiA9IG9w
ZXJhdGlvblRvVGhpc1N0cmljdDsKICAgICBlbHNlCiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0
aW9uVG9UaGlzOwpAQCAtMTM3OTgsNyArMTM3OTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHJvZmlsZVR5cGUoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BS
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFN
b2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2Rl
IHNwaWxsTW9kZSkKIHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CkBAIC0xMzgx
MCw3ICsxMzgxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBnZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgdXNlZFJlZ2lzdGVycywKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIG1faml0LmVjbWFNb2RlRm9y
KGNvZGVPcmlnaW4pLCBwdXRLaW5kKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1
dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjFmYjBlOGM5N2E3
NTllYmQyOWY0N2IxM2FhMWM0NzhiMjAxM2VjMC4uNmU2NTdjNjVhOThlNzJiY2FhZjkyZjUyOWE0
NDNhZjc5MTc0ZDUzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaApAQCAtNzE3LDcgKzcxNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVD
aGVja05ldXRlcmVkKE5vZGUqKTsKIAogICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2lu
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVy
c01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBO
ZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUg
PSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggYzhjMTdmMmFmZDMzYTBiNDJmZWY2NDVhYmYzYWJmMDZiYzU5NmQ0Ny4uNDU5MzMwN2I4
MWEwOWRlYTdmOGUxYTBhZTBlNzFmMWZmZGVmNWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC03NjAsNyArNzYwLDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgdW5zaWdu
ZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIHNpemVvZihDYWxs
RnJhbWUqKSAqIDI7CiAgICAgICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgbV9q
aXQuc3ViUHRyKFRydXN0ZWRJbW0zMihyZXF1aXJlZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uQ2FsbEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBn
bG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpy
ZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7
CiAgICAgICAgIG1faml0LmFwcGVuZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtMjcyNSw5ICsyNzI2LDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIGFyZzNHUFIg
PSBhcmczLmdwcigpOwogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KQotICAgICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9u
U3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJn
M0dQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwg
YXJnMkdQUiwgYXJnM0dQUik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/
IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKKyAg
ICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/
IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAg
ICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMjgwOSw3ICsyODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc091
dE9mQm91bmRzKCkpIHsKICAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQor
ICAgICAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAg
ICAgICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG5v
ZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9u
ZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5k
c05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0yODkz
LDcgKzI4OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBpZiAoIXNsb3dDYXNlcy5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQ
dXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNT
dHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAg
ICAgICAgICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJl
ZywgdmFsdWVSZWcpKTsKQEAgLTM4OTcsNyArMzg5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3By
KCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbiht
X2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1
dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwg
dmFsdWVHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bFdpdGhUaGlzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVl
R1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNTQ3MCw3ICs1NDcxLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
CiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAot
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VS
ZWdzLCBwcm9wZXJ0eSk7CisgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgYmFzZVJlZ3MsIHByb3BlcnR5LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1v
ZGUoKS52YWx1ZSgpKSk7CiAKICAgICBtX2ppdC5hZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0
KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTU1
MTMsNyArNTUxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChO
b2RlKiBub2RlKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25E
ZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBrZXlSZWdzKTsKKyAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywga2V5UmVncywgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogCiAgICAgbV9qaXQuYWRkRGVsQnlW
YWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92
ZShzbG93UGF0aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IGU3NDdlZGZkYjlkNzhhNGZhOWI4OTZmNDQ4NTJhYzQ5NTU1MTIwYTQuLmJk
M2EyNDY1OWU2NjJkNGU0ZWExYzg1ZDBkZmEzNzY4OWE3ZTMzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTIxMjAsNyArMjEyMCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29u
dGludWF0aW9uKTsKICAgICAgICAgSl9KSVRPcGVyYXRpb25fR0ogZnVuY3Rpb247Ci0gICAgICAg
IGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisg
ICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgIGZ1
bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKQEAgLTM2ODIsNyArMzY4Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIExWYWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkp
OwogCi0gICAgICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeUlkV2l0aFRoaXMsCisgICAgICAgIHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJh
dGlvblB1dEJ5SWRXaXRoVGhpcywKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRl
bnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV0pKTsKICAgICB9CiAKQEAgLTM2
OTQsNyArMzY5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pT
VmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKICAgICAgICAgTFZhbHVlIHZh
bHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwogCi0gICAg
ICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0
QnlWYWxXaXRoVGhpcywKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1
dEJ5VmFsV2l0aFRoaXMsCiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBi
YXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQogICAgIApAQCAtMzk2Nyw3
ICszOTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhj
ZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0
ZTsKLSAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+ZWNtYU1vZGUoKTsKKyAgICAgICAgRUNNQU1vZGUgZWNtYU1v
ZGUgPSBub2RlLT5lY21hTW9kZSgpOwogICAgICAgICAKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTQ4MjUsMTIgKzQ4MjUsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBWX0pJVE9wZXJhdGlvbl9HQ0NKIG9wZXJhdGlvbiA9
IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMi51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9k
ZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nU3RyaWN0
OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05vblN0cmlj
dDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3RyaW5nU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0
cmluZ05vblN0cmljdDsKQEAgLTQ4NDEsMTIgKzQ4NDEsMTIgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAgICAgICAgIGlmIChjaGlsZDIudXNlS2luZCgpID09IFN5bWJvbFVzZSkgewogICAgICAgICAg
ICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9
IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFN0cmljdDsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xOb25TdHJpY3Q7CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0
cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmlj
dDsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJpY3Q7CkBA
IC00ODU4LDEyICs0ODU4LDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIFZfSklUT3BlcmF0
aW9uX0dKSkogb3BlcmF0aW9uOwogICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBQdXRC
eVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdDsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3Ry
aWN0OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5p
c1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAg
IGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Q7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbE5vblN0
cmljdDsKQEAgLTQ5MDksNyArNDkwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZhbE91dE9m
Qm91bmRzKAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAg
ICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAg
ICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNvbnRpbnVhdGlvbik7CkBAIC00OTM1
LDcgKzQ5MzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBjb250aWd1b3VzUHV0QnlWYWxPdXRPZkJvdW5kcygKLSAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
CiAgICAgICAgICAgICAgICAgICAgICAgICA/IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJl
Y3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0
IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKICAgICAg
ICAgICAgICAgICAgICAgICAgIDogKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9w
ZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBv
cGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAg
ICAgICAgICAgICAgICAgYmFzZSwgc3RvcmFnZSwgaW5kZXgsIHZhbHVlLCBjb250aW51YXRpb24p
OwpAQCAtNDk3NSw3ICs0OTc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBpc091
dE9mQm91bmRzID0gbV9vdXQuYWJvdmVPckVxdWFsKAogICAgICAgICAgICAgICAgIGluZGV4LCBt
X291dC5sb2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hlYXBzLkFycmF5U3RvcmFnZV92ZWN0
b3JMZW5ndGgpKTsKIAotICAgICAgICAgICAgYXV0byBzbG93UGF0aEZ1bmN0aW9uID0gbV9ncmFw
aC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICBh
dXRvIHNsb3dQYXRoRnVuY3Rpb24gPSBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAg
ICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgIDogKG1fbm9kZS0+b3Ao
KSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlC
b3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3Ry
aWN0KTsKICAgICAgICAgICAgIGlmICghYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewpAQCAt
NTI0MCw3ICs1MjQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxs
KTsKQEAgLTk4MDEsNyArOTgwMSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIHNpemVvZihDYWxs
RnJhbWUqKSAqIDI7CiAgICAgICAgICAgICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAg
ICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVxdWly
ZWRCeXRlcyksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAg
ICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KGds
b2JhbE9iamVjdCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUklu
Zm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFn
Q0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uQ2FsbEV2YWwpKSwgR1BSSW5m
bzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKICAgICAgICAgICAgICAgICBqaXQuY2Fs
bChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjAsIE9wZXJhdGlvblB0clRhZyk7
CkBAIC0xMzMzNSw3ICsxMzMzNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFw
aC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0
SlNWYWx1ZSh2bUNhbGwoVm9pZCwgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1
dER5bmFtaWNWYXJOb25TdHJpY3QsCisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKFZvaWQsIG1f
bm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmlj
dCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsCiAgICAgICAgICAgICB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdElu
dDMyKG1fbm9kZS0+Z2V0UHV0SW5mbygpKSkpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAK
aW5kZXggMDgwZmFlZGU4MWEyMjY4MjIxZDFjNTA4OTQxZDllZjI3MTI3OWEyMC4uYWYwOGViMGI2
MWY4NDFiZDczNjNlODdlZjRjMmJiYzExYWI3ODFhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTE1
MCw3ICsxNTAsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0
cnVjdG9yTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBKU09i
amVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6Om5vdFN0cmljdCgpKSk7CiAgICAg
cmV0dXJuIGpzU3RyaW5nKHZtLCBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3Qp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggYWZjMDBlOWE2OWRkOTc3YzZkM2FlNmI1N2JhZTRlNjhiZTA5YTViZi4u
OGM0NDE1YjRiMjQxMzQ4MTgzYTU5MDE2MGI4YTQwZDlhMTVmNjc2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xMDEsNyAr
MTAxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0pTVmFsdWUgZXZhbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUg
ZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBKU1Zh
bHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAKICAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+
ZGlyZWN0RXZhbENvZGVDYWNoZSgpLnRyeUdldChwcm9ncmFtU291cmNlLCBjYWxsZXJDYWxsU2l0
ZUluZGV4KTsKICAgICBpZiAoIWV2YWwpIHsKLSAgICAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkgewog
ICAgICAgICAgICAgaWYgKHByb2dyYW1Tb3VyY2UuaXM4Qml0KCkpIHsKICAgICAgICAgICAgICAg
ICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVwYXJzZXIoZ2xvYmFsT2JqZWN0LCBwcm9ncmFtU291
cmNlLmNoYXJhY3RlcnM4KCksIHByb2dyYW1Tb3VyY2UubGVuZ3RoKCksIE5vblN0cmljdEpTT04s
IGNhbGxlckNvZGVCbG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2Jq
ZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKQpAQCAtMTY1LDcgKzE2NSw3IEBAIEpT
VmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICAgICAgCiAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5k
ZXJURFo7CiAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFoo
Y2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAgICBldmFsID0gRGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2UocHJvZ3Jh
bVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmln
aW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlw
ZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCks
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVy
VERaKTsKKyAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNl
KCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxl
clVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNt
YU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAg
dW5zaWduZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMgPSBldmFsLT5udW1GdW5jdGlv
bkhvaXN0aW5nQ2FuZGlkYXRlcygpOwogCiAgICAgSlNTY29wZSogdmFyaWFibGVPYmplY3Q7Ci0g
ICAgaWYgKChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSAmJiBldmFs
LT5pc1N0cmljdE1vZGUoKSkgeworICAgIGlmICgobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVs
RnVuY3Rpb25EZWNscykgJiYgZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkgewogICAgICAgICBz
Y29wZSA9IFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c3Ry
aWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSwgc2NvcGUpOwogICAgICAgICB2YXJpYWJsZU9i
amVjdCA9IHNjb3BlOwogICAgIH0gZWxzZSB7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkRXZhbENvZGVCbG9jaygpOwogCiAgICAgLy8gV2Ug
Y2FuJ3QgZGVjbGFyZSBhICJ2YXIiLyJmdW5jdGlvbiIgdGhhdCBvdmVyd3JpdGVzIGEgZ2xvYmFs
ICJsZXQiLyJjb25zdCIvImNsYXNzIiBpbiBhIHNsb3BweS1tb2RlIGV2YWwuCi0gICAgaWYgKHZh
cmlhYmxlT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpICYmICFldmFsLT5pc1N0cmljdE1vZGUoKSAm
JiAobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKKyAgICBpZiAo
dmFyaWFibGVPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250
ZXh0KCkgJiYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpKSB7CiAg
ICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2YXJpYWJsZU9iamVjdCktPmdsb2JhbExleGlj
YWxFbnZpcm9ubWVudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFy
aWFibGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gdW5s
aW5rZWRDb2RlQmxvY2stPnZhcmlhYmxlKGkpOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWwKIAogICAgIGlmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxG
dW5jdGlvbkRlY2xzIHx8IG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKSB7CiAgICAgICAg
IEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcih2bSwgdmFyaWFibGVPYmplY3Qp
OwotICAgICAgICBpZiAodmFyaWFibGVPYmplY3QtPm5leHQoKSAmJiAhZXZhbC0+aXNTdHJpY3RN
b2RlKCkpCisgICAgICAgIGlmICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpICYmICFldmFsLT5pc0lu
U3RyaWN0Q29udGV4dCgpKQogICAgICAgICAgICAgdmFyaWFibGVPYmplY3QtPmdsb2JhbE9iamVj
dCh2bSktPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+ZmlyZUFsbCh2bSwgIkV4ZWN1dGVkIGV2
YWwsIGZpcmVkIFZhckluamVjdGlvbiB3YXRjaHBvaW50Iik7CiAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7CkBAIC0xMTQ0LDcgKzExNDQsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAoZXZhbC0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgaWYgKGV2
YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHM7ICsraSkgewogICAgICAgICAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChp
KTsKICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh2YXJpYWJsZU9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmlu
ZGV4IDkwYTlkYjVjNWE5ZmIwMjU2YzU3ZDFkNmNlNDk5YTdmZTczMWUwODUuLjY0NTM5MTI3Yjhj
NzRjODIwMjliMmJiNjE4MGU2OTY5NzFhNjRiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0xNTAsNyArMTUwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICB9
OwogCi0gICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAg
SlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpOwogCiAg
ICAgaW5saW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKaW5kZXggZTI3YTZlOTFiNmJiMDk3YTU3NGIwN2E2ZDk5ZTg2YTZlYmI4NmYx
My4uYjY3ODUzOTA3MmYzZDU1NDY5NjZmZDBlNzRmNDA0ZGYyOGMzY2NmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNDU0LDE5ICsxNDU0LDYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdE1vZGVGb3IoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0g
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJh
bWUpCi0gICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOwotICAg
ICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKTsKLSAgICB9Ci0gICAg
Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGlzU3RyaWN0TW9kZUZvcihjb2RlT3JpZ2luKSA/IFN0cmljdE1vZGUg
OiBOb3RTdHJpY3RNb2RlOwotICAgIH0KLSAgICAKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0
YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKTsKICAgICAKICAgICBDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBiMmJmY2U2MzM3ZDliZTAyZDYx
ZjM4OTVjZTVlY2EzYTBkNzgzMjA2Li5lMWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZmYjQ0NzFmZmNi
MjBiODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTEzOCw3ICsx
MzgsOCBAQCBib29sIEpJVDo6Y29tcGlsZUNhbGxFdmFsKGNvbnN0IE9wQ2FsbEV2YWwmIGJ5dGVj
b2RlKQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29k
ZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIHJlZ1QxKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpLCByZWdUMik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsRXZhbCwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCByZWdUMSwgcmVnVDIpOwogCiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY0MTEwMjE3NjRkOTg5
NjYyMjNmZTE4MjBhMmYzODM5YWMzZTdiOWYuLmQ3YTFjMWY4NmU3MDRkYmJmNmEzNDFkZTIwMDZh
NzcwYzA3NmM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZf
SklUT3BlcmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlv
bigpCiB7Ci0gICAgaWYgKG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgeworICAgIGlmIChtX2Vj
bWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3QpCiAg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwog
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4
IDI2ZTcwMGZiYjdhZDE4M2JlMWFjYmE3M2YzN2Y2ZmI0MmZlZmNkMGUuLjM5MjZjNTVjMjc5ZmI4
ODBhYTIyMmM3YmU3YWI5MDY4MmNkM2U2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTEyNyw3ICsxMjcsOSBAQCBw
dWJsaWM6CiAKIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVy
YXRvciB7CiBwdWJsaWM6Ci0gICAgSklUUHV0QnlJZEdlbmVyYXRvcigpIHsgfQorICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IoKQorICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgp
KQorICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCmluZGV4IDIzZmY1YzgxYzFjMDMyMjJmOTEyYTQ5OTMxZjI4MzZkYWRjZmFjYjcuLjdkY2Jl
OGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3NTY1NTMzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCkBAIC0xNjYsNyArMTY2LDcgQEAgQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1Zh
bHVlUmUKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwo
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgVmlydHVhbFJlZ2lzdGVyIHJl
ZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKHJlZykpCisg
ICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkKICAgICAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogfQogCkBAIC00OTYsNyArNDk2LDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0
U3RvcmUoVmlydHVhbFJlZ2lzdGVyIHJlZywgY29uc3QgSlNWYWx1ZSBjb25zdGFudCwgUmVnaXN0
ZXIKIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVh
bFJlZ2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRp
YXRlKHJlZykpIHsKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcpKSB7CiAg
ICAgICAgIGlmIChyZWcuaXNDb25zdGFudCgpKQogICAgICAgICAgICAgYWRkU2xvd0Nhc2UoanVt
cCgpKTsKICAgICAgICAgZWxzZQpAQCAtNTA2LDcgKzUwNiw3IEBAIGlubGluZSB2b2lkIEpJVDo6
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdpc3RlciByZWcpCiAKIGlubGlu
ZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdpc3RlciBy
ZWcsIFJlZ2lzdGVySUQgdGFnKQogewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJ
bW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJlZykp
IHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBhZGRTbG93Q2Fz
ZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC02MDAsNyArNjAwLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQgcmVnKQog
CiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoUmVn
aXN0ZXJJRCByZWcsIFZpcnR1YWxSZWdpc3RlciB2UmVnKQogewotICAgIGlmICghbV9jb2RlQmxv
Y2stPmlzS25vd25Ob3RJbW1lZGlhdGUodlJlZykpCisgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNL
bm93bkNlbGwodlJlZykpCiAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWcp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRl
eCBjZmIxMzQwYWU3YWQ2MzliZTE4YTZiNzhjMzhiYjhkZWE3MjRkMDYwLi45MTI3OWNhODc4OGFh
YWE0MDFiOGYzZTliNjI4NjAwNzI3NWY0NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
YmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwog
fQogCi1zdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0
LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3N0YXRpYyB2b2lkIHB1dEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1Zh
bHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFN
b2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02OTQsMTIgKzY5NCwxMiBA
QCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogCiAgICAgICAgICAgICBieVZhbEluZm8tPmFycmF5
UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2Jh
bE9iamVjdCwgaSwgdmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBiYXNl
VmFsdWUucHV0QnlJbmRleChnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpKTsKKyAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZ2xvYmFsT2JqZWN0LCBp
LCB2YWx1ZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVs
c2UgaWYgKHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOwpAQCAtNzE1LDE1ICs3MTUsMTQgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFs
dWUKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBl
Y21hTW9kZS5pc1N0cmljdCgpKTsKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVj
dCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKIH0KIAotc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlW
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpT
T2JqZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8pCitzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSBzdWJzY3Jp
cHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKTsKIAogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMy
KCkpKSB7CiAgICAgICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIEpTVmFsdWU6OmlzVUludDMyIHdp
bGwgcmV0dXJuIHRydWUgb25seSBmb3IgcG9zaXRpdmUgYm94ZWQgaW50MzJfdDsgYWxsIHRob3Nl
IHZhbHVlcyBhcmUgdmFsaWQgYXJyYXkgaW5kaWNlcy4KQEAgLTc0NSw3ICs3NDQsNyBAQCBzdGF0
aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSgogICAgICAgICB9CiAKICAgICAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4
LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1
dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJl
Y3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgMCwgZWNtYU1vZGUuaXNTdHJpY3Qo
KSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRo
cm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzU1LDcgKzc1NCw3IEBAIHN0YXRp
YyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJz
Y3JpcHRBc1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewogICAgICAgICAg
ICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVj
dEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0
QXNVSW50MzIsIHZhbHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhT
aG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNzY3LDcgKzc2Niw3IEBAIHN0YXRpYyB2b2lk
IGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHkpKSB7CiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsK
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJ
bmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUg
PyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJv
dyk7CisgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5k
ZXgudmFsdWUoKSwgdmFsdWUsIDAsIGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBQdXREaXJlY3RJbmRl
eFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTc3NSw3ICs3NzQsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RN
b2RlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBlY21hTW9kZS5pc1N0
cmljdCgpKTsKICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xv
YmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQogCkBAIC04
NjEsNyArODYwLDcgQEAgc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICByZXR1cm4gb3B0aW1p
emF0aW9uUmVzdWx0OwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTg3OSw3ICs4NzgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogICAgICAgICBieVZh
bEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1
dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0
QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1
ZSwgYnlWYWxJbmZvKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChn
bG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21h
TW9kZSkpOwogfQogCiBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeURpcmVjdFB1dEJ5VmFs
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogb2JqZWN0LCBKU1ZhbHVlIHN1YnNj
cmlwdCwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKQEAgLTk1MSw3ICs5NTAsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeURpcmVj
dFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIHJldHVy
biBvcHRpbWl6YXRpb25SZXN1bHQ7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3Jp
cHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwpAQCAtOTcyLDEwICs5NzEsMTAgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJl
c3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmlj
KTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFs
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFs
SW5mbykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUp
KTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9k
ZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtOTg1LDExICs5
ODQsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAKLSAgICBwdXRCeVZhbChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwg
YnlWYWxJbmZvKTsKKyAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2Ny
aXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKIAotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtOTk5LDEwICs5OTgsMTAgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3Qo
KSk7Ci0gICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pOwor
ICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vi
c2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTEwMTIsNyArMTAxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgaWYg
KCFpc0hvc3RGdW5jdGlvbihjYWxsZWVGcmFtZS0+Z3VhcmFudGVlZEpTVmFsdWVDYWxsZWUoKSwg
Z2xvYmFsRnVuY0V2YWwpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFt
ZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUs
IGVjbWFNb2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMTQw
LDcgKzIxMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0
LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5
KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3N0YXRpYyBi
b29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCkBAIC0yMTUwLDEyICsyMTQ5LDEyIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5
SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZN
JiB2CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9i
ai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCksIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYgZWNt
YU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4gY291bGREZWxl
dGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEVDTUFNb2RlIGVj
bWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMTY2LDcgKzIxNjUs
NyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwogICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OwogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVs
bCgpOwogCi0gICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLCB2bSwgc2xvdCwgYmFzZVZhbHVlLCB1aWQpOworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRl
QnlJZChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHVpZCwgZWNtYU1vZGUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
aWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CkBAIC0yMTc2LDIzICsyMTc1LDIzIEBAIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTCiAgICAgICAgIGlmICghcGFyc2VJbmRleChpZGVudCkpIHsKICAg
ICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
ICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnlJZCh2bSwgY29kZUJs
b2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpKQotICAgICAgICAgICAgICAgIHJlcGF0
Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRT
dHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhpZGVudCksICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAg
ICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwg
YmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhpZGVudCksICpzdHViSW5mbywgRGVsQnlLaW5kOjpO
b3JtYWwsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAg
ICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CisgICAgcmV0dXJuIGRlbGV0ZUJ5SWQo
Z2xvYmFsT2JqZWN0LCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlk
LCBlY21hTW9kZSk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKK3N0YXRpYyBib29sIGRl
bGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5LCBFQ01BTW9kZSBlY21h
TW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAg
LTIyMTEsMTIgKzIyMTAsMTIgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgICAgICBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9i
aiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYg
ZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4gY291bGRE
ZWxldGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTIyMjgsNyArMjIyNyw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJh
c2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKIAotICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlW
YWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlw
dCk7CisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIHZtLCBzbG90
LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgZWNtYU1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVj
dCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vi
c2NyaXB0KSkgewpAQCAtMjIzOSwyMCArMjIzOCwyMCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCk7CiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOwogICAgICAg
ICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeVZhbCh2bSwgY29kZUJsb2NrLCBi
YXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCksIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAg
IHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVl
LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxC
eVZhbCk7CisgICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0dWJJ
bmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vi
c2NyaXB0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICByZXR1cm4gZGVsZXRl
QnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpOworICAgIHJl
dHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCksIGVjbWFNb2Rl
KTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNv
ZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkKQEAgLTI1MTksNyArMjUxOCw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IEluc3RyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgUHV0UHJvcGVydHlTbG90
OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGJ5dGVjb2RlLm1f
ZWNtYU1vZGUuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJ
bml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgc2Nv
cGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1
ZSwgc2xvdCk7CiAgICAgCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB2b2lk
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2MDBm
Y2EyOWRjMjAzODVkYzUwMjIyODAyNTQxMTJjYWMzMWQ2ODQwLi4zODZiMWEyOTQ5ZTI2ZGMyMDFj
NjA4ZjEzNzIzNjRjYjM2OWNhYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBWTTsKIGNsYXNzIFdhdGNocG9pbnRT
ZXQ7CiAKIHN0cnVjdCBCeVZhbEluZm87CitzdHJ1Y3QgRUNNQU1vZGU7CiBzdHJ1Y3QgSW5saW5l
Q2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogCkBAIC0xODgsMTEgKzE4OSwxMSBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWROb25TdHJpY3RCdWlsZExpc3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRF
Uk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9J
TlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIFNsb3dQYXRo
UmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKENhbGxGcmFtZSosIEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1
cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbChDYWxsRnJh
bWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKIFNsb3dQ
YXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDYWxsKENhbGxGcmFt
ZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwpAQCAtMjUx
LDEwICsyNTIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJv
cGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5B
TDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5U
RVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCos
IEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQsIEVDTUFNb2RlKSBXVEZf
SU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpIFdURl9JTlRF
Uk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwg
SlNPYmplY3QqIG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldFBOYW1lcyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFM
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApp
bmRleCBmMDdkNmRjMDY0MzhiZjY3MDFjNDBhZDYzY2I0NTViYTQwN2U2MmFiLi5hNjA3NWY0ZGU0
ZWY5NmIwYmNiNTdiZjVkZDY1ZTdkZDlmNDVkY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBi
eVZhbEluZm8sIE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdU
MiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2RlLm1fZWNtYU1vZGUs
IHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBlbWl0V3Jp
dGVCYXJyaWVyKGJhc2UsIHZhbHVlLCBTaG91bGRGaWx0ZXJCYXNlKTsKICAgICBkb25lQ2FzZXMu
YXBwZW5kKGp1bXAoKSk7CkBAIC0zMDgsMTEgKzMwOCwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8UwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9w
ZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWU7CisgICAgRUNNQU1vZGUgZWNtYU1vZGUg
PSBFQ01BTW9kZTo6c3RyaWN0KCk7CiAKICAgICBhdXRvIGxvYWQgPSBbJl0oYXV0byBieXRlY29k
ZSkgewogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsK
KyAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBp
ZiAoaXNEaXJlY3QpCkBAIC0zMjgsNyArMzMwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cih2YWx1ZSwgcmVnVDIpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3Qg
PyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRp
bWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwg
cmVnVDEsIHJlZ1QyLCBieVZhbEluZm8pOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24o
aXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0
QnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCByZWdUMCwgcmVnVDEsIHJlZ1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihlY21hTW9kZS52
YWx1ZSgpKSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlv
bkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlv
bkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpAQCAt
NDE2LDcgKzQxOCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJl
Z1QwKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4u
c3R1YkluZm8oKSwgcmVnVDAsIHVpZCk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCB1aWQsIFRydXN0ZWRJbW0zMihi
eXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJl
Z3MocmVnVDApKTsKQEAgLTQ2MCw3ICs0NjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8Uwog
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxKTsKKyAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIHJlZ1QwLCByZWdUMSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUo
KSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAK
ICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpAQCAtNjQ5LDcgKzY1
MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2RlLm1fZWNtYU1vZGUsCiAgICAgICAgIGRp
cmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYjY2OWRkOGI3YWQyNmQzZjc3ZDk2ODZkZTYwODM0MzRm
MzZkYmM1My4uMzE3MTZhMTFlZmVmYzZhZWEzMzQ2YjM0YWFlMTNjNThmOWZkYTBhNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBlbWl0
TG9hZChiYXNlLCByZWdUMiwgcmVnVDEpOwogICAgIGVtaXRMb2FkKHByb3BlcnR5LCByZWdUMywg
cmVnVDApOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwotICAgIENhbGwgY2Fs
bCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLCBKU1ZhbHVlUmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8pOworICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXpl
IDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
LCBKU1ZhbHVlUmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8sIGJ5dGVjb2RlLm1faXNTdHJpY3RN
b2RlKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5k
ZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5m
b1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMTY0YmMxNTQ4OWM4MTJlN2ZhODZhMTIz
ZDIyNTBmM2RiOTg3YTkzLi4zYmI2MGYwYjc1N2U3NzMwOGY5YmRiMzRhOTliNmI0NDUyZTMyMGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTczNyw3ICs3MzcsNyBA
QCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdl
bmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCi1zdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIg
cHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCkKK3N0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVs
QnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CkBAIC03NzAsNyArNzcw
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQobmV3
T2Zmc2V0KSk7CiAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRl
KHZtLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5l
d1N0cnVjdHVyZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAg
ICAgICAgaWYgKHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKICAgICAgICAgICAgICAgICBuZXdD
YXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0
ZU5vbkNvbmZpZ3VyYWJsZSwgcHJvcGVydHlOYW1lLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1
cmUsIHsgfSwgbnVsbHB0cik7CiAgICAgICAgICAgICBlbHNlCkBAIC03OTEsMTIgKzc5MSwxMiBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVw
Tm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lkIHJlcGF0
Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQordm9pZCByZXBhdGNoRGVs
ZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7
CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGlmICh0cnlDYWNoZURlbGV0ZUJ5KGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgeworICAgIGlmICh0
cnlDYWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUs
IG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1vZGUpID09
IEdpdmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VX
aXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkp
LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAg
IGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgK
aW5kZXggYzAwMGE3ZGM1MDlkOThmZGEwZmViYTVjMDUzYWRlYjQ3OGY4YTYyYS4uN2I3ZDdhNjlj
NjdiYTlkZTgyOWYxMWVlNmM4OTViYjNmZTY1YTQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgZW51bSBjbGFzcyBEZWxCeUtpbmQgewogdm9pZCBy
ZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUg
YmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdl
dEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQp
Owogdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFs
dWUsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3Qm
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwotdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBT
dHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5
S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayos
IERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50
aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kLCBFQ01BTW9kZSk7CiB2b2lkIHJl
cGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIGNvbnN0
IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZyYW1lKiwgQ2Fs
bExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDJiZmZjMzgxNjNmZTMxYmU5NDFiZWQ2YTVmYjU2ZDI5
OGJlYjYyMjcuLmRhZGY4NTEwMjk0NTk1YTI0MzE5M2FmMmMwZWQ0NmViMTBiNWJmNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtODM2
LDcgKzgzNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSk7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5k
KGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlVmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0QnlJZENv
bnRleHQoKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBieXRlY29kZS5t
X2VjbWFNb2RlLmlzU3RyaWN0KCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CiAKICAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSA6IG51bGxwdHI7CiAgICAgaWYgKGJ5dGVjb2RlLm1f
ZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpCkBAIC05MjcsNyArOTI3LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShiYXNlT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KSk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKCFjb3VsZERlbGV0
ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYg
Ynl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsK
ICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CiB9CkBAIC0xMDI1LDcg
KzEwMjUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jh
c2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV92YWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21h
TW9kZS5pc1N0cmljdCgpOwogICAgIAogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMy
KCkpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKQEAgLTEw
NTgsNyArMTA1OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFs
X2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsK
ICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9v
bCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNT
dHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChMSUtF
TFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIC8vIERlc3BpdGUgaXRzIG5hbWUs
IEpTVmFsdWU6OmlzVUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25seSBmb3IgcG9zaXRpdmUgYm94
ZWQgaW50MzJfdDsgYWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQgYXJyYXkgaW5kaWNlcy4KICAg
ICAgICAgQVNTRVJUKGlzSW5kZXgoc3Vic2NyaXB0LmFzVUludDMyKCkpKTsKQEAgLTExMTIsNyAr
MTExMiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAg
IH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIAotICAgIGlmICghY291bGREZWxldGUg
JiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGJ5
dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CiAg
ICAgCiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOwpAQCAtMTczOCw3
ICsxNzM4LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24KICAgICBpZiAoIWlzSG9zdEZ1bmN0
aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwgQ29kZUZvckNhbGwsIGNh
bGxlZUFzVmFsdWUpKTsKICAgICAKLSAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChn
bG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lKTsKKyAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0g
ZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAg
ICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBMTEludDo6Z2V0
Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0aW9uUHRyVGFnKTsKIH0KICAg
ICAKQEAgLTE4NzQsNyArMTg3NCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfdG9fc2NvcGUpCiAgICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgp
ID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVydHkpCiAgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2JqZWN0LCBpZGVudCkpOwogCi0g
ICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCks
IFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24obWV0YWRh
dGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3Qoc2NvcGUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSwgUHV0UHJvcGVy
dHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihtZXRhZGF0YS5tX2dldFB1
dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUodm0p
LT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAg
ICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbChnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgYnl0ZWNvZGUsIHNjb3BlLCBzbG90LCBpZGVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggN2E2NDJjMDI2
ZmRiMGQyMDk5Y2FlZGU2NmM3MjE1MTdlNmY2ZmVlMS4uYjA0N2ZiNTgwOGNmMGM4ZTAwYWMwMTM1
YzExOWUyMzU0MWIyMDI3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcApAQCAtNTk5LDcgKzU5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICAvLyAxLiBMZXQgYXJyYXkgYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZhbHVlLgogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBA
IC02ODEsNyArNjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC03NzksNyArNzc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY0pvaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBMZXQg
TyBiZSA/IFRvT2JqZWN0KHRoaXMgdmFsdWUpLgotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTg2NCw3ICs4NjQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
U3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICBpZiAo
aXNKU0FycmF5KHRoaXNWYWx1ZSkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVlKS0+cG9wKGdsb2JhbE9iamVjdCkpKTsK
QEAgLTg5OSw3ICs4OTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jUHVzaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpOwogCiAgICAgaWYgKExJS0VMWShpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGFzQXJyYXkodGhpc1ZhbHVlKTsKQEAgLTk0MCw3ICs5NDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMDM3LDcgKzEwMzcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTA2NCw3ICsx
MDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICAvLyBodHRwczovL3RjMzkuZ2l0
aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc2xpY2UKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTEyNCw3ICsx
MTI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGlj
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVj
dCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMjIy
LDcgKzEyMjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
VW5TaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxNS40LjQuMTMKIAotICAgIEpTT2JqZWN0
KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBT
dHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
IXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNP
YmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEzNTQsNyArMTM1NCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE0Ci0gICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09i
amVjdCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iagogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIC8vIDE1LjQuNC4xNQotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVj
dChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlv
bigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAg
ICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCmluZGV4IDIyNmI0ODM1NDYyZDhjNDVlNjE5ZjY2ODAwYmU5OTdhOTFhZTg4YTEu
LjgwMmYyMDJmOTI5YjAwODAzNGZhN2Q2ZWI4MTA5MGFiNzMzMGQyYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MTgsNyArMTgxOCw2
IEBAIHB1YmxpYzoKICAgICBSZWY8VW5saW5rZWRNZXRhZGF0YVRhYmxlPiBtZXRhZGF0YShEZWNv
ZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmRlY29kZShkZWNvZGVyKTsg
fQogCiAgICAgdW5zaWduZWQgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9
Ci0gICAgdW5zaWduZWQgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1v
ZGU7IH0KICAgICB1bnNpZ25lZCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nv
bnN0cnVjdG9yOyB9CiAgICAgdW5zaWduZWQgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7
IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAgdW5zaWduZWQgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CkBAIC0xODUx
LDcgKzE4NTAsNiBAQCBwcml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0
ZXI7CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3Ry
aWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNp
Z25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRp
bkZ1bmN0aW9uIDogMTsKQEAgLTIwNDgsNyArMjA0Niw2IEBAIEFMV0FZU19JTkxJTkUgVW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKERlY29kZXImIGRlY29kZXIsIFN0cnVjdHVy
ZSoKICAgICAsIG1fc2NvcGVSZWdpc3RlcihjYWNoZWRDb2RlQmxvY2suc2NvcGVSZWdpc3Rlcigp
KQogCiAgICAgLCBtX3VzZXNFdmFsKGNhY2hlZENvZGVCbG9jay51c2VzRXZhbCgpKQotICAgICwg
bV9pc1N0cmljdE1vZGUoY2FjaGVkQ29kZUJsb2NrLmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9p
c0NvbnN0cnVjdG9yKGNhY2hlZENvZGVCbG9jay5pc0NvbnN0cnVjdG9yKCkpCiAgICAgLCBtX2hh
c0NhcHR1cmVkVmFyaWFibGVzKGNhY2hlZENvZGVCbG9jay5oYXNDYXB0dXJlZFZhcmlhYmxlcygp
KQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjYWNoZWRDb2RlQmxvY2suaXNCdWlsdGluRnVu
Y3Rpb24oKSkKQEAgLTIyMzQsNyArMjIzMSw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRD
b2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAg
ICAgbV90aGlzUmVnaXN0ZXIgPSBjb2RlQmxvY2subV90aGlzUmVnaXN0ZXI7CiAgICAgbV9zY29w
ZVJlZ2lzdGVyID0gY29kZUJsb2NrLm1fc2NvcGVSZWdpc3RlcjsKICAgICBtX3VzZXNFdmFsID0g
Y29kZUJsb2NrLm1fdXNlc0V2YWw7Ci0gICAgbV9pc1N0cmljdE1vZGUgPSBjb2RlQmxvY2subV9p
c1N0cmljdE1vZGU7CiAgICAgbV9pc0NvbnN0cnVjdG9yID0gY29kZUJsb2NrLm1faXNDb25zdHJ1
Y3RvcjsKICAgICBtX2hhc0NhcHR1cmVkVmFyaWFibGVzID0gY29kZUJsb2NrLm1faGFzQ2FwdHVy
ZWRWYXJpYWJsZXM7CiAgICAgbV9pc0J1aWx0aW5GdW5jdGlvbiA9IGNvZGVCbG9jay5tX2lzQnVp
bHRpbkZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5jcHAKaW5kZXggOGRkZDk4YTFiZmIwZmVjMTVhN2Q3MzJhY2MzYzJjZWY4NWQw
NDBiNC4uYmY4NTQxMjI0NmIyOWM5OTllNTIzYTdhNGVjY2M4MzEwNzI2Yzc5NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0x
NzgsNyArMTc4LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGlmICghdGhpc09i
amVjdC0+c3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSkgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpc09iamVjdC0+
bV9jYWxsZWUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhl
Y3V0YWJsZS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhl
Y3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+Y2FsbGVlKSB7CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7
CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBDbG9uZWRBcmd1bWVudHM6Om1hdGVyaWFsaXplU3Bl
Y2lhbHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG1fY2FsbGVlLT5leGVjdXRhYmxlKCkpOwotICAg
IGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9v
bCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpOwogICAgIAog
ICAgIGlmIChpc1N0cmljdE1vZGUpCiAgICAgICAgIHB1dERpcmVjdEFjY2Vzc29yKGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlLCB0aGlzLT5nbG9iYWxPYmplY3Qodm0pLT50
aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcigpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAzMGI1OGI2YWNkZWNkNThiMDMwN2JkNTI4NDZlYTQ2
NTgyYjliMDlkLi5lNmUyYjE5OWJjYjU3ZTk0ZWQ2NWQxMmI3MzA2MTcyMmY0M2JjZGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTkwLDExICs5
MCwxMSBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJ
bXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgICAgICBleGVjdXRhYmxlLT5yZWNv
cmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSB8IGFycm93Q29udGV4dEZlYXR1cmUsIHJvb3RO
b2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+bGFzdExpbmUoKSwgZW5kQ29s
dW1uKTsKIAogICAgIGJvb2wgdXNlc0V2YWwgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIEV2YWxG
ZWF0dXJlOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBT
dHJpY3RNb2RlRmVhdHVyZTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IHJvb3ROb2RlLT5mZWF0
dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmUgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9k
ZTo6bm90U3RyaWN0KCk7CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgPSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4
ZWN1dGFibGU+KQogICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFi
bGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8odXNlc0V2YWwsIGlzU3RyaWN0TW9kZSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDYWNo
ZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRleHRU
eXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
ZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8odXNlc0V2YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRN
b2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9j
a1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUp
OwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IFVubGlu
a2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlSW5mbywgY29kZUdlbmVyYXRp
b25Nb2RlKTsKICAgICB1bmxpbmtlZENvZGVCbG9jay0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZl
YXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBsaW5lQ291bnQsIHVu
bGlua2VkRW5kQ29sdW1uKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5
cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgcwogICAgIGlmICghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3Rp
dmUoKS5pc051bGwoKSkKICAgICAgICAgdW5saW5rZWRDb2RlQmxvY2stPnNldFNvdXJjZU1hcHBp
bmdVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3Rp
dmUoKSk7CiAKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgcm9v
dE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9k
ZSwgdmFyaWFibGVzVW5kZXJURFopOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29k
ZUdlbmVyYXRpb25Nb2RlLCB2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOwogCiAgICAgaWYg
KGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0NGQ4ZmI0
YjQyMmE5MmQwM2I4MWFiMGFmMThkNGY2NWIxZThjODM1Li5iNTZhNzQ4ZWQ0NmM0OGE2M2EwYjU1
MDcyMzNhMzE3OTJiZGIyYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfdG9fdGhpcykKICAgICAvLyBkaWZmZXJlbnQgb2JqZWN0IHRoYXQgc3RpbGwg
aGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBvbiB0aGUgZmFzdCBwYXRoIHNpbmNlIGl0J2xsIHByb2R1
Y2UKICAgICAvLyB0aGUgc2FtZSBTcGVjdWxhdGVkVHlwZS4gVGhlcmVmb3JlLCB3ZSBkb24ndCBu
ZWVkIHRvIHdvcnJ5IGFib3V0IHZhbHVlIHByb2ZpbGluZyBvbiB0aGUKICAgICAvLyBmYXN0IHBh
dGguCi0gICAgYXV0byB2YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgYXV0byB2
YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxPYmplY3QsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAg
IFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHZhbHVlLCBQ
Uk9GSUxFX1ZBTFVFKHZhbHVlKSk7CiB9CiAKQEAgLTk4OSw3ICs5ODksNyBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICB9CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
CiAgICAgCi0gICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KQorICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgp
KQogICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0Rl
bGV0ZVByb3BlcnR5RXJyb3IpKTsKICAgICAKICAgICBSRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7CkBAIC0xMzA2LDcgKzEzMDYsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0
X2J5X2lkX3dpdGhfdGhpcykKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fYmFzZSkuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdGhpc1ZhbCA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fdGhpc1ZhbHVlKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBwdXRWYWx1ZSA9IEdFVF9DKGJ5
dGVjb2RlLm1fdmFsdWUpLmpzVmFsdWUoKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
VmFsLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0
KCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGJ5dGVjb2RlLm1fZWNtYU1v
ZGUuaXNTdHJpY3QoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBiYXNlVmFs
dWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKICAgICBF
TkQoKTsKIH0KQEAgLTEzMjIsNyArMTMyMiw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAKICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0
LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwgYnl0ZWNvZGUubV9lY21h
TW9kZS5pc1N0cmljdCgpKTsKICAgICBiYXNlVmFsdWUucHV0KGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHZhbHVlLCBzbG90KTsKICAgICBFTkQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggMjExN2NjOWU5NmQ5ZjAwNGZhMTYzOWVhOWZk
ODA2YTQ1MzhjMDBlYy4uYjc0NTAxMDFiMDg1MjYwZGQyYWNhY2Q3Nzc4ZTJjYjNkYTk3MDk1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTE0
Miw3ICsxNDIsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZQogCiAgICAgaWYgKCF0aGlzVmFs
dWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHRoaXNWYWx1ZSA9
IGdsb2JhbE9iamVjdDsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVjdCo+
KHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgSlNP
YmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6Om5vdFN0cmljdCgpKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB2
bS5pbnRlcnByZXRlci0+ZXhlY3V0ZVByb2dyYW0oc291cmNlLCBnbG9iYWxPYmplY3QsIHRoaXNP
YmopOwogCiAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggZWFi
Mzg3MjJmNWE5ODBmOGQ0MGU5NmFkNzM0YjY4YTQwODBmOGQyYS4uMGVkN2M3ZWMxZDlmYzFjMTVl
M2UzMDUzNjQ4MjkyMzY2NTIwMmY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzUsNyArMzUsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJs
ZXNVbmRlclREWikKK0RpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIEVDTUFNb2RlIGVjbWFNb2RlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NSwxMSArNDUsMTEgQEAgRGlyZWN0RXZhbEV4ZWN1
dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYXV0byogZXhlY3V0YWJs
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5o
ZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5TdHJp
Y3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4
ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJs
ZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBl
Y21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUpOwogICAg
IGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9y
OwotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJp
Y3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0OworICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZWNtYU1v
ZGUuaXNTdHJpY3QoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29k
ZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2Rl
KCk7CiAKICAgICAvLyBXZSBkb24ndCBib3RoZXIgd2l0aCBDb2RlQ2FjaGUgaGVyZSBiZWNhdXNl
IGRpcmVjdCBldmFsIHVzZXMgYSBzcGVjaWFsaXplZCBEaXJlY3RFdmFsQ29kZUNhY2hlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmgKaW5kZXggZjdhYmQ1ZjFlZDk5ZTA3NjZmMGFiYjM2NmZiYzBjMmM5OTA4MjdlNi4uYjU2OWRh
ZTAyOWMyMWExOTM5MmMxNGEwNGRmNDhlNTY4Nzg4OWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCkBAIC0zMSw3ICsz
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5h
bCA6IHB1YmxpYyBFdmFsRXhlY3V0YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIERpcmVjdEV2
YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5
cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCosIEVDTUFNb2RlKTsKIHByaXZhdGU6CiAgICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2
ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA3OTI2MWQ5NDFhMjk1YTEwMDI1
ODhjOGM4NTQzZDQyNmUzY2U2ZTE3Li5jNjNmMjAyYjVhN2FkMzFkNmU2ZDI5NmZjNzI3NTkxZDk5
Nzk4YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRh
YmxlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0g
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0
VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6
OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9
CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0
aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1GdW5j
dGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDQ4ZmMwOTM3OWIwNjI2NzM3Y2I4
NGQxODNlODU4NzlhYWZlMTFhNTkuLjRkZWQxYTgzM2ViOTM1ZWMxMTQwZTYyMDkyOTdiNDZmNzlm
NWZjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
Ly8gUGVyIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWZvcmJpZGRlbi1leHRl
bnNpb25zLCBvbmx5IHNsb3BweS1tb2RlIG5vbi1idWlsdGluIGZ1bmN0aW9ucyBpbiBvbGQtc3R5
bGUgKHByZS1FUzYpIHN5bnRhY3RpYyBmb3JtcyBjYW4gY29udGFpbgogICAgICAgICAvLyAiY2Fs
bGVyIiBhbmQgImFyZ3VtZW50cyIuCi0gICAgICAgIHJldHVybiAhaXNTdHJpY3RNb2RlKCkgJiYg
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgJiYgIWlz
Q2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiAhaXNJblN0cmljdENv
bnRleHQoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9u
TW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsKICAgICB9CiAgICAgYm9vbCBo
YXNQcm90b3R5cGVQcm9wZXJ0eSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKaW5kZXggNWY5Zjg1ZTFlY2RjODEzNDdkODk3
NDA2ZTYyMTE0ZDA2NTQ3Mjc5My4uNjZjYzc1MDczOTBiYTQxZTA4ODljZDZiNmM1MDBlNzZiMDIx
NjBiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgY2FsbFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyCiAgICAgR2V0dGVy
U2V0dGVyKiBnZXR0ZXJTZXR0ZXJPYmogPSBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0
dGVyKTsKIAogICAgIGlmIChnZXR0ZXJTZXR0ZXJPYmotPmlzU2V0dGVyTnVsbCgpKQotICAgICAg
ICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVjbWFNb2RlID09IFN0cmlj
dE1vZGUsIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlY21hTW9kZS5pc1N0cmljdCgpLCBSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CiAKICAgICBKU09iamVjdCogc2V0dGVyID0gZ2V0dGVyU2V0dGVy
T2JqLT5zZXR0ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA0ODdkOGI4YzFjZDliYjJiYTBj
ZjhlZTg2NDRkNWM3OTFhODJjZWRiLi43YzVjZjJkMmEyNTdlNjcxOTZmZGY2MjJmZjMyODFlYjJk
ZTdiZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVj
dEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUg
ZXZhbENvbnRleHRUeXBlKQorSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NSwxNSArNDUsMTQgQEAgSW5kaXJlY3RFdmFs
RXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYXV0byogZXhlY3V0
YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEluZGlyZWN0RXZhbEV4ZWN1dGFibGU+
KHZtLmhlYXApKSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBp
c0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbmRpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZGVyaXZlZENvbnRleHRUeXBl
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUpOwogICAgIGV4ZWN1dGFi
bGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIEpT
UGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCkg
PyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3Ry
aWN0OwogICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwogICAgIAogICAg
IFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IHZtLmNvZGVDYWNoZSgp
LT5nZXRVbmxpbmtlZEV2YWxDb2RlQmxvY2soCi0gICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVj
dXRhYmxlLT5zb3VyY2UoKSwgc3RyaWN0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwg
ZXZhbENvbnRleHRUeXBlKTsKKyAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNv
dXJjZSgpLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgY29kZUdlbmVyYXRpb25Nb2Rl
LCBlcnJvciwgZXZhbENvbnRleHRUeXBlKTsKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmhhc0Rl
YnVnZ2VyKCkpCiAgICAgICAgIGdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKS0+c291cmNlUGFyc2Vk
KGdsb2JhbE9iamVjdCwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGlu
ZSgpLCBlcnJvci5tZXNzYWdlKCkpOwpAQCAtNjgsNyArNjcsOCBAQCBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iagogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKK2NvbnN0ZXhwciBib29sIGluU3Ry
aWN0Q29udGV4dCA9IGZhbHNlOworSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFs
RXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKICAg
ICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQs
IGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5k
ZXggYzE5OTJmZGIxYTQyNTA1NGFlOWJjNDU3NTEyOGU2ZjUwODZjYTliYy4uNDk4YjVjODcwOThh
YjM3NDc5N2EyNWJmNDgxNjM3Y2ZiYjkyZWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOSArMzEs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5h
bCA6IHB1YmxpYyBFdmFsRXhlY3V0YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUm
LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKKyAgICBzdGF0aWMgSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYs
IERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29u
dGV4dFR5cGUpOwogcHJpdmF0ZToKLSAgICBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
KTsKKyAgICBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291
cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBFdmFsQ29udGV4dFR5cGUpOwogfTsKIAogc3RhdGljX2Fzc2VydChzaXplb2YoSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZSkgPT0gc2l6ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA1NDgwMTBlYjFjMDcw
MTYyZmQwYzk2MjMyNmZlZTI5YjExMDNkMzNmLi5mZmYwM2U2ODk2MjlmZWY4ZGJiMDAxYmM0YjA4
ODM0M2ZiYjZjZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzU2xvd0Nh
c2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAg
ICAgQVNTRVJUKCFpc0NlbGwoKSk7CiAKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkK
KyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAg
ICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpKQpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wg
SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5CiAKICAgICAgICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdldERp
cmVjdChvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpCi0gICAg
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGdsb2JhbE9i
amVjdCwgKnRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUg
OiBOb3RTdHJpY3RNb2RlKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgKnRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0
cmljdE1vZGUoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpub3RTdHJpY3QoKSkp
OwogCiAgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbEN1c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIGdzLCBhdHRyaWJ1
dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yLCBvYmosIHNsb3QudGhpc1Zh
bHVlKCksIHZhbHVlKTsKQEAgLTQyNyw0ICs0MjcsMTIgQEAgU3RyaW5nIEpTVmFsdWU6OnRvV1RG
U3RyaW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKK3ZvaWQgRUNNQU1vZGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBp
ZiAoaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50KCJTdHJpY3RNb2RlIik7CisgICAgZWxz
ZQorICAgICAgICBvdXQucHJpbnQoIk5vdFN0cmljdE1vZGUiKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXgg
NTg2YWYzZmFiMzc5NTJlM2ZkZTFjZTQ3MGM5OWFiMWVkYzRhNzQxZS4uZmQyNGY1MjA3NDU3MDJk
NmQ3YmRiNjQzZDYxZTVlOTUyNWMyODQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaApAQCAtNzksOCArNzksMzEgQEAgdXNpbmcgV3JpdGVCYXJyaWVyVHJh
aXRzU2VsZWN0ID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX3NhbWU8VCwgVW5r
bm8KICAgICBEdW1iVmFsdWVUcmFpdHM8VD4sIER1bWJQdHJUcmFpdHM8VD4KID46OnR5cGU7CiAK
LWVudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB7IE5vUHJlZmVyZW5jZSwgUHJlZmVyTnVtYmVy
LCBQcmVmZXJTdHJpbmcgfTsKLWVudW0gRUNNQU1vZGUgeyBTdHJpY3RNb2RlLCBOb3RTdHJpY3RN
b2RlIH07CitlbnVtIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgOiB1aW50OF90IHsgTm9QcmVmZXJl
bmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OworCitzdHJ1Y3QgRUNNQU1vZGUgewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTdHJpY3RNb2RlID0gMDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQ4X3QgTm90U3RyaWN0TW9kZSA9IDE7CisKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3RleHByIEVDTUFNb2RlIGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gRUNN
QU1vZGUoYnl0ZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVDTUFNb2RlIHN0cmljdCgpIHsg
cmV0dXJuIEVDTUFNb2RlKFN0cmljdE1vZGUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFQ01B
TW9kZSBub3RTdHJpY3QoKSB7IHJldHVybiBFQ01BTW9kZShOb3RTdHJpY3RNb2RlKTsgfQorCisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzU3RyaWN0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9
PSBTdHJpY3RNb2RlOyB9CisgICAgQUxXQVlTX0lOTElORSB1aW50OF90IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIEVDTUFNb2RlKHVpbnQ4X3QgdmFsdWUpCisgICAg
ICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlID09IFN0
cmljdE1vZGUgfHwgbV92YWx1ZSA9PSBOb3RTdHJpY3RNb2RlLCBtX3ZhbHVlKTsKKyAgICB9CisK
KyAgICB1aW50OF90IG1fdmFsdWU7Cit9OwogCiBlbnVtIGNsYXNzIENhbGxUeXBlIDogdW5zaWdu
ZWQ7CiBzdHJ1Y3QgQ2FsbERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcAppbmRleCA1NTNkMTZmNTY5MjU5Y2Y4MjNiOTY4NjhmZDA5MGI3ZjJlNzA4YjIwLi5hNDc0
ZTdhZTUyNzVhYzc2ODY0ODIzNmY2NmZkNDI4YWZkZTdlMThkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBib29sIEpTQ2VsbDo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgdQogCiBKU1ZhbHVlIEpTQ2VsbDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7Ci0gICAgaWYgKGVj
bWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAg
ICAgIHJldHVybiBjZWxsOwogICAgIHJldHVybiBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRl
eCAwOWFiYWUzOGJlMGZlMzQ2ZmQ1ZDM4YjIyYmRhNDdiZjllNjZjYTM1Li41MTkwM2NhNzg3MWQz
NzJlMjZiOGVjZTBlM2FlMGEzZjE0NmI4NThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNzUsNyArNzUsNyBAQCBTdHJ1Y3R1cmUqIEpTRnVu
Y3Rpb246OnNlbGVjdFN0cnVjdHVyZUZvck5ld0Z1bmNFeHAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdAogICAgIGJvb2wgaXNCdWlsdGluID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rp
b24oKTsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBnbG9iYWxPYmplY3QtPmFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoaXNCdWlsdGluKTsKLSAg
ICBpZiAoZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGV4ZWN1dGFibGUtPmlz
SW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN0cmljdEZ1
bmN0aW9uU3RydWN0dXJlKGlzQnVpbHRpbik7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c2xv
cHB5RnVuY3Rpb25TdHJ1Y3R1cmUoaXNCdWlsdGluKTsKIH0KQEAgLTQzMCw3ICs0MzAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dl
bmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6SW5zdGFu
Y2VGaWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAgICAgaWYgKCFmdW5jdGlvbi0+anNFeGVjdXRh
YmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBpZiAoIWZ1bmN0aW9uLT5qc0V4ZWN1dGFi
bGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FsbGVyKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmll
dmUgc3RyaWN0IGNhbGxlciJfcykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA5YmE4
YzcwZDc2YTc0MmVlYjU3MTY3OGNjOTNkYmFjYjQ3OTM5NDRlLi5jYTk0ODljMGUwZWZkYzg2YjBm
NDIyZmYyODg2ZWY0OGQxOTNhOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01MDcsNyArNTA3
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShwYXJzZWRPYmplY3QpOwogCiAgICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9IGNh
bGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKTsKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZh
bCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3Vy
Y2Uocywgc291cmNlT3JpZ2luKSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFs
c2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHMs
IHNvdXJjZU9yaWdpbiksIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsIEV2YWxDb250
ZXh0VHlwZTo6Tm9uZSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigp
ID09ICFldmFsKTsKICAgICBpZiAoIWV2YWwpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1
ZSgpOwpAQCAtNzE0LDcgKzcxNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY1Byb3RvR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90
QW5PYmplY3RFcnJvcihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOwogCkBAIC03MzUsNyArNzM1
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAg
IGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxP
clVuZGVmaW5lZEVycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCmluZGV4IDI1ZGZmNTMzMzc4OTE0MjhlNjJmYTk1MTlkZTE0YTcxOTQ0ZDRiNzguLjgz
ZTQwNmJiN2M5NmM0YWI5OGNkNjlmOWI4ODhhODE4MjUyZmQxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTgxMCw3ICs4MTAsNyBAQCBib29sIEpT
T2JqZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eQogICAgICAgICAgICAgICAgIGlmICghdGhpcy0+c3RydWN0dXJlKHZt
KS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxl
U2V0dGVyKG9iaiwgb2Zmc2V0KTsKIAotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2Fs
bFNldHRlcihnbG9iYWxPYmplY3QsIHNsb3QudGhpc1ZhbHVlKCksIGdzLCB2YWx1ZSwgc2xvdC5p
c1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKKyAgICAgICAgICAg
ICAgICBib29sIHJlc3VsdCA9IGNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCBzbG90LnRoaXNWYWx1
ZSgpLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkg
OiBFQ01BTW9kZTo6bm90U3RyaWN0KCkpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAgICAgfQpAQCAtMTgxOCw3ICsxODE4LDcgQEAgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90
eXBlV2l0aEN5Y2xlQ2hlY2soVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNob3VsZFRocm93
SWZDYW50U2V0LCAiQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBv
YmplY3QiX3MpOwogICAgIH0KIAotICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0
aGlzLCBnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpID09IHRoaXMpOworICAgIEFTU0VSVCht
ZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0aGlzLCBnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpub3RT
dHJpY3QoKSkgPT0gdGhpcyk7CiAKICAgICBpZiAodGhpcy0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KSA9PSBwcm90b3R5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCA2ZDVhYjY4MmM2ODM5MTRmNjlmM2U1YzIyODM4
NGZlZmU0NjU3N2M4Li5iM2MyNzIwMjI4MDZiODExNDM1N2Q4MWRlOWYzYjVmYzEwMzU0ZDlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtNDExLDcgKzQx
MSw3IEBAIFN5bWJvbFRhYmxlKiBKU1Njb3BlOjpzeW1ib2xUYWJsZShWTSYgdm0pCiAKIEpTVmFs
dWUgSlNTY29wZTo6dG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQor
ICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggYWFlZThlZTdhNzdlZWE2ZGVm
Yzc1N2E4N2QyM2IzZWNiYTg2ZjIxZi4uMGYyMDdhM2I2ODZhZWE3YjU3ZDQ5NWNkNzAyOWFkOGE4
Mzg2ZGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApA
QCAtNDE3LDcgKzQxNyw3IEBAIEpTT2JqZWN0KiBKU1N0cmluZzo6dG9PYmplY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIAogSlNWYWx1ZSBKU1N0cmluZzo6dG9UaGlzKEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiB7Ci0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2Rl
LmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiBjZWxsOwogICAgIHJldHVybiBTdHJpbmdPYmpl
Y3Q6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgYXNTdHJpbmcoY2Vs
bCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmNwcAppbmRleCA2OTc2ZjcwNWQzNDA0ZTM3YTIxZDg5MmIxMjNjYmMzODA0MjM2ZDViLi41MzUy
MzcxOGRjOWI5ZDIyMTJiOGI4MjExNzYzNjhmNDg0MjE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtOTMzLDcgKzkzMyw3IEBA
IEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRp
YWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAi
QXR0ZW1wdGVkIHRvIHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eSJfczsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxPckNv
ZGVCbG9jayA/IG1fbnVsbE9yQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSA6IGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxPckNv
ZGVCbG9jayA/IG1fbnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmlj
dENvbnRleHQoKSA6IGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2subGFz
dCgpLnB1dChtX2dsb2JhbE9iamVjdCwgaWRlbnQsIGxhc3RWYWx1ZSwgc2xvdCk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggNDY1NDYy
MDA0ZjM3ZTIwMTJkNzIxNjhjNjIwOWU1MDUxN2MxMjA1NS4uMDk5ZDg5OWFkNWU2M2E3NDMzNThl
MmFiYjIwYWIzNGY1OWI5NjBlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgaXNTdHJp
Y3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNj
cmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFs
Q29udGV4dFR5cGU6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8o
KSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwg
ZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQog
CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5n
ZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxs
U2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNl
dHRlckZ1bmN0aW9uLmNwcAppbmRleCAxMGY4ODcyNWFjMDAyZDI1M2E5Yzg2MzcxZDQ1Mzk4NTBk
ZmNhYTI5Li5lYTI0YTk0YzdiNTZkMDBiOTNkNGFjMzIwM2Y4M2I0NmYxYWFhYTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5j
cHAKQEAgLTUyLDcgKzUyLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlz
aXRvcjo6Q29udGludWU7CiAKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2aXNpdG9y
LT5jb2RlQmxvY2soKTsKLSAgICAgICAgbV9jYWxsZXJJc1N0cmljdCA9IGNvZGVCbG9jayAmJiBj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgICAgICAvLyBUaGlzIGRvZXMgbm90IHRha2Ug
aW50byBhY2NvdW50IHRoYXQgd2UgbWlnaHQgaGF2ZSBhbiBzdHJpY3Qgb3Bjb2RlIGluIGEgbm9u
LXN0cmljdCBjb250ZXh0LCBidXQgdGhhdCdzCisgICAgICAgIC8vIG9rIHNpbmNlIHdlIGFzc2Vy
dCBiZWxvdyB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBmcm9tIGFu
eSBraW5kIHN0cmljdCBjb250ZXh0LgorICAgICAgICBtX2NhbGxlcklzU3RyaWN0ID0gY29kZUJs
b2NrICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCk7
CiAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgfQogCkBAIC03MywxMSAr
NzUsMTIgQEAgc3RhdGljIGJvb2wgY2FsbGVySXNTdHJpY3QoVk0mIHZtLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIG5hbWVzcGFjZSBOdWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbCB7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0KLSAgICBpZiAoY2FsbGVySXNTdHJpY3Qodm0sIGNhbGxGcmFtZSkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIl9zKSk7Cisj
aWYgIUFTU0VSVF9FTkFCTEVECisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxlcklzU3RyaWN0
KTsKKyNlbmRpZgorICAgIEFTU0VSVCghY2FsbGVySXNTdHJpY3QoZ2xvYmFsT2JqZWN0LT52bSgp
LCBjYWxsRnJhbWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5jcHAKaW5kZXggYzA1NzEyYjBhNDVhMWUwYTBlNmViMzY2ZmJmNDM0M2RmMjQ4NmY5Ni4u
NmRhYTdiNGM2YmI1YWMyOTg0MjkxZTM4YmIyNjk4ZmI1MDYyZmZkNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC04MCw3ICs4
MCw3IEBAIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgSlNPYmplY3QqIHZhbHVlT2JqID0gdGhp
c1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZU9i
aikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtOTIsNyArOTIsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
U3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAg
aWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgSlNPYmplY3QqIHRoaXNP
YmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc09iaikpCkBAIC0xNDgsNyArMTQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKQEAg
LTE3Niw3ICsxNzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMjA0LDcgKzIwNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0
dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmpl
Y3QpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxP
YmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjY3LDcgKzI2Nyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUoSlNH
bG9iYWxPYmplY3QqCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yODgsNyArMjg4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAvLyAyLiBJbnZva2UoViwgInRvU3Ry
aW5nIikKIAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBw
YXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KLSAgICBKU09iamVjdCogb2Jq
ZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICAvLyBMZXQgdG9TdHJpbmcgYmUgdGhlIE8uW1tHZXRdXSgidG9TdHJpbmciLCBWKQpAQCAtMzEz
LDcgKzMxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5j
VG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFsbFN0cmlu
Z3MudW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9iamVjdFN0
cmluZygpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChn
bG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IGZiZGNkNGI2YzE4OTg1OGU0NTEzOTA1NTZjNjFkYzgy
YzdlM2EwNjkuLjNhZmRkODRjNzZlNWVkNmMwNjAwYTgyMTM1MGE0YjRhNzQ1Zjc5NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFs
aXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIEFTU0VSVCgm
Z2xvYmFsT2JqZWN0LT52bSgpID09ICZ2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAg
ICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzU3RyaWN0TW9kZSgpID8gSlNQYXJz
ZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKKyAg
ICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzSW5TdHJpY3RDb250ZXh0KCkgPyBK
U1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
OwogICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9
IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwogICAgIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bS5jb2RlQ2FjaGUoKS0+Z2V0
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlKCksIHN0
cmljdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IpOwpAQCAtMTM2LDcgKzEzNiw3IEBA
IEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgZW50cnku
a2V5LmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
bnVsbHB0cik7CiAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9iYWxDb25zdFJl
ZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmljdE1vZGUoKSkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9iYWxD
b25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc0luU3RyaWN0Q29udGV4dCgpKSkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGFsbG93ICJjb25zdCIgZHVwbGljYXRl
IGRlY2xhcmF0aW9ucyB1bmRlciB0aGlzIHNldHRpbmcuCiAgICAgICAgICAgICAgICAgICAgIC8v
IEZvciBleGFtcGxlLCB3ZSBkb24ndCAibGV0IiB2YXJpYWJsZXMgdG8gYmUgb3ZlcnJpZGRlbiBi
eSAiY29uc3QiIHZhcmlhYmxlcy4KICAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbExleGlj
YWxFbnZpcm9ubWVudC0+aXNDb25zdFZhcmlhYmxlKGVudHJ5LmtleS5nZXQoKSkpCkBAIC0xODUs
NyArMTg1LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFs
UHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CiAg
ICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsRGVjbGFyYXRpb25zKSB7Ci0gICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9iYWxDb25z
dFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmljdE1vZGUoKSkpIHsKKyAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmdsb2JhbENv
bnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzSW5TdHJpY3RDb250ZXh0KCkpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5jb250YWlucyhsb2NrZXIsIGVudHJ5
LmtleS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1
dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmgKaW5kZXggMjljYTAxMzIwNTYxYjE0NmE2MjljNmZiNWZhMTg4ZmY1OGMzZGIxZi4uYjg3MTVh
YTcyYmJjYjczMzlkNmUzNDEzYWM1OWM3NDQxMTdiODJhOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNv
dXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2Us
IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBk
ZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAK
ICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCmluZGV4IGIw
N2UwYTAyOTMzMjgyNjEwMzZmNDExMDZlZWVlOWU1ZjkwYzY2NjAuLjZkMTFiNDFiYTQwNjE4MTU1
MjJkYWIzZWJmZTMxYzc3NmU3ZWU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplYwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBw
ZW5kKHRhcmdldCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpTdHJpY3RNb2RlKSk7CisgICAgYXJndW1l
bnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAg
IEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGFwcGx5TWV0aG9k
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAppbmRleCBhN2Q2ZjE4
MTA1ZGUzZmFkNTQxYTgwZmVhOTVkODRmYzY2MzA5MTc5Li45NzBlZjYwYThiMjE3NDM5ZmUxMDY4
M2U2NmM1N2YwODZmMjMyNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5oCkBAIC02MCwxMiArNjAsMTAgQEAgcHVibGljOgogICAgIGJv
b2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1cmU7IH0K
ICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgQXJn
dW1lbnRzRmVhdHVyZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQotICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAg
ICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9
CiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFsQ29udGV4dFR5cGUpOyB9CisgICAgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RN
b2RlRmVhdHVyZTsgfQogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBp
c1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9Ci0gICAgICAgIAog
ICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5lID0gdmFs
dWU7IH0KICAgICB2b2lkIHNldE5ldmVyT3B0aW1pemUoYm9vbCB2YWx1ZSkgeyBtX25ldmVyT3B0
aW1pemUgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0TmV2ZXJGVExPcHRpbWl6ZShib29sIHZhbHVl
KSB7IG1fbmV2ZXJGVExPcHRpbWl6ZSA9IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCmluZGV4IDg1YzFjZjM0
MzM4MTg0Nzg4Mzg4NDU2ZWIzNmFlYTJmZmI2MzQxZmEuLmNmOTA0OTE5YjZkOGM3ODNkZTkxZDZm
NDMzN2U1YTU2OGVlN2UyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgYm9vbCBT
cGFyc2VBcnJheUVudHJ5OjpwdXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB0aGlzVmFsdWUsIFNwYXIKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmlj
dE1vZGUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cgPyBFQ01B
TW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6bm90U3RyaWN0KCkpKTsKIH0KIAogSlNWYWx1ZSBT
cGFyc2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmJjN2QzODA2M2ViNDUx
NGQ2YTZiYTNjY2Q1MGNkMzU0NDIyOTY4Yy4uYmI4Nzg2MmExYWQxN2I4ZDA2ZmUxYzI0ZDQyZmU5
NDFkMDQ5YjdhYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMy0yNyAgVGFkZXUgWmFnYWxsbyAgPHR6
YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBDbGFzc0V4cHJOb2RlIHNob3VsZCBlbWl0IGJ5
dGVjb2RlIGluIHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDU1NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNz
L3N1cGVyY2xhc3MtZXhwcmVzc2lvbi1zdHJpY3RuZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKGYu
dHJ5LmMpOgorICAgICAgICAoZik6CisKIDIwMjAtMDMtMjAgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNl
XSBkb2Vzbid0IGNvZXJjZSByZXN1bHQgaW5kZXggdG8gaW50ZWdlcgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
N2VhNjg0NzljOTczZjNjNjIwYWNmYmYxZjAxOWFiZWRhOTJhMmVlCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMKQEAg
LTAsMCArMSw1OSBAQAorZnVuY3Rpb24gZigpIHsKKyAgICB7CisgICAgICAgIHZhciBlcnJvcjsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsYXNzIGMgZXh0ZW5kcyhkID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHt9OworICAgICAgICAgICAgfSwgZCkge30KKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJDYW4ndCBmaW5kIHZhcmlh
YmxlOiBkIikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0
aHJvd24gYSByZWZlcmVuY2UgZXJyb3IiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIHZhciBl
cnJvcjsKKyAgICAgICAgdmFyIG9iaiA9IHt9OworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkob2JqLCAneCcsIHsgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6IDEgfSk7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMoZGVsZXRlIG9iai54LCAoKT0+e30p
IHt9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghZXJyb3IgfHwgZXJyb3IubWVzc2FnZSAhPSAiVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IHNo
b3VsZCBoYXZlIHRocm93biBhIHR5cGUgZXJyb3IiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IHZhciBlcnJvcjsKKyAgICAgICAgdmFyIG9iaiA9IHt9OworICAgICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkob2JqLCAneCcsIHsgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6IDEgfSk7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMoZXZhbCgnZGVsZXRlIG9i
ai54JyksIGNsYXNze30pIHt9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGVy
cm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZXJyb3IgfHwgZXJyb3IubWVzc2Fn
ZSAhPSAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJUZXN0IHNob3VsZCBoYXZlIHRocm93biBhIHR5cGUgZXJyb3IiKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIHZhciBvID0ge307CisgICAgICAgIG8uX19kZWZpbmVHZXR0ZXJfXygi
eCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyOyB9KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGNsYXNzIGMgZXh0ZW5kcyAoby54ID0gMTMsIGNsYXNzIHsgfSkgeyB9CisgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghZXJyb3IgfHwgZXJyb3IubWVzc2FnZSAhPSAiQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byBy
ZWFkb25seSBwcm9wZXJ0eS4iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IHNo
b3VsZCBoYXZlIHRocm93biBhIHR5cGUgZXJyb3IiKTsKKyAgICB9Cit9CisKKyBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgZigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394759</attachid>
            <date>2020-03-27 14:46:05 -0700</date>
            <delta_ts>2020-03-30 14:39:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200327144603.patch</filename>
            <type>text/plain</type>
            <size>216657</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTQ4NTBiY2YwMDJlMTQ1ZDA4YTI3Yzc0YzFhMzZhZDgzMTFlNjgwLi4zZDcwNDhmMjYyYmU1YWNl
MDY1ZjFlYTM3NDM3ODJjZDNlZjU5MzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNzIgQEAKKzIwMjAtMDMtMjcgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgQ2xhc3NFeHByTm9kZSBzaG91bGQgZW1pdCBieXRlY29kZSBpbiBzdHJp
Y3QgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0IHN0cmlj
dCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQgd2hlbiBl
bWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0IHdlIGNh
biBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0IG11c3Qg
YmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUgYmxvY2sg
aXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9ubHkgdGVu
CisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5lc3MsIHNv
IGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVzLgorICAg
ICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBiYXNlbGlu
ZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oOgor
ICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAg
ICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3RydWN0b3IgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjppc1N0cmljdE1vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmVjbWFNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojppc0tub3duTm90SW1tZWRpYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUlu
Zm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6dXNlc0V2YWwgY29uc3QpOgorICAg
ICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAg
KEpTQzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAg
IChKU0M6OklubGluZUNhbGxGcmFtZTo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omlz
Q29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNT
dHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvcjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
aXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
dGVCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplY21h
TW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVTY29wZTo6U3RyaWN0TW9kZVNj
b3BlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVNjb3BlOjp+U3RyaWN0TW9kZVNjb3BlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzU3RyaWN0TW9kZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAg
IChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpF
bXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpBc3Np
Z25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6
dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmlzU3RyaWN0TW9kZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmVjbWFNb2RlRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc0VDTUFNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjplY21hTW9kZSk6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6CisgICAgICAgICog
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlRG91YmxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5
bWJvbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5h
bWljVmFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRE
aXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJ
ZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRv
VGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aXNTdHJpY3RNb2RlRm9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplY21hTW9kZUZvcik6IERlbGV0ZWQuCisgICAg
ICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZh
bCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRH
ZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAg
ICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlRGVsZXRl
QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Y29t
bW9uQ2FsbEV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YXJyYXlQ
cm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9p
bik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJy
YXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5
UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGljZSk6Cisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5
UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFzdEluZGV4
T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWNoZWRDb2RlQmxvY2s6OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJs
b2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxv
Y2s6OmlzU3RyaWN0TW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVT
cGVjaWFscyk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlND
OjpnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpE
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2
YWxFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAg
ICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0
RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmR1bXAg
Y29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAoSlNDOjpF
Q01BTW9kZTo6ZnJvbUJ5dGUpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6c3RyaWN0KToKKyAg
ICAgICAgKEpTQzo6RUNNQU1vZGU6Om5vdFN0cmljdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2Rl
Ojppc1N0cmljdCBjb25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjp2YWx1ZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpFQ01BTW9kZSk6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhpcyk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c2VsZWN0U3Ry
dWN0dXJlRm9yTmV3RnVuY0V4cCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNhbGxlckdl
dHRlcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6Cisg
ICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1By
b3RvR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToKKyAgICAg
ICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElu
bGluZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xl
Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpT
U2NvcGU6OnRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAg
IChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZSk6Cisg
ICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0Q2FsbGVyU3Ry
aWN0bmVzc0Z1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpOdWxsU2V0
dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAgICAgICogcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNW
YWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJv
dG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3Vw
R2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpOgorICAgICAg
ICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9i
YWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnBlcmZvcm1Q
cm94eUNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oOgorICAgICAg
ICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc0Fycm93RnVuY3Rpb25Db250ZXh0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aXNJblN0cmljdENvbnRleHQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc1N0cmljdE1vZGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplY21hTW9kZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKwogMjAyMC0wMy0xOSAgVGFkZXUg
WmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggaW5zdGFuY2VzIG9m
IG5ldy50YXJnZXQgdGhhdCBzaG91bGQgYmUgc3ludGF4IGVycm9ycwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAppbmRleCBjOTkxMDUzYTE5MTlm
OGUxYmE0ZWE5OGI3N2Q4ZTFhOWQxYjdkZGU4Li5mOGY0ZTg5NzYxYmZiYmE2ZTU1NzNmZTA3NGQ5
YjE5YTBjMzIxMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNh
bGxiYWNrRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxi
YWNrRnVuY3Rpb24uaApAQCAtNDgsNyArNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0NvbnRleHRS
ZWYgZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rp
b25SZWYgPSB0b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRo
aXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNPYmplY3RSZWYg
dGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6Om5vdFN0cmljdCgpKSkpOwogCiAgICAg
aW50IGFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpKTsKICAgICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgK
aW5kZXggMDJjZWRjNzk2NmJlYzBhNTNhOWJjMDJhOWYzNzgzZTc5ZjczMmUyZi4uMTBiMzA3MWE2
ZTQ2NTAyMzRmODE2ZWFlYmMwYjRiY2I5ODg0OTgxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUyMyw3ICs1
MjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNS
ZWYgPSB0b1JlZihnbG9iYWxPYmplY3QpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0g
dG9SZWYoY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVm
ID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpS
ZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpub3RTdHJpY3QoKSkpKTsKICAgICAKICAgICBmb3Ig
KEpTQ2xhc3NSZWYganNDbGFzcyA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qPih0
b0pTKGZ1bmN0aW9uUmVmKSktPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNz
LT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxi
YWNrIGNhbGxBc0Z1bmN0aW9uID0ganNDbGFzcy0+Y2FsbEFzRnVuY3Rpb24pIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAyMjJhNGVlMjBkY2JhZGIw
N2I3YmM2NTRkY2Y4YWE4MGNmMmMxMmJlLi42MGQ3ZWRhYTUwMzExNjE1ZDA5OWNjY2RmNTc2NWU3
ODNmYzAwNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
CkBAIC0xOTMsNyArMTkzLDcgQEAgSlNPYmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0
KEpTQ29udGV4dFJlZiBjdHgpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCi0gICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09i
amVjdCo+KGdsb2JhbE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgcmV0dXJuIHRvUmVmKGpzQ2Fz
dDxKU09iamVjdCo+KGdsb2JhbE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpub3RTdHJpY3QoKSkpKTsKIH0KIAogSlND
b250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDlmMmFiYTM5ZjJjZTcwOGQzMTNiOGQ5NDBjZjk2ZmJh
NDJmY2M5NGUuLjU4NGNlZjdlN2EwYzM1MTBjZDkzNTgxZWU4NzI5NTI0NTY4MDc4MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMjUxLDcgKzI1MSw4IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQsIC8v
IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91
bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlv
biksIC8vIGluZm8KICAgICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6
OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZUluZGV4IH0pLCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgKLSAgICAgICAgICAgICAg
ICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKKyAgICAg
ICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgLy8gc2NvcGUgb2Zm
c2V0CisgICAgICAgICAgICAgICAgICAgIG1fYnl0ZWNvZGVHZW5lcmF0b3IuZWNtYU1vZGUoKQog
ICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0Njgw
YzEyNmEwZjcyNzUzNmYxYmUzN2M0ZS4uZTM2ZmEzMmVjYWY5YzM4YzAzNDY0YzU3ZDgwMDJmZDk2
ODdhZmY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCkBAIC0yNyw2ICsyNyw3IEBAIHR5cGVzIFsKICAgICA6QmFzaWNCbG9ja0xvY2F0aW9u
LAogICAgIDpCb3VuZExhYmVsLAogICAgIDpEZWJ1Z0hvb2tUeXBlLAorICAgIDpFQ01BTW9kZSwK
ICAgICA6RXJyb3JUeXBlLAogICAgIDpHZXRCeUlkTW9kZSwKICAgICA6R2V0QnlJZE1vZGVNZXRh
ZGF0YSwKQEAgLTE3NCw2ICsxNzUsNyBAQCBvcCA6YXJndW1lbnRfY291bnQsCiBvcCA6dG9fdGhp
cywKICAgICBhcmdzOiB7CiAgICAgICAgIHNyY0RzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAg
ICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBj
YWNoZWRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCkBAIC01MDgsNiArNTEwLDcgQEAgb3AgOnB1
dF9ieV9pZCwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgICAgICB2YWx1ZTogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICBmbGFnczogUHV0QnlJZEZsYWdzLAorICAgICAgICBlY21h
TW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBvbGRTdHJ1
Y3R1cmVJRDogU3RydWN0dXJlSUQsCkBAIC01MjIsNiArNTI1LDcgQEAgb3AgOnB1dF9ieV9pZF93
aXRoX3RoaXMsCiAgICAgICAgIHRoaXNWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9CiAKIG9wIDpkZWxfYnlfaWQsCkBAIC01Mjks
NiArNTMzLDcgQEAgb3AgOmRlbF9ieV9pZCwKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIs
CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IHVuc2ln
bmVkLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6Z2V0X2J5X3Zh
bCwKQEAgLTU0OCw2ICs1NTMsNyBAQCBvcCA6cHV0X2J5X3ZhbCwKICAgICAgICAgYmFzZTogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAg
ICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAg
ICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZSwKQEAgLTU1OSw2ICs1NjUsNyBAQCBvcCA6cHV0X2J5X3ZhbF93aXRoX3RoaXMsCiAgICAgICAg
IHRoaXNWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJl
Z2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9k
ZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCkBAIC01NjYsNiAr
NTczLDcgQEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVl
OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLApAQCAt
NTc2LDYgKzU4NCw3IEBAIG9wIDpkZWxfYnlfdmFsLAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdp
c3RlciwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTog
VmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBv
cCA6cHV0X2dldHRlcl9ieV9pZCwKQEAgLTc3OCw2ICs3ODcsNyBAQCBvcCA6Y2FsbF9ldmFsLAog
ICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgYXJnYzogdW5zaWduZWQs
CiAgICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAg
ICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExp
bmtJbmZvLApAQCAtOTU4LDYgKzk2OCw3IEBAIG9wIDpwdXRfdG9fc2NvcGUsCiAgICAgICAgIGdl
dFB1dEluZm86IEdldFB1dEluZm8sCiAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoOiBT
eW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAg
ICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAg
Z2V0UHV0SW5mbzogR2V0UHV0SW5mbywgIyBvZmZzZXQgNApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2NTdlMmJiM2UyM2JhNzViNDY3MjAzMGFh
YzM4ZjZmODUzYzI0OWY1Li5kZmU3OTY1YTkyNDAyMTEzOGMwMTkwMjdjNDBiZTMyMDQyZDhhZjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
MjA1LDcgKzIwNSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQXNzdW1pbmdKSVRUeXBlKFByaW50
U3RyZWFtJiBvdXQsIEpJVFR5cGUgaml0VHlwZSkgY29uc3QKICAgICAgICAgb3V0LnByaW50KCIg
KE5ldmVyRlRMT3B0aW1pemUpIik7CiAgICAgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5kaWRUcnlU
b0VudGVySW5Mb29wKCkpCiAgICAgICAgIG91dC5wcmludCgiIChEaWRUcnlUb0VudGVySW5Mb29w
KSIpOwotICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYg
KG93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICBvdXQucHJp
bnQoIiAoU3RyaWN0TW9kZSkiKTsKICAgICBpZiAobV9kaWRGYWlsSklUQ29tcGlsYXRpb24pCiAg
ICAgICAgIG91dC5wcmludCgiIChKSVRGYWlsKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGQzYjA2YTg5MWFlZmM2Yzc5NGQ3NWUxYzBkMDA0NmUx
OTIzOGU4MjYuLmUxMTEzOWQ1YTM4NDM1YTA2ZGUyNjc3NWZmZjMxMDAxNWVjYzQ0YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIyMiw5ICsyMjIs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBNYXRoSUNTdGF0cygpOwogCi0gICAgYm9vbCBp
c1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aXNTdHJpY3RNb2Rl
KCk7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2Vk
Q29kZS0+aXNDb25zdHJ1Y3RvcigpOyB9Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7
IHJldHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAg
ICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+Y29k
ZVR5cGUoKTsgfQogCiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkQ29kZS0+c2NyaXB0TW9kZSgpOyB9CkBAIC0yMzIsMTEgKzIzMCw4
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0luc3RhbGxlZFZNVHJhcEJyZWFrcG9pbnRzKCkgY29u
c3Q7CiAgICAgYm9vbCBpbnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoKTsKIAotICAgIGlubGluZSBi
b29sIGlzS25vd25Ob3RJbW1lZGlhdGUoVmlydHVhbFJlZ2lzdGVyIHJlZykKKyAgICBpbmxpbmUg
Ym9vbCBpc0tub3duQ2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgIHsKLSAgICAgICAgaWYg
KHJlZyA9PSB0aGlzUmVnaXN0ZXIoKSAmJiAhaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQogICAgICAgICBpZiAocmVnLmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAg
IHJldHVybiBnZXRDb25zdGFudChyZWcpLmlzQ2VsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDc3ZjE5MjkwNjkwODMzNmVi
ZDAwOGRjZjBjMzZmNGFjNmU5ZTc1ZDQuLjQ5ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcx
OTkwYmU5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oCkBAIC0zNiw5ICszNiw4IEBAIGVudW0gY2xhc3MgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgOiB1aW50OF90IHsgTm8sIFllcyB9OwogLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQ
YXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVv
cmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNl
c0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWws
IGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAg
ICAgICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkKLSAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShp
c1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAg
ICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAg
LCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5k
KSkKQEAgLTU3LDcgKzU2LDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB9CiAKICAg
ICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wg
aXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29s
IGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlv
bjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAt
NzIsNyArNzAsNiBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogCiBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWls
dGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDU3Nzg5YmMyYzY2OWY3Y2FkODg4
M2RlY2YzNTEzMjc4NDQ5YzgyNGYuLjJjODUyZDA2ZDNkZmM1ZjViYmM0ZDMwMTczZWNlMTU0Mjkw
YWMzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtNDksNyArNDks
NyBAQCBzdHJ1Y3QgRml0czsKIAogLy8gSW1wbGljaXQgY29udmVyc2lvbiBmb3IgdHlwZXMgb2Yg
dGhlIHNhbWUgc2l6ZQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgT3Bjb2RlU2l6ZSBzaXplPgotc3Ry
dWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZSwgc3Rk
Ojp0cnVlX3R5cGU+PiB7CitzdHJ1Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNp
emVvZihUKSA9PSBzaXplICYmIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUsIHN0ZDo6
dHJ1ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXpl
PHNpemU+Ojp1bnNpZ25lZFR5cGU7CiAKICAgICBzdGF0aWMgYm9vbCBjaGVjayhUKSB7IHJldHVy
biB0cnVlOyB9CkBAIC0zMjcsNCArMzI3LDI5IEBAIHN0cnVjdCBGaXRzPEdlbmVyaWNCb3VuZExh
YmVsPEdlbmVyYXRvclRyYWl0cz4sIHNpemU+IDogcHVibGljIEZpdHM8aW50LCBzaXplPiB7CiAg
ICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8RUNNQU1v
ZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2Ug
PSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgLy8gYSBwYWlyIG9mIChSZXN1bHRUeXBlOjpU
eXBlLCBSZXN1bHRUeXBlOjpUeXBlKSAtIHRyeSB0byBmaXQgZWFjaCB0eXBlIGludG8gNCBiaXRz
CisgICAgLy8gYWRkaXRpb25hbGx5LCBlbmNvZGUgdW5rbm93biB0eXBlcyBhcyAwIHJhdGhlciB0
aGFuIHRoZSB8IG9mIGFsbCB0eXBlcworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdHlw
ZVdpZHRoID0gNDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFR5cGUgPSAoMSA8
PCB0eXBlV2lkdGgpIC0gMTsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKEVDTUFNb2RlIGVjbWFN
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNoZWNrKGVjbWFNb2RlLnZhbHVlKCkp
OworICAgIH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQo
RUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChl
Y21hTW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRUNNQU1vZGUgY29udmVydCh0
eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEVDTUFNb2RlOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0KGVjbWFNb2RlKSk7CisgICAgfQorfTsK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCmluZGV4IDNlM2U2NWY1OWM1MTMwMWViMmY0NGIyZDIz
MWVmY2VjYTkxZWNjZjEuLjc5OTFhYzJhOGU2N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJh
bWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wQnJpZWZG
dW5jdGlvbkluZm9ybWF0aW9uKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB2b2lkIElubGluZUNh
bGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29u
dGV4dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCks
ICI6PCIsIFJhd1BvaW50ZXIoYmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpKTsKLSAgICBpZiAoaXNT
dHJpY3RNb2RlKCkpCisgICAgaWYgKGlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAgIG91dC5w
cmludCgiIChTdHJpY3RNb2RlKSIpOwogICAgIG91dC5wcmludCgiLCAiLCBkaXJlY3RDYWxsZXIu
Ynl0ZWNvZGVJbmRleCgpLCAiLCAiLCBzdGF0aWNfY2FzdDxLaW5kPihraW5kKSk7CiAgICAgaWYg
KGlzQ2xvc3VyZUNhbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmgKaW5kZXggZTI5ZjM4NGQxZDA2NzJmZWVhMDcxMjA1YmNhYTI4MWE2NDli
MjIyOS4uNzVmOWJiMWE4NDY4YTYxZDdiZTk2YzNhYzliOTFlOTUzZWEzYmY2YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAtMjMx
LDcgKzIzMSw3IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIHB0cmRpZmZfdCBjYWxs
ZXJGcmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lz
dGVyKSArIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKTsgfQogICAgIHB0cmRpZmZfdCBy
ZXR1cm5QQ09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lz
dGVyKSArIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKTsgfQogCi0gICAgYm9vbCBpc1N0cmlj
dE1vZGUoKSBjb25zdCB7IHJldHVybiBiYXNlbGluZUNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7
IH0KKyAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVD
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpOyB9CiAKICAg
ICB2b2lkIGR1bXBCcmllZkZ1bmN0aW9uSW5mb3JtYXRpb24oUHJpbnRTdHJlYW0mKSBjb25zdDsK
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDU4OTFmMmE1
YzI1NzdiOTljNTI5MjJkM2RmZGY1OTZiYTJmZTU2YmYuLjU0ZGE1N2RhYjY5Y2EyNjFhZWZkY2Vi
OTM4ZmZhMGY0ZmYwMzc5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNTcsNyArNTcsNiBAQCBjb25zdCBDbGFz
c0luZm8gVW5saW5rZWRDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwg
bnVsbHB0ciwgbnVsbAogVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRh
YmxlSW5mbyYgaW5mbywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV91c2VzRXZhbChpbmZv
LnVzZXNFdmFsKCkpCi0gICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLmlzU3RyaWN0TW9kZSgpKQog
ICAgICwgbV9pc0NvbnN0cnVjdG9yKGluZm8uaXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXND
YXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5p
c0J1aWx0aW5GdW5jdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBkZDIxN2I3ZmQ0ZmVmNTZkZjhkODFjMzVjMjgx
MzNkNWM4N2ExYTljLi4wMGRjNjE2MzM1ZmQzMWIwNDMyNTFlMzQ0MDBlNTdkZWY1MzE1ZDVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaApAQCAtMTIzLDcgKzEyMyw2IEBAIHB1YmxpYzoKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9u
LCBBcHBseUZ1bmN0aW9uIH07CiAKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KQEAgLTMz
NSw3ICszMzQsNiBAQCBwcml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0
ZXI7CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3Ry
aWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNp
Z25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRp
bkZ1bmN0aW9uIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggMjEzYTNhODMyZDdlYWFh
OWI5NzEwZjAxYTg2NGRhOTM1YmRkN2VhNS4uMmViOTg0YzFiMDVhNDVlMGFhNTIwZTFmZDM3OGFk
OWUyZmM5MzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVi
bGljOgogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9
Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCk7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2stPnVzZXNFdmFsKCk7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24oKSB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGNkOGJlYmY4ZDM2NDU0NWQxODJkNzljYmY4MDY4
MDY3MWY0MTE5N2YuLjI1YzUwZjdiODk3ZThhZGM4YjFiMGZjNGVmNjMzMzNlZTgwNDU5ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNzEsMTAgKzcxLDExIEBAIHN0YXRpYyBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2so
CiAKICAgICBib29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkg
PT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9u
Q29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0
cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3Jp
cHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxl
LT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9u
RXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwg
RnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwga2luZCA9
PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxl
LT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5
cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlz
Q2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2Rl
R2VuZXJhdGlvbk1vZGUpOwogCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcyA9IGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCk7Ci0gICAg
ZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBz
b3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25Nb2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMpOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRl
eHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpub3RTdHJpY3QoKTsKKyAgICBl
cnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNv
dXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGEwMWQ0N2Q3ZGMwYmMxYjQ4MDE2NWJiY2Qy
NjZkMTFhNmMyMzJiNDUuLjkzNGNiNTIzNjcyOTgzMzVhMTJkYmEyZTM0OThkOWNmZjIwOTkyZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yOTcsMTQgKzI5NywyMSBAQCBQYXJzZXJFcnJvciBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJzZXJF
cnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVy
YXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dy
YW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVj
bWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVy
YXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1O
b2RlKQogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQo
KSkKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29kZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBt
X3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCisgICAgLCBtX3VzZXNOb25TdHJpY3RF
dmFsKGZhbHNlKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2Fj
aGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1
bmN0aW9uQ29udGV4dChwcm9ncmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBwcm9ncmFt
Tm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLT5zaXplKCkpOwogCkBAIC0zMzgsMTQgKzM0NSwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlu
a2VkUAogICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9u
Tm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVj
bWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVy
YXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9u
Tm9kZSkKICAgICAsIG1fY29kZVR5cGUoRnVuY3Rpb25Db2RlKQogICAgICwgbV92bSh2bSkKKyAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBmbGFnCisgICAgLCBtX3VzZXNFeGNlcHRpb25z
KGZhbHNlKQorICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWls
dGluRnVuY3Rpb24oY29kZUJsb2NrLT5pc0J1aWx0aW5GdW5jdGlvbigpKQotICAgICwgbV91c2Vz
Tm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwo
KSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFi
bGUgdG8gaGF2ZSB0YWlsIGNhbGwgZWxpbWluYXRpb24gd2l0aCB0aGUgcHJvZmlsZXIKICAgICAv
LyBlbmFibGVkLiBUaGlzIGlzIGN1cnJlbnRseSBub3QgcG9zc2libGUgYmVjYXVzZSB0aGUgcHJv
ZmlsZXIgZXhwZWN0cwogICAgIC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJl
Zm9yZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBhcmUgbm90CkBAIC0zNTMsOCArMzYzLDEwIEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9k
ZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgIC8vCiAgICAgLy8gTm90ZSB0aGF0IHdlIGludGVu
dGlvbmFsbHkgZW5hYmxlIHRhaWwgY2FsbCBmb3IgbmFrZWQgY29uc3RydWN0b3JzIHNpbmNlIGl0
IGRvZXMgbm90IGhhdmUgc3BlY2lhbCBjb2RlIGZvciAicmV0dXJuIi4KLSAgICAsIG1faW5UYWls
UG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBj
b25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2Rl
KCkpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFp
c0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1Vu
ZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQo
ZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2
YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0
VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIFN5bWJvbFRhYmxl
KiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKQEAgLTQz
Nyw3ICs0NDksNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGlmIChmdW5jdGlvbk5h
bWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9u
TW9kZSgpKSkgewogICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpOwogICAgICAgICBBU1NFUlQoIWlzQXN5bmNGdW5jdGlvbkJvZHlQ
YXJzZU1vZGUocGFyc2VNb2RlKSk7Ci0gICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5j
dGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25O
YW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBlY21hTW9kZS5pc1N0cmlj
dCgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVu
Y3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQg
PSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwogICAgICAgICBlbWl0
UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVn
aXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKQEAgLTQ4Nyw3ICs0OTksNyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9k
ZSwgVW5saW5rZQogICAgICAgICBtX2FyZ3VtZW50c1JlZ2lzdGVyLT5yZWYoKTsKICAgICB9CiAg
ICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRzICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
ICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgeworICAgIGlmIChuZWVkc0FyZ3VtZW50cyAmJiAh
ZWNtYU1vZGUuaXNTdHJpY3QoKSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKICAgICAgICAg
Ly8gSWYgd2UgY2FwdHVyZWQgYW55IGZvcm1hbCBwYXJhbWV0ZXIgYnkgbmFtZSwgdGhlbiB3ZSB1
c2UgU2NvcGVkQXJndW1lbnRzLiBPdGhlcndpc2Ugd2UKICAgICAgICAgLy8gdXNlIERpcmVjdEFy
Z3VtZW50cy4gV2l0aCBTY29wZWRBcmd1bWVudHMsIHdlIGxpZnQgYWxsIG9mIG91ciBhcmd1bWVu
dHMgaW50byB0aGUKICAgICAgICAgLy8gYWN0aXZhdGlvbi4KQEAgLTUxNiw3ICs1MjgsNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAgICAgICBlbnRyeS5kaXNhYmxl
V2F0Y2hpbmcobV92bSk7CiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUt
PnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIGVudHJ5KTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIsIFVJTlRfTUFYLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJl
VmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgU3ltYm9sVGFibGVP
clNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29u
c3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBPcFB1dFRv
U2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgVUlOVF9NQVgs
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSksIEdldFB1dElu
Zm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6
Tm90SW5pdGlhbGl6YXRpb24pLCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUo
VmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBvZmZzZXQub2Zm
c2V0KCksIGVjbWFNb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgLy8gVGhpcyBjcmVhdGVzIGEgc2NvcGVkIGFyZ3VtZW50cyBvYmplY3QgYW5kIGNvcGllcyB0
aGUgb3ZlcmZsb3cgYXJndW1lbnRzIGludG8gdGhlCkBAIC01NTQsMTEgKzU2NiwxMSBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEJp
bmRpbmdOb2RlKj4ocGFyYW1ldGVycy5hdChpKS5maXJzdCktPmJvdW5kUHJvcGVydHkoKTsKICAg
ICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5h
bWUsIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNldCkpKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIsIGFkZENvbnN0YW50KGlkZW50KSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJ
bmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xv
c3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIFN5bWJvbFRh
YmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJs
ZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQoKSk7CisgICAgICAgICAgICBPcFB1dFRv
U2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgYWRkQ29uc3Rh
bnQoaWRlbnQpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkp
LCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXph
dGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5
bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwg
b2Zmc2V0Lm9mZnNldCgpLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
aWYgKG5lZWRzQXJndW1lbnRzICYmIChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpIHx8ICFpc1Np
bXBsZVBhcmFtZXRlckxpc3QpKSB7CisgICAgaWYgKG5lZWRzQXJndW1lbnRzICYmIChlY21hTW9k
ZS5pc1N0cmljdCgpIHx8ICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpKSB7CiAgICAgICAgIC8vIEFs
bG9jYXRlIGEgY2xvbmVkIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIE9wQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOjplbWl0KHRoaXMsIG1fYXJndW1lbnRzUmVnaXN0ZXIpOwogICAgIH0KQEAgLTcx
Miw3ICs3MjQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAgICAg
ICBib29sIHNob3VsZEVtaXRUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9z
Y29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9k
ZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlRXZhbCgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkRW1pdFRvVGhpcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKChmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkgfHwgbV9zY29wZU5vZGUtPmRv
QW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyUHJvcGVydHkoKSkgJiYgIWNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKGZ1bmN0aW9u
Tm9kZS0+dXNlc1N1cGVyUHJvcGVydHkoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93
RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdy
ZSBub3QgaW4gc3RyaWN0IG1vZGUgYmVjYXVzZSB3ZQogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gd2lsbCBjb252ZXJ0IHx0aGlzfCB0byBhbiBvYmplY3QsIGFuZCB0aGF0IG9iamVjdCBtYXkg
YmUgcGFzc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhIHN0cmljdCBmdW5jdGlv
biBhcyB8dGhpc3wuIFRoaXMgaXMgb2JzZXJ2YWJsZSBiZWNhdXNlIHRoYXQKQEAgLTgzMywxNSAr
ODQ1LDIxIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgcHVzaExleGljYWxTY29wZSht
X3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5
cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5j
dGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVy
YXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVC
bG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2Rl
KQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxs
RnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShFdmFsQ29kZSkK
ICAgICAsIG1fdm0odm0pCi0gICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNl
c0V2YWwoKSAmJiAhY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAsIG1fdXNlc0V4Y2Vw
dGlvbnMoZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJs
b2NrLT51c2VzRXZhbCgpICYmICFlY21hTW9kZS5pc1N0cmljdCgpKQorICAgICwgbV9pblRhaWxQ
b3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2Up
CiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChldmFsTm9kZS0+dXNl
c0Fycm93RnVuY3Rpb24oKSB8fCBldmFsTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1v
ZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2
ZWRDb250ZXh0VHlwZSgpKQogewogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEp
OwpAQCAtODkxLDE1ICs5MDksMjEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNo
TGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUs
IE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVC
bG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5
dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
Pih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNl
QXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2Vu
ZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAs
IG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgLCBt
X2NvZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV91c2VzRXhjZXB0
aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkK
KyAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxl
c1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3Jh
bU5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogewogICAgIEFT
U0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlh
Ymxlcy0+c2l6ZSgpKTsKIApAQCAtMjQyOSw3ICsyNDUzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJp
YWJsZSYKICAgICAgICAgICAgIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBy
ZXNvbHZlVHlwZSgpLCBpbml0aWFsaXphdGlvbk1vZGUpOwogICAgICAgICAgICAgc3ltYm9sVGFi
bGVPclNjb3BlRGVwdGggPSBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c2NvcGVEZXB0aChsb2Nh
bFNjb3BlRGVwdGgoKSk7CiAgICAgICAgIH0KLSAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRo
aXMsIHNjb3BlLCBhZGRDb25zdGFudCh2YXJpYWJsZS5pZGVudCgpKSwgdmFsdWUsIGdldFB1dElu
Zm8sIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoLCAhIW9mZnNldCA/IG9mZnNldC5vZmZzZXQoKSA6
IDApOworICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgc2NvcGUsIGFkZENvbnN0YW50
KHZhcmlhYmxlLmlkZW50KCkpLCB2YWx1ZSwgZ2V0UHV0SW5mbywgc3ltYm9sVGFibGVPclNjb3Bl
RGVwdGgsICEhb2Zmc2V0ID8gb2Zmc2V0Lm9mZnNldCgpIDogMCwgZWNtYU1vZGUoKSk7CiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKICAgICB9IH0KICAgICAKQEAgLTI1MDcsNyArMjUzMSw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0
QnlJZChiYXNlLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0QnlJZDo6ZW1pdCh0aGlzLCBi
YXNlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgUHV0QnlJZE5vbmUpOyAvLyBpcyBub3QgZGlyZWN0
CisgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBQ
dXRCeUlkTm9uZSwgZWNtYU1vZGUoKSk7IC8vIGlzIG5vdCBkaXJlY3QKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKQEAgLTI1MTcsNyArMjU0MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsCiAK
ICAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQocHJvcGVydHkpOwogCi0g
ICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0
eUluZGV4LCB2YWx1ZSk7CisgICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwg
dGhpc1ZhbHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAKICAgICByZXR1
cm4gdmFsdWU7CiB9CkBAIC0yNTMxLDcgKzI1NTUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRp
ZgogICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UsIHByb3BlcnR5SW5k
ZXgpOwogCiAgICAgUHV0QnlJZEZsYWdzIHR5cGUgPSAocHV0VHlwZSA9PSBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0IHx8IHByb3BlcnR5ICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29y
ZVByb3RvKSA/IFB1dEJ5SWRJc0RpcmVjdCA6IFB1dEJ5SWROb25lOwotICAgIE9wUHV0QnlJZDo6
ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgdHlwZSk7CisgICAgT3BQdXRC
eUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCB0eXBlLCBlY21hTW9k
ZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI1OTAsNyArMjYxNCw3IEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRBc3luY0dlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklE
KiBuZXh0RnVuY3Rpb24pCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVs
ZXRlQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5KQogewotICAgIE9wRGVsQnlJZDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIGFk
ZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgT3BEZWxCeUlkOjplbWl0KHRoaXMsIGRzdCwgYmFz
ZSwgYWRkQ29uc3RhbnQocHJvcGVydHkpLCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gZHN0Owog
fQogCkBAIC0yNjM0LDI1ICsyNjU4LDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSCiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0
QnlWYWw6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICBPcFB1dEJ5VmFs
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0
dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5
VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxXaXRoVGhpczo6
ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQdXRC
eVZhbFdpdGhUaGlzOjplbWl0KHRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVl
LCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJl
Y3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICBPcFB1dEJ5VmFsRGly
ZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
bGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHkpCiB7Ci0gICAgT3BEZWxCeVZhbDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3Bl
cnR5KTsKKyAgICBPcERlbEJ5VmFsOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHksIGVj
bWFNb2RlKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTMyNDYsNyArMzI3MCwxMCBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBmdW5jLCBFeHBlYwogICAgIC8vIEVtaXQgY2FsbC4KICAgICBBU1NFUlQoZHN0
KTsKICAgICBBU1NFUlQoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSk7Ci0gICAgQ2FsbE9wOjplbWl0
KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCkpOworICAgIGlmIGNvbnN0ZXhwciAob3Bj
b2RlSUQgPT0gb3BfY2FsbF9ldmFsKQorICAgICAgICBDYWxsT3A6OmVtaXQodGhpcywgZHN0LCBm
dW5jLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCksIGNhbGxBcmd1
bWVudHMuc3RhY2tPZmZzZXQoKSwgZWNtYU1vZGUoKSk7CisgICAgZWxzZQorICAgICAgICBDYWxs
T3A6OmVtaXQodGhpcywgZHN0LCBmdW5jLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCksIGNhbGxBcmd1bWVudHMuc3RhY2tPZmZzZXQoKSk7CiAgICAgCiAgICAgaWYg
KGV4cGVjdGVkRnVuY3Rpb24gIT0gTm9FeHBlY3RlZEZ1bmN0aW9uKQogICAgICAgICBlbWl0TGFi
ZWwoZG9uZS5nZXQoKSk7CkBAIC0zNzg5LDcgKzM4MTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
LCBSZQogICAgIHVuc2lnbmVkIG51bVZhcnMgPSBtX2NvZGVCbG9jay0+bnVtVmFycygpOwogICAg
IHB1c2hMZXhpY2FsU2NvcGVJbnRlcm5hbChuYW1lU2NvcGVFbnZpcm9ubWVudCwgVERaQ2hlY2tP
cHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxs
cHRyLCBURFpSZXF1aXJlbWVudDo6Tm90VW5kZXJURFosIFNjb3BlVHlwZTo6RnVuY3Rpb25OYW1l
U2NvcGUsIFNjb3BlUmVnaXN0ZXJUeXBlOjpWYXIpOwogICAgIEFTU0VSVF9VTlVTRUQobnVtVmFy
cywgbV9jb2RlQmxvY2stPm51bVZhcnMoKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KG51bVZhcnMgKyAx
KSk7IC8vIFNob3VsZCBoYXZlIG9ubHkgY3JlYXRlZCBvbmUgbmV3ICJ2YXIiIGZvciB0aGUgZnVu
Y3Rpb24gbmFtZSBzY29wZS4KLSAgICBib29sIHNob3VsZFRyZWF0QXNMZXhpY2FsVmFyaWFibGUg
PSBpc1N0cmljdE1vZGUoKTsKKyAgICBib29sIHNob3VsZFRyZWF0QXNMZXhpY2FsVmFyaWFibGUg
PSBlY21hTW9kZSgpLmlzU3RyaWN0KCk7CiAgICAgVmFyaWFibGUgZnVuY3Rpb25WYXIgPSB2YXJp
YWJsZUZvckxvY2FsRW50cnkocHJvcGVydHksIG1fbGV4aWNhbFNjb3BlU3RhY2subGFzdCgpLm1f
c3ltYm9sVGFibGUtPmdldChOb0xvY2tpbmdOZWNlc3NhcnksIHByb3BlcnR5LmltcGwoKSksIG1f
bGV4aWNhbFNjb3BlU3RhY2subGFzdCgpLm1fc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBzaG91
bGRUcmVhdEFzTGV4aWNhbFZhcmlhYmxlKTsKICAgICBlbWl0UHV0VG9TY29wZShtX2xleGljYWxT
Y29wZVN0YWNrLmxhc3QoKS5tX3Njb3BlLCBmdW5jdGlvblZhciwgY2FsbGVlLCBUaHJvd0lmTm90
Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogfQpAQCAtMzk3
Miw3ICszOTk5LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0
aW9uSWZOZWVkZWQoY29uc3QgVmFyaWFibGUmIHZhcmlhYmxlKQogewogICAgIC8vIElmIHdlJ3Jl
IGluIHN0cmljdCBtb2RlLCB3ZSBhbHdheXMgdGhyb3cuCiAgICAgLy8gSWYgd2UncmUgbm90IGlu
IHN0cmljdCBtb2RlLCB3ZSB0aHJvdyBmb3IgImNvbnN0IiB2YXJpYWJsZXMgYnV0IG5vdCB0aGUg
ZnVuY3Rpb24gY2FsbGVlLgotICAgIGlmIChpc1N0cmljdE1vZGUoKSB8fCB2YXJpYWJsZS5pc0Nv
bnN0KCkpIHsKKyAgICBpZiAoZWNtYU1vZGUoKS5pc1N0cmljdCgpIHx8IHZhcmlhYmxlLmlzQ29u
c3QoKSkgewogICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhtX3ZtLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC01MDU1LDcgKzUwODIsNyBAQCB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHlz
aXM6OnJlY29yZCgpCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb1RoaXMoKQogewot
ICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgT3BU
b1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVnaXN0ZXIpLCBlY21hTW9kZSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMjk4OTM3NDBhODVhNTg0OWUz
OTcyODg1NjUwMzJhZTc0YmFmZjU1Yi4uNzA3NTk2YTQ5NzcyMDFjZWU3NDFlMzJhMTc4NzM2ZDU0
YTE2Mjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzgwLDEzICszODAsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBGaW5hbGx5Q29udGV4dDsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEluZGV4ZWRGb3JJbkNvbnRleHQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1
cmVGb3JJbkNvbnRleHQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTdHJpY3RNb2RlU2NvcGU7CiAg
ICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0
YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9n
cmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayos
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCopOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVBy
b2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0
aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAg
ICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9j
ayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVBy
b2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7
CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAgICAgICAgIApAQCAtNDA2LDE0ICs0
MDcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KIAogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBVbmxpbmtlZENvZGVCbG9jaz4KLSAgICAgICAgc3RhdGlj
IFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQorICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3Ig
Z2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
LCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogZW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25z
OjpyZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lcygpKSkKICAgICAgICAgICAgICAgICBiZWZvcmUg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZt
LmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8
Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVy
YXRpb25Nb2RlLCBlbnZpcm9ubWVudCk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJh
dG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29k
ZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50LCBlY21hTW9kZSk7CiAgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogCiAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGlt
ZXMoKSkpIHsKQEAgLTEwMTksNyArMTAyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIHNob3VsZEVtaXRUeXBlUHJvZmlsZXJIb29rcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUdl
bmVyYXRpb25Nb2RlLmNvbnRhaW5zKENvZGVHZW5lcmF0aW9uTW9kZTo6VHlwZVByb2ZpbGVyKTsg
fQogICAgICAgICBib29sIHNob3VsZEVtaXRDb250cm9sRmxvd1Byb2ZpbGVySG9va3MoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVHZW5lcmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2VuZXJhdGlvbk1v
ZGU6OkNvbnRyb2xGbG93UHJvZmlsZXIpOyB9CiAgICAgICAgIAotICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQor
ICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0K
ICAgICAgICAgdm9pZCBzZXRVc2VzQ2hlY2twb2ludHMoKSB7IG1fY29kZUJsb2NrLT5zZXRIYXND
aGVja3BvaW50cygpOyB9CiAKICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQpAQCAtMTI5Nyw4ICsxMjk4
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiB7
IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV91c2VzTm9uU3RyaWN0RXZhbCB7IGZhbHNlIH07CiAg
ICAgICAgIGJvb2wgbV9pblRhaWxQb3NpdGlvbiB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgbV9u
ZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7CiAgICAgICAgIGJvb2wgbV9oYXNDYWNo
ZWRWYXJpYWJsZXNVbmRlclREWiB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9uZWVkc1RvVXBk
YXRlQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAxOworICAgICAgICBFQ01BTW9kZSBtX2VjbWFNb2Rl
OwogICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJpdmVkQ29udGV4dFR5cGUgeyBEZXJp
dmVkQ29udGV4dFR5cGU6Ok5vbmUgfTsKIAogICAgICAgICBDb21wYWN0VmFyaWFibGVNYXA6Okhh
bmRsZSBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaOwpAQCAtMTMxMiw2ICsxMzE0LDI1IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8Q2F0Y2hFbnRyeT4gbV9leGNlcHRpb25IYW5k
bGVyc1RvRW1pdDsKICAgICB9OwogCisgICAgY2xhc3MgU3RyaWN0TW9kZVNjb3BlIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIFN0cmljdE1vZGVTY29wZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yKQorICAgICAgICAgICAgOiBtX2dlbmVyYXRvcihnZW5lcmF0b3IpCisgICAgICAgICAgICAs
IG1fcHJldmlvdXNFQ01BTW9kZShnZW5lcmF0b3IubV9lY21hTW9kZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9nZW5lcmF0b3IubV9lY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIH5TdHJpY3RNb2RlU2NvcGUoKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX2dlbmVyYXRvci5tX2VjbWFNb2RlID0gbV9wcmV2aW91c0VDTUFNb2RlOworICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBCeXRlY29kZUdlbmVyYXRvciYgbV9nZW5lcmF0
b3I7CisgICAgICAgIEVDTUFNb2RlIG1fcHJldmlvdXNFQ01BTW9kZTsKKyAgICB9OworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDE0YzMwNmQ1YWFj
ZjEzMGEyN2MxNzI4ZmQ0NGU0ODEzZDdmMjE1Ny4uZDUwYTJkOWNhY2JhY2JhOTczOTcyMzk1NjRi
ODNhYjU1MmJhOWM3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjkwMyw3ICsyOTAzLDcgQEAgUmVnaXN0ZXJJRCog
QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3QKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAoZ2Vu
ZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0
cmljdCgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICBpZiAobV9hc3Np
Z25tZW50Q29udGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6QXNzaWdubWVudEV4cHJlc3Npb24p
CkBAIC0yOTIwLDcgKzI5MjAsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICBSZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSByZXN1bHQuZ2V0KCk7CiAgICAgaWYg
KCFpc1JlYWRPbmx5KSB7Ci0gICAgICAgIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmlj
dE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFs
aXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Fzc2lnbm1lbnRDb250ZXh0KSk7Cisg
ICAgICAgIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQo
KSwgdmFyLCByZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBU
aHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2Rl
Rm9yQXNzaWdubWVudENvbnRleHQobV9hc3NpZ25tZW50Q29udGV4dCkpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJlc3VsdC5nZXQoKSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIH0KIApAQCAtMzE0MCw3ICszMTQwLDcgQEAgUmVnaXN0ZXJJRCogRW1w
dHlMZXRFeHByZXNzaW9uOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXMKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUg
PSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwg
dmFyLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZv
dW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6
YXRpb24pOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZh
ciwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lm
Tm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0
aWFsaXphdGlvbik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0
KCksIHZhciwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQubGVuZ3RoKCkpOyAKICAg
ICB9CiAKQEAgLTMzNTAsMTMgKzMzNTAsMTMgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVh
ZGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHByb3BlcnQKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFy
KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGxvY2FsLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIp
OwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRS
ZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5h
bWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhy
b3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9w
ZXJ0eU5hbWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91
bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFs
aXphdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShw
cm9wZXJ0eU5hbWUsIHZhciwgbV9sZXhwci0+cG9zaXRpb24oKSwgbV9sZXhwci0+cG9zaXRpb24o
KSArIGlkZW50Lmxlbmd0aCgpKTsKICAgICB9OwpAQCAtMzYwNywxMyArMzYwNywxMyBAQCB2b2lk
IEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25s
eUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUo
bG9jYWwsIHZhbHVlKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9y
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShudWxscHRyLCB2YXIpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVy
YXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZv
dW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdl
bmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRo
cm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVl
LCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHItPnBvc2l0aW9uKCkgKyBpZGVudC5s
ZW5ndGgoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9sZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUo
KSkgewpAQCAtNDM5Nyw2ICs0Mzk3LDggQEAgdm9pZCBDbGFzc0RlY2xOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIFJlZ2lzdGVy
SUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgU3RyaWN0TW9kZVNjb3BlIHN0cmljdE1vZGVT
Y29wZShnZW5lcmF0b3IpOworCiAgICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAg
IGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpD
aGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29w
ZVR5cGU6OklzTmVzdGVkKTsKIApAQCAtNDgzMSw3ICs0ODMzLDcgQEAgdm9pZCBCaW5kaW5nTm9k
ZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZh
bHVlKSBjb24KICAgICAgICAgICAgIGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3NpYmxlKHZh
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1v
ZGUoKSkKKyAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0
UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNDg0MSw3ICs0
ODQzLDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKSBjb24KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRS
ZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5l
cmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RG
b3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQobV9iaW5kaW5nQ29u
dGV4dCkpOworICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2
YWx1ZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6
IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29u
dGV4dChtX2JpbmRpbmdDb250ZXh0KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2
YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChtX2JpbmRpbmdD
b250ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCB8fCBtX2Jp
bmRpbmdDb250ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpDb25zdERlY2xhcmF0aW9uU3RhdGVt
ZW50KQogICAgICAgICBnZW5lcmF0b3IubGlmdFREWkNoZWNrSWZQb3NzaWJsZSh2YXIpOwpAQCAt
NDg3OSw3ICs0ODgxLDcgQEAgdm9pZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNT
dHJpY3RNb2RlKCkpCisgICAgICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgp
KQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCBudWxscHRyLCBzY29wZS5nZXQo
KSk7CkBAIC00ODkwLDcgKzQ4OTIsNyBAQCB2b2lkIEFzc2lnbm1lbnRFbGVtZW50Tm9kZTo6Ymlu
ZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgICAg
IH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBpZiAoIWlzUmVhZE9ubHkpIHsKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwg
Z2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lm
Tm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBn
ZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RU
aHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2Fzc2lnbm1l
bnRUYXJnZXQtPmlzRG90QWNjZXNzb3JOb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDM5Y2JmODJlMjEx
MzIwNWI1NmYzYTdkNjg3NjM1ZjBjM2U3MGYxN2EuLjlmNzRiOTRhMTMyMzNiMzM4NGM4ZDkwZDUw
ZGU0NmI1OTFmMmE0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjEyLDkgKzIxMiw5IEBAIEpTVmFsdWUgRGVi
dWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0CiAgICAgaWYgKCF0aGlzVmFs
dWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgRUNNQU1vZGUgZWNtYU1v
ZGUgPSBOb3RTdHJpY3RNb2RlOwotICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSkKLSAgICAgICAgZWNtYU1vZGUgPSBTdHJpY3RNb2RlOworICAgIEVDTUFNb2Rl
IGVjbWFNb2RlID0gRUNNQU1vZGU6Om5vdFN0cmljdCgpOworICAgIGlmIChjb2RlQmxvY2sgJiYg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKKyAgICAg
ICAgZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7CiAgICAgcmV0dXJuIHRoaXNWYWx1ZS50
b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIGVjbWFN
b2RlKTsKIH0KIApAQCAtMjUzLDcgKzI1Myw4IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6
OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU09iCiAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICBKU1Njb3BlOjpj
b2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFi
bGVzVW5kZXJURFopOwogCi0gICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJT
b3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT51
bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBl
LCAmdmFyaWFibGVzVW5kZXJURFopOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJp
Y3QoKSA6IEVDTUFNb2RlOjpub3RTdHJpY3QoKTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxs
RnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2Nr
KCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2Rl
QmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
PmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNV
bmRlclREWiwgZWNtYU1vZGUpOwogICAgIGlmIChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlv
bigpKSkgewogICAgICAgICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpOwogICAg
ICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXgg
ZWRjNDgzNDIxMjgxMzBkMGU4M2VmMjMwN2IzYTNlOWUwYWRiNWE2Yy4uMmMyMWJmYjE1ZDBhZmVi
MDc1ZGFmMDVhMzU4OWVlMDFiNWM4MDhiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTg1LDEw
ICsxODUsMTAgQEAgZW51bSBjbGFzcyBUb1RoaXNSZXN1bHQgewogICAgIEdsb2JhbFRoaXMsCiAg
ICAgRHluYW1pYywKIH07Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShW
TSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCitp
bmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2RlIGVj
bWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCiB7CiAgICAgLy8gV2UgbG9vayBh
dCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9zdCBjYXNlcyBhbmQgZG9l
cyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVzLgotICAgIGlmIChpc1N0
cmljdE1vZGUpIHsKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAo
dmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiBTcGVjT2JqZWN0
T3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAg
fSBlbHNlIHsKQEAgLTIwMiwyMCArMjAyLDIwIEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1Ro
aXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAg
ICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9kID09ICZKU09iamVjdDo6dG9UaGlzKQogICAgICAg
ICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwogICAgICAgICAgICAgaWYg
KHRvVGhpc01ldGhvZCA9PSAmSlNTY29wZTo6dG9UaGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6VW5kZWZpbmVkOwogICAg
ICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoKGlzU3RyaWN0TW9kZSB8fCAodmFsdWVG
b3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAm
JiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgIGlmICgoZWNtYU1v
ZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5t
X3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5p
dGUoKSkgewogICAgICAgICBib29sIGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlID0gIXZhbHVlRm9y
Tm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7CiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlz
ID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgVHlwZUluZm8gdHlw
ZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2Jq
ZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1i
b2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOwotICAgICAgICAgICAgaWYgKCFp
c1N0cmljdE1vZGUpCisgICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBk
b24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhl
cjoKICAgICAgICAgICAgIC8vIDEpIFdlIGFyZSBpbiBzdHJpY3QgbW9kZSBhbmQgc3RyaW5ncy9z
eW1ib2xzIGFyZSBub3Qgd3JhcHBlZApAQCAtMjI5LDcgKzIyOSw3IEBAIGlubGluZSBUb1RoaXNS
ZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3Ry
YWN0VmFsdWUmCiAgICAgICAgIGlmICghb3ZlcnJpZGVzVG9UaGlzKQogICAgICAgICAgICAgcmV0
dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgICAgIGlmIChhbGxTdHJ1Y3R1cmVzQXJl
SlNTY29wZSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgIGlm
IChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1
bHQ6OlVuZGVmaW5lZDsKICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRo
aXM7CiAgICAgICAgIH0KQEAgLTI3MjksOSArMjcyOSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0
aW9uID0gZm9yTm9kZShub2RlKTsKLSAgICAgICAgYm9vbCBzdHJpY3RNb2RlID0gbV9ncmFwaC5p
c1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogCi0gICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1
bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV92bSwgc3RyaWN0TW9kZSwgc291cmNlKTsKKyAgICAg
ICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX3ZtLCBlY21hTW9k
ZSwgc291cmNlKTsKICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgY2FzZSBUb1Ro
aXNSZXN1bHQ6OklkZW50aXR5OgogICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25z
dGFudEZvbGRpbmcodHJ1ZSk7CkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogICAgICAgICAgICAgZGVzdGluYXRpb24uc2V0VHlwZShtX2dyYXBoLCBTcGVjT2Jq
ZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6RHlu
YW1pYzoKLSAgICAgICAgICAgIGlmIChzdHJpY3RNb2RlKQorICAgICAgICAgICAgaWYgKGVjbWFN
b2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24ubWFrZUhlYXBUb3Ao
KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291
cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCBlNmQ1YjY1YTRkMDExNmM2ODZhZTA2ZTExOGNkN2ZjYTkzNzY3MWNmLi40NTYwODBh
NTJjNTExMDYzNWQ1MjA2MmM4NGVlNWE5MmEyMWY2MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjQ1LDEwICsyNDUsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlLCB1bnNpZ25lZCBpbnN0cnVjdGlv
blNpemUpOwogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCi0gICAgICAgIE5vZGUqIGJhc2UsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYs
IGJvb2wgaXNEaXJlY3QpOworICAgICAgICBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0
LCBFQ01BTW9kZSk7CiAgICAgdm9pZCBoYW5kbGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNl
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0
YXR1cyYsCi0gICAgICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGludHJ1Y3Rpb25TaXplKTsK
KyAgICAgICAgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW50cnVjdGlvblNpemUsIEVDTUFNb2Rl
KTsKICAgICAKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBj
aGVjayBmb3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29u
ZGl0aW9uIG5vIGxvbmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNr
IGNhbiBiZSBlbWl0dGVkLgpAQCAtODQ2LDE4ICs4NDYsMTggQEAgcHJpdmF0ZToKICAgICB9CiAg
ICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
Tm9kZVR5cGUgb3AsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNh
bGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUs
IGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAg
ICAgICAgICBpZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVy
ZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgb3BJbmZvLCBj
YWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOwogICAgICAgICAgICAg
b3AgPSBUYWlsQ2FsbElubGluZWRDYWxsZXI7CiAgICAgICAgIH0KIAogCiAgICAgICAgIE5vZGUq
IGNhbGwgPSBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgT3BJ
bmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8o
cHJlZGljdGlvbikpOworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwg
cmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgIGlmIChyZXN1bHQu
aXNWYWxpZCgpKQogICAgICAgICAgICAgc2V0KHJlc3VsdCwgY2FsbCk7CiAgICAgICAgIHJldHVy
biBjYWxsOwpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2Fs
bFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVk
aWN0aW9uKTsKICAgICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxWYXJhcmdzICYm
IGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgIHJldHVybiBj
YWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCA/IFRlcm1pbmFsIDogTm9uVGVybWluYWw7CiB9CkBA
IC0yMTgyLDcgKzIxODIsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3Vs
dCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0
Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkg
ewogICAgICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0LCBjYWxsT3AsIG51bGxwdHIs
IG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAg
ICAgcmVzdWx0LCBjYWxsT3AsIE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9u
KTsKICAgICAgICAgVkVSQk9TRV9MT0coIldlIGFkZGVkIGEgY2FsbCBpbiB0aGUgc2xvdyBwYXRo
XG4iKTsKICAgICB9IGVsc2UgewpAQCAtMzY1Niw3ICszNjU2LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUywg
IkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBh
cmd1bWVudHMuIik7CiAKICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICBhZGRDYWxsKHJlc3VsdCwg
Q2FsbCwgc2lnbmF0dXJlLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIGFkZENhbGwocmVzdWx0LCBDYWxsLCBP
cEluZm8oc2lnbmF0dXJlKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NDYxNSwyMiArNDYxNSwyMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
fQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKLSAgICBOb2RlKiBiYXNlLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1
cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCkKKyAgICBOb2RlKiBiYXNlLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0
QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYg
KGlzRGlyZWN0KQotICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVu
dGlmaWVyTnVtYmVyKSwgYmFzZSwgdmFsdWUpOworICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWRE
aXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwg
dmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgYWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2Vz
Q2FsbHMoKSA/IFB1dEJ5SWRGbHVzaCA6IFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVy
KSwgYmFzZSwgdmFsdWUpOworICAgICAgICBhZGRUb0dyYXBoKHB1dEJ5SWRTdGF0dXMubWFrZXND
YWxscygpID8gUHV0QnlJZEZsdXNoIDogUHV0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIp
LCBPcEluZm8oZWNtYU1vZGUpLCBiYXNlLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgTm9kZSogdmFsdWUsCi0gICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1
cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQorICAgIGNvbnN0IFB1
dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGluc3Ry
dWN0aW9uU2l6ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYgKCFwdXRCeUlkU3RhdHVz
LmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6
dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQo
KSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKLSAgICAgICAgZW1pdFB1
dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUs
IHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCkBAIC00NjM4LDcgKzQ2MzgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJ
ZFN0YXR1cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFy
aWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgp
KSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1
ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFz
ZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21h
TW9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NjQ3
LDcgKzQ2NDcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAg
ICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0ua2luZCgpICE9IFB1dEJ5
SWRWYXJpYW50OjpUcmFuc2l0aW9uKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICBpZiAoIWNoZWNrKHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25k
aXRpb25TZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRl
bnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1
dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00NjkwLDcgKzQ2OTAs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogCiAgICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJp
YW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwogICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQu
Y29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMs
IGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtNDc1Nyw3ICs0NzU3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgK
IAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQoU3BlY0NlbGxPdGhlciwgYmFzZSwg
aWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgICAgIGlmICghbG9hZGVkVmFsdWUpIHsK
LSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBw
dXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBp
ZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2Rl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ4MDEsNyAr
NDgwMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQogICAg
IAogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51
bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5
SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
LCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IH0KIH0KQEAgLTQ5NzMsNyArNDk3
Myw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7CiAgICAgICAgICAgICBOb2Rl
KiBvcDEgPSBnZXRUaGlzKCk7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwor
ICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
OwogICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X2NhY2hlZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1
cmUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQpAQCAtNDk4
NCw3ICs0OTg1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAgICAgICAgIHx8
IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZENhY2hlKQogICAgICAgICAgICAgICAgIHx8IChvcDEtPm9wKCkgPT0gR2V0TG9jYWwg
JiYgb3AxLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxl
ZCgpKSkgewotICAgICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChUb1RoaXMsIE9wSW5m
bygpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CisgICAgICAgICAgICAgICAgc2V0
VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBPcElu
Zm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIENoZWNrU3RydWN0dXJl
LApAQCAtNTgyMyw3ICs1ODI0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHRoaXNWYWx1ZSk7CiAg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CiAgICAgICAgICAgICBhZGRWYXJB
cmdDaGlsZCh2YWx1ZSk7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgUHV0
QnlWYWxXaXRoVGhpcywgT3BJbmZvKDApLCBPcEluZm8oMCkpOworICAgICAgICAgICAgYWRkVG9H
cmFwaChOb2RlOjpWYXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbyhieXRlY29kZS5tX2Vj
bWFNb2RlKSwgT3BJbmZvKDApKTsKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5
X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CkBAIC01ODk5LDcgKzU5MDAsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCiAgICAg
ICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lk
ZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaGFuZGxlUHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBj
dXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJh
c2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBkaXJlY3QsIGN1cnJl
bnRJbnN0cnVjdGlvbi0+c2l6ZSgpLCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3B1dF9ieV9pZCk7CiAgICAgICAgIH0KIApAQCAtNTkxMCw3ICs1OTEx
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRp
ZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwogCi0gICAgICAgICAgICBhZGRUb0dyYXBo
KFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBiYXNlLCB0aGlzVmFs
dWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZFdpdGhUaGlzLCBPcElu
Zm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSwg
dGhpc1ZhbHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWRf
d2l0aF90aGlzKTsKICAgICAgICAgfQogCkBAIC01OTQ0LDcgKzU5NDUsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgICAgICAg
ICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFw
W2J5dGVjb2RlLm1fcHJvcGVydHldOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBh
ZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSkpOwor
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9w
SW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBiYXNl
KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwogICAgICAgICB9CiAK
QEAgLTU5NTIsNyArNTk1Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcERlbEJ5VmFsPigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRl
Y29kZS5tX2Jhc2UpOwogICAgICAgICAgICAgTm9kZSoga2V5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJv
cGVydHkpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0
ZUJ5VmFsLCBiYXNlLCBrZXkpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRk
VG9HcmFwaChEZWxldGVCeVZhbCwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBiYXNlLCBr
ZXkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV92YWwpOwogICAgICAgICB9
CiAKQEAgLTY0NzUsNyArNjQ3Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7CiAgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFsPigpOwog
ICAgICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1fYXJndjsKLSAgICAg
ICAgICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBudWxscHRyLCBnZXQoYnl0
ZWNvZGUubV9jYWxsZWUpLCBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVk
aWN0aW9uKCkpOworICAgICAgICAgICAgYWRkQ2FsbChieXRlY29kZS5tX2RzdCwgQ2FsbEV2YWws
IE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgZ2V0KGJ5dGVjb2RlLm1fY2FsbGVlKSwgYnl0
ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApA
QCAtNjgyNCw3ICs2ODI1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgIGlmIChuZWVkc0R5bmFtaWNMb29rdXAocmVzb2x2ZVR5
cGUsIG9wX3B1dF90b19zY29wZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmll
ck51bWJlciAhPSBVSU5UX01BWCk7CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgb3BJbmZvMSA9
IG1ha2VEeW5hbWljVmFyT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIsIGdldFB1dEluZm8ub3BlcmFu
ZCgpKTsKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dER5bmFtaWNWYXIsIE9wSW5mbyhv
cEluZm8xKSwgT3BJbmZvKCksIGdldChieXRlY29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2RlLm1f
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dER5bmFtaWNWYXIsIE9wSW5m
byhvcEluZm8xKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUubV9z
Y29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfcHV0X3RvX3Njb3BlKTsKICAgICAgICAgICAgIH0KIApAQCAtNjg0Niw3ICs2ODQ3LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMQogICAgICAgICAgICAgICAg
ICAgICB8fCBzdGF0dXNbMF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlCiAgICAg
ICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5zdHJ1Y3R1cmUoKS5zaXplKCkgIT0gMSkgewot
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVy
TnVtYmVyKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVy
TnVtYmVyKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUubV9zY29w
ZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gd2Vha0pTQ29u
c3RhbnQoZ2xvYmFsT2JqZWN0KTsKQEAgLTc0OTIsOCArNzQ5Myw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAiIGZvciBpbmxpbmluZyBh
dCAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUVHlwZTo6REZHSklUKSwK
ICAgICAgICAgICAgICAgICAiICIsIGlubGluZUNhbGxGcmFtZSgpLT5kaXJlY3RDYWxsZXIpOwog
ICAgICAgICB9Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiLCBpc1N0cmljdE1vZGUg
PSAiLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSwgIlxuIik7
CisgICAgICAgIGRhdGFMb2dMbigpOwogICAgICAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lv
bigpLT5kdW1wQnl0ZWNvZGUoKTsKICAgICB9CiAgICAgCkBAIC03NTk4LDcgKzc1OTgsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgdW5z
aWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVk
QXNQdXRCeUlkKQotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVt
YmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0aW9uU2l6ZSk7Cisg
ICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBw
dXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgaW5zdHJ1Y3Rpb25TaXplLCBieXRlY29kZS5tX2VjbWFN
b2RlKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7CkBAIC03NjA5LDcg
Kzc2MDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBi
eXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogICAgICAgICBhZGRWYXJBcmdDaGls
ZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBw
cm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9v
bSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3Qg
PyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwg
T3BJbmZvKDApKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8g
UHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9w
SW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8v
IFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBj
bG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmlj
LgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggYjQzZjdjZjU0ZTEyMTc0NzE3NmRkY2U5NjViNmM4
MThmMjkxNjE4NS4uOGU2ZmNhNzc5MTc0ZDI4ZmI4NGQ2NzBmNTk2ZjAwZGQwYjg2NWZlNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKQEAgLTc0MCw3ICs3NDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAgICAgICAgICAgIFRvVGhpc1Jlc3VsdCBy
ZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3ZtLCBtX2dyYXBoLmlzU3RyaWN0
TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpKTsKKyAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNB
bklkZW50aXR5KG1fZ3JhcGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9zdGF0ZS5mb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBUb1RoaXNS
ZXN1bHQ6OklkZW50aXR5KSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lk
ZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNDhhMjBhNDUwZTMzZjdk
M2Y5ZGRlZTU1NmFmMjFjNDRmYjc4N2UyNS4uMzA0ZTkwNzkyOGM0NjM5ZDJhYTM5OWE3OWZlZWZj
MWFjMDMzMDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCkBAIC0yODMxLDcgKzI4MzEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaXh1cFRvVGhp
cyhOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBtX2dyYXBo
LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBib29sIGlz
U3RyaWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKIAogICAgICAgICBpZiAo
aXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZUJvb2xlYW4oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4
IDk0N2VmYWFiYTllNjQ5NmIzYjA1YzZmNTUxNDJhYjdjNzdiNWI1YTIuLjFkYjU5YTViMzU0NmEw
NmFmMDBkMjJjYzVhZmUyZDdjOGQxYzUyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIGdsb2JhbFRo
aXNPYmplY3RGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIG9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsKLSAgICAgICAg
cmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUobV92bSktPnRvVGhp
cyhvYmplY3QsIG9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgICAgICByZXR1cm4ganNDYXN0
PEpTT2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlzKG9iamVjdCwgb2Jq
ZWN0LCBFQ01BTW9kZTo6bm90U3RyaWN0KCkpKTsKICAgICB9CiAgICAgCiAgICAgU2NyaXB0RXhl
Y3V0YWJsZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkK
QEAgLTQ2OSwxOCArNDY5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2Rl
QmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBtX3Byb2ZpbGVk
QmxvY2spOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3RyaWN0TW9kZUZvcihDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwot
ICAgICAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKS0+aXNTdHJpY3RNb2Rl
KCk7Ci0gICAgfQotICAgIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlRm9yKENvZGVPcmlnaW4gY29k
ZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdE1vZGVGb3IoY29kZU9yaWdp
bikgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCBt
YXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZChjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+aXNTdGlsbFZh
bGlkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEzNDU1YjVjMjlmMDcw
ZmVmMmY5OTE5NTJiY2ZmMDA3ZmVhOTE3MjYuLmNkMDM2NTE5ZGI3OThjNWQ4MjZhZWMyYzgyYjMy
ZjhiNTNjYTNiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0yMTg5LDYg
KzIxODksNTMgQEAgcHVibGljOgogICAgICAgICBtX29wSW5mbyA9IGFycmF5TW9kZS5hc1dvcmQo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCisgICAgYm9vbCBoYXNFQ01BTW9kZSgp
CisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBDYWxsRXZhbDoK
KyAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgorICAg
ICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAg
Y2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAg
ICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CisgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAg
ICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQorCisgICAgRUNNQU1vZGUgZWNtYU1vZGUoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGhhc0VDTUFNb2RlKCkpOworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAg
ICAgICAgY2FzZSBDYWxsRXZhbDoKKyAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKKyAgICAgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAgICAgICAg
IHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4oKSk7CisgICAg
ICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICBjYXNl
IFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQ
dXRCeVZhbEFsaWFzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgorICAgICAgICBjYXNl
IFB1dER5bmFtaWNWYXI6CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1f
b3BJbmZvMi5hczx1aW50OF90PigpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6
OnN0cmljdCgpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGJvb2wgaGFzQXJpdGhNb2Rl
KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5m
by5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCA3N2VmY2Zi
MjQ4MDAyYTRiZjVlYTYwYTZlNjY1MjBmZTA1MTQ0YmNjLi5lMjhkNzU1YTQyN2QxYzJmMTk5NGY2
MjM5ZDZhMzQwMjA3OGYyNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgK
QEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgICAgIDogbV92YWx1ZShzdGF0
aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4o
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlKSkpIHsgfQogICAgIGV4cGxpY2l0IE9w
SW5mbyhPcGVyYW5kIG9wKSA6IG1fdmFsdWUob3AuYXNCaXRzKCkpIHsgfQorICAgIGV4cGxpY2l0
IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFNb2RlLnZhbHVlKCkpIHsg
fQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJm
ZGI5YzlkNzY3ZTY4NzJmZGNhZDY4NzNkZWY4ZTk0ODFlZjgxZDkuLmRhZjI5MmY2NWM1NTcwMjc0
NjkyMDllYmI0N2U1ZGQ1OTdjNjNmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6Om5vdFN0cmljdCgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTMwNiw3ICszMDYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwogfQogCiBKU0FycmF5KiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkKQEAgLTM0MDcsNyArMzQwNyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2Fs
Q2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxD
bG9iYmVyaXplLmgKaW5kZXggMzYxODFhMjgyMTMzOWU4OGI2NjNjNjU4NzFjMGRhM2NjNDRkZThh
Mi4uYmFhMjFjMGJiZmEyYWNmYmE1MGQ1YThmOTkzMmQzMTRkYjU0NDlmMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgK
QEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1
bHQ6IHsKICAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJtb3N0IGFyZ3VtZW50cywgZXhj
ZXB0IHRoaXMsIGFyZSByZWFkIGluIHNsb3BweSBtb2RlLgotICAgICAgICAgICAgaWYgKCFtX2dy
YXBoLm1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgaWYgKCFtX2dy
YXBoLm1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkg
ewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CiAgICAgICAgICAgICB9CkBA
IC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZWFk
IGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50cyBhbmQgY2FsbCBmcmFtZSBoZWFkZXJzIHRoYXQg
d2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4KICAgICAgICAgICAgIGZvciAoSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUoKTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJh
bWUtPmdldENhbGxlcklubGluZUZyYW1lU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewotICAgICAgICAg
ICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAg
ICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVh
ZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKS5vZmZzZXQoKSkpOwogICAgICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4ODU4YjM4YzE2YTY1YThjOGVi
ZGI5ZDQzNzAxMjgzNDcyYTUwYS4uYTA3YmJmNDY2MTczYTBjM2IyNTljZjU2NGM3OGEyNmMxOGNi
YzNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUwNiw3ICs1MDYsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgICAgICAvLyBU
b1RoaXMgaW4gbWV0aG9kcyBmb3IgcHJpbWl0aXZlIHR5cGVzIHNob3VsZCBzcGVjdWxhdGUgcHJp
bWl0aXZlIHR5cGVzIGluIHN0cmljdCBtb2RlLgotICAgICAgICAgICAgYm9vbCBpc1N0cmljdE1v
ZGUgPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCk7
CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0Jvb2xlYW4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2ODM3YjAw
ZmU2MzZlOTNmNmU5ZTIxMmE3NzZmM2E2YTM1ZTRhYjBmLi5iMDk5MTcwY2I2MzA2NjM4MmQzNDlm
NzgwN2QxMDE0NDc2OTFiNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjExOSw3ICsyMTE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUsIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kJiBiYXMKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCi0gICAgICAgICAgICAg
ICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAg
ICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAg
PyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFs
RGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJl
eW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICA6IChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlC
b3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0zMTUw
LDI0ICszMTUwLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywK
LSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3ROb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERp
cmVjdE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZUdQUikpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNT
dHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFN0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LAorICAgICAgICAgICAgICAgIG5vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWVHUFIpKTsKICAgICAgICAg
fQogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAg
ICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
Q2VsbE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0
KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdENlbGxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eVRhZ0dQUiwgcHJv
cGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVHUFIpKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2pp
dC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdCwKKyAgICAgICAg
ICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbENl
bGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QsCiAgICAgICAgICAgICAg
ICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBKU1ZhbHVlUmVn
cyhwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFs
dWVHUFIpKSk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzI5OSw3ICszMjk5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSogbm9k
ZSwgRWRnZSYgY2hpbGQxLAogICAgIHNwZWN1bGF0ZVN0cmluZyhjaGlsZDIsIGFyZzJHUFIpOwog
CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0
TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3Ry
aW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3RyaWN0LCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1JlZ3MpOworICAgIGNh
bGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3RyaWN0
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1JlZ3Mp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAg
LTMzMTgsNyArMzMxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckNlbGxXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwKICAgICBzcGVjdWxhdGVT
eW1ib2woY2hpbGQyLCBhcmcyR1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2Vs
bFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFy
ZzJHUFIsIGFyZzNSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6IG9wZXJhdGlvblB1
dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
ZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMTMyOSw3ICsxMTMyOSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXRE
eW5hbWljVmFyTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIs
IHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2Rl
LT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0
cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFt
aWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgdmFs
dWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdl
dFB1dEluZm8oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KQEAgLTEyMjE1LDcgKzEyMjE1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgY2FjaGVkUHV0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpLCBOb3REaXJlY3QsIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCks
IERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBO
b3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRT
cGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjMwLDcgKzEyMjMwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9kZSkKICAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKSwgTm90RGlyZWN0KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5pZGVudGlmaWVy
TnVtYmVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KQEAgLTEyMjQ1LDcgKzEyMjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3Mg
PSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BS
LCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgRGlyZWN0
KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFs
dWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIERpcmVjdCwgbm9k
ZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjYwLDcgKzEy
MjYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyhOb2Rl
KiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7
CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJp
Y3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRo
aXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCisgICAgY2FsbE9wZXJhdGlvbihu
b2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCiAgICAgICAgIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1JlZ3MsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CkBAIC0xMjYyOSw3ICsxMjYyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1Ro
aXMoTm9kZSogbm9kZSkKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKHRoaXNWYWx1ZVJlZ3MsIHRl
bXBSZWdzKTsKIAogICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgIGlmIChtX2pp
dC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICBpZiAobm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhp
c1N0cmljdDsKICAgICBlbHNlCiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzOwpA
QCAtMTM4MjgsNyArMTM4MjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHJvZmls
ZVR5cGUoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
R1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BS
LCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkK
IHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CkBAIC0xMzg0MCw3ICsxMzg0MCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1
ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIG1faml0LmVjbWFNb2RlRm9yKGNvZGVPcmlnaW4p
LCBwdXRLaW5kKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQpOwogCiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjFmYjBlOGM5N2E3NTllYmQyOWY0N2Ix
M2FhMWM0NzhiMjAxM2VjMC4uNmU2NTdjNjVhOThlNzJiY2FhZjkyZjUyOWE0NDNhZjc5MTc0ZDUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtNzE3LDcgKzcxNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVDaGVja05ldXRlcmVk
KE5vZGUqKTsKIAogICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vz
c1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQ
UiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQg
PSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7
CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJn
ZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGls
bCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNzU2YTZj
M2Q5ZmMxN2IwNGM5ZDFmM2RiMDAxZDc2OGU3OGI3MDFiOC4uNThiYTA4NTVkNWIxMDM2ZDRmNDc1
MjJlOGE0NGY0NTdjMTUyOTY3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC03NjAsNyArNzYwLDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRC
eXRlcyA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIHNpemVvZihDYWxsRnJhbWUqKSAqIDI7
CiAgICAgICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tB
bGlnbm1lbnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgbV9qaXQuc3ViUHRyKFRy
dXN0ZWRJbW0zMihyZXF1aXJlZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2Fs
bEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDEpOwogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CiAgICAgICAgIG1f
aml0LmFwcGVuZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwpAQCAtMjcyNSw5ICsyNzI2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIGFyZzNHUFIgPSBhcmczLmdwcigp
OwogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIGlmIChub2RlLT5v
cCgpID09IFB1dEJ5VmFsRGlyZWN0KQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9q
aXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9u
U3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJn
M0dQUik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbiht
X2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1
dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKKyAgICAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1
dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAgICAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vUmVzdWx0
KG5vZGUpOwpAQCAtMjgwOSw3ICsyODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc091dE9mQm91bmRzKCkp
IHsKICAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICBt
X2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAg
ICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAg
ICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERp
cmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJh
eUJvdW5kc1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0g
UHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRz
Tm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCks
CiAgICAgICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0yODkzLDcgKzI4OTQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBp
ZiAoIXNsb3dDYXNlcy5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAg
ICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9u
ZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcp
KTsKQEAgLTM4OTcsNyArMzg5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmlj
dE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRo
aXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJh
dGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0
eUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAg
ICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNTQ2Niw3ICs1NDY3LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIAogICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBwcm9wZXJ0
eSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogCiAgICAgICAgIG1f
aml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTU0ODUsNyArNTQ4Niw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBudWxscHRyLCBiYXNlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywg
aWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTU1MjQsNyAr
NTUyNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBu
b2RlKQogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKIAogICAgICAgICBtX2ppdC5hZGREZWxCeVZhbChnZW4sIHNsb3dQYXRoLmdl
dCgpKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpA
QCAtNTU0NCw3ICs1NTQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
VmFsKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJl
Z3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggNjc5NGM1MDE5MmY1NzMwY2MwMTM0YzJmMmMwYTdhNjQ3OWY4YmY3My4uYThhZTg3
ZjY3YTYyYTMyMzg0Yzk1ZDE2Y2RiYTg3MjNiMTc0MDczMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjEyMCw3ICsyMTIwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOwogICAgICAgICBKX0pJVE9wZXJhdGlvbl9HSiBmdW5jdGlvbjsKLSAgICAgICAgaWYg
KG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAg
ICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgZnVuY3Rp
b24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZ1
bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzOwpAQCAtMzY4Miw3ICszNjgyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CiAK
LSAgICAgICAgdm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlv
blB1dEJ5SWRXaXRoVGhpcywKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlJZFdpdGhUaGlzLAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
YmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlm
aWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXSkpOwogICAgIH0KIApAQCAtMzY5NCw3
ICszNjk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1
ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOwogICAgICAgICBMVmFsdWUgdmFsdWUg
PSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CiAKLSAgICAgICAg
dm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bFdpdGhUaGlzLAorICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxXaXRoVGhpcywKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2Us
IHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKICAgICB9CiAgICAgCkBAIC0zOTY3LDcgKzM5
NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwot
ICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5lY21hTW9kZSgpOworICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAgIAogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDgyNSwxMiArNDgyNSwxMiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIFZfSklUT3BlcmF0aW9uX0dDQ0ogb3BlcmF0aW9uID0gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQyLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2Up
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpbmdTdHJpY3Q7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0Owog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENl
bGxTdHJpbmdTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5n
Tm9uU3RyaWN0OwpAQCAtNDg0MSwxMiArNDg0MSwxMiBAQCBwcml2YXRlOgogCiAgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkMi51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU3RyaWN0OwogICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5vblN0cmljdDsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0
TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0Owog
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdDsKQEAgLTQ4
NTgsMTIgKzQ4NTgsMTIgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgVl9KSVRPcGVyYXRpb25f
R0pKSiBvcGVyYXRpb247CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFs
RGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21h
TW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0OwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3Q7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3Ry
aWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgaWYg
KG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICBvcGVy
YXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbFN0cmljdDsKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0
OwpAQCAtNDkwOSw3ICs0OTA5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3Vu
ZHMoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1
dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAg
ICAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgICAg
IGJhc2UsIHN0b3JhZ2UsIGluZGV4LCB2YWx1ZSwgY29udGludWF0aW9uKTsKQEAgLTQ5MzUsNyAr
NDkzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKAotICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
YykKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAg
ICAgICAgICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/
IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBv
cGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0
aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAg
ICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNvbnRpbnVhdGlvbik7CkBA
IC00OTc1LDcgKzQ5NzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGlzT3V0T2ZC
b3VuZHMgPSBtX291dC5hYm92ZU9yRXF1YWwoCiAgICAgICAgICAgICAgICAgaW5kZXgsIG1fb3V0
LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9yYWdlX3ZlY3Rvckxl
bmd0aCkpOwogCi0gICAgICAgICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSBtX2dyYXBoLmlz
U3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgIGF1dG8g
c2xvd1BhdGhGdW5jdGlvbiA9IG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAg
ICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5
b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5k
c05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3Qp
OwogICAgICAgICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKSB7CkBAIC01MjQw
LDcgKzUyNDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpA
QCAtNTI3MCw3ICs1MjcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtt
X25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0
Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBtX291dC5jb25z
dEludFB0cih1aWQpKSkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQo
dm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIodWlk
KSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC01MzExLDcgKzUzMTEsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1
ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAg
c2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVC
eVZhbEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1fb3V0LmludFB0clplcm8s
IGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVy
bzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBzdWJzY3JpcHQsIG1fb3V0
LmNvbnN0SW50MzIobV9ub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTk4MDYsNyArOTgwNiw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSArIHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAgICAgICAgICAgICAgcmVxdWlyZWRC
eXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJl
cXVpcmVkQnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwotICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25DYWxsRXZhbCk+KGdsb2JhbE9iamVjdCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQUklu
Zm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
Q2FsbEV2YWwpKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKICAgICAg
ICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjAs
IE9wZXJhdGlvblB0clRhZyk7CkBAIC0xMzM1Niw3ICsxMzM1Nyw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJl
cigpXTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoVm9pZCwgbV9ncmFwaC5pc1N0cmljdE1v
ZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0
cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsCisgICAgICAgIHNldEpTVmFs
dWUodm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9u
UHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsCiAg
ICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludFB0cih1
aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2V0UHV0SW5mbygpKSkpOwogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggMDgwZmFlZGU4MWEyMjY4MjIxZDFjNTA4OTQxZDllZjI3
MTI3OWEyMC4uYWYwOGViMGI2MWY4NDFiZDczNjNlODdlZjRjMmJiYzExYWI3ODFhNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9z
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RN
b2RlKSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6Om5v
dFN0cmljdCgpKSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBKU09iamVjdDo6Y2FsY3VsYXRl
ZENsYXNzTmFtZShvYmplY3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggNTE4OGMwMjM5ZGY0NmUwMDJkYzllMmEx
YjM3MjFiNWQwYjBjMGY4ZS4uYzRkOWM3MjdlMDcxOGVlYWVmMDA2ODI4NDRjNTQ3M2RiMjJiYmZj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTVmFsdWUg
ZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K0pTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0
OCw3ICsxNDgsNyBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKICAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZSogZXZhbCA9
IGNhbGxlckNvZGVCbG9jay0+ZGlyZWN0RXZhbENvZGVDYWNoZSgpLnRyeUdldChwcm9ncmFtU291
cmNlLCBjYWxsZXJDYWxsU2l0ZUluZGV4KTsKICAgICBpZiAoIWV2YWwpIHsKLSAgICAgICAgaWYg
KCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIGlmICghZWNtYU1v
ZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgaWYgKHByb2dyYW1Tb3VyY2UuaXM4Qml0KCkp
IHsKICAgICAgICAgICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVwYXJzZXIoZ2xvYmFs
T2JqZWN0LCBwcm9ncmFtU291cmNlLmNoYXJhY3RlcnM4KCksIHByb2dyYW1Tb3VyY2UubGVuZ3Ro
KCksIE5vblN0cmljdEpTT04sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgICAgICAgICAgICAgaWYg
KEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKQpAQCAt
MTY1LDcgKzE2NSw3IEBAIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgCiAgICAgICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJl
VmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVzVW5kZXJURFopOwot
ICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92
aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCks
IGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNhbGxlckNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29u
dGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgIGV2YWwgPSBEaXJlY3RFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9ncmFtU291cmNl
LCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdpbigpKSwg
ZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+bmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250
ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAgICAgICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgICAgIGlmICghZXZh
bCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTA1Nyw3ICsxMDU3LDcg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0
aW5nQ2FuZGlkYXRlcyA9IGV2YWwtPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7CiAK
ICAgICBKU1Njb3BlKiB2YXJpYWJsZU9iamVjdDsKLSAgICBpZiAoKG51bVZhcmlhYmxlcyB8fCBu
dW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpICYmIGV2YWwtPmlzU3RyaWN0TW9kZSgpKSB7CisgICAg
aWYgKChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSAmJiBldmFsLT5p
c0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAgICAgIHNjb3BlID0gU3RyaWN0RXZhbEFjdGl2YXRp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVy
ZSgpLCBzY29wZSk7CiAgICAgICAgIHZhcmlhYmxlT2JqZWN0ID0gc2NvcGU7CiAgICAgfSBlbHNl
IHsKQEAgLTExMDQsNyArMTEwNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZh
bEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAgVW5s
aW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNvZGVCbG9jay0+dW5saW5r
ZWRFdmFsQ29kZUJsb2NrKCk7CiAKICAgICAvLyBXZSBjYW4ndCBkZWNsYXJlIGEgInZhciIvImZ1
bmN0aW9uIiB0aGF0IG92ZXJ3cml0ZXMgYSBnbG9iYWwgImxldCIvImNvbnN0Ii8iY2xhc3MiIGlu
IGEgc2xvcHB5LW1vZGUgZXZhbC4KLSAgICBpZiAodmFyaWFibGVPYmplY3QtPmlzR2xvYmFsT2Jq
ZWN0KCkgJiYgIWV2YWwtPmlzU3RyaWN0TW9kZSgpICYmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9w
TGV2ZWxGdW5jdGlvbkRlY2xzKSkgeworICAgIGlmICh2YXJpYWJsZU9iamVjdC0+aXNHbG9iYWxP
YmplY3QoKSAmJiAhZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSAmJiAobnVtVmFyaWFibGVzIHx8
IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KHZhcmlhYmxlT2JqZWN0KS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkgewogICAgICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSB1bmxpbmtlZENvZGVCbG9jay0+dmFyaWFibGUo
aSk7CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbAogCiAgICAg
aWYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMgfHwgbnVtRnVuY3Rp
b25Ib2lzdGluZ0NhbmRpZGF0ZXMpIHsKICAgICAgICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXIgb3B0aW1pemVyKHZtLCB2YXJpYWJsZU9iamVjdCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZU9i
amVjdC0+bmV4dCgpICYmICFldmFsLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaWYgKHZhcmlh
YmxlT2JqZWN0LT5uZXh0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAg
ICAgICB2YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+dmFySW5qZWN0aW9uV2F0Y2hw
b2ludCgpLT5maXJlQWxsKHZtLCAiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0aW9uIHdh
dGNocG9pbnQiKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFi
bGVzOyArK2kpIHsKQEAgLTExNDQsNyArMTE0NCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChldmFsLT5p
c1N0cmljdE1vZGUoKSkgeworICAgICAgICBpZiAoZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkg
ewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRvcExldmVsRnVuY3Rp
b25EZWNsczsgKytpKSB7CiAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICAgICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHZhcmlhYmxlT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggOTBhOWRiNWM1YTlmYjAyNTZjNTdk
MWQ2Y2U0OTlhN2ZlNzMxZTA4NS4uNjQ1MzkxMjdiOGM3NGM4MjAyOWIyYmI2MTgwZTY5Njk3MWE2
NGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZiAvLyBFTkFC
TEUoQ09NUFVURURfR09UT19PUENPREVTKQogICAgIH07CiAKLSAgICBKU1ZhbHVlIGV2YWwoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7CiAKICAgICBpbmxpbmUgQ2FsbEZyYW1lKiBjYWxs
ZWVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIG51bVVzZWRT
dGFja1Nsb3RzLCB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA3MGY1ZGQ0
ODFmMTZkZjE2YWJkZDMyM2JiNDY0YjU3MDI2NGRiM2JjLi5hYmEwZWViNTk1YmQwMDU5NzMzNWNm
ZDMxMDg1YTRhNzY2MWU2NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKQEAgLTE0NzIsMTkgKzE0NzIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBjb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwogICAgIH0KICAgICAK
LSAgICBib29sIGlzU3RyaWN0TW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewot
ICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSgpOwotICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgICAgIHJldHVybiBj
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgICAgIHJldHVybiBpbmxpbmVDYWxsRnJh
bWUtPmlzU3RyaWN0TW9kZSgpOwotICAgIH0KLSAgICAKLSAgICBFQ01BTW9kZSBlY21hTW9kZUZv
cihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RN
b2RlRm9yKGNvZGVPcmlnaW4pID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7Ci0gICAgfQot
ICAgIAogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4pOwogICAgIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3Io
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCmluZGV4IGIyYmZjZTYzMzdkOWJlMDJkNjFmMzg5NWNlNWVjYTNhMGQ3ODMyMDYuLmUx
ZTU2NWRjNTI0OWY2YWNmZGFhMjRiZmZiNDQ3MWZmY2IyMGI4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIGJvb2wgSklUOjpjb21waWxl
Q2FsbEV2YWwoY29uc3QgT3BDYWxsRXZhbCYgYnl0ZWNvZGUpCiAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3IobV9jb2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVy
KSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tT
dGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2Fs
bEV2YWwsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcmVnVDEpOworICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIHJlZ1QyKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCks
IHJlZ1QxLCByZWdUMik7CiAKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1QwKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKaW5kZXggZjQxMTAyMTc2NGQ5ODk2NjIyM2ZlMTgyMGEyZjM4MzlhYzNlN2I5
Zi4uZDdhMWMxZjg2ZTcwNGRiYmY2YTM0MWRlMjAwNmE3NzBjMDc2YzZiNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
QEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKSSBKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAobV9lY21hTW9k
ZSA9PSBTdHJpY3RNb2RlKSB7CisgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAg
ICAgICBpZiAobV9wdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25Q
dXRCeUlkU3RyaWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggMjZlNzAwZmJiN2FkMTgzYmUxYWNiYTcz
ZjM3ZjZmYjQyZmVmY2QwZS4uMzkyNmM1NWMyNzlmYjg4MGFhMjIyYzdiZTdhYjkwNjgyY2QzZTZi
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaApAQCAtMTI3LDcgKzEyNyw5IEBAIHB1YmxpYzoKIAogY2xhc3MgSklUUHV0QnlJ
ZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yKCkgeyB9CisgICAgSklUUHV0QnlJZEdlbmVyYXRvcigpCisgICAgICAg
IDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCisgICAgeyB9CiAKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMjNmZjVjODFjMWMwMzIy
MmY5MTJhNDk5MzFmMjgzNmRhZGNmYWNiNy4uN2RjYmU4ZmEzYWU1NjhjYmFhNjVjYTQxZTVlMWJh
Mjc1NjU1MzNmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTE2
Niw3ICsxNjYsNyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQogCiBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewotICAgIGlmICghbV9jb2RlQmxv
Y2stPmlzS25vd25Ob3RJbW1lZGlhdGUocmVnKSkKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tu
b3duQ2VsbChyZWcpKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiB9CiAKQEAgLTQ5Niw3
ICs0OTYsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9yZShWaXJ0dWFsUmVnaXN0ZXIgcmVn
LCBjb25zdCBKU1ZhbHVlIGNvbnN0YW50LCBSZWdpc3RlcgogCiBpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewotICAgIGlm
ICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9j
b2RlQmxvY2stPmlzS25vd25DZWxsKHJlZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50
KCkpCiAgICAgICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC01
MDYsNyArNTA2LDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoVmlydHVhbFJlZ2lzdGVyIHJlZykKIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZywgUmVnaXN0ZXJJRCB0YWcpCiB7Ci0g
ICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShyZWcpKSB7CisgICAgaWYg
KCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkgewogICAgICAgICBpZiAocmVnLmlzQ29u
c3RhbnQoKSkKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGVsc2UK
QEAgLTYwMCw3ICs2MDAsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCByZWcpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklEIHJlZywgVmlydHVhbFJlZ2lz
dGVyIHZSZWcpCiB7Ci0gICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZSh2
UmVnKSkKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbCh2UmVnKSkKICAgICAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGNmYjEzNDBhZTdhZDYzOWJlMThhNmI3
OGMzOGJiOGRlYTcyNGQwNjAuLjkxMjc5Y2E4Nzg4YWFhYTQwMWI4ZjNlOWI2Mjg2MDA3Mjc1ZjQ1
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAt
Njc4LDcgKzY3OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgICAgIHJlcGF0Y2hQ
dXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlk
ZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHB1dEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQorc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZh
bHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTY5NCwxMiArNjk0LDEyIEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVl
CiAKICAgICAgICAgICAgIGJ5VmFsSW5mby0+YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygp
OwogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgb2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgZWNtYU1v
ZGUuaXNTdHJpY3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGdsb2JhbE9i
amVjdCwgaSwgdmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBiYXNl
VmFsdWUucHV0QnlJbmRleChnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9kZS5pc1N0cmlj
dCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzSW50MzIo
KSkgewogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CkBAIC03MTUsMTUg
KzcxNSwxNCBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAgICBieVZhbEluZm8tPnRv
b2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAg
IGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OwogfQogCi1zdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFs
dWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3N0YXRp
YyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJ
bmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwogCiAg
ICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0
ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBw
b3NpdGl2ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBp
bmRpY2VzLgpAQCAtNzQ1LDcgKzc0NCw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAg
ICAgIH0KIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2VPYmplY3QtPnB1
dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUg
PyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJv
dyk7CisgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5k
ZXgsIHZhbHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRU
aHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC03NTUsNyArNzU0LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAg
ICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgo
c3Vic2NyaXB0QXNVSW50MzIpKSB7CiAgICAgICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0
aCA9IHRydWU7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2
YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERp
cmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOworICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGVjbWFN
b2RlLmlzU3RyaWN0KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5k
ZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CkBAIC03NjcsNyArNzY2LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICBpZiAoT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpIHsKICAgICAgICAg
YnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhy
b3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAgICAgYmFzZU9iamVjdC0+
cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgZWNt
YU1vZGUuaXNTdHJpY3QoKSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJ
bmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzc1LDcg
Kzc3NCw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIGJ5VmFsSW5mby0+dG9v
a1Nsb3dQYXRoID0gdHJ1ZTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGJhc2VPYmplY3QsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgIENvbW1vblNsb3dQ
YXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHBy
b3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiB9CiAKQEAgLTg2MSw3ICs4NjAsNyBAQCBzdGF0aWMgT3B0
aW1pemF0aW9uUmVzdWx0IHRyeVB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbAogICAgIHJldHVybiBvcHRpbWl6YXRpb25SZXN1bHQ7CiB9CiAKLXZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJ
bmZvKiBieVZhbEluZm8pCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtODc5LDcgKzg3OCw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIo
T1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKICAgICB9Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBz
dWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CiAKIHN0YXRpYyBPcHRp
bWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTT2JqZWN0KiBvYmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBCeVZhbEluZm8qIGJ5VmFsSW5m
bywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAtOTUxLDcgKzk1MCw3IEBAIHN0
YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIG9wdGltaXphdGlvblJlc3VsdDsKIH0K
IAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJz
Y3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8s
IEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC05
NzIsMTAgKzk3MSwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBjdGlQYXRj
aENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KIAotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2Ny
aXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC05ODUsMTEgKzk4NCwxMSBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRT
dWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKIAotICAgIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pOworICAgIHB1dEJ5VmFs
KGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVj
bWFNb2RlKTsKIH0KIAogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC05OTksMTAgKzk5OCwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFJF
TEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKLSAgICBkaXJlY3RQdXRCeVZhbChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIGFzT2JqZWN0KGJhc2VWYWx1ZSks
IHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbyk7CisgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFs
T2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8s
IGVjbWFNb2RlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
YWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBFQ01BTW9k
ZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTAxMiw3ICsxMDExLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUZy
YW1lLT5ndWFyYW50ZWVkSlNWYWx1ZUNhbGxlZSgpLCBnbG9iYWxGdW5jRXZhbCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0
ID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgZWNtYU1vZGUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIxNDAsNyArMjEzOSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0ds
b2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3Qt
Pmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9iYWxPYmplY3QsIGluZGV4LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9CiAgICAgCi1zdGF0aWMgYm9v
bCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNW
YWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxNTAsMTIg
KzIxNDksMTIgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHYKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
dWlkKSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAg
IGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2Rl
KCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3Bl
cnR5RXJyb3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTIxNjYsNyArMjE2NSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTCiAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7CiAKLSAgICBib29sIHJlc3VsdCA9
IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUs
IHVpZCk7CisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgdm0sIHNs
b3QsIGJhc2VWYWx1ZSwgdWlkLCBlY21hTW9kZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkp
IHsKQEAgLTIxNzYsMjMgKzIxNzUsMjMgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFMKICAgICAg
ICAgaWYgKCFwYXJzZUluZGV4KGlkZW50KSkgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmdCeUlkKHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVP
ck51bGwoKSkpCi0gICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKGlkZW50KSwgKnN0dWJJ
bmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KGlkZW50KSwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbCwgZWNtYU1vZGUpOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEVD
TUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgdWlkKTsKKyAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQsIGVjbWFNb2RlKTsKIH0KIAotc3RhdGlj
IGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJh
c2UsIEpTVmFsdWUga2V5KQorc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUg
YmFzZSwgSlNWYWx1ZSBrZXksIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjIxMSwxMiArMjIxMCwxMiBAQCBzdGF0
aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9k
VGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
LCBzbG90KTsKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwot
ICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBlY21hTW9kZS5pc1N0cmljdCgpKQogICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVBy
b3BlcnR5RXJyb3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQorc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFQ01BTW9kZSBlY21h
TW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjIyOCw3ICsyMjI3LDcg
QEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owog
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgp
OwogCi0gICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0KTsKKyAgICBib29sIHJlc3VsdCA9IGRl
bGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCBl
Y21hTW9kZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CkBAIC0yMjM5LDIwICsy
MjM4LDIwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21D
ZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0J5VmFsKHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmll
ciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgICAgICAgICBy
ZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwg
b2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlW
YWwsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQorc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVDTUFNb2RlIGVjbWFNb2Rl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OwotICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkU3Vic2NyaXB0KSk7CisgICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9i
amVjdCwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkU3Vic2NyaXB0KSwgZWNtYU1vZGUpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdFZhbHVlKQpA
QCAtMjUxOSw3ICsyNTE4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2Nv
cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5zdHIKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRp
YWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChzY29wZSwgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpLCBQdXRQ
cm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8u
aW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQo
c2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDEx
MmNhYzMxZDY4NDAuLjM4NmIxYTI5NDllMjZkYzIwMWM2MDhmMTM3MjM2NGNiMzY5Y2FhOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC02NCw2ICs2NCw3
IEBAIGNsYXNzIFZNOwogY2xhc3MgV2F0Y2hwb2ludFNldDsKIAogc3RydWN0IEJ5VmFsSW5mbzsK
K3N0cnVjdCBFQ01BTW9kZTsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CiAKQEAgLTE4OCwxMSArMTg5LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1CiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmlj
dEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5B
TDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0lu
Zm8qKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmlydHVhbENhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
TGlua0luZm8qKSBXVEZfSU5URVJOQUw7CkBAIC0yNTEsMTAgKzI1MiwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1
YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lO
VEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsK
K3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRhcmdldCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0
LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGws
IEVuY29kZWRKU1ZhbHVlIG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5U
RVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDJiOGZkYWVmYzI1NDBhZmEwMWMy
ZWQ0Njc5MjYzMzI4OWE5N2Y0ZjIuLmFkMzU1MTg2NWFjZTliOGYxODk4ZDQzOWVkMmVhMzQwNTJl
ZDczYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQ
dXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgT3AgYnl0ZWMKIAogICAg
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUo
KSwgcHV0S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZWdUMiwgYnl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdp
dGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNl
IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVk
dWNlIGNvZGUgc2l6ZS4KQEAgLTMxMSwxMSArMzExLDEzIEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IEVDTUFNb2RlOjpzdHJpY3QoKTsKIAogICAgIGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2Rl
KSB7CiAgICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0g
Ynl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwor
ICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsKIAogICAgIGlm
IChpc0RpcmVjdCkKQEAgLTMzMSw3ICszMzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8Uwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMik7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCBy
ZWdUMSwgcmVnVDIsIGJ5VmFsSW5mbyk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihp
c0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IHJlZ1QwLCByZWdUMSwgcmVnVDIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZh
bHVlKCkpKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9u
SW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9u
SW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CkBAIC00
MjUsNyArNDI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDApOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9w
dGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHVpZCwgVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVn
cyhyZWdUMCkpOwpAQCAtNDc1LDcgKzQ3Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgcmVnVDAsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgp
KSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIAog
ICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC02NjQsNyArNjY2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
Ci0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwg
bV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUubV9lY21hTW9kZSwKICAgICAgICAgZGly
ZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAppbmRleCA1MTc0ZmNmODdjMjIyN2MwN2IxNDk2YmE0ODM3YjYyOWVh
Njc1YjYyLi5mNjdjMWZiOTU3NTVhODczYWUzMjEzMzM5ZjhhZWM4YjMxNmRhNmI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGVtaXRM
b2FkKGJhc2UsIHJlZ1QyLCByZWdUMSk7CiAgICAgZW1pdExvYWQocHJvcGVydHksIHJlZ1QzLCBy
ZWdUMCk7CiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1Q1LCByZWdUNCk7Ci0gICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1p
emUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIEpTVmFsdWVSZWdzKHJlZ1QyLCByZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCksIGJ5VmFsSW5mbyk7CisgICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUg
OiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCks
IEpTVmFsdWVSZWdzKHJlZ1QyLCByZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCksIGJ5VmFsSW5mbywgYnl0ZWNvZGUubV9pc1N0cmljdE1v
ZGUpOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
W21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGUxNjRiYzE1NDg5YzgxMmU3ZmE4NmExMjNk
MjI1MGYzZGI5ODdhOTMuLjNiYjYwZjBiNzU3ZTc3MzA4ZjliZGIzNGE5OWI2YjQ0NTJlMzIwZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNzM3LDcgKzczNyw3IEBA
IHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2Vu
ZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKLXN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUg
YmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kKQorc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxC
eUtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKQEAgLTc3MCw3ICs3NzAs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVj
dHVyZS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdP
ZmZzZXQpKTsKICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUo
dm0sIGNvZGVCbG9jaywgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3
U3RydWN0dXJlKTsKLSAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkgeworICAgICAgICB9IGVsc2UgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAg
ICAgICBpZiAoc2xvdC5pc05vbmNvbmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgICAgIG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRl
Tm9uQ29uZmlndXJhYmxlLCBwcm9wZXJ0eU5hbWUsIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVy
ZSwgeyB9LCBudWxscHRyKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTc5MSwxMiArNzkxLDEyIEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBO
b3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7CiB9CiAKLXZvaWQgcmVwYXRj
aERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit2b2lkIHJlcGF0Y2hEZWxl
dGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9w
ZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKSB7CisgICAgaWYgKHRy
eUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwg
b2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0g
R2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdp
dGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSks
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAg
aWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCiAgICAgICAgICAgICBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3Bl
cmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApp
bmRleCBjMDAwYTdkYzUwOWQ5OGZkYTBmZWJhNWMwNTNhZGViNDc4ZjhhNjJhLi43YjdkN2E2OWM2
N2JhOWRlODI5ZjExZWU2Yzg5NWJiM2ZlNjVhNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guaApAQCAtNDksNyArNDksNyBAQCBlbnVtIGNsYXNzIERlbEJ5S2luZCB7CiB2b2lkIHJl
cGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBi
YXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoR2V0
QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7
CiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1
ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYs
IFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Ci12b2lkIHJlcGF0Y2hEZWxldGVCeShKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0
cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlL
aW5kKTsKK3ZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwg
RGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQsIEVDTUFNb2RlKTsKIHZvaWQgcmVw
YXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgY29uc3Qg
SWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVy
ZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtGb3IoVk0mLCBDYWxsRnJhbWUqLCBDYWxs
TGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKaW5kZXggMmJmZmMzODE2M2ZlMzFiZTk0MWJlZDZhNWZiNTZkMjk4
YmViNjIyNy4uZGFkZjg1MTAyOTQ1OTVhMjQzMTkzYWYyYzBlZDQ2ZWIxMGI1YmY3NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC04MzYs
NyArODM2LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29u
dGV4dCgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGJ5dGVjb2RlLm1f
ZWNtYU1vZGUuaXNTdHJpY3QoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKIAogICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKICAgICBpZiAoYnl0ZWNvZGUubV9m
bGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkKQEAgLTkyNyw3ICs5MjcsNyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OwogICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRl
ICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBi
eXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0
ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikpOwog
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKIH0KQEAgLTEwMjUsNyAr
MTAyNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX3ZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFN
b2RlLmlzU3RyaWN0KCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIo
KSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwpAQCAtMTA1
OCw3ICsxMDU4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxf
ZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwog
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICBib29s
IGlzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1N0
cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYgKExJS0VM
WShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwg
SlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hl
ZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgogICAg
ICAgICBBU1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOwpAQCAtMTExMiw3ICsx
MTEyLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAg
fQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKCFjb3VsZERlbGV0ZSAm
JiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYgYnl0
ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKICAg
ICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CkBAIC0xNzM4LDcg
KzE3MzgsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbgogICAgIGlmICghaXNIb3N0RnVuY3Rp
b24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBDb2RlRm9yQ2FsbCwgY2Fs
bGVlQXNWYWx1ZSkpOwogICAgIAotICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGds
b2JhbE9iamVjdCwgY2FsbGVlRnJhbWUpOworICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBl
dmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAg
IExMSU5UX0NBTExfUkVUVVJOKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIExMSW50OjpnZXRD
b2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcpOwogfQogICAg
IApAQCAtMTg3NCw3ICsxODc0LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF90b19zY29wZSkKICAgICBpZiAobWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkg
PT0gVGhyb3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0eSkKICAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihnbG9iYWxPYmplY3QsIGlkZW50KSk7CiAKLSAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwg
UHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihtZXRhZGF0
YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChzY29wZSwgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0
eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJsZSh2bSkt
PnB1dChzY29wZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAg
IENvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBieXRlY29kZSwgc2NvcGUsIHNsb3QsIGlkZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA3YTY0MmMwMjZm
ZGIwZDIwOTljYWVkZTY2YzcyMTUxN2U2ZjZmZWUxLi5iMDQ3ZmI1ODA4Y2YwYzhlMDBhYzAxMzVj
MTE5ZTIzNTQxYjIwMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCkBAIC01OTksNyArNTk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIC8vIDEuIExldCBhcnJheSBiZSB0
aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUuCiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAg
LTY4MSw3ICs2ODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKQEAgLTc3OSw3ICs3NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jSm9pbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIExldCBP
IGJlID8gVG9PYmplY3QodGhpcyB2YWx1ZSkuCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtODY0LDcgKzg2NCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBT
dHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIGlmIChp
c0pTQXJyYXkodGhpc1ZhbHVlKSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoYXNBcnJheSh0aGlzVmFsdWUpLT5wb3AoZ2xvYmFsT2JqZWN0KSkpOwpA
QCAtODk5LDcgKzg5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNQdXNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSk7CiAKICAgICBpZiAoTElLRUxZKGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpID09IDEpKSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0g
YXNBcnJheSh0aGlzVmFsdWUpOwpAQCAtOTQwLDcgKzk0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEwMzcsNyArMTAzNyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09i
amVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhp
c09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMDY0LDcgKzEw
NjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zbGljZQogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
SlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBF
WENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMTI0LDcgKzEx
MjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9O
X0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEyMjIs
NyArMTIyMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNV
blNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDE1LjQuNC4xMwogCi0gICAgSlNPYmplY3Qq
IHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0
cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmog
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEh
c2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09i
aikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTM1NCw3ICsxMzU0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAvLyAxNS40LjQuMTQKLSAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmlj
dCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEzOTIsNyArMTM5Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgLy8gMTUuNC40LjE1Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAg
ICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAKaW5kZXggMjI2YjQ4MzU0NjJkOGM0NWU2MTlmNjY4MDBiZTk5N2E5MWFlODhhMS4u
ODAyZjIwMmY5MjliMDA4MDM0ZmE3ZDZlYjgxMDkwYWI3MzMwZDJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTgxOCw3ICsxODE4LDYg
QEAgcHVibGljOgogICAgIFJlZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IG1ldGFkYXRhKERlY29k
ZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuZGVjb2RlKGRlY29kZXIpOyB9
CiAKICAgICB1bnNpZ25lZCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0K
LSAgICB1bnNpZ25lZCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9k
ZTsgfQogICAgIHVuc2lnbmVkIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29u
c3RydWN0b3I7IH0KICAgICB1bnNpZ25lZCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICB1bnNpZ25lZCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KQEAgLTE4NTEs
NyArMTg1MCw2IEBAIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3Rl
cjsKIAogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJp
Y3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2ln
bmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGlu
RnVuY3Rpb24gOiAxOwpAQCAtMjA0OCw3ICsyMDQ2LDYgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJl
KgogICAgICwgbV9zY29wZVJlZ2lzdGVyKGNhY2hlZENvZGVCbG9jay5zY29wZVJlZ2lzdGVyKCkp
CiAKICAgICAsIG1fdXNlc0V2YWwoY2FjaGVkQ29kZUJsb2NrLnVzZXNFdmFsKCkpCi0gICAgLCBt
X2lzU3RyaWN0TW9kZShjYWNoZWRDb2RlQmxvY2suaXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2lz
Q29uc3RydWN0b3IoY2FjaGVkQ29kZUJsb2NrLmlzQ29uc3RydWN0b3IoKSkKICAgICAsIG1faGFz
Q2FwdHVyZWRWYXJpYWJsZXMoY2FjaGVkQ29kZUJsb2NrLmhhc0NhcHR1cmVkVmFyaWFibGVzKCkp
CiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNhY2hlZENvZGVCbG9jay5pc0J1aWx0aW5GdW5j
dGlvbigpKQpAQCAtMjIzNCw3ICsyMjMxLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENv
ZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAg
ICBtX3RoaXNSZWdpc3RlciA9IGNvZGVCbG9jay5tX3RoaXNSZWdpc3RlcjsKICAgICBtX3Njb3Bl
UmVnaXN0ZXIgPSBjb2RlQmxvY2subV9zY29wZVJlZ2lzdGVyOwogICAgIG1fdXNlc0V2YWwgPSBj
b2RlQmxvY2subV91c2VzRXZhbDsKLSAgICBtX2lzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay5tX2lz
U3RyaWN0TW9kZTsKICAgICBtX2lzQ29uc3RydWN0b3IgPSBjb2RlQmxvY2subV9pc0NvbnN0cnVj
dG9yOwogICAgIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgPSBjb2RlQmxvY2subV9oYXNDYXB0dXJl
ZFZhcmlhYmxlczsKICAgICBtX2lzQnVpbHRpbkZ1bmN0aW9uID0gY29kZUJsb2NrLm1faXNCdWls
dGluRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmNwcAppbmRleCA4ZGRkOThhMWJmYjBmZWMxNWE3ZDczMmFjYzNjMmNlZjg1ZDA0
MGI0Li5iZjg1NDEyMjQ2YjI5Yzk5OWU1MjNhN2E0ZWNjYzgzMTA3MjZjNzk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTE3
OCw3ICsxNzgsNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgaWYgKCF0aGlzT2Jq
ZWN0LT5zcGVjaWFsc01hdGVyaWFsaXplZCgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzT2JqZWN0LT5t
X2NhbGxlZS0+ZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVj
dXRhYmxlLT5pc1N0cmljdE1vZGUoKTsKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVj
dXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChpZGVudCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5jYWxsZWUpIHsKICAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsK
QEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIENsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVTcGVj
aWFscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obV9jYWxsZWUtPmV4ZWN1dGFibGUoKSk7Ci0gICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKTsKKyAgICBib29s
IGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCk7CiAgICAgCiAg
ICAgaWYgKGlzU3RyaWN0TW9kZSkKICAgICAgICAgcHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIHRoaXMtPmdsb2JhbE9iamVjdCh2bSktPnRo
cm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGZhM2NkMzI2YmNkNWI5Nzg5YTI0MjdlNjEzYWM5NTQ4
YjJmYjNhZTIuLjI1MTg3MTBkMDIxMjJjMTI2ZTJhOTc0MjU0MGE3YjM2MzViMDMyODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtOTEsMTEgKzkx
LDExIEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0lt
cGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgICAgIGV4ZWN1dGFibGUtPnJlY29y
ZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpIHwgYXJyb3dDb250ZXh0RmVhdHVyZSwgcm9vdE5v
ZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpLCBlbmRDb2x1
bW4pOwogCiAgICAgYm9vbCB1c2VzRXZhbCA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgRXZhbEZl
YXR1cmU7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0
cmljdE1vZGVGZWF0dXJlOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gcm9vdE5vZGUtPmZlYXR1
cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2Rl
Ojpub3RTdHJpY3QoKTsKICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciA9IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RFdmFsRXhl
Y3V0YWJsZT4pCiAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gZXhlY3V0YWJs
ZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbyh1c2VzRXZhbCwgaXNTdHJpY3RNb2RlLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hl
VHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5
cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBm
YWxzZSwgZXZhbENvbnRleHRUeXBlKTsKKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
byh1c2VzRXZhbCwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1v
ZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2Nr
VHlwZT46OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7
CiAKICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gVW5saW5r
ZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUodm0sIGV4ZWN1dGFibGVJbmZvLCBjb2RlR2VuZXJhdGlv
bk1vZGUpOwogICAgIHVubGlua2VkQ29kZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVh
dHVyZXMoKSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwgdW5s
aW5rZWRFbmRDb2x1bW4pOwpAQCAtMTA0LDcgKzEwNCw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlw
ZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzCiAgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2
ZSgpLmlzTnVsbCgpKQogICAgICAgICB1bmxpbmtlZENvZGVCbG9jay0+c2V0U291cmNlTWFwcGlu
Z1VSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2
ZSgpKTsKIAotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290
Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2Rl
LCB2YXJpYWJsZXNVbmRlclREWik7CisgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2Rl
R2VuZXJhdGlvbk1vZGUsIHZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAKICAgICBpZiAo
ZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDQ0ZDhmYjRi
NDIyYTkyZDAzYjgxYWIwYWYxOGQ0ZjY1YjFlOGM4MzUuLmI1NmE3NDhlZDQ2YzQ4YTYzYTBiNTUw
NzIzM2EzMTc5MmJkYjJhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF90b190aGlzKQogICAgIC8vIGRpZmZlcmVudCBvYmplY3QgdGhhdCBzdGlsbCBo
YXMgdGhlIHNhbWUgc3RydWN0dXJlIG9uIHRoZSBmYXN0IHBhdGggc2luY2UgaXQnbGwgcHJvZHVj
ZQogICAgIC8vIHRoZSBzYW1lIFNwZWN1bGF0ZWRUeXBlLiBUaGVyZWZvcmUsIHdlIGRvbid0IG5l
ZWQgdG8gd29ycnkgYWJvdXQgdmFsdWUgcHJvZmlsaW5nIG9uIHRoZQogICAgIC8vIGZhc3QgcGF0
aC4KLSAgICBhdXRvIHZhbHVlID0gdjEudG9UaGlzKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKKyAgICBhdXRvIHZh
bHVlID0gdjEudG9UaGlzKGdsb2JhbE9iamVjdCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAg
UkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgdmFsdWUsIFBS
T0ZJTEVfVkFMVUUodmFsdWUpKTsKIH0KIApAQCAtOTg5LDcgKzk4OSw3IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAgIH0KICAgICBDSEVDS19FWENFUFRJT04oKTsK
ICAgICAKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkp
CiAgICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVs
ZXRlUHJvcGVydHlFcnJvcikpOwogICAgIAogICAgIFJFVFVSTihqc0Jvb2xlYW4oY291bGREZWxl
dGUpKTsKQEAgLTEzMDYsNyArMTMwNiw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRf
YnlfaWRfd2l0aF90aGlzKQogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUu
bV9iYXNlKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsID0gR0VUX0MoYnl0ZWNvZGUu
bV90aGlzVmFsdWUpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHB1dFZhbHVlID0gR0VUX0MoYnl0
ZWNvZGUubV92YWx1ZSkuanNWYWx1ZSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNW
YWwsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQo
KSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbCwgYnl0ZWNvZGUubV9lY21hTW9k
ZS5pc1N0cmljdCgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGJhc2VWYWx1
ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOwogICAgIEVO
RCgpOwogfQpAQCAtMTMyMiw3ICsxMzIyLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV92YWxfd2l0aF90aGlzKQogICAgIAogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQu
dG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBieXRlY29kZS5tX2VjbWFN
b2RlLmlzU3RyaWN0KCkpOwogICAgIGJhc2VWYWx1ZS5wdXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOwogICAgIEVORCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCAyMTE3Y2M5ZTk2ZDlmMDA0ZmExNjM5ZWE5ZmQ4
MDZhNDUzOGMwMGVjLi5iNzQ1MDEwMWIwODUyNjBkZDJhY2FjZDc3NzhlMmNiM2RhOTcwOTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTQy
LDcgKzE0Miw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiAKICAgICBpZiAoIXRoaXNWYWx1
ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgdGhpc1ZhbHVlID0g
Z2xvYmFsT2JqZWN0OwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTT2JqZWN0Kj4o
dGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICBKU09i
amVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6bm90U3RyaWN0KCkpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZt
LmludGVycHJldGVyLT5leGVjdXRlUHJvZ3JhbShzb3VyY2UsIGdsb2JhbE9iamVjdCwgdGhpc09i
aik7CiAKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCAxYTcy
YmZiNDdlZmVmYTU1MGRlZjk4MzU2NjU0YWY2NDkwNzc5NzM1Li43YzE5Yjc1YzYyYzgwNDEzNjJk
ZDllYjEyZWRhNTk3OTI1MTE1ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1EaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKK0RpcmVjdEV2YWxFeGVj
dXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lk
ZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDUsMTEgKzQ1LDExIEBAIERpcmVjdEV2YWxF
eGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4o
dm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpc0lu
U3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBl
dmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVj
dXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVk
Q29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CiAgICAg
ZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7
Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmlj
dE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3Q7CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBlY21hTW9k
ZS5pc1N0cmljdCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUo
KTsKIAogICAgIC8vIFdlIGRvbid0IGJvdGhlciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2Ug
ZGlyZWN0IGV2YWwgdXNlcyBhIHNwZWNpYWxpemVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUu
aAppbmRleCA0NzgyNmJmMzIwYzFjMTdkNTgzMTM5YzQ2ZTUzZTZkYWVkYWJiZDQ5Li4yNDA3NWE3
ZjVhMzZjNzNmZWJhNDA3ZTcxMDlhNmZjMzNmMjcwZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDcgKzMx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRGlyZWN0RXZh
bEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQqLCBFQ01BTW9kZSk7CiBwcml2YXRlOgogICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBE
ZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29u
dGV4dFR5cGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5oCmluZGV4IDYwNWIyZWZmYjFkN2I4MmU1Y2RiN2M2NDUzZGM1ZGU3MWYzMDI2NzYu
LjY3ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZiOGU3ZTk5NDgwZWQ3NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlz
U3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJz
ZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxDb250
ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0
VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZh
cmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMo
KTsgfQogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1
cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVz
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmgKaW5kZXggNDQzYmIzOGE2NWNiODA0NzQ1Njg1N2NkOGQyNzZhZGU5ZjdhNmI1Yy4u
YmFkZTk4NzM1Zjk5ZGM0N2U3YTZkYzc4N2M1Nzk3MTFjZTUxNWVmYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTE0Myw3
ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBQZXIgaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hMjYyLyNzZWMtZm9yYmlkZGVuLWV4dGVuc2lvbnMsIG9ubHkgc2xvcHB5LW1v
ZGUgbm9uLWJ1aWx0aW4gZnVuY3Rpb25zIGluIG9sZC1zdHlsZSAocHJlLUVTNikgc3ludGFjdGlj
IGZvcm1zIGNhbiBjb250YWluCiAgICAgICAgIC8vICJjYWxsZXIiIGFuZCAiYXJndW1lbnRzIi4K
LSAgICAgICAgcmV0dXJuICFpc1N0cmljdE1vZGUoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rp
b24oKTsKKyAgICAgICAgcmV0dXJuICFpc0luU3RyaWN0Q29udGV4dCgpICYmIHBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlICYmICFpc0NsYXNzQ29uc3Ry
dWN0b3JGdW5jdGlvbigpOwogICAgIH0KICAgICBib29sIGhhc1Byb3RvdHlwZVByb3BlcnR5KCkg
Y29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcAppbmRleCA1ZjlmODVlMWVjZGM4MTM0N2Q4OTc0MDZlNjIxMTRkMDY1NDcyNzkzLi42
NmNjNzUwNzM5MGJhNDFlMDg4OWNkNmI2YzUwMGU3NmIwMjE2MGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
Ym9vbCBjYWxsU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlck9i
aiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwogCiAgICAgaWYgKGdldHRl
clNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSwgUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVjbWFNb2RlLmlzU3RyaWN0KCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKIAog
ICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1
dGFibGUuY3BwCmluZGV4IDIwMDMxOTI5MGYwYmUwZjk3MzE0MWJmZTk0OTlmM2JhZTg5Nzg4NjIu
LjE0ZjdmYWI1YzNkNGVhYTg3OTQyYmNmMzMyYTQ1ZjFjNTA2ZGFlN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUu
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCitJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTQ1LDE1ICs0NSwxNCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGlyZWN0RXZh
bEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7
CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEluZGly
ZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2Jh
bE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0p
OwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmlj
dE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6
U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZh
dWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAgICAgCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVubGlua2VkRXZhbENvZGVC
bG9jaygKLSAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBzdHJp
Y3RNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUpOworICAg
ICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyU3RyaWN0
TW9kZTo6Tm90U3RyaWN0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5
cGUpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSkKICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7
CkBAIC02OCw4ICs2NywxMCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVybiBl
eGVjdXRhYmxlOwogfQogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNl
LCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vKQorY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFsc2U7Citjb25zdGV4cHIg
Ym9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CitJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2Us
IGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IGMxOTkyZmRiMWE0
MjUwNTRhZTliYzQ1NzUxMjhlNmY1MDg2Y2E5YmMuLjQ5OGI1Yzg3MDk4YWIzNzQ3OTdhMjViZjQ4
MTYzN2NmYmI5MmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZh
bEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUq
IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4
dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIHBy
aXZhdGU6Ci0gICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJp
dmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRU
eXBlKTsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEluZGlyZWN0RXZhbEV4ZWN1dGFibGUp
ID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJkYjJlNTc3MDJiM2NiYzM2OTkz
NjlkNzdjOTQzMzBkNC4uMzNmN2YyYjQ0ZTQ5MGViOTM0MTVmNzE3MjcxNGIxZWM2ZWNiZTNkMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEFTU0VSVCghaXND
ZWxsKCkpOwogCi0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFN
b2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGlmIChpc0ludDMy
KCkgfHwgaXNEb3VibGUoKSkKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIEpTVmFsdWU6OnB1dFRv
UHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eQogCiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsK
ICAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKQotICAgICAgICAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBn
cywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9k
ZSkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRl
cihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBF
Q01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6bm90U3RyaWN0KCkpKTsKIAogICAgICAgICAg
ICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBncywgYXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7
CkBAIC00MzQsNCArNDM0LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVI
ZXJlKEpTVmFsdWUpCiB9CiAjZW5kaWYKIAordm9pZCBFQ01BTW9kZTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1N0cmljdCgpKQorICAgICAgICBvdXQucHJpbnQo
IlN0cmljdE1vZGUiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgiTm90U3RyaWN0TW9k
ZSIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBkZWI2NDAyNTMwZWI1OGJmNTBkMGQ2NzBlZDE2YmM1NDhi
N2Y5MjY5Li5kZmQxY2RkNDQxNjg1NjljZWVkNWUzNDY0OWZhMjQyYjJlZmIwMjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC04MCw4ICs4MCwzMSBA
QCB1c2luZyBXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlv
bmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtubwogICAgIER1bWJWYWx1ZVRyYWl0czxUPiwgRHVtYlB0
clRyYWl0czxUPgogPjo6dHlwZTsKIAotZW51bSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHsgTm9Q
cmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OwotZW51bSBFQ01BTW9kZSB7
IFN0cmljdE1vZGUsIE5vdFN0cmljdE1vZGUgfTsKK2VudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSA6IHVpbnQ4X3QgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07
CisKK3N0cnVjdCBFQ01BTW9kZSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFN0cmlj
dE1vZGUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBOb3RTdHJpY3RNb2RlID0g
MTsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgZnJvbUJ5dGUodWlu
dDhfdCBieXRlKSB7IHJldHVybiBFQ01BTW9kZShieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgRUNNQU1vZGUgc3RyaWN0KCkgeyByZXR1cm4gRUNNQU1vZGUoU3RyaWN0TW9kZSk7IH0KKyAg
ICBzdGF0aWMgY29uc3RleHByIEVDTUFNb2RlIG5vdFN0cmljdCgpIHsgcmV0dXJuIEVDTUFNb2Rl
KE5vdFN0cmljdE1vZGUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTdHJpY3QoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlID09IFN0cmljdE1vZGU7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgRUNNQU1v
ZGUodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdmFsdWUgPT0gU3RyaWN0TW9kZSB8fCBtX3ZhbHVlID09IE5vdFN0cmljdE1v
ZGUsIG1fdmFsdWUpOworICAgIH0KKworICAgIHVpbnQ4X3QgbV92YWx1ZTsKK307CiAKIGVudW0g
Y2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZDsKIHN0cnVjdCBDYWxsRGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDU1M2QxNmY1NjkyNTljZjgyM2I5Njg2
OGZkMDkwYjdmMmU3MDhiMjAuLmE0NzRlN2FlNTI3NWFjNzY4NjQ4MjM2ZjY2ZmQ0MjhhZmRlN2Ux
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1CiAKIEpTVmFsdWUgSlNDZWxsOjp0b1Ro
aXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNt
YU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIGNlbGwt
PnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDA5YWJhZTM4YmUwZmUzNDZmZDVkMzhiMjJiZGE0N2Jm
OWU2NmNhMzUuLjUxOTAzY2E3ODcxZDM3MmUyNmI4ZWNlMGUzYWUwYTNmMTQ2Yjg1OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03NSw3ICs3
NSw3IEBAIFN0cnVjdHVyZSogSlNGdW5jdGlvbjo6c2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4
cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgYm9vbCBpc0J1aWx0aW4gPSBleGVj
dXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Fycm93
RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZShpc0J1aWx0aW4pOwotICAgIGlmIChleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkK
KyAgICBpZiAoZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+c3RyaWN0RnVuY3Rpb25TdHJ1Y3R1cmUoaXNCdWlsdGluKTsKICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5zbG9wcHlGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwog
fQpAQCAtNDMwLDcgKzQzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdl
dHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBp
ZiAoIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlm
ICghZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGdW5jdGlv
bi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIl9zKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCmluZGV4IDliYThjNzBkNzZhNzQyZWViNTcxNjc4Y2M5M2RiYWNiNDc5Mzk0
NGUuLmNhOTQ4OWMwZTBlZmRjODZiMGY0MjJmZjI4ODZlZjQ4ZDE5M2E5MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKQEAgLTUwNyw3ICs1MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7CiAKICAgICBTb3VyY2VP
cmlnaW4gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwot
ICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKKyAgICBF
dmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC03MTQsNyArNzE0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1v
ZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlKSk7CiAKQEAgLTczNSw3ICs3MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNQcm90b1NldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBP
YmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMjVkZmY1MzMzNzg5MTQyOGU2MmZh
OTUxOWRlMTRhNzE5NDRkNGI3OC4uODNlNDA2YmI3Yzk2YzRhYjk4Y2Q2OWY5Yjg4OGE4MTgyNTJm
ZDE2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAt
ODEwLDcgKzgxMCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5CiAgICAgICAgICAgICAgICAg
aWYgKCF0aGlzLT5zdHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAg
ICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZzZXQpOwogCi0gICAgICAgICAg
ICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFs
dWUoKSwgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0
cmljdE1vZGUpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbFNldHRlcihnbG9i
YWxPYmplY3QsIHNsb3QudGhpc1ZhbHVlKCksIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpub3RTdHJpY3QoKSk7CiAgICAgICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CkBAIC0xODE4LDcgKzE4MTgsNyBAQCBi
b29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBv
ZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCJfcyk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1l
dGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkg
PT0gdGhpcyk7CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6Om5vdFN0cmljdCgpKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlz
LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDZkNWFi
NjgyYzY4MzkxNGY2OWYzZTVjMjI4Mzg0ZmVmZTQ2NTc3YzguLmIzYzI3MjAyMjgwNmI4MTE0MzU3
ZDgxZGU5ZjNiNWZjMTAzNTRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCkBAIC00MTEsNyArNDExLDcgQEAgU3ltYm9sVGFibGUqIEpTU2NvcGU6OnN5bWJv
bFRhYmxlKFZNJiB2bSkKIAogSlNWYWx1ZSBKU1Njb3BlOjp0b1RoaXMoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7Ci0gICAgaWYgKGVj
bWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2Jh
bFRoaXMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApp
bmRleCBhYWVlOGVlN2E3N2VlYTZkZWZjNzU3YTg3ZDIzYjNlY2JhODZmMjFmLi4wZjIwN2EzYjY4
NmFlYTdiNTdkNDk1Y2Q3MDI5YWQ4YTgzODZkYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgSlNPYmplY3QqIEpTU3Ry
aW5nOjp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogCiBKU1Zh
bHVlIEpTU3RyaW5nOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0
TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7
CiAgICAgcmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xv
YmFsT2JqZWN0LCBhc1N0cmluZyhjZWxsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IDY5NzZmNzA1ZDM0MDRlMzdhMjFkODky
YjEyM2NiYzM4MDQyMzZkNWIuLjUzNTIzNzE4ZGM5YjlkMjIxMmI4YjgyMTE3NjM2OGY0ODQyMTgy
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIu
Y3BwCkBAIC05MzMsNyArOTMzLDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6
cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHBy
b3BlcnR5Il9zOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpIDogZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpIDogZmFsc2UpOwogICAgICAgICAgICAg
ICAgICAgICBvYmplY3RTdGFjay5sYXN0KCkucHV0KG1fZ2xvYmFsT2JqZWN0LCBpZGVudCwgbGFz
dFZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUuaAppbmRleCA0NjU0NjIwMDRmMzdlMjAxMmQ3MjE2OGM2MjA5ZTUwNTE3YzEyMDU1
Li4wOTlkODk5YWQ1ZTYzYTc0MzM1OGUyYWJiMjBhYjM0ZjU5Yjk2MGVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250
ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVz
ZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNj
cmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFs
Q29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDEwZjg4NzI1YWMw
MDJkMjUzYTljODYzNzFkNDUzOTg1MGRmY2FhMjkuLmVhMjRhOTRjN2I1NmQwMGI5M2Q0YWMzMjAz
ZjgzYjQ2ZjFhYWFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcApAQCAtNTIsNyArNTIsOSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAogICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IHZpc2l0b3ItPmNvZGVCbG9jaygpOwotICAgICAgICBtX2NhbGxlcklz
U3RyaWN0ID0gY29kZUJsb2NrICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAg
IC8vIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhhdCB3ZSBtaWdodCBoYXZlIGFu
IHN0cmljdCBvcGNvZGUgaW4gYSBub24tc3RyaWN0IGNvbnRleHQsIGJ1dCB0aGF0J3MKKyAgICAg
ICAgLy8gb2sgc2luY2Ugd2UgYXNzZXJ0IGJlbG93IHRoYXQgdGhpcyBmdW5jdGlvbiBzaG91bGQg
bmV2ZXIgYmUgY2FsbGVkIGZyb20gYW55IGtpbmQgc3RyaWN0IGNvbnRleHQuCisgICAgICAgIG1f
Y2FsbGVySXNTdHJpY3QgPSBjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+aXNJblN0cmljdENvbnRleHQoKTsKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9u
ZTsKICAgICB9CiAKQEAgLTczLDExICs3NSwxMiBAQCBzdGF0aWMgYm9vbCBjYWxsZXJJc1N0cmlj
dChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogbmFtZXNwYWNlIE51bGxTZXR0ZXJGdW5j
dGlvbkludGVybmFsIHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxS
ZXR1cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChjYWxsZXJJc1N0cmlj
dCh2bSwgY2FsbEZyYW1lKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFz
IG9ubHkgYSBnZXR0ZXIiX3MpKTsKKyNpZiAhQVNTRVJUX0VOQUJMRUQKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBVTlVT
RURfUEFSQU0oY2FsbGVySXNTdHJpY3QpOworI2VuZGlmCisgICAgQVNTRVJUKCFjYWxsZXJJc1N0
cmljdChnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZSkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCBjMDU3MTJiMGE0NWExZTBhMGU2
ZWIzNjZmYmY0MzQzZGYyNDg2Zjk2Li42ZGFhN2I0YzZiYjVhYzI5ODQyOTFlMzhiYjI2OThmYjUw
NjJmZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgT2JqZWN0UHJvdG90eXBlKiBPYmplY3RQcm90
b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFMKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBK
U09iamVjdCogdmFsdWVPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBpZiAoVU5MSUtFTFkoIXZhbHVlT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVl
KCk7CkBAIC05Miw3ICs5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jSGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnN0cmljdCgpKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhp
c1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWwKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmpl
Y3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsK
IAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KTsKICAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09i
aik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
U3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHNldCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yMzQsNyArMjM0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmlj
dE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNjcs
NyArMjY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQ
cm9wZXJ0eUlzRW51bWVyYWJsZShKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHNjb3BlLnJl
bGVhc2UoKTsKQEAgLTI4OCw3ICsyODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAg
IC8vIDIuIEludm9rZShWLCAidG9TdHJpbmciKQogCiAgICAgLy8gTGV0IE8gYmUgdGhlIHJlc3Vs
dCBvZiBjYWxsaW5nIFRvT2JqZWN0IHBhc3NpbmcgdGhlIHRoaXMgdmFsdWUgYXMgdGhlIGFyZ3Vt
ZW50LgotICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVj
dCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIExldCB0b1N0cmluZyBiZSB0aGUgTy5bW0dldF1d
KCJ0b1N0cmluZyIsIFYpCkBAIC0zMTMsNyArMzEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUuaXNVbmRl
ZmluZWQoKSA/IHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRPYmplY3RTdHJpbmcoKSA6IHZtLnNt
YWxsU3RyaW5ncy5udWxsT2JqZWN0U3RyaW5nKCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKaW5kZXggYThmMGI1Zjg5
OTQyYjM3ZGFlOWU3YTMwMjkyZDQxOGZiODdlODkzMy4uMmIzMmY1YTA0YTIwMTIzNmE5N2JiYWVk
YzQzNDYyY2QyODhlMzM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcApAQCAtODIsNyArODIsNyBAQCBKU09iamVjdCogUHJv
Z3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqCiAgICAgQVNTRVJUKCZnbG9iYWxPYmplY3QtPnZtKCkgPT0gJnZtKTsKIAogICAg
IFBhcnNlckVycm9yIGVycm9yOwotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0g
aXNTdHJpY3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0OworICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0g
aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRp
b25Nb2RlKCk7CiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IHZtLmNvZGVDYWNoZSgpLT5nZXRVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2soCiAgICAgICAg
IHZtLCB0aGlzLCBzb3VyY2UoKSwgc3RyaWN0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJv
cik7CkBAIC0xMzYsNyArMTM2LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0
aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAg
ICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+aGFzUHJvcGVy
dHkoZ2xvYmFsT2JqZWN0LCBlbnRyeS5rZXkuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKICAgICAgICAgICAgIGlmIChoYXNQcm9w
ZXJ0eSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0
KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzU3Ry
aWN0TW9kZSgpKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5p
c0NvbnN0KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYg
IWlzSW5TdHJpY3RDb250ZXh0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkg
YWxsb3cgImNvbnN0IiBkdXBsaWNhdGUgZGVjbGFyYXRpb25zIHVuZGVyIHRoaXMgc2V0dGluZy4K
ICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIHdlIGRvbid0ICJsZXQiIHZhcmlh
YmxlcyB0byBiZSBvdmVycmlkZGVuIGJ5ICJjb25zdCIgdmFyaWFibGVzLgogICAgICAgICAgICAg
ICAgICAgICBpZiAoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5pc0NvbnN0VmFyaWFibGUoZW50
cnkua2V5LmdldCgpKSkKQEAgLTE4NSw3ICsxODUsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1
dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
CiAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGdsb2JhbExleGljYWxFbnZpcm9u
bWVudC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGljYWxE
ZWNsYXJhdGlvbnMpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0Nv
bnN0KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlz
U3RyaWN0TW9kZSgpKSkgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlz
Q29uc3QoKSAmJiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAh
aXNJblN0cmljdENvbnRleHQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUt
PmNvbnRhaW5zKGxvY2tlciwgZW50cnkua2V5LmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCAyOWNhMDEzMjA1NjFiMTQ2YTYyOWM2ZmI1
ZmExODhmZjU4YzNkYjFmLi5iODcxNWFhNzJiYmNiNzMzOWQ2ZTM0MTNhYzU5Yzc0NDExN2I4MmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lO
Rk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZl
ZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4
ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUlu
Zm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFy
c2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxD
b250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1w
bGF0ZU9iamVjdE1hcChWTSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAKaW5kZXggYjA3ZTBhMDI5MzMyODI2MTAzNmY0MTEwNmVlZWU5ZTVmOTBj
NjY2MC4uNmQxMWI0MWJhNDA2MTgxNTUyMmRhYjNlYmZlMzFjNzc2ZTdlZTc3MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNTQ3LDcgKzU0
Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNh
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKLSAgICBhcmd1bWVudHMuYXBwZW5k
KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OlN0
cmljdE1vZGUpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7CiAgICAgYXJndW1lbnRz
LmFwcGVuZChhcmdBcnJheSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgp
KTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGds
b2JhbE9iamVjdCwgYXBwbHlNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJn
dW1lbnRzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5oCmluZGV4IDEwNmNmMjVmNjMxZjA0MWI5YmM2MzE5NDAwZjQ2NjdiMDdiMzljZmMu
LjBkZDQ0ZWNiODQzNzFkNDc3MzQ2MGNkNGMwYWFlNTVmZTNjZDIzMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKQEAgLTYwLDEyICs2
MCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVh
dHVyZXMgJiBFdmFsRmVhdHVyZTsgfQogICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlOyB9CiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0
OyB9Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYg
U3RyaWN0TW9kZUZlYXR1cmU7IH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBlPiht
X2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRU
eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPihtX2V2YWxD
b250ZXh0VHlwZSk7IH0KKyAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAKLSAgICBFQ01BTW9kZSBlY21h
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0
cmljdE1vZGU7IH0KLSAgICAgICAgCiAgICAgdm9pZCBzZXROZXZlcklubGluZShib29sIHZhbHVl
KSB7IG1fbmV2ZXJJbmxpbmUgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0TmV2ZXJPcHRpbWl6ZShi
b29sIHZhbHVlKSB7IG1fbmV2ZXJPcHRpbWl6ZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXROZXZl
ckZUTE9wdGltaXplKGJvb2wgdmFsdWUpIHsgbV9uZXZlckZUTE9wdGltaXplID0gdmFsdWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5jcHAKaW5kZXggODVjMWNmMzQzMzgxODQ3ODgzODg0NTZlYjM2YWVhMmZmYjYzNDFmYS4u
Y2Y5MDQ5MTliNmQ4Yzc4M2RlOTFkNmY0MzM3ZTVhNTY4ZWU3ZTJiMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKQEAg
LTIwMyw3ICsyMDMsNyBAQCBib29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIo
Z2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cg
PyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZh
bHVlLCBzaG91bGRUaHJvdyA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpub3RTdHJp
Y3QoKSkpOwogfQogCiBKU1ZhbHVlIFNwYXJzZUFycmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZDcyOTFlM2ZjNTM0NzkwZGYyZDllOTU4ZWE2M2I3NDM3ZmI0YzdlLi4xOTI0NTg4
Y2UyODc5ZTE4NzAxMzgxNWQzNjc0ZTQ1ZWE1NTE5MGYwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAz
LTI3ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIENsYXNz
RXhwck5vZGUgc2hvdWxkIGVtaXQgYnl0ZWNvZGUgaW4gc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTU3OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTgxOTQ1ODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3Mu
anM6IEFkZGVkLgorICAgICAgICAoZi50cnkuYyk6CisgICAgICAgIChmKToKKwogMjAyMC0wMy0y
NyAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBTa2lwIG5ldyBt
ZW1vcnkgdGVzdCBzdHJlc3MvdHlwZWQtYXJyYXktb29tLWluLi4uIGluIG1lbW9yeSBsaW1pdGVk
IGRldmljZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhwcmVzc2lv
bi1zdHJpY3RuZXNzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0
cmljdG5lc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdlYTY4NDc5Yzk3M2YzYzYyMGFjZmJmMWYwMTlhYmVk
YTkyYTJlZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhw
cmVzc2lvbi1zdHJpY3RuZXNzLmpzCkBAIC0wLDAgKzEsNTkgQEAKK2Z1bmN0aW9uIGYoKSB7Cisg
ICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFz
cyBjIGV4dGVuZHMoZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB7fTsK
KyAgICAgICAgICAgIH0sIGQpIHt9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
IGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZXJyb3IgfHwgZXJyb3IubWVz
c2FnZSAhPSAiQ2FuJ3QgZmluZCB2YXJpYWJsZTogZCIpCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgcmVmZXJlbmNlIGVycm9yIik7CisgICAg
fQorCisgICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHZhciBvYmogPSB7fTsKKyAg
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ3gnLCB7IGNvbmZpZ3VyYWJsZTogZmFs
c2UsIHZhbHVlOiAxIH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3MgYyBleHRl
bmRzKGRlbGV0ZSBvYmoueCwgKCk9Pnt9KSB7fQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVy
cm9yLm1lc3NhZ2UgIT0gIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVycm9yIik7
CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHZhciBvYmogPSB7
fTsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ3gnLCB7IGNvbmZpZ3VyYWJs
ZTogZmFsc2UsIHZhbHVlOiAxIH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3Mg
YyBleHRlbmRzKGV2YWwoJ2RlbGV0ZSBvYmoueCcpLCBjbGFzc3t9KSB7fQorICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0gIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHku
IikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24g
YSB0eXBlIGVycm9yIik7CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgbyA9IHt9OworICAg
ICAgICBvLl9fZGVmaW5lR2V0dGVyX18oIngiLCBmdW5jdGlvbiAoKSB7IHJldHVybiA0MjsgfSk7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMgKG8ueCA9IDEzLCBj
bGFzcyB7IH0pIHsgfQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBlcnJvciA9
IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0g
IkF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIikKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVycm9yIik7
CisgICAgfQorfQorCisgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQorICAgIGYoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394965</attachid>
            <date>2020-03-30 14:39:46 -0700</date>
            <delta_ts>2020-03-30 18:30:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200330143945.patch</filename>
            <type>text/plain</type>
            <size>257886</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTQ4NTBiY2YwMDJlMTQ1ZDA4YTI3Yzc0YzFhMzZhZDgzMTFlNjgwLi5lOTNjY2QxOGQ1NjA4MWUz
ZmI2MGUxMTk4NTQyOGZmOGY2MDhmNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MzMgQEAKKzIwMjAtMDMtMzAgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0
IHN0cmljdCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQg
d2hlbiBlbWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0
IHdlIGNhbiBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0
IG11c3QgYmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUg
YmxvY2sgaXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9u
bHkgdGVuCisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5l
c3MsIHNvIGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVz
LgorICAgICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBi
YXNlbGluZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3RydWN0b3IgY29u
c3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjppc1N0cmljdE1vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmVjbWFNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjppc0tub3duTm90SW1tZWRpYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6dXNlc0V2YWwgY29uc3Qp
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5D
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmlzQ29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvcjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlW
YWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplY21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVTY29wZTo6U3RyaWN0
TW9kZVNjb3BlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVNjb3BlOjp+U3RyaWN0TW9kZVNj
b3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzU3RyaWN0TW9kZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Cisg
ICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZv
ckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAoSlND
OjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZTo6dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6
OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRp
dHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFy
c2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmlzU3RyaWN0TW9kZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmVjbWFNb2RlRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0VDTUFNb2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjplY21hTW9kZSk6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAo
SlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlRG91YmxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxs
V2l0aFN5bWJvbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXREeW5hbWljVmFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dEJ5SWREaXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlW
YWwpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1pY1Zhcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2
YWwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aXNTdHJpY3RNb2RlRm9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplY21hTW9kZUZvcik6IERlbGV0ZWQu
CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVD
YWxsRXZhbCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAg
ICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlf
dmFsKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
RGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTElu
dDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9G
dW5jSm9pbik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZl
cnNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGlj
ZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFz
dEluZGV4T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWNoZWRDb2RlQmxvY2s6OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVk
Q29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRD
b2RlQmxvY2s6OmlzU3RyaWN0TW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9DbG9uZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6bWF0ZXJp
YWxpemVTcGVjaWFscyk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAg
ICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5o
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAg
KiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpFQ01BTW9kZTo6ZnJvbUJ5dGUpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6c3RyaWN0
KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6Om5vdFN0cmljdCk6CisgICAgICAgIChKU0M6OkVD
TUFNb2RlOjppc1N0cmljdCBjb25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjp2YWx1ZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpFQ01BTW9kZSk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhpcyk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c2Vs
ZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNh
bGxlckdldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKEpTQzo6Z2xvYmFs
RnVuY1Byb3RvR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dElubGluZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0
aEN5Y2xlQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChK
U0M6OkpTU2NvcGU6OnRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJz
ZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0Q2Fs
bGVyU3RyaWN0bmVzc0Z1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpO
dWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAgICAg
ICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5j
TG9va3VwR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVy
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChK
U0M6Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxp
emVHbG9iYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
Lmg6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnBl
cmZvcm1Qcm94eUNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc0Fycm93RnVuY3Rpb25Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aXNJblN0cmljdENvbnRleHQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc1N0cmljdE1vZGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplY21hTW9kZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKworICAgICAgICAqIEFQ
SS9BUElDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rp
b246OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbCk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0NvbnRleHRHZXRHbG9iYWxPYmplY3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjppc0tub3duQ2VsbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhl
Y3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnVzZXNFdmFsIGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKEpT
Qzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5
SWRGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJl
Y3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmlzRGlyZWN0IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZEZsYWdzOjplY21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRGbGFnczo6UHV0QnlJZEZsYWdzKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
Ojppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZy
b21TY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29w
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVz
aEZ1bmN0aW9uTmFtZVNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRUb1RoaXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZWNtYU1vZGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJpY3RNb2RlU2NvcGU6OlN0cmljdE1vZGVTY29wZSk6CisgICAgICAgIChKU0M6OlN0
cmljdE1vZGVTY29wZTo6flN0cmljdE1vZGVTY29wZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAo
SlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBj
b25zdCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZv
cik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNFQ01BTW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdPcEluZm8uaDoKKyAgICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVj
aXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
SW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2wpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgICogaml0L0pJVENh
bGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJ
ZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1
dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQv
UmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlRGVsZXRlQnkpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQdXNo
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSW5kZXhP
Zik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6
OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5
cGU+OjplbmNvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Om1hdGVyaWFsaXplU3BlY2lhbHMpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hl
UHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2Fj
aGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6
OmV4ZWN1dGFibGVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2V0UHV0SW5mby5oOgorICAgICAgICAoSlNDOjpH
ZXRQdXRJbmZvOjpHZXRQdXRJbmZvKToKKyAgICAgICAgKEpTQzo6R2V0UHV0SW5mbzo6ZWNtYU1v
ZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSk6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9U
aGlzU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2
ZSk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmZyb21CeXRlKToKKyAg
ICAgICAgKEpTQzo6RUNNQU1vZGU6OnN0cmljdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpz
bG9wcHkpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6aXNTdHJpY3QgY29uc3QpOgorICAgICAg
ICAoSlNDOjpFQ01BTW9kZTo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6
RUNNQU1vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OnNlbGVjdFN0cnVjdHVyZUZvck5ld0Z1bmNFeHApOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZh
bCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6
Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjp0b1RoaXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9UaGlzKToK
KyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRl
cmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkdldENhbGxlclN0cmljdG5lc3NGdW5jdG9yOjpvcGVyYXRvcigp
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNhbGxS
ZXR1cm5VbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9G
dW5jSXNQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZUdl
dHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcik6CisgICAg
ICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcik6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0xvb2t1cFNldHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y1Byb3BlcnR5SXNFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyk6CisgICAgICAgICog
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKiBydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1
dGFibGU6OmlzSW5TdHJpY3RDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuY3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheUVudHJ5OjpwdXQp
OgorCiAyMDIwLTAzLTE5ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBpbnN0YW5jZXMgb2YgbmV3LnRhcmdldCB0aGF0IHNob3VsZCBiZSBzeW50YXgg
ZXJyb3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggOGM5ZThkNjVkZGM0MmZhYWU5M2VlOGQ0Y2U2NWZhZTQ0NjA1
ZTBjOS4uYzcyYzE4YWJiYmJmM2M5ZTgwYTE3MzA1ZmFmOGVjYmY3MTRjOWZlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAzLTMwICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgorCisgICAgICAgIE5vdCB1c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4gQ2xhc3NE
ZWNsYXJhdGlvbiBzdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNTU3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1ODk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogSlNU
ZXN0cy8gc3RyZXNzL3N1cGVyY2xhc3MtZXhwcmVzc2lvbi1zdHJpY3RuZXNzLmpzCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJRExPcGVyYXRpb248SlNFdmVudFRhcmdldD46OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbik6CisKIDIwMjAtMDMtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbU3RyZXNzR0NdIEFTU0VSVElPTiBGQUlMRUQ6IG1fd3JhcHBlciB1bmRlciBXZWJD
b3JlOjpNZWRpYVJlY29yZGVyOjpkaXNwYXRjaEVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IGM5OTEwNTNhMTkxOWY4ZTFiYTRl
YTk4Yjc3ZDhlMWE5ZDFiN2RkZTguLmQ1NjViNDEyODllN2Y2ODYxZjhmOWY5YjdlYWRiMDkxNjk2
ZWE0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tG
dW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJ
Q2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQ29udGV4dFJlZiBleGVj
UmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9
IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09ialJl
ZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2Jq
UmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CiAKICAgICBpbnQgYXJndW1l
bnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpOwog
ICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAwMmNl
ZGM3OTY2YmVjMGE1M2E5YmMwMmE5ZjM3ODNlNzlmNzMyZTJmLi4wM2ExOGRjOTAzNmI2Njc4NDE5
MmVmNTBjOTIwNDVlZDM1MzhiNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTIzLDcgKzUyMyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVm
KGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihq
c0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVm
KGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogICAgIAogICAgIGZvciAoSlNDbGFzc1JlZiBq
c0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+KHRvSlMoZnVuY3Rpb25S
ZWYpKS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNz
KSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVu
Y3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDIyMmE0ZWUyMGRjYmFkYjA3YjdiYzY1NGRjZjhh
YTgwY2YyYzEyYmUuLjI0MDE3OTE2ZTc1MTc2YjgzZTM1ZDllZDAyODgyODMyNTIxNmM3NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKQEAgLTE5Myw3ICsx
OTMsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoSlNDb250ZXh0UmVm
IGN0eCkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2tlcih2bSk7CiAKLSAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogfQogCiBKU0NvbnRleHRHcm91cFJlZiBK
U0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggZDM3MjM2ZjQwYWE4OTkx
MjdjNzQ5ZWJkYjk4Njk2Yzc3ODVkOGNiMy4uZDkxMDYyY2Y3YTM1NGYwNmEyYzYyZjQ0ZjQxODM0
NDk1ZDY4MzE3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSGVhcElubGluZXMu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhp
Y0FjY2Vzcy5oIgotI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNsdWRlICJVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggOWYy
YWJhMzlmMmNlNzA4ZDMxM2I4ZDk0MGNmOTZmYmE0MmZjYzk0ZS4uZmRhYWE2OTQ1ZmYwZTlkNTE1
MWFhYTg5YTdhOTkyMDdhYzFjMjllZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0y
NDksNyArMjQ5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAg
ICAgICAgICAgICAgICAgICAgc2NvcGUsIC8vIHNjb3BlCiAgICAgICAgICAgICAgICAgICAgIHN0
b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICAgICAg
IG9wZXJhbmQsIC8vIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RU
aHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbiksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhE
b05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6
Ok5vdEluaXRpYWxpemF0aW9uLCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFNb2RlKCkpLCAvLyBp
bmZvCiAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xU
YWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB9
KSwgLy8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4CiAgICAgICAgICAgICAgICAgICAgIHN0
b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAgICAgICAgICAgICAg
ICAgKTsKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
OjpydW4oKQogICAgICAgICAgICAgICAgICAgICBvcGVyYW5kLCAvLyBkc3QKICAgICAgICAgICAg
ICAgICAgICAgc2NvcGUsIC8vIHNjb3BlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRl
bnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCi0gICAgICAgICAgICAgICAgICAgIEdldFB1dElu
Zm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25N
b2RlOjpOb3RJbml0aWFsaXphdGlvbiksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgR2V0
UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXph
dGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFNb2Rl
KCkpLCAvLyBpbmZvCiAgICAgICAgICAgICAgICAgICAgIDAsIC8vIGxvY2FsIHNjb3BlIGRlcHRo
CiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2Nv
cGUgb2Zmc2V0CiAgICAgICAgICAgICAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjZDc1NDY4MGMxMjZhMGY3
Mjc1MzZmMWJlMzdjNGUuLjFmNTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4ZjdlYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpA
QCAtMjcsNiArMjcsNyBAQCB0eXBlcyBbCiAgICAgOkJhc2ljQmxvY2tMb2NhdGlvbiwKICAgICA6
Qm91bmRMYWJlbCwKICAgICA6RGVidWdIb29rVHlwZSwKKyAgICA6RUNNQU1vZGUsCiAgICAgOkVy
cm9yVHlwZSwKICAgICA6R2V0QnlJZE1vZGUsCiAgICAgOkdldEJ5SWRNb2RlTWV0YWRhdGEsCkBA
IC0xNzQsNiArMTc1LDcgQEAgb3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRvX3RoaXMsCiAgICAg
YXJnczogewogICAgICAgICBzcmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1v
ZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FjaGVkU3Ry
dWN0dXJlSUQ6IFN0cnVjdHVyZUlELApAQCAtNTIyLDYgKzUyNCw3IEBAIG9wIDpwdXRfYnlfaWRf
d2l0aF90aGlzLAogICAgICAgICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
cHJvcGVydHk6IHVuc2lnbmVkLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAg
ICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6ZGVsX2J5X2lkLApAQCAtNTI5
LDYgKzUzMiw3IEBAIG9wIDpkZWxfYnlfaWQsCiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiB1bnNp
Z25lZCwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOmdldF9ieV92
YWwsCkBAIC01NDgsNiArNTUyLDcgQEAgb3AgOnB1dF9ieV92YWwsCiAgICAgICAgIGJhc2U6IFZp
cnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAg
ICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2Zp
bGUsCkBAIC01NTksNiArNTY0LDcgQEAgb3AgOnB1dF9ieV92YWxfd2l0aF90aGlzLAogICAgICAg
ICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxS
ZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1v
ZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOnB1dF9ieV92YWxfZGlyZWN0LApAQCAtNTY2LDYg
KzU3Miw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJl
Z2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1
ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKQEAg
LTU3Niw2ICs1ODMsNyBAQCBvcCA6ZGVsX2J5X3ZhbCwKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAog
b3AgOnB1dF9nZXR0ZXJfYnlfaWQsCkBAIC03NzgsNiArNzg2LDcgQEAgb3AgOmNhbGxfZXZhbCwK
ICAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGFyZ2M6IHVuc2lnbmVk
LAogICAgICAgICBhcmd2OiB1bnNpZ25lZCwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxM
aW5rSW5mbywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggNjU3ZTJiYjNlMjNiYTc1YjQ2NzIwMzBhYWMzOGY2Zjg1M2MyNDlmNS4uZGFlZGVjYjQ5
YTliNzY0ZmFmNGExYzRlNzZhZjg1ZTcxZWY1YjcxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZShQcmludFN0cmVhbSYgb3V0LCBKSVRUeXBlIGppdFR5
cGUpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiIChOZXZlckZUTE9wdGltaXplKSIpOwogICAg
IGlmIChvd25lckV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKQogICAgICAgICBv
dXQucHJpbnQoIiAoRGlkVHJ5VG9FbnRlckluTG9vcCkiKTsKLSAgICBpZiAob3duZXJFeGVjdXRh
YmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNJblN0
cmljdENvbnRleHQoKSkKICAgICAgICAgb3V0LnByaW50KCIgKFN0cmljdE1vZGUpIik7CiAgICAg
aWYgKG1fZGlkRmFpbEpJVENvbXBpbGF0aW9uKQogICAgICAgICBvdXQucHJpbnQoIiAoSklURmFp
bCkiKTsKQEAgLTYxOSw3ICs2MTksNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAg
ICAgICAgICBBU1NFUlQoIWlzSW5pdGlhbGl6YXRpb24oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLnJlc29sdmVUeXBlKCkgPT0gTG9jYWxDbG9zdXJlVmFyKSB7Ci0gICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8u
cmVzb2x2ZU1vZGUoKSwgQ2xvc3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxp
emF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFy
LCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVjb2RlLm1f
Z2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KIApAQCAtNjI3LDkgKzYyNyw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxP
YmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdl
dCwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9k
ZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9
IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUs
IGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAg
ICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5m
by5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6
YXRpb25Nb2RlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAg
ICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9k
ZSgpLCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2Rl
KCkpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8o
Ynl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZv
LmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9w
LnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEds
b2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBv
cC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQpAQCAt
NjYxLDcgKzY2MSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBSZXNv
bHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCks
IGJ5dGVjb2RlLm1fc3ltYm9sVGFibGVPclNjb3BlRGVwdGguc2NvcGVEZXB0aCgpLCBzY29wZSwg
aWRlbnQsIFB1dCwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAgICAgICAgICAgbWV0YWRhdGEu
bV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1v
ZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2Rl
KCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0g
R2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGlj
YWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cykKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBv
aW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyIHx8IG9w
LnR5cGUgPT0gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBkM2IwNmE4OTFhZWZjNmM3OTRk
NzVlMWMwZDAwNDZlMTkyMzhlODI2Li5lMTExMzlkNWEzODQzNWEwNmRlMjY3NzVmZmYzMTAwMTVl
Y2M0NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBA
IC0yMjIsOSArMjIyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wTWF0aElDU3RhdHMoKTsK
IAotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUt
PmlzU3RyaWN0TW9kZSgpOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZENvZGUtPmlzQ29uc3RydWN0b3IoKTsgfQotICAgIEVDTUFNb2RlIGVjbWFN
b2RlKCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3Ry
aWN0TW9kZTsgfQogICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZENvZGUtPmNvZGVUeXBlKCk7IH0KIAogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPnNjcmlwdE1vZGUoKTsgfQpAQCAt
MjMyLDExICsyMzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNJbnN0YWxsZWRWTVRyYXBCcmVh
a3BvaW50cygpIGNvbnN0OwogICAgIGJvb2wgaW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRzKCk7CiAK
LSAgICBpbmxpbmUgYm9vbCBpc0tub3duTm90SW1tZWRpYXRlKFZpcnR1YWxSZWdpc3RlciByZWcp
CisgICAgaW5saW5lIGJvb2wgaXNLbm93bkNlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAgICB7
Ci0gICAgICAgIGlmIChyZWcgPT0gdGhpc1JlZ2lzdGVyKCkgJiYgIWlzU3RyaWN0TW9kZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkp
CiAgICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnQocmVnKS5pc0NlbGwoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA3N2Yx
OTI5MDY5MDgzMzZlYmQwMDhkY2YwYzM2ZjRhYzZlOWU3NWQ0Li40OWVkZDUyODVkNWMyYzI4YjFj
OWE0YmNlZWY0NTE3MTk5MGJlOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzYsOSArMzYsOCBAQCBlbnVtIGNsYXNzIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIC8vIEZJWE1FOiBU
aGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mg
c2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxl
SW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9y
LCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGlu
ZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4
dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICBFeGVjdXRhYmxlSW5mbyhi
b29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24s
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3Jp
cHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENv
bnRleHRUeXBlKQogICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCi0gICAgICAgICwgbV9p
c1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0Nv
bnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rp
b24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCkpCkBAIC01Nyw3ICs1Niw2IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7
CiAgICAgfQogCiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7
IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2Rl
OyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVj
dG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNC
dWlsdGluRnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9y
S2luZCk7IH0KQEAgLTcyLDcgKzcwLDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIAogcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3Ry
aWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNp
Z25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9y
S2luZCA6IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJj
MmM2NjlmN2NhZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi42NGVlYWI4YmQ5OTJmOTliMjg2ODNj
OWIwMDY0ZjQ5ZDA5NTM4MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IEZpdHM7CiAKIC8vIEltcGxpY2l0IGNvbnZlcnNpb24g
Zm9yIHR5cGVzIG9mIHRoZSBzYW1lIHNpemUKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIE9wY29kZVNp
emUgc2l6ZT4KLXN0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKFQp
ID09IHNpemUsIHN0ZDo6dHJ1ZV90eXBlPj4geworc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjpl
bmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZSAmJiBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VD46
OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5h
bWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwogCiAgICAgc3RhdGljIGJvb2wgY2hl
Y2soVCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTc3LDE1ICsxNzcsMTYgQEAgc3RydWN0IEZpdHM8
R2V0UHV0SW5mbywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplICE9IE9wY29kZVNpemU6Oldp
ZGUzMiwgc3RkOjoKICAgICAvLwogICAgIC8vIFRyeSB0byBlbmNvZGUgZW5jb2RlIGFzCiAgICAg
Ly8KLSAgICAvLyAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gbW9kZQotICAgIC8vICAgICAgICAg
ICAgICAgICAgICB2Ci0gICAgLy8gZnJlZSBiaXQtPiAwfDAwMDB8MDB8MAotICAgIC8vICAgICAg
ICAgICAgICAgICBeICAgIF4KLSAgICAvLyAgICByZXNvbHZlICB0eXBlICAgcmVzb2x2ZSBtb2Rl
CisgICAgLy8gICAgICAgICAgICBpbml0aWFsaXphdGlvbiBtb2RlCisgICAgLy8gICAgICAgICAg
ICAgICAgICAgICB2CisgICAgLy8gaXNTdHJpY3QgLT4gMHwwMDAwfDAwfDAKKyAgICAvLyAgICAg
ICAgICAgICAgICAgIF4gICAgXgorICAgIC8vICAgICAgcmVzb2x2ZSAgdHlwZSAgICByZXNvbHZl
IG1vZGUKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3Jlc29sdmVUeXBlTWF4ID0gMSA8PCA0
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlTWF4ID0gMSA8
PCAyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZU1vZGVNYXggPSAxIDw8IDE7
CiAKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gKHNfcmVzb2x2ZVR5
cGVNYXggLSAxKSA8PCAzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZVR5cGVC
aXRzID0gKHNfcmVzb2x2ZVR5cGVNYXggLSAxKSA8PCAzOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlQml0cyA9IChzX2luaXRpYWxpemF0aW9uTW9kZU1heCAt
IDEpIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19yZXNvbHZlTW9kZUJpdHMgPSAo
c19yZXNvbHZlTW9kZU1heCAtIDEpOwpAQCAtMjA2LDcgKzIwNyw4IEBAIHN0cnVjdCBGaXRzPEdl
dFB1dEluZm8sIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZSAhPSBPcGNvZGVTaXplOjpXaWRl
MzIsIHN0ZDo6CiAgICAgICAgIGF1dG8gcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDx1aW50OF90
PihncGkucmVzb2x2ZVR5cGUoKSk7CiAgICAgICAgIGF1dG8gaW5pdGlhbGl6YXRpb25Nb2RlID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKICAgICAgICAg
YXV0byByZXNvbHZlTW9kZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5yZXNvbHZlTW9kZSgp
KTsKLSAgICAgICAgcmV0dXJuIChyZXNvbHZlVHlwZSA8PCAzKSB8IChpbml0aWFsaXphdGlvbk1v
ZGUgPDwgMSkgfCByZXNvbHZlTW9kZTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KGdwaS5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAgICAgICByZXR1cm4g
KGlzU3RyaWN0IDw8IDcpIHwgKHJlc29sdmVUeXBlIDw8IDMpIHwgKGluaXRpYWxpemF0aW9uTW9k
ZSA8PCAxKSB8IHJlc29sdmVNb2RlOwogICAgIH0KIAogICAgIHN0YXRpYyBHZXRQdXRJbmZvIGNv
bnZlcnQoVGFyZ2V0VHlwZSBncGkpCkBAIC0yMTQsMTAgKzIxNiw0NSBAQCBzdHJ1Y3QgRml0czxH
ZXRQdXRJbmZvLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemUgIT0gT3Bjb2RlU2l6ZTo6V2lk
ZTMyLCBzdGQ6OgogICAgICAgICBhdXRvIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2
ZVR5cGU+KChncGkgJiBzX3Jlc29sdmVUeXBlQml0cykgPj4gMyk7CiAgICAgICAgIGF1dG8gaW5p
dGlhbGl6YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25Nb2RlPigoZ3BpICYg
c19pbml0aWFsaXphdGlvbk1vZGVCaXRzKSA+PiAxKTsKICAgICAgICAgYXV0byByZXNvbHZlTW9k
ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVNb2RlPihncGkgJiBzX3Jlc29sdmVNb2RlQml0cyk7Ci0g
ICAgICAgIHJldHVybiBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSwgaW5pdGlh
bGl6YXRpb25Nb2RlKTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+
KGdwaSAmIHNfaXNTdHJpY3RCaXQpOworICAgICAgICByZXR1cm4gR2V0UHV0SW5mbyhyZXNvbHZl
TW9kZSwgcmVzb2x2ZVR5cGUsIGluaXRpYWxpemF0aW9uTW9kZSwgaXNTdHJpY3QgPyBFQ01BTW9k
ZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpOwogICAgIH0KIH07CiAKK3RlbXBsYXRl
PE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4geworICAg
IHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5
cGU7CisKKyAgICAvLyBQdXRCeUlkRmxhZ3MgaXMganVzdCB0d28gYm9vbGVhbiB2YWx1ZXMgZW5j
b2RlZCBhcworICAgIC8vCisgICAgLy8gICAgICAgIGlzU3RyaWN0CisgICAgLy8gICAgICAgICAg
IHYKKyAgICAvLyAgICAwMDAwMDB8MHwwCisgICAgLy8gICAgICAgICAgICAgXgorICAgIC8vICAg
ICAgICAgaXNEaXJlY3QKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGlyZWN0Qml0ID0g
MTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsKKworICAgIHN0
YXRpYyBib29sIGNoZWNrKFB1dEJ5SWRGbGFncykKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoUHV0QnlJZEZsYWdzIGZs
YWdzKQorICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGZsYWdzLmlzRGlyZWN0KCkpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpKTsKKyAgICAgICAgcmV0dXJuIChp
c1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OworICAgIH0KKworICAgIHN0YXRpYyBQdXRCeUlkRmxh
Z3MgY29udmVydChUYXJnZXRUeXBlIGdwaSkKKyAgICB7CisgICAgICAgIGF1dG8gaXNEaXJlY3Qg
PSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKKyAgICAgICAgYXV0byBp
c1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOworICAgICAg
ICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9k
ZTo6c2xvcHB5KCk7CisgICAgICAgIHJldHVybiBpc0RpcmVjdCA/IFB1dEJ5SWRGbGFnczo6Y3Jl
YXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKTsKKyAg
ICB9Cit9OwogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZp
dHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6Omlz
X2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpAQCAtMzI3LDQgKzM2NCwyOSBAQCBzdHJ1Y3QgRml0
czxHZW5lcmljQm91bmRMYWJlbDxHZW5lcmF0b3JUcmFpdHM+LCBzaXplPiA6IHB1YmxpYyBGaXRz
PGludCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0
cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsK
KyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIC8vIGEgcGFpciBv
ZiAoUmVzdWx0VHlwZTo6VHlwZSwgUmVzdWx0VHlwZTo6VHlwZSkgLSB0cnkgdG8gZml0IGVhY2gg
dHlwZSBpbnRvIDQgYml0cworICAgIC8vIGFkZGl0aW9uYWxseSwgZW5jb2RlIHVua25vd24gdHlw
ZXMgYXMgMCByYXRoZXIgdGhhbiB0aGUgfCBvZiBhbGwgdHlwZXMKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIHR5cGVXaWR0aCA9IDQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBtYXhUeXBlID0gKDEgPDwgdHlwZVdpZHRoKSAtIDE7CisKKyAgICBzdGF0aWMgYm9vbCBjaGVj
ayhFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpjaGVjayhl
Y21hTW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdHlwZW5hbWUgQmFzZTo6VGFy
Z2V0VHlwZSBjb252ZXJ0KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEJhc2U6OmNvbnZlcnQoZWNtYU1vZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIEVD
TUFNb2RlIGNvbnZlcnQodHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBlY21hTW9kZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUoQmFzZTo6Y29udmVydChlY21hTW9k
ZSkpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAppbmRleCAzZTNlNjVmNTlj
NTEzMDFlYjJmNDRiMmQyMzFlZmNlY2E5MWVjY2YxLi43OTkxYWMyYThlNjdjODgwZWIzOGU3NjQ1
ZjQ0YjI5ZGQzN2FjYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQ2FsbEZyYW1lLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIElubGluZUNhbGxG
cmFtZTo6ZHVtcEJyaWVmRnVuY3Rpb25JbmZvcm1hdGlvbihQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogdm9pZCBJbmxpbmVDYWxsRnJhbWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwg
RHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KGJyaWVmRnVuY3Rp
b25JbmZvcm1hdGlvbigpLCAiOjwiLCBSYXdQb2ludGVyKGJhc2VsaW5lQ29kZUJsb2NrLmdldCgp
KSk7Ci0gICAgaWYgKGlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChpc0luU3RyaWN0Q29udGV4dCgp
KQogICAgICAgICBvdXQucHJpbnQoIiAoU3RyaWN0TW9kZSkiKTsKICAgICBvdXQucHJpbnQoIiwg
IiwgZGlyZWN0Q2FsbGVyLmJ5dGVjb2RlSW5kZXgoKSwgIiwgIiwgc3RhdGljX2Nhc3Q8S2luZD4o
a2luZCkpOwogICAgIGlmIChpc0Nsb3N1cmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCmluZGV4IGUyOWYzODRkMWQwNjcyZmVlYTA3
MTIwNWJjYWEyODFhNjQ5YjIyMjkuLjc1ZjliYjFhODQ2OGE2MWQ3YmU5NmMzYWM5YjkxZTk1M2Vh
M2JmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmgKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAg
ICBwdHJkaWZmX3QgY2FsbGVyRnJhbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdGFja09mZnNl
dCAqIHNpemVvZihSZWdpc3RlcikgKyBDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCk7IH0K
ICAgICBwdHJkaWZmX3QgcmV0dXJuUENPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdGFja09mZnNl
dCAqIHNpemVvZihSZWdpc3RlcikgKyBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCk7IH0KIAot
ICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpOyB9CisgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENv
bnRleHQoKTsgfQogCiAgICAgdm9pZCBkdW1wQnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKFByaW50
U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCmluZGV4IGM4
YTRiNjBmYTU4OGIwMTdkNzllY2YyNzBkOTdhYmI2OGEyNDgyNDkuLjY2NTAwZTYyNzZiYzQ2OTdi
ZTBlZWExZDg4MTQ5ZmYxYTUwMTRkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCkBAIC0zNiw4ICszNiwxMCBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlJZEZs
YWdzIGZsYWdzKSB7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAgaWYgKGZsYWdz
ICYgUHV0QnlJZElzRGlyZWN0KQorICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQogICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJJc0RpcmVjdCIpOworICAgIGlmIChmbGFncy5lY21hTW9kZSgpLmlz
U3RyaWN0KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIlN0cmljdCIpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkRmxhZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
RmxhZ3MuaAppbmRleCA1YzA0OTI4MTBlMWM5M2ZmNjE1M2U2NTZlZjQ0Yzc3ZTJmZjk3NDhlLi44
ZWMwZGJhNmU0NGU3YTMxMTY0Y2E5N2EzMzFmNGU3Y2Q1NzQxYWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCkBAIC0yOSwxMyArMjksMzIgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0QnlJZEZsYWdzIDogaW50MzJfdCB7Ci0gICAg
UHV0QnlJZE5vbmUgPSAwLAorY2xhc3MgUHV0QnlJZEZsYWdzIHsKK3B1YmxpYzoKKyAgICBjb25z
dGV4cHIgc3RhdGljIFB1dEJ5SWRGbGFncyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAg
eworICAgICAgICByZXR1cm4gUHV0QnlJZEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7CisgICAgfQog
Ci0gICAgLy8gVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IHRoZSBwdXRfYnlfaWQgaXMgZGlyZWN0
LiBUaGF0IG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQKLSAgICAvLyBj
aGVja2luZyBpZiB0aGUgcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KLSAgICBQdXRCeUlk
SXNEaXJlY3QgPSAweDEsCi0gICAgUHV0QnlJZFBlcnNpc3RlbnRGbGFnc01hc2sgPSAweDEsCisg
ICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5
IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCisgICAgLy8gcHJvdG90eXBlIGNoYWluIGhhcyBhIHNl
dHRlci4KKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5SWRGbGFncyBjcmVhdGVEaXJlY3QoRUNN
QU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlJZEZsYWdzKHRydWUs
IGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0RpcmVjdDsgfQorICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9l
Y21hTW9kZTsgfQorCitwcml2YXRlOgorICAgIGNvbnN0ZXhwciBQdXRCeUlkRmxhZ3MoYm9vbCBp
c0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVj
dCkKKyAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBi
b29sIG1faXNEaXJlY3Q7CisgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCmluZGV4IDJjYmNiY2FjOTIwNGQ1ZDMwN2UyY2I0ODNkM2VmMDhhM2E3MWUxNGQu
LmYxZWRiMzgwN2ViMDIxZTQ0NDljY2Q2MTA2OWFmMmFiODYzOTA3YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgQnl0ZWNvZGUKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbik7CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQg
Y29uZGl0aW9uU2V0OwotICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJl
Y3QpKSB7CisgICAgaWYgKCEoYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpKSkgewogICAgICAg
ICBjb25kaXRpb25TZXQgPQogICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVy
dHlTZXR0ZXJNaXNzQ29uY3VycmVudGx5KAogICAgICAgICAgICAgICAgIHZtLCBwcm9maWxlZEJs
b2NrLT5nbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlLCB1aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTg5MWYy
YTVjMjU3N2I5OWM1MjkyMmQzZGZkZjU5NmJhMmZlNTZiZi4uNTRkYTU3ZGFiNjljYTI2MWFlZmRj
ZWI5MzhmZmEwZjRmZjAzNzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC01Nyw3ICs1Nyw2IEBAIGNvbnN0IENs
YXNzSW5mbyBVbmxpbmtlZENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRDb2RlQmxvY2si
LCBudWxscHRyLCBudWxsCiBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZVR5cGUsIGNvbnN0IEV4ZWN1
dGFibGVJbmZvJiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3VzZXNFdmFsKGlu
Zm8udXNlc0V2YWwoKSkKLSAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8uaXNTdHJpY3RNb2RlKCkp
CiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5pc0NvbnN0cnVjdG9yKCkpCiAgICAgLCBtX2hh
c0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZv
LmlzQnVpbHRpbkZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGRkMjE3YjdmZDRmZWY1NmRmOGQ4MWMzNWMy
ODEzM2Q1Yzg3YTFhOWMuLjAwZGM2MTYzMzVmZDMxYjA0MzI1MWUzNDQwMGU1N2RlZjUzMTVkNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCkBAIC0xMjMsNyArMTIzLDYgQEAgcHVibGljOgogICAgIGVudW0geyBDYWxsRnVuY3Rp
b24sIEFwcGx5RnVuY3Rpb24gfTsKIAogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VzRXZhbDsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQpAQCAt
MzM1LDcgKzMzNCw2IEBAIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdp
c3RlcjsKIAogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNT
dHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVu
c2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWls
dGluRnVuY3Rpb24gOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCAyMTNhM2E4MzJkN2Vh
YWE5Yjk3MTBmMDFhODY0ZGE5MzViZGQ3ZWE1Li4yZWI5ODRjMWIwNWE0NWUwYWE1MjBlMWZkMzc4
YWQ5ZTJmYzkzMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtNTAsNyArNTAsNiBAQCBw
dWJsaWM6CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3Jp
cHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAg
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7
IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+dXNlc0V2YWwoKTsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggY2Q4YmViZjhkMzY0NTQ1ZDE4MmQ3OWNiZjgw
NjgwNjcxZjQxMTk3Zi4uMGJmMzAyOGQ4MTBjNjE2ZWIwN2FkYTY2YzU3ZGE5Mjk5ZTFiYmNjZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC03MSwxMCArNzEsMTEgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aygKIAogICAgIGJvb2wgaXNDbGFzc0NvbnRleHQgPSBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmco
KSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsKIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rp
b25Db2RlLCBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlz
U3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBV
bmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNj
cmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFi
bGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rp
b25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZt
LCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5k
ID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFi
bGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0
VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwg
aXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNv
ZGVHZW5lcmF0aW9uTW9kZSk7CiAKICAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKLSAg
ICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCks
IHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlh
Ymxlcyk7CisgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29u
dGV4dCgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOworICAgIGVy
cm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291
cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgJnBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYTAxZDQ3ZDdkYzBiYzFiNDgwMTY1YmJjZDI2
NmQxMWE2YzIzMmI0NS4uNjI4NDFiNTY3ZDBlMWY4ODRlZWFmZTdmNjIwZWMxZTA4OTMxYzc5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKQEAgLTI5NywxNCArMjk3LDIxIEBAIFBhcnNlckVycm9yIEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgcmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVy
cm9yOjpFcnJvck5vbmUpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3Jh
bU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNt
YU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJh
dGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5v
ZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
KQogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2RlKQogICAgICwgbV92bSh2bSkKKyAgICAsIG1f
dXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQor
ICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2
YWwoZmFsc2UpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQorICAgICwgbV9oYXNDYWNo
ZWRWYXJpYWJsZXNVbmRlclREWihmYWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVu
Y3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1O
b2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMtPnNpemUoKSk7CiAKQEAgLTMzOCwxNCArMzQ1LDE3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQCiAgICAgfQogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
KQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNt
YU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJh
dGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25O
b2RlKQogICAgICwgbV9jb2RlVHlwZShGdW5jdGlvbkNvZGUpCiAgICAgLCBtX3ZtKHZtKQorICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIGZsYWcKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMo
ZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQogICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgLCBtX3VzZXNO
b25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgp
ICYmICFlY21hTW9kZS5pc1N0cmljdCgpKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJs
ZSB0byBoYXZlIHRhaWwgY2FsbCBlbGltaW5hdGlvbiB3aXRoIHRoZSBwcm9maWxlcgogICAgIC8v
IGVuYWJsZWQuIFRoaXMgaXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSBiZWNhdXNlIHRoZSBwcm9m
aWxlciBleHBlY3RzCiAgICAgLy8gb3Bfd2lsbF9jYWxsIC8gb3BfZGlkX2NhbGwgcGFpcnMgYmVm
b3JlIGFuZCBhZnRlciBhIGNhbGwsIHdoaWNoIGFyZSBub3QKQEAgLTM1Myw4ICszNjMsMTAgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4ODE5CiAgICAgLy8KICAgICAvLyBOb3RlIHRoYXQgd2UgaW50ZW50
aW9uYWxseSBlbmFibGUgdGFpbCBjYWxsIGZvciBuYWtlZCBjb25zdHJ1Y3RvcnMgc2luY2UgaXQg
ZG9lcyBub3QgaGF2ZSBzcGVjaWFsIGNvZGUgZm9yICJyZXR1cm4iLgotICAgICwgbV9pblRhaWxQ
b3NpdGlvbihPcHRpb25zOjp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUo
KSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlz
Q29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5k
ZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChm
dW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZnVuY3Rpb25Ob2RlLT51c2VzRXZh
bCgpKQorICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRU
eXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CiAgICAgU3ltYm9sVGFibGUq
IGZ1bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwpAQCAtNDM3
LDcgKzQ0OSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgaWYgKGZ1bmN0aW9uTmFt
ZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25N
b2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSk7CiAgICAgICAgIEFTU0VSVCghaXNBc3luY0Z1bmN0aW9uQm9keVBh
cnNlTW9kZShwYXJzZU1vZGUpKTsKLSAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0
aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSk7CisgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5h
bWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGVjbWFNb2RlLmlzU3RyaWN0
KCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJlcyhmdW5j
dGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9
IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAgICAgIGVtaXRQ
dXNoRnVuY3Rpb25OYW1lU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVSZWdp
c3RlciwgbWFya0FzQ2FwdHVyZWQpOwpAQCAtNDg3LDcgKzQ5OSw3IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlCiAgICAgICAgIG1fYXJndW1lbnRzUmVnaXN0ZXItPnJlZigpOwogICAgIH0KICAg
ICAKLSAgICBpZiAobmVlZHNBcmd1bWVudHMgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkg
JiYgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgaWYgKG5lZWRzQXJndW1lbnRzICYmICFl
Y21hTW9kZS5pc1N0cmljdCgpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewogICAgICAgICAv
LyBJZiB3ZSBjYXB0dXJlZCBhbnkgZm9ybWFsIHBhcmFtZXRlciBieSBuYW1lLCB0aGVuIHdlIHVz
ZSBTY29wZWRBcmd1bWVudHMuIE90aGVyd2lzZSB3ZQogICAgICAgICAvLyB1c2UgRGlyZWN0QXJn
dW1lbnRzLiBXaXRoIFNjb3BlZEFyZ3VtZW50cywgd2UgbGlmdCBhbGwgb2Ygb3VyIGFyZ3VtZW50
cyBpbnRvIHRoZQogICAgICAgICAvLyBhY3RpdmF0aW9uLgpAQCAtNTE2LDcgKzUyOCw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgICAgIGVudHJ5LmRpc2FibGVX
YXRjaGluZyhtX3ZtKTsKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+
c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgbmFtZSwgZW50cnkpOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3RlciwgVUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVk
aW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVW
YXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLCBTeW1ib2xUYWJsZU9y
U2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25z
dGFudEluZGV4IH0pLCBvZmZzZXQub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIE9wUHV0VG9T
Y29wZTo6ZW1pdCh0aGlzLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBVSU5UX01BWCwg
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5m
byhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpO
b3RJbml0aWFsaXphdGlvbiwgZWNtYU1vZGUpLCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3lt
Ym9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBv
ZmZzZXQub2Zmc2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICAvLyBUaGlzIGNyZWF0ZXMgYSBzY29wZWQgYXJndW1lbnRzIG9iamVjdCBhbmQgY29waWVzIHRo
ZSBvdmVyZmxvdyBhcmd1bWVudHMgaW50byB0aGUKQEAgLTU1NCwxMSArNTY2LDExIEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQmlu
ZGluZ05vZGUqPihwYXJhbWV0ZXJzLmF0KGkpLmZpcnN0KS0+Ym91bmRQcm9wZXJ0eSgpOwogICAg
ICAgICAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgbmFt
ZSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3RlciwgYWRkQ29uc3RhbnQoaWRlbnQpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9z
dXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgU3ltYm9sVGFi
bGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxl
Q29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIE9wUHV0VG9T
Y29wZTo6ZW1pdCh0aGlzLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBhZGRDb25zdGFu
dChpZGVudCksIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSks
IEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0
aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIGVjbWFNb2RlKSwgU3ltYm9sVGFibGVPclNjb3Bl
RGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJ
bmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBp
ZiAobmVlZHNBcmd1bWVudHMgJiYgKGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgfHwgIWlzU2lt
cGxlUGFyYW1ldGVyTGlzdCkpIHsKKyAgICBpZiAobmVlZHNBcmd1bWVudHMgJiYgKGVjbWFNb2Rl
LmlzU3RyaWN0KCkgfHwgIWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkpIHsKICAgICAgICAgLy8gQWxs
b2NhdGUgYSBjbG9uZWQgYXJndW1lbnRzIG9iamVjdC4KICAgICAgICAgT3BDcmVhdGVDbG9uZWRB
cmd1bWVudHM6OmVtaXQodGhpcywgbV9hcmd1bWVudHNSZWdpc3Rlcik7CiAgICAgfQpAQCAtNzEy
LDcgKzcyNCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgICAg
IGJvb2wgc2hvdWxkRW1pdFRvVGhpcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBpZiAo
ZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCBtX3Nj
b3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlVGhpcygpIHx8IG1fc2NvcGVOb2Rl
LT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VFdmFsKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRFbWl0VG9UaGlzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoKGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVydHkoKSB8fCBtX3Njb3BlTm9kZS0+ZG9B
bnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpKSAmJiAhY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgoZnVuY3Rpb25O
b2RlLT51c2VzU3VwZXJQcm9wZXJ0eSgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dG
dW5jdGlvbnNVc2VTdXBlclByb3BlcnR5KCkpICYmICFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IGVtaXQgdG9fdGhpcyB3aGVuIHdlJ3Jl
IG5vdCBpbiBzdHJpY3QgbW9kZSBiZWNhdXNlIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB3aWxsIGNvbnZlcnQgfHRoaXN8IHRvIGFuIG9iamVjdCwgYW5kIHRoYXQgb2JqZWN0IG1heSBi
ZSBwYXNzZWQKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGEgc3RyaWN0IGZ1bmN0aW9u
IGFzIHx0aGlzfC4gVGhpcyBpcyBvYnNlcnZhYmxlIGJlY2F1c2UgdGhhdApAQCAtODMzLDE1ICs4
NDUsMjEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVu
Y3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1f
c2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlw
ZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0
aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlu
a2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJh
dG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJs
b2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUp
CiAgICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxG
cmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKEV2YWxDb2RlKQog
ICAgICwgbV92bSh2bSkKLSAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2Vz
RXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV91c2VzRXhjZXB0
aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxv
Y2stPnVzZXNFdmFsKCkgJiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgLCBtX2luVGFpbFBv
c2l0aW9uKGZhbHNlKQorICAgICwgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWihmYWxzZSkK
ICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGV2YWxOb2RlLT51c2Vz
QXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZl
ZENvbnRleHRUeXBlKCkpCiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7
CkBAIC04OTEsMTUgKzkwOSwyMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIHB1c2hM
ZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwg
TmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJs
b2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0
ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+
KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5l
cmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQogICAgICwg
bV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1f
Y29kZVR5cGUoTW9kdWxlQ29kZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3VzZXNFeGNlcHRp
b25zKGZhbHNlKQorICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNC
dWlsdGluRnVuY3Rpb24oZmFsc2UpCiAgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQor
ICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVz
VW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4
dChtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBtb2R1bGVQcm9ncmFt
Tm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLT5zaXplKCkpOwogCkBAIC0yMzk1LDcgKzI0MTksNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldEZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNjbwogICAgICAgICAgICAga2lsbChkc3QpLAogICAgICAgICAgICAgc2NvcGUsCiAgICAgICAg
ICAgICBhZGRDb25zdGFudCh2YXJpYWJsZS5pZGVudCgpKSwKLSAgICAgICAgICAgIEdldFB1dElu
Zm8ocmVzb2x2ZU1vZGUsIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExvY2FsQ2xvc3Vy
ZVZhciA6IHJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pLAorICAgICAgICAgICAgR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgdmFyaWFibGUub2Zmc2V0
KCkuaXNTY29wZSgpID8gTG9jYWxDbG9zdXJlVmFyIDogcmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6
YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiwgZWNtYU1vZGUoKSksCiAgICAgICAgICAgICBs
b2NhbFNjb3BlRGVwdGgoKSwKICAgICAgICAgICAgIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUo
KSA/IHZhcmlhYmxlLm9mZnNldCgpLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgOiAwKTsKICAgICAg
ICAgcmV0dXJuIGRzdDsKQEAgLTI0MjIsMTEgKzI0NDYsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJp
YWJsZSYKICAgICAgICAgU2NvcGVPZmZzZXQgb2Zmc2V0OwogICAgICAgICBpZiAodmFyaWFibGUu
b2Zmc2V0KCkuaXNTY29wZSgpKSB7CiAgICAgICAgICAgICBvZmZzZXQgPSB2YXJpYWJsZS5vZmZz
ZXQoKS5zY29wZU9mZnNldCgpOwotICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8o
cmVzb2x2ZU1vZGUsIExvY2FsQ2xvc3VyZVZhciwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAg
ICAgICAgIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBMb2NhbENsb3N1cmVW
YXIsIGluaXRpYWxpemF0aW9uTW9kZSwgZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBzeW1ib2xU
YWJsZU9yU2NvcGVEZXB0aCA9IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShW
aXJ0dWFsUmVnaXN0ZXIgeyB2YXJpYWJsZS5zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoKSB9KTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlVHlwZSgpICE9IExv
Y2FsQ2xvc3VyZVZhcik7Ci0gICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNv
bHZlTW9kZSwgcmVzb2x2ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgICAg
IGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSgpLCBpbml0
aWFsaXphdGlvbk1vZGUsIGVjbWFNb2RlKCkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGVPclNj
b3BlRGVwdGggPSBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c2NvcGVEZXB0aChsb2NhbFNjb3Bl
RGVwdGgoKSk7CiAgICAgICAgIH0KICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIHNj
b3BlLCBhZGRDb25zdGFudCh2YXJpYWJsZS5pZGVudCgpKSwgdmFsdWUsIGdldFB1dEluZm8sIHN5
bWJvbFRhYmxlT3JTY29wZURlcHRoLCAhIW9mZnNldCA/IG9mZnNldC5vZmZzZXQoKSA6IDApOwpA
QCAtMjUwNyw3ICsyNTMxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHAKIAogICAgIG1fc3Rh
dGljUHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UsIHByb3BlcnR5SW5kZXgpOwogCi0gICAg
T3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBQdXRCeUlk
Tm9uZSk7IC8vIGlzIG5vdCBkaXJlY3QKKyAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwg
cHJvcGVydHlJbmRleCwgdmFsdWUsIFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKCkpKTsg
Ly8gaXMgbm90IGRpcmVjdAogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjUxNyw3ICsyNTQx
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWwKIAogICAgIHVuc2lnbmVkIHByb3BlcnR5SW5k
ZXggPSBhZGRDb25zdGFudChwcm9wZXJ0eSk7CiAKLSAgICBPcFB1dEJ5SWRXaXRoVGhpczo6ZW1p
dCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5SW5kZXgsIHZhbHVlKTsKKyAgICBPcFB1
dEJ5SWRXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5SW5kZXgs
IHZhbHVlLCBlY21hTW9kZSgpKTsKIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTI1MzAsNyAr
MjU1NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJ
ZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5
QW5hbHl6ZXIucHV0QnlJZChiYXNlLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIFB1dEJ5SWRGbGFn
cyB0eXBlID0gKHB1dFR5cGUgPT0gUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCB8fCBwcm9wZXJ0
eSAhPSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgPyBQdXRCeUlkSXNEaXJl
Y3QgOiBQdXRCeUlkTm9uZTsKKyAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBlID09IFBy
b3BlcnR5Tm9kZTo6S25vd25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT51bmRlcnNjb3JlUHJvdG8pID8gUHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUo
KSkgOiBQdXRCeUlkRmxhZ3M6OmNyZWF0ZShlY21hTW9kZSgpKTsKICAgICBPcFB1dEJ5SWQ6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHlJbmRleCwgdmFsdWUsIHR5cGUpOwogICAgIHJldHVybiB2
YWx1ZTsKIH0KQEAgLTI1OTAsNyArMjYxNCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRBc3luY0dlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotICAg
IE9wRGVsQnlJZDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CisgICAgT3BEZWxCeUlkOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgYWRkQ29uc3RhbnQocHJvcGVy
dHkpLCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0yNjM0LDI1ICsyNjU4
LDI1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWw6OmVtaXQodGhpcywgYmFz
ZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICBPcFB1dEJ5VmFsOjplbWl0KHRoaXMsIGJhc2UsIHBy
b3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlz
VmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQdXRCeVZhbFdpdGhUaGlzOjplbWl0KHRo
aXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGly
ZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwg
cHJvcGVydHksIHZhbHVlKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCiB7Ci0gICAgT3BE
ZWxCeVZhbDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBPcERlbEJ5VmFs
OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHksIGVjbWFNb2RlKCkpOwogICAgIHJldHVy
biBkc3Q7CiB9CiAKQEAgLTMyNDYsNyArMzI3MCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBl
YwogICAgIC8vIEVtaXQgY2FsbC4KICAgICBBU1NFUlQoZHN0KTsKICAgICBBU1NFUlQoZHN0ICE9
IGlnbm9yZWRSZXN1bHQoKSk7Ci0gICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2Fs
bEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0
YWNrT2Zmc2V0KCkpOworICAgIGlmIGNvbnN0ZXhwciAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFs
KQorICAgICAgICBDYWxsT3A6OmVtaXQodGhpcywgZHN0LCBmdW5jLCBjYWxsQXJndW1lbnRzLmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCksIGNhbGxBcmd1bWVudHMuc3RhY2tPZmZzZXQoKSwg
ZWNtYU1vZGUoKSk7CisgICAgZWxzZQorICAgICAgICBDYWxsT3A6OmVtaXQodGhpcywgZHN0LCBm
dW5jLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCksIGNhbGxBcmd1
bWVudHMuc3RhY2tPZmZzZXQoKSk7CiAgICAgCiAgICAgaWYgKGV4cGVjdGVkRnVuY3Rpb24gIT0g
Tm9FeHBlY3RlZEZ1bmN0aW9uKQogICAgICAgICBlbWl0TGFiZWwoZG9uZS5nZXQoKSk7CkBAIC0z
Nzg5LDcgKzM4MTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0aW9u
TmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZQogICAgIHVuc2lnbmVkIG51
bVZhcnMgPSBtX2NvZGVCbG9jay0+bnVtVmFycygpOwogICAgIHB1c2hMZXhpY2FsU2NvcGVJbnRl
cm5hbChuYW1lU2NvcGVFbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXpl
LCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBURFpSZXF1aXJlbWVudDo6
Tm90VW5kZXJURFosIFNjb3BlVHlwZTo6RnVuY3Rpb25OYW1lU2NvcGUsIFNjb3BlUmVnaXN0ZXJU
eXBlOjpWYXIpOwogICAgIEFTU0VSVF9VTlVTRUQobnVtVmFycywgbV9jb2RlQmxvY2stPm51bVZh
cnMoKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KG51bVZhcnMgKyAxKSk7IC8vIFNob3VsZCBoYXZlIG9u
bHkgY3JlYXRlZCBvbmUgbmV3ICJ2YXIiIGZvciB0aGUgZnVuY3Rpb24gbmFtZSBzY29wZS4KLSAg
ICBib29sIHNob3VsZFRyZWF0QXNMZXhpY2FsVmFyaWFibGUgPSBpc1N0cmljdE1vZGUoKTsKKyAg
ICBib29sIHNob3VsZFRyZWF0QXNMZXhpY2FsVmFyaWFibGUgPSBlY21hTW9kZSgpLmlzU3RyaWN0
KCk7CiAgICAgVmFyaWFibGUgZnVuY3Rpb25WYXIgPSB2YXJpYWJsZUZvckxvY2FsRW50cnkocHJv
cGVydHksIG1fbGV4aWNhbFNjb3BlU3RhY2subGFzdCgpLm1fc3ltYm9sVGFibGUtPmdldChOb0xv
Y2tpbmdOZWNlc3NhcnksIHByb3BlcnR5LmltcGwoKSksIG1fbGV4aWNhbFNjb3BlU3RhY2subGFz
dCgpLm1fc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlh
YmxlKTsKICAgICBlbWl0UHV0VG9TY29wZShtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3Nj
b3BlLCBmdW5jdGlvblZhciwgY2FsbGVlLCBUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9u
TW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogfQpAQCAtMzk3Miw3ICszOTk5LDcgQEAgYm9vbCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoY29uc3QgVmFy
aWFibGUmIHZhcmlhYmxlKQogewogICAgIC8vIElmIHdlJ3JlIGluIHN0cmljdCBtb2RlLCB3ZSBh
bHdheXMgdGhyb3cuCiAgICAgLy8gSWYgd2UncmUgbm90IGluIHN0cmljdCBtb2RlLCB3ZSB0aHJv
dyBmb3IgImNvbnN0IiB2YXJpYWJsZXMgYnV0IG5vdCB0aGUgZnVuY3Rpb24gY2FsbGVlLgotICAg
IGlmIChpc1N0cmljdE1vZGUoKSB8fCB2YXJpYWJsZS5pc0NvbnN0KCkpIHsKKyAgICBpZiAoZWNt
YU1vZGUoKS5pc1N0cmljdCgpIHx8IHZhcmlhYmxlLmlzQ29uc3QoKSkgewogICAgICAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3ZtLCBSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01MDU1LDcg
KzUwODIsNyBAQCB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OnJlY29yZCgpCiAKIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb1RoaXMoKQogewotICAgIE9wVG9UaGlzOjplbWl0KHRo
aXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgT3BUb1RoaXM6OmVtaXQodGhpcywga2ls
bCgmbV90aGlzUmVnaXN0ZXIpLCBlY21hTW9kZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggMjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJhZTc0YmFmZjU1
Yi4uNzA3NTk2YTQ5NzcyMDFjZWU3NDFlMzJhMTc4NzM2ZDU0YTE2Mjc2NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aApAQCAtMzgwLDEzICszODAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBGaW5hbGx5Q29udGV4dDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEluZGV4ZWRGb3JJbkNv
bnRleHQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBTdHJpY3RNb2RlU2NvcGU7CiAgICAgcHVibGljOgogICAgICAgICB0
eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAK
LSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVuY3Rp
b25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwotICAg
ICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0m
LCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwor
ICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOworICAg
ICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiAKICAgICAgICAgfkJ5dGVjb2Rl
R2VuZXJhdG9yKCk7CiAgICAgICAgIApAQCAtNDA2LDE0ICs0MDcsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKCk7IH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlLCB0eXBlbmFt
ZSBVbmxpbmtlZENvZGVCbG9jaz4KLSAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRl
KFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIGVudmly
b25tZW50KQorICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2Rl
KiBub2RlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5l
cmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogZW52aXJvbm1lbnQsIEVDTUFN
b2RlIGVjbWFNb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBNb25vdG9uaWNUaW1lIGJlZm9y
ZTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBp
bGVUaW1lcygpKSkKICAgICAgICAgICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKIAogICAgICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAg
YXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZt
LCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVu
dCk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRl
Y29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlv
bk1vZGUsIGVudmlyb25tZW50LCBlY21hTW9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IGJ5dGVjb2RlR2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKQEAgLTEwMTksNyAr
MTAyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHNob3VsZEVtaXRUeXBlUHJv
ZmlsZXJIb29rcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUdlbmVyYXRpb25Nb2RlLmNvbnRhaW5z
KENvZGVHZW5lcmF0aW9uTW9kZTo6VHlwZVByb2ZpbGVyKTsgfQogICAgICAgICBib29sIHNob3Vs
ZEVtaXRDb250cm9sRmxvd1Byb2ZpbGVySG9va3MoKSBjb25zdCB7IHJldHVybiBtX2NvZGVHZW5l
cmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2VuZXJhdGlvbk1vZGU6OkNvbnRyb2xGbG93UHJvZmls
ZXIpOyB9CiAgICAgICAgIAotICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQorICAgICAgICBFQ01BTW9kZSBlY21h
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KICAgICAgICAgdm9pZCBzZXRVc2Vz
Q2hlY2twb2ludHMoKSB7IG1fY29kZUJsb2NrLT5zZXRIYXNDaGVja3BvaW50cygpOyB9CiAKICAg
ICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5wYXJzZU1vZGUoKTsgfQpAQCAtMTI5Nyw4ICsxMjk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJv
b2wgbV91c2VzTm9uU3RyaWN0RXZhbCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9pblRhaWxQ
b3NpdGlvbiB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5j
dGlvbkNvbnRleHQ7CiAgICAgICAgIGJvb2wgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWiB7
IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQgOiAxOworICAgICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgbV9kZXJpdmVkQ29udGV4dFR5cGUgeyBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUg
fTsKIAogICAgICAgICBDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSBtX2NhY2hlZFZhcmlhYmxl
c1VuZGVyVERaOwpAQCAtMTMxMiw2ICsxMzE0LDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBWZWN0b3I8Q2F0Y2hFbnRyeT4gbV9leGNlcHRpb25IYW5kbGVyc1RvRW1pdDsKICAgICB9Owog
CisgICAgY2xhc3MgU3RyaWN0TW9kZVNjb3BlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFN0cmlj
dE1vZGVTY29wZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQorICAgICAgICAgICAgOiBt
X2dlbmVyYXRvcihnZW5lcmF0b3IpCisgICAgICAgICAgICAsIG1fcHJldmlvdXNFQ01BTW9kZShn
ZW5lcmF0b3IubV9lY21hTW9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgbV9nZW5lcmF0b3Iu
bV9lY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIH5T
dHJpY3RNb2RlU2NvcGUoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2dlbmVyYXRvci5tX2Vj
bWFNb2RlID0gbV9wcmV2aW91c0VDTUFNb2RlOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBCeXRlY29kZUdlbmVyYXRvciYgbV9nZW5lcmF0b3I7CisgICAgICAgIEVDTUFNb2Rl
IG1fcHJldmlvdXNFQ01BTW9kZTsKKyAgICB9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFt
ZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDE0YzMwNmQ1YWFjZjEzMGEyN2MxNzI4ZmQ0NGU0ODEz
ZDdmMjE1Ny4uZDUwYTJkOWNhY2JhY2JhOTczOTcyMzk1NjRiODNhYjU1MmJhOWM3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjkwMyw3ICsyOTAzLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgp
KQorICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICBpZiAobV9hc3NpZ25tZW50Q29udGV4dCA9PSBBc3Np
Z25tZW50Q29udGV4dDo6QXNzaWdubWVudEV4cHJlc3Npb24pCkBAIC0yOTIwLDcgKzI5MjAsNyBA
QCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiBy
ZXR1cm5SZXN1bHQgPSByZXN1bHQuZ2V0KCk7CiAgICAgaWYgKCFpc1JlYWRPbmx5KSB7Ci0gICAg
ICAgIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwg
dmFyLCByZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RG
b3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25t
ZW50Q29udGV4dChtX2Fzc2lnbm1lbnRDb250ZXh0KSk7CisgICAgICAgIHJldHVyblJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0KCks
IGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05v
dFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQo
bV9hc3NpZ25tZW50Q29udGV4dCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KHJlc3VsdC5nZXQoKSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KIApA
QCAtMzE0MCw3ICszMTQwLDcgQEAgUmVnaXN0ZXJJRCogRW1wdHlMZXRFeHByZXNzaW9uOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXMKICAgICB9IGVsc2Ug
ewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgZ2Vu
ZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUuZ2V0KCksIGdlbmVy
YXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93
SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIHZhciwgcG9zaXRpb24oKSwg
cG9zaXRpb24oKSArIG1faWRlbnQubGVuZ3RoKCkpOyAKICAgICB9CiAKQEAgLTMzNTAsMTMgKzMz
NTAsMTMgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHByb3BlcnQKICAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5tb3ZlKGxvY2FsLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGlmIChnZW5l
cmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICAgICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVyYXRvci5pc1N0cmlj
dE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVyYXRvci5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RG
b3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgIH0K
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5hbWUsIHZhciwgbV9s
ZXhwci0+cG9zaXRpb24oKSwgbV9sZXhwci0+cG9zaXRpb24oKSArIGlkZW50Lmxlbmd0aCgpKTsK
ICAgICB9OwpAQCAtMzYwNywxMyArMzYwNywxMyBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZh
cik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUobG9jYWwsIHZhbHVlKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgICAgIGlmICh2YXIu
aXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5
RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRv
U2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/
IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1v
ZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCB2YXIsIG1fbGV4cHItPnBvc2l0
aW9uKCksIG1fbGV4cHItPnBvc2l0aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAobV9sZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewpAQCAtNDM5Nyw2ICs0Mzk3
LDggQEAgdm9pZCBDbGFzc0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiB7CisgICAgU3RyaWN0TW9kZVNjb3BlIHN0cmljdE1vZGVTY29wZShnZW5lcmF0b3IpOworCiAg
ICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNh
bFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0
aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIApA
QCAtNDgzMSw3ICs0ODMzLDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKSBjb24KICAgICAgICAgICAg
IGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3NpYmxlKHZhcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZ2VuZXJh
dG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIs
IHZhcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNDg0MSw3ICs0ODQzLDcgQEAgdm9pZCBCaW5kaW5n
Tm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IHZhbHVlKSBjb24KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVl
ZGVkKHZhcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRU
b1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkg
PyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25N
b2RlRm9yQXNzaWdubWVudENvbnRleHQobV9iaW5kaW5nQ29udGV4dCkpOworICAgIGdlbmVyYXRv
ci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5k
LCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2JpbmRpbmdDb250ZXh0
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChtX2JpbmRpbmdDb250ZXh0ID09IEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCB8fCBtX2JpbmRpbmdDb250ZXh0ID09IEFzc2ln
bm1lbnRDb250ZXh0OjpDb25zdERlY2xhcmF0aW9uU3RhdGVtZW50KQogICAgICAgICBnZW5lcmF0
b3IubGlmdFREWkNoZWNrSWZQb3NzaWJsZSh2YXIpOwpAQCAtNDg3OSw3ICs0ODgxLDcgQEAgdm9p
ZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgICAg
IGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNr
SWZOZWNlc3NhcnkodmFyLCBudWxscHRyLCBzY29wZS5nZXQoKSk7CkBAIC00ODkwLDcgKzQ4OTIs
NyBAQCB2b2lkIEFzc2lnbm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgICAgICBpZiAoIWlzUmVhZE9ubHkpIHsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9k
ZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0
aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5p
c1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRp
YWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2Fzc2lnbm1lbnRUYXJnZXQtPmlzRG90QWNjZXNz
b3JOb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDM5Y2JmODJlMjExMzIwNWI1NmYzYTdkNjg3NjM1ZjBj
M2U3MGYxN2EuLmY0NWUwMWQwNjcxOTMwNzYyZmMwNzA4NTUwZjNlNDdiY2EzYzRiNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcApAQCAtMjEyLDkgKzIxMiw5IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNW
YWx1ZShWTSYgdm0pIGNvbnN0CiAgICAgaWYgKCF0aGlzVmFsdWUpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBOb3RTdHJpY3RNb2RlOwot
ICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAg
ZWNtYU1vZGUgPSBTdHJpY3RNb2RlOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6
OnNsb3BweSgpOworICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKKyAgICAgICAgZWNtYU1vZGUgPSBFQ01BTW9kZTo6
c3RyaWN0KCk7CiAgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFt
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIApAQCAtMjUzLDcgKzI1
Myw4IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU09iCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2
YXJpYWJsZXNVbmRlclREWjsKICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1Vu
ZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgYXV0
byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtl
U291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJp
dmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlz
QXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOwor
ICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJ
blN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHko
KTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxP
YmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2
bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgp
LCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigp
LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOwogICAgIGlm
IChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24g
PSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZWRjNDgzNDIxMjgxMzBkMGU4M2VmMjMwN2Iz
YTNlOWUwYWRiNWE2Yy4uMmMyMWJmYjE1ZDBhZmViMDc1ZGFmMDVhMzU4OWVlMDFiNWM4MDhiYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMTg1LDEwICsxODUsMTAgQEAgZW51bSBjbGFzcyBUb1Ro
aXNSZXN1bHQgewogICAgIEdsb2JhbFRoaXMsCiAgICAgRHluYW1pYywKIH07Ci1pbmxpbmUgVG9U
aGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBB
YnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCitpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlz
QW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1
ZUZvck5vZGUpCiB7CiAgICAgLy8gV2UgbG9vayBhdCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0
IHdpbGwgY292ZXIgbW9zdCBjYXNlcyBhbmQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxs
IHRoZSBzdHJ1Y3R1cmVzLgotICAgIGlmIChpc1N0cmljdE1vZGUpIHsKKyAgICBpZiAoZWNtYU1v
ZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZh
bHVlRm9yTm9kZS5tX3R5cGUgJiBTcGVjT2JqZWN0T3RoZXIpKQogICAgICAgICAgICAgcmV0dXJu
IFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgfSBlbHNlIHsKQEAgLTIwMiwyMCArMjAyLDIw
IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBp
c1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9k
ID09ICZKU09iamVjdDo6dG9UaGlzKQogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1
bHQ6OklkZW50aXR5OwogICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNTY29wZTo6
dG9UaGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAg
ICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFRvVGhpc1Jlc3VsdDo6VW5kZWZpbmVkOwogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNS
ZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoKGlzU3RyaWN0TW9kZSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9y
Tm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUu
aXNGaW5pdGUoKSkgeworICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JO
b2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2
YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICBib29sIGFsbFN0
cnVjdHVyZXNBcmVKU1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7
CiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9y
Tm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSkgewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsK
ICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3Ry
aW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJp
Z0ludFR5cGUpOwotICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCisgICAgICAgICAgICBp
ZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNP
YmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0
cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKICAgICAgICAgICAgIC8vIDEpIFdlIGFy
ZSBpbiBzdHJpY3QgbW9kZSBhbmQgc3RyaW5ncy9zeW1ib2xzIGFyZSBub3Qgd3JhcHBlZApAQCAt
MjI5LDcgKzIyOSw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZN
JiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGlmICghb3Zl
cnJpZGVzVG9UaGlzKQogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7
CiAgICAgICAgIGlmIChhbGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSkgewotICAgICAgICAgICAgaWYg
KGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKICAgICAgICAgICAg
IHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgIH0KQEAgLTI3MjksOSAr
MjcyOSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBUb1RoaXM6IHsKICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsKLSAgICAg
ICAgYm9vbCBzdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgp
OwogCi0gICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV92
bSwgc3RyaWN0TW9kZSwgc291cmNlKTsKKyAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlz
VG9UaGlzQW5JZGVudGl0eShtX3ZtLCBlY21hTW9kZSwgc291cmNlKTsKICAgICAgICAgc3dpdGNo
IChyZXN1bHQpIHsKICAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgogICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7CkBAIC0yNzQ1
LDcgKzI3NDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgZGVzdGlu
YXRpb24uc2V0VHlwZShtX2dyYXBoLCBTcGVjT2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6RHluYW1pYzoKLSAgICAgICAgICAgIGlmIChzdHJp
Y3RNb2RlKQorICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAg
ICAgICAgZGVzdGluYXRpb24ubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBlNmQ1YjY1YTRkMDExNmM2ODZh
ZTA2ZTExOGNkN2ZjYTkzNzY3MWNmLi5lZTA5NDY0NGU4MzE2MGQ3YjdhZGY2YzcwOWMyZWQ5ZDJl
OTRhYTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtMjQ1LDEwICsyNDUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUdl
dEJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5
cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzLCBB
Y2Nlc3NUeXBlLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpOwogICAgIHZvaWQgZW1pdFB1dEJ5
SWQoCi0gICAgICAgIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUq
IHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJlY3QpOworICAgICAgICBO
b2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CiAgICAgdm9pZCBoYW5k
bGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
LCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCi0gICAgICAgIGJvb2wgaXNEaXJl
Y3QsIHVuc2lnbmVkIGludHJ1Y3Rpb25TaXplKTsKKyAgICAgICAgYm9vbCBpc0RpcmVjdCwgdW5z
aWduZWQgaW50cnVjdGlvblNpemUsIEVDTUFNb2RlKTsKICAgICAKICAgICAvLyBFaXRoZXIgcmVn
aXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBjaGVjayBmb3IgdGhpcyBjb25kaXRpb24uIFJl
dHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29uZGl0aW9uIG5vIGxvbmdlciBob2xkcywgYW5k
IHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNrIGNhbiBiZSBlbWl0dGVkLgpAQCAtODQ2LDE4
ICs4NDYsMTggQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGNvbnN0IERPTUpJVDo6
U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9w
LCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAg
ICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBpZiAoYWxsSW5saW5lRnJhbWVz
QXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0
dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lz
dGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRo
b3V0U2V0dGluZ1Jlc3VsdChvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9m
ZnNldCwgT3BJbmZvKCkpOwogICAgICAgICAgICAgb3AgPSBUYWlsQ2FsbElubGluZWRDYWxsZXI7
CiAgICAgICAgIH0KIAogCiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRDYWxsV2l0aG91dFNldHRp
bmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJn
Q291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAg
b3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVk
aWN0aW9uKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2V0
KHJlc3VsdCwgY2FsbCk7CiAgICAgICAgIHJldHVybiBjYWxsOwpAQCAtMTM0NCw3ICsxMzQ0LDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxs
KAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChy
ZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRk
Q2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICBBU1NFUlQoY2FsbE5v
ZGUtPm9wKCkgIT0gVGFpbENhbGxWYXJhcmdzICYmIGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxs
Rm9yd2FyZFZhcmFyZ3MpOwogICAgIHJldHVybiBjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCA/
IFRlcm1pbmFsIDogTm9uVGVybWluYWw7CiB9CkBAIC0yMTgyLDcgKzIxODIsNyBAQCBCeXRlQ29k
ZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcp
OwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgewogICAgICAgICBhZGRDYWxsKAotICAgICAg
ICAgICAgcmVzdWx0LCBjYWxsT3AsIG51bGxwdHIsIG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAgICAgcmVzdWx0LCBjYWxsT3AsIE9wSW5mbygp
LCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICAgICAgVkVSQk9TRV9MT0coIldl
IGFkZGVkIGEgY2FsbCBpbiB0aGUgc2xvdyBwYXRoXG4iKTsKICAgICB9IGVsc2UgewpAQCAtMzY1
Niw3ICszNjU2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVf
TUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUywgIkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90
IHN1cHBvcnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBhcmd1bWVudHMuIik7CiAKICAgICBpbnNlcnRD
aGVja3MoKTsKLSAgICBhZGRDYWxsKHJlc3VsdCwgQ2FsbCwgc2lnbmF0dXJlLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OworICAgIGFkZENhbGwocmVzdWx0LCBDYWxsLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbFRhcmdl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9u
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDYxNSwyMiArNDYxNSwyMiBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpl
bWl0UHV0QnlJZCgKLSAgICBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBO
b2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0Rp
cmVjdCkKKyAgICBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2
YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwg
RUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBhZGRUb0dy
YXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSwgdmFsdWUp
OworICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyTnVt
YmVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwgdmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAg
YWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IFB1dEJ5SWRGbHVzaCA6IFB1
dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSwgdmFsdWUpOworICAgICAgICBh
ZGRUb0dyYXBoKHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gUHV0QnlJZEZsdXNoIDogUHV0
QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8oZWNtYU1vZGUpLCBiYXNlLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgTm9k
ZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsCi0gICAgY29u
c3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25TaXplKQorICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMs
IGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiB7CiAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAg
ICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQoKSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgo
Rm9yY2VPU1JFeGl0KTsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQo
YmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBl
Y21hTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC00NjM4LDcgKzQ2Mzgs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpZiAoIW1f
Z3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkKICAgICAg
ICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKICAgICAg
ICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHlt
b3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3Qp
OworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUs
IHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NjQ3LDcgKzQ2NDcsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVz
W3ZhcmlhbnRJbmRleF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrKHB1
dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25kaXRpb25TZXQoKSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5
SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFz
ZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21h
TW9kZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC00NjkwLDcgKzQ2OTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeUlkKAogCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5m
byhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2Up
OwogICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAg
ICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0
YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDc1Nyw3ICs0NzU3LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKIAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1
ZSA9IGxvYWQoU3BlY0NlbGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7
CiAgICAgICAgIGlmICghbG9hZGVkVmFsdWUpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJh
c2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7Cisg
ICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0
QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICAKQEAgLTQ4MDEsNyArNDgwMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQogICAgIAogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMs
IGlzRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwg
dmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9IH0KIH0KQEAgLTQ5NzMsNyArNDk3Myw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBv
cF90b190aGlzOiB7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXRUaGlzKCk7Ci0gICAgICAg
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCku
bWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgICAgICAgICAgU3RydWN0dXJlSUQg
Y2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgICAg
ICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBudWxscHRyOwogICAgICAgICAgICAg
aWYgKGNhY2hlZFN0cnVjdHVyZUlEKQpAQCAtNDk4NCw3ICs0OTg1LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICB8fCBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3Vy
cmVudEluZGV4KQogICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKQogICAgICAgICAgICAg
ICAgIHx8IChvcDEtPm9wKCkgPT0gR2V0TG9jYWwgJiYgb3AxLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+c3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgpKSkgewotICAgICAgICAgICAgICAgIHNl
dFRoaXMoYWRkVG9HcmFwaChUb1RoaXMsIE9wSW5mbygpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigp
KSwgb3AxKSk7CisgICAgICAgICAgICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJ
bmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAg
ICAgICAgICAgICAgICAgIENoZWNrU3RydWN0dXJlLApAQCAtNTgyMyw3ICs1ODI0LDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKHRoaXNWYWx1ZSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChw
cm9wZXJ0eSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7Ci0gICAgICAgICAg
ICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgUHV0QnlWYWxXaXRoVGhpcywgT3BJbmZvKDApLCBP
cEluZm8oMCkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIFB1dEJ5VmFs
V2l0aFRoaXMsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgT3BJbmZvKDApKTsKIAogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9
CkBAIC01ODkyLDE0ICs1ODkzLDE0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5t
X3ZhbHVlKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9w
LT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKLSAgICAgICAgICAgIGJv
b2wgZGlyZWN0ID0gISEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCk7CisgICAg
ICAgICAgICBib29sIGRpcmVjdCA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNEaXJlY3QoKTsKIAogICAg
ICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9p
Y0NvbnRleHRTdGFjaywKICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCBtX2dy
YXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl0pOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRC
eUlkU3RhdHVzLCBkaXJlY3QsIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRT
dGF0dXMsIGRpcmVjdCwgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCksIGJ5dGVjb2RlLm1fZmxh
Z3MuZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWQpOwog
ICAgICAgICB9CiAKQEAgLTU5MTAsNyArNTkxMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChi
eXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIg
PSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5
XTsKIAotICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhpZGVu
dGlmaWVyTnVtYmVyKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8o
Ynl0ZWNvZGUubV9lY21hTW9kZSksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIApAQCAt
NTk0NCw3ICs1OTQ1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRGVsQnlJZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUu
bV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8o
aWRlbnRpZmllck51bWJlciksIGJhc2UpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2Rz
dCwgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5m
byhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfZGVsX2J5X2lkKTsKICAgICAgICAgfQogCkBAIC01OTUyLDcgKzU5NTMsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKICAgICAg
ICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5v
ZGUqIGtleSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKLSAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeVZhbCwgYmFzZSwga2V5KSk7CisgICAgICAg
ICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIE9wSW5mbyhi
eXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSwga2V5KSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9kZWxfYnlfdmFsKTsKICAgICAgICAgfQogCkBAIC02NDc1LDcgKzY0NzYsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICBjYXNl
IG9wX2NhbGxfZXZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICAgICAgICAgIGludCByZWdpc3Rlck9mZnNl
dCA9IC1ieXRlY29kZS5tX2FyZ3Y7Ci0gICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2RlLm1fZHN0
LCBDYWxsRXZhbCwgbnVsbHB0ciwgZ2V0KGJ5dGVjb2RlLm1fY2FsbGVlKSwgYnl0ZWNvZGUubV9h
cmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENh
bGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSks
IGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQs
IGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYWxsX2V2YWwp
OwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTY4MjQsNyArNjgyNSw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpZiAo
bmVlZHNEeW5hbWljTG9va3VwKHJlc29sdmVUeXBlLCBvcF9wdXRfdG9fc2NvcGUpKSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXJOdW1iZXIgIT0gVUlOVF9NQVgpOwogICAgICAg
ICAgICAgICAgIHVpbnQ2NF90IG9wSW5mbzEgPSBtYWtlRHluYW1pY1Zhck9wSW5mbyhpZGVudGlm
aWVyTnVtYmVyLCBnZXRQdXRJbmZvLm9wZXJhbmQoKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZvMSksIE9wSW5mbygpLCBnZXQoYnl0ZWNv
ZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZvMSksIE9wSW5mbyhnZXRQdXRJbmZv
LmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3RvX3Njb3BlKTsKICAgICAg
ICAgICAgIH0KIApAQCAtNjg0Niw3ICs2ODQ3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZh
cmlhbnRzKCkgIT0gMQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNbMF0ua2luZCgpICE9
IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1sw
XS5zdHJ1Y3R1cmUoKS5zaXplKCkgIT0gMSkgewotICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgZ2V0KGJ5dGVjb2RlLm1fc2Nv
cGUpLCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKGJ5dGVjb2RlLm1f
Z2V0UHV0SW5mby5lY21hTW9kZSgpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNv
ZGUubV92YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IHdlYWtKU0NvbnN0YW50KGdsb2JhbE9i
amVjdCk7CkBAIC03NDkyLDggKzc0OTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNv
ZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgIiBmb3IgaW5saW5pbmcgYXQgIiwgQ29kZUJsb2Nr
V2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVFR5cGU6OkRGR0pJVCksCiAgICAgICAgICAgICAg
ICAgIiAiLCBpbmxpbmVDYWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyKTsKICAgICAgICAgfQotICAg
ICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIiwgaXNTdHJpY3RNb2RlID0gIiwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCksICJcbiIpOworICAgICAgICBkYXRh
TG9nTG4oKTsKICAgICAgICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKS0+ZHVtcEJ5dGVj
b2RlKCk7CiAgICAgfQogICAgIApAQCAtNzU5OCw3ICs3NTk4LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGluc3RydWN0
aW9uU2l6ZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkKLSAg
ICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1
dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBpbnN0cnVjdGlvblNpemUpOworICAgICAgICAgICAgaGFu
ZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywg
aXNEaXJlY3QsIGluc3RydWN0aW9uU2l6ZSwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgfQog
CiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAtNzYwOSw3ICs3NjA5LDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2ln
bmVkIGluc3RydWN0aW9uU2l6ZSkKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAg
ICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFn
ZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4K
LSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJl
Y3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbygwKSk7Cisg
ICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0
IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUu
bV9lY21hTW9kZSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQg
UHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0
YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCmluZGV4IGI0M2Y3Y2Y1NGUxMjE3NDcxNzZkZGNlOTY1YjZjODE4ZjI5MTYxODUuLjhl
NmZjYTc3OTE3NGQyOGZiODRkNjcwZjU5NmYwMGRkMGI4NjVmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC03
NDAsNyArNzQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2Fz
ZSBUb1RoaXM6IHsKLSAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1Ro
aXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7CisgICAg
ICAgICAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX2dy
YXBoLm1fdm0sIG5vZGUtPmVjbWFNb2RlKCksIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpJZGVudGl0
eSkgewogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDQ4YTIwYTQ1MGUzM2Y3ZDNmOWRkZWU1NTZhZjIx
YzQ0ZmI3ODdlMjUuLjMwNGU5MDc5MjhjNDYzOWQyYWEzOTlhNzlmZWVmYzFhYzAzMzAzOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjgzMSw3
ICsyODMxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZml4dXBUb1RoaXMoTm9kZSogbm9kZSkK
ICAgICB7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBu
b2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCk7CiAKICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkg
ewogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFu
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA5NDdlZmFhYmE5ZTY0
OTZiM2IwNWM2ZjU1MTQyYWI3Yzc3YjViNWEyLi4xNjY2ZDc1Mzg3ZGJjNTU0MDJjOWY3YmUwMzYx
MTc1YmM3NWM4MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC00NDEs
NyArNDQxLDcgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzT2JqZWN0Rm9yKENv
ZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBvYmpl
Y3QgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8
SlNPYmplY3QqPihvYmplY3QtPm1ldGhvZFRhYmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBvYmpl
Y3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9i
amVjdC0+bWV0aG9kVGFibGUobV92bSktPnRvVGhpcyhvYmplY3QsIG9iamVjdCwgRUNNQU1vZGU6
OnNsb3BweSgpKSk7CiAgICAgfQogICAgIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGVGb3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCkBAIC00NjksMTggKzQ2OSw2
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5k
QmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgbV9wcm9maWxlZEJsb2NrKTsKICAgICB9CiAg
ICAgCi0gICAgYm9vbCBpc1N0cmljdE1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAg
IHsKLSAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsKLSAgICAgICAgcmV0dXJuIGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCktPmlzU3RyaWN0TW9kZSgpOwotICAgIH0KLSAgICAK
LSAgICBFQ01BTW9kZSBlY21hTW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewot
ICAgICAgICByZXR1cm4gaXNTdHJpY3RNb2RlRm9yKGNvZGVPcmlnaW4pID8gU3RyaWN0TW9kZSA6
IE5vdFN0cmljdE1vZGU7Ci0gICAgfQotICAgIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikK
ICAgICB7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbiktPm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmlzU3RpbGxWYWxpZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMzQ1NWI1YzI5ZjA3MGZlZjJmOTkxOTUyYmNmZjAw
N2ZlYTkxNzI2Li5jZDAzNjUxOWRiNzk4YzVkODI2YWVjMmM4MmIzMmY4YjUzY2EzYmNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjE4OSw2ICsyMTg5LDUzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9vcEluZm8gPSBhcnJheU1vZGUuYXNXb3JkKCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KKworICAgIGJvb2wgaGFzRUNNQU1vZGUoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQ2FsbEV2YWw6CisgICAgICAgIGNhc2UgRGVs
ZXRlQnlJZDoKKyAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeUlk
OgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNo
OgorICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoK
KyAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0
OgorICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0RHluYW1p
Y1ZhcjoKKyAgICAgICAgY2FzZSBUb1RoaXM6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNF
Q01BTW9kZSgpKTsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQ2FsbEV2
YWw6CisgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRo
VGhpczoKKyAgICAgICAgY2FzZSBUb1RoaXM6CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6
OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkpOworICAgICAgICBjYXNlIERlbGV0ZUJ5
SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0Ogor
ICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKKyAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6
CisgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKKyAg
ICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgor
ICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8dWludDhf
dD4oKSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKKyAgICAg
ICAgfQorICAgIH0KICAgICAKICAgICBib29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKaW5kZXggNzdlZmNmYjI0ODAwMmE0YmY1ZWE2MGE2
ZTY2NTIwZmUwNTE0NGJjYy4uZTI4ZDc1NWE0MjdkMWMyZjE5OTRmNjIzOWQ2YTM0MDIwNzhmMjVl
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCkBAIC00NSw2ICs0NSw3IEBA
IHN0cnVjdCBPcEluZm8gewogICAgICAgICA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZhbHVlKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KHN0cnVjdHVyZSkpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkg
OiBtX3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1vZGUg
ZWNtYU1vZGUpIDogbV92YWx1ZShlY21hTW9kZS52YWx1ZSgpKSB7IH0KIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmRiOWM5ZDc2N2U2ODcyZmRj
YWQ2ODczZGVmOGU5NDgxZWY4MWQ5Li44NDY1MzA2MDQ4MzhmZmQxYmVjMTRjZDVmNjZhZmQxZTNi
YWJkYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTI5Nyw3ICsyOTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRvVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9i
YWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
bG9wcHkoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRv
VGhpc1N0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3ApCkBAIC0zMDYsNyArMzA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Ub1RoaXNTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c3RyaWN0KCkpKTsKIH0KIAogSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25P
YmplY3RLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPYmplY3QpCkBAIC0zNDA3LDcgKzM0MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
YwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnN0cmljdCgpKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QW5P
YmplY3RFcnJvcihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDM2
MTgxYTI4MjEzMzllODhiNjYzYzY1ODcxYzBkYTNjYzQ0ZGU4YTIuLmJhYTIxYzBiYmZhMmFjZmJh
NTBkNWE4Zjk5MzJkMzE0ZGI1NDQ5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0yMzksNyArMjM5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAv
LyBBbGwgb2YgdGhlIG91dGVybW9zdCBhcmd1bWVudHMsIGV4Y2VwdCB0aGlzLCBhcmUgcmVhZCBp
biBzbG9wcHkgbW9kZS4KLSAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX2NvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX2NvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IGkt
LTspCiAgICAgICAgICAgICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dEluY2x1ZGluZ1RoaXMoaSkpOwogICAgICAgICAgICAgfQpAQCAtMjUwLDcgKzI1MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVhZCBhbGwgb2YgdGhlIGlubGluZSBh
cmd1bWVudHMgYW5kIGNhbGwgZnJhbWUgaGVhZGVycyB0aGF0IHdlIGRpZG4ndCBhbHJlYWR5IGNh
cHR1cmUuCiAgICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7IGlubGluZUNhbGxG
cmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJJbmxpbmVG
cmFtZVNraXBwaW5nVGFpbENhbGxzKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNh
bGxGcmFtZS0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNh
bGxGcmFtZS0+aXNJblN0cmljdENvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7
IGktLTspCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoaSkub2Zmc2V0KCkpKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDI4ODg1OGIzOGMxNmE2NWE4YzhlYmRiOWQ0MzcwMTI4MzQ3MmE1MGEu
LmEwN2JiZjQ2NjE3M2EwYzNiMjU5Y2Y1NjRjNzhhMjZjMThjYmMzZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC01MDYsNyArNTA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIFRvVGhpczogewogICAgICAgICAgICAgLy8gVG9UaGlzIGluIG1ldGhvZHMgZm9y
IHByaW1pdGl2ZSB0eXBlcyBzaG91bGQgc3BlY3VsYXRlIHByaW1pdGl2ZSB0eXBlcyBpbiBzdHJp
Y3QgbW9kZS4KLSAgICAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmlj
dE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIGJvb2wgaXNTdHJp
Y3RNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgICAgICAgICAgaWYgKGlz
U3RyaWN0TW9kZSkgewogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlQm9vbGVhbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNjgzN2IwMGZlNjM2ZTkzZjZlOWUyMTJhNzc2
ZjNhNmEzNWU0YWIwZi4uYjA5OTE3MGNiNjMwNjYzODJkMzQ5Zjc4MDdkMTAxNDQ3NjkxYjZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
QEAgLTIxMTksNyArMjExOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQ
dXRCeVZhbChOb2RlKiBub2RlLCBTcGVjdWxhdGVDZWxsT3BlcmFuZCYgYmFzCiAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAg
ICAgICAgIHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9k
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91
bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmlj
dCkKICAgICAgICAgICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/
IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3Qg
OiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAg
ICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwpAQCAtMzE1MCwyNCArMzE1MCwyNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBi
YXNlLCBHUFJSZWcgcHJvcGVydAogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERp
cmVjdCkgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9q
aXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LAorICAg
ICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsCiAgICAg
ICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBw
cm9wZXJ0eSwgdmFsdWVHUFIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENh
c2VzLCB0aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0
KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0
LAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZSwgcHJvcGVydHksIHZhbHVlR1BSKSk7CiAgICAgICAgIH0KICNlbHNlIC8vIG5vdCBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewog
ICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJp
Y3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVj
dENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3QsCisgICAg
ICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3RDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsTm9uU3RyaWN0
LAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5KSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVUYWdHUFIsIHZhbHVlR1BSKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxDZWxsTm9uU3RyaWN0LAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHBy
b3BlcnR5KSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlR1BSKSkpOwogICAgICAgICB9
CiAjZW5kaWYKQEAgLTMyOTksNyArMzI5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwKICAg
ICBzcGVjdWxhdGVTdHJpbmcoY2hpbGQyLCBhcmcyR1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1N0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVj
bWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1N0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0zMzE4LDcgKzMzMTgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5bWJvbChOb2Rl
KiBub2RlLCBFZGdlJiBjaGlsZDEsCiAgICAgc3BlY3VsYXRlU3ltYm9sKGNoaWxkMiwgYXJnMkdQ
Uik7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNT
dHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbENl
bGxTeW1ib2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJpY3QsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7Cisg
ICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25Q
dXRCeVZhbENlbGxTeW1ib2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25T
dHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmcz
UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUp
OwpAQCAtMTEzMjksNyArMTEzMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
RHluYW1pY1ZhcihOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVl
LmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRp
b24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRp
b25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50aWZp
ZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1
dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJ
RChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOwogICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjIxNSw3
ICsxMjIxNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2goTm9k
ZSogbm9kZSkKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIo
KSwgTm90RGlyZWN0LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNh
Y2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNj
cmF0Y2hHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21h
TW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwogCiAgICAgbm9SZXN1
bHQobm9kZSk7CiB9CkBAIC0xMjIzMCw3ICsxMjIzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0g
dmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3By
KCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwg
dmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIE5vdERpcmVj
dCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZh
bHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBOb3REaXJlY3Qs
IG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjI0NSw3
ICsxMjI0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5v
ZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQ
dXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNo
R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIERpcmVjdCk7CisgICAgY2FjaGVkUHV0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwg
bm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAg
ICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjI2MCw3ICsxMjI2MCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogCiAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlJZFdpdGhUaGlzLAorICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0
cmljdCgpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJ
ZFdpdGhUaGlzLAogICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3Ms
IHRoaXNSZWdzLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJl
cigpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMTI2MjksNyArMTI2Mjks
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAg
bV9qaXQubW92ZVZhbHVlUmVncyh0aGlzVmFsdWVSZWdzLCB0ZW1wUmVncyk7CiAKICAgICBKX0pJ
VE9wZXJhdGlvbl9HSiBmdW5jdGlvbjsKLSAgICBpZiAobV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgaWYgKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSkKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAgZWxzZQog
ICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKQEAgLTEzODI4LDcgKzEzODI4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAg
ICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFs
dWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0
S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2lu
ZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoc3BpbGxNb2Rl
ID09IERvbnRTcGlsbCkgewpAQCAtMTM4NDAsNyArMTM4NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCiAgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3Jh
dGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2luZCk7CisgICAgICAg
IHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCmluZGV4IGIxZmIwZThjOTdhNzU5ZWJkMjlmNDdiMTNhYTFjNDc4YjIwMTNlYzAuLjZl
NjU3YzY1YTk4ZTcyYmNhYWY5MmY1MjlhNDQzYWY3OTE3NGQ1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTcxNyw3ICs3MTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjb21waWxlQ2hlY2tOZXV0ZXJlZChOb2RlKik7CiAKICAgICB2b2lk
IGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVl
UmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtp
bmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAo
KSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkUHV0
QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBH
UFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCwgRUNN
QU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1
bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwogICAgIHZvaWQgY2FjaGVk
R2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQp
OwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDc1NmE2YzNkOWZjMTdiMDRjOWQxZjNkYjAw
MWQ3NjhlNzhiNzAxYjguLjU4YmEwODU1ZDViMTAzNmQ0ZjQ3NTIyZThhNDRmNDU3YzE1Mjk2NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNzYwLDcgKzc2MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUpCiAgICAgICAgIHVuc2lnbmVkIHJlcXVpcmVkQnl0ZXMgPSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykgKyBzaXplb2YoQ2FsbEZyYW1lKikgKiAyOwogICAgICAgICByZXF1aXJlZEJ5
dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVx
dWlyZWRCeXRlcyk7CiAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIocmVxdWlyZWRC
eXRlcyksIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
LCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
Z2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAg
cHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKG9wZXJh
dGlvbkNhbGxFdmFsKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTI3MjUs
OSArMjcyNiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIEdQUlJlZyBhcmczR1BSID0gYXJnMy5ncHIoKTsKICAgICAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCkKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJl
Y3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQ
UiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2Rl
LT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQ
UiwgYXJnMkdQUiwgYXJnM0dQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTI4MDksNyAr
MjgxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIGlmIChhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZSwgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5k
c1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAg
ICAgICAgICAgICAgICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgICAg
ICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5
UmVnLCB2YWx1ZVJlZykpOwpAQCAtMjg5Myw3ICsyODk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKCFzbG93Q2FzZXMuZW1wdHko
KSkgewogICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgK
ICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAg
ICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAg
ICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRB
cnJheUJvdW5kc1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkg
PT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91
bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmlj
dCksCiAgICAgICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0zODk3LDcgKzM4OTgs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQ
UlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxXaXRoVGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHRo
aXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsK
QEAgLTU0NjYsNyArNTQ2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVC
eUlkKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgcHJv
cGVydHkpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgcHJvcGVydHksIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKIAogICAgICAgICBtX2ppdC5hZGREZWxCeUlkKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNs
b3dQYXRoKSk7CkBAIC01NDg1LDcgKzU0ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJp
YywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJl
Z3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+
aWRlbnRpZmllck51bWJlcigpKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFu
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC01NTI0LDcgKzU1MjUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIAogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXpl
LAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBr
ZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAKICAgICAg
ICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTU1NDQsNyArNTU0NSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDY3OTRjNTAxOTJm
NTczMGNjMDEzNGMyZjJjMGE3YTY0NzlmOGJmNzMuLmE4YWU4N2Y2N2E2MmEzMjM4NGM5NWQxNmNk
YmE4NzIzYjE3NDA3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTIxMjAsNyArMjEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgSl9K
SVRPcGVyYXRpb25fR0ogZnVuY3Rpb247Ci0gICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9k
ZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgIGlmIChtX25vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlz
U3RyaWN0OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRv
VGhpczsKQEAgLTM2ODIsNyArMzY4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSB0aGlz
VmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwogCi0gICAgICAgIHZtQ2FsbChWb2lk
LCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVy
YXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCisg
ICAgICAgIHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJh
dGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKICAg
ICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHRoaXNWYWx1ZSwgdmFs
dWUsIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50
aWZpZXJOdW1iZXIoKV0pKTsKICAgICB9CiAKQEAgLTM2OTQsNyArMzY5NCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDIpKTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBo
LnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwogCi0gICAgICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBo
LmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRC
eVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywKKyAgICAgICAg
dm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0
QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsCiAgICAgICAg
ICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5
LCB2YWx1ZSk7CiAgICAgfQogICAgIApAQCAtMzk2Nyw3ICszOTY3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAog
ICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAgRUNNQU1vZGUgZWNt
YU1vZGUgPSBtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZWNt
YU1vZGUoKTsKKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwog
ICAgICAgICAKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKQEAgLTQ4MjUsMTIgKzQ4MjUsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBWX0pJVE9wZXJhdGlvbl9HQ0NKIG9wZXJhdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAg
ICAgaWYgKGNoaWxkMi51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05vblN0cmljdDsKICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9k
ZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0OwogICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdDsKQEAgLTQ4NDEs
MTIgKzQ4NDEsMTIgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGlmIChjaGlsZDIudXNl
S2luZCgpID09IFN5bWJvbFVzZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5v
cCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
Q2VsbFN5bWJvbFN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENl
bGxTeW1ib2xOb25TdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJpY3Q7CkBAIC00ODU4LDEyICs0ODU4LDEyIEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgIFZfSklUT3BlcmF0aW9uX0dKSkogb3BlcmF0aW9uOwogICAg
ICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
YykpCisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQog
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0
cmljdDsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlv
biA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0OwogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0
QnlWYWxTdHJpY3Q7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdDsKQEAgLTQ5MDksNyArNDkwOSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKAotICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAg
ICAgICAgICAgICAgICAgICAgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAg
ICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgOiAo
bV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RC
ZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlC
b3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRl
eCwgdmFsdWUsIGNvbnRpbnVhdGlvbik7CkBAIC00OTM1LDcgKzQ5MzUsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjb250
aWd1b3VzUHV0QnlWYWxPdXRPZkJvdW5kcygKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5p
c1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAg
ICAgIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICA/IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVC
eVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlW
YWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG1f
bm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGly
ZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJl
eW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3Rv
cmFnZSwgaW5kZXgsIHZhbHVlLCBjb250aW51YXRpb24pOwpAQCAtNDk3NSw3ICs0OTc1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBpc091dE9mQm91bmRzID0gbV9vdXQuYWJvdmVP
ckVxdWFsKAogICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShz
dG9yYWdlLCBtX2hlYXBzLkFycmF5U3RvcmFnZV92ZWN0b3JMZW5ndGgpKTsKIAotICAgICAgICAg
ICAgYXV0byBzbG93UGF0aEZ1bmN0aW9uID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSBt
X25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+
b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJy
YXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0
KQogICAgICAgICAgICAgICAgIDogKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRp
b25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KTsKICAgICAgICAgICAgIGlmICgh
YXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewpAQCAtNTI0MCw3ICs1MjQwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6
YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3Vic2NyaXB0KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5j
YWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAm
aml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0
aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTUyNzAsNyArNTI3MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgYXV0byB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCldOwotICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKElu
dDY0LCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkpKTsKKyAg
ICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1fb3V0Lmlu
dFB0clplcm8sIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKHVpZCksIG1fb3V0LmNvbnN0SW50MzIo
bV9ub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIApAQCAtNTMxMSw3ICs1MzExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90
WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBzdWJzY3JpcHQpKSk7
CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9v
dXQuaW50UHRyWmVybywgYmFzZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC05ODA2LDcgKzk4MDYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHJlcXVpcmVkQnl0ZXMgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBzaXplb2YoQ2FsbEZy
YW1lKikgKiAyOwogICAgICAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAg
ICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHJlcXVpcmVk
Qnl0ZXMpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9i
YWxPYmplY3QsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZv
OjpyZWdUMik7CisgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkNhbGxFdmFsKT4oZ2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDIpOwogICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86
Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwo
R1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwpA
QCAtMTMzNTYsNyArMTMzNTcsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgIHNldEpT
VmFsdWUodm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXRE
eW5hbWljVmFyTm9uU3RyaWN0LAorICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX25v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3Qg
OiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LAogICAgICAgICAgICAgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQz
MihtX25vZGUtPmdldFB1dEluZm8oKSkpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmlu
ZGV4IDA4MGZhZWRlODFhMjI2ODIyMWQxYzUwODk0MWQ5ZWYyNzEyNzlhMjAuLjk3YmZiMjAyZTVm
NzQ4NGU2Y2E0YjQ5ZDE0YmFjN2YzMTYzZGNiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1
Y3Rvck5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgIHJldHVy
biBqc1N0cmluZyh2bSwgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUob2JqZWN0KSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCmluZGV4IDUxODhjMDIzOWRmNDZlMDAyZGM5ZTJhMWIzNzIxYjVkMGIwYzBmOGUuLmM0ZDlj
NzI3ZTA3MThlZWFlZjAwNjgyODQ0YzU0NzNkYjIyYmJmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitKU1ZhbHVlIGV2YWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVDTUFNb2RlIGVjbWFN
b2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNWYWx1ZSBl
dmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
CiAgICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmRpcmVj
dEV2YWxDb2RlQ2FjaGUoKS50cnlHZXQocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ2FsbFNpdGVJbmRl
eCk7CiAgICAgaWYgKCFldmFsKSB7Ci0gICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSkgeworICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAg
ICAgICAgIGlmIChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgTGl0
ZXJhbFBhcnNlcjxMQ2hhcj4gcHJlcGFyc2VyKGdsb2JhbE9iamVjdCwgcHJvZ3JhbVNvdXJjZS5j
aGFyYWN0ZXJzOCgpLCBwcm9ncmFtU291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OLCBjYWxs
ZXJDb2RlQmxvY2spOwogICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9
IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBKU1ZhbHVl
IGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAgICAgICAgIAogICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERa
OwogICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxl
clNjb3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3Vy
Y2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkp
LCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNh
bGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5p
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5k
ZXJURFopOworICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3Vy
Y2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2Fs
bGVyVW5saW5rZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlz
SW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRl
clREWiwgZWNtYU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0
aW9uKCkgPT0gIWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsCiAgICAgdW5zaWduZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMgPSBldmFsLT5u
dW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOwogCiAgICAgSlNTY29wZSogdmFyaWFibGVP
YmplY3Q7Ci0gICAgaWYgKChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xz
KSAmJiBldmFsLT5pc1N0cmljdE1vZGUoKSkgeworICAgIGlmICgobnVtVmFyaWFibGVzIHx8IG51
bVRvcExldmVsRnVuY3Rpb25EZWNscykgJiYgZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkgewog
ICAgICAgICBzY29wZSA9IFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+c3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSwgc2NvcGUpOwogICAgICAgICB2
YXJpYWJsZU9iamVjdCA9IHNjb3BlOwogICAgIH0gZWxzZSB7CkBAIC0xMTA0LDcgKzExMDQsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkRXZhbENvZGVCbG9jaygpOwogCiAg
ICAgLy8gV2UgY2FuJ3QgZGVjbGFyZSBhICJ2YXIiLyJmdW5jdGlvbiIgdGhhdCBvdmVyd3JpdGVz
IGEgZ2xvYmFsICJsZXQiLyJjb25zdCIvImNsYXNzIiBpbiBhIHNsb3BweS1tb2RlIGV2YWwuCi0g
ICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpICYmICFldmFsLT5pc1N0cmlj
dE1vZGUoKSAmJiAobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsK
KyAgICBpZiAodmFyaWFibGVPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzSW5T
dHJpY3RDb250ZXh0KCkgJiYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVj
bHMpKSB7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2YXJpYWJsZU9iamVjdCktPmds
b2JhbExleGljYWxFbnZpcm9ubWVudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtVmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50ID0gdW5saW5rZWRDb2RlQmxvY2stPnZhcmlhYmxlKGkpOwpAQCAtMTEyOCw3ICsxMTI4LDcg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKIAogICAgIGlmIChudW1WYXJpYWJsZXMgfHwgbnVt
VG9wTGV2ZWxGdW5jdGlvbkRlY2xzIHx8IG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKSB7
CiAgICAgICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcih2bSwgdmFyaWFi
bGVPYmplY3QpOwotICAgICAgICBpZiAodmFyaWFibGVPYmplY3QtPm5leHQoKSAmJiAhZXZhbC0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlmICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpICYmICFl
dmFsLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICAgICAgdmFyaWFibGVPYmplY3QtPmds
b2JhbE9iamVjdCh2bSktPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+ZmlyZUFsbCh2bSwgIkV4
ZWN1dGVkIGV2YWwsIGZpcmVkIFZhckluamVjdGlvbiB3YXRjaHBvaW50Iik7CiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7CkBAIC0xMTQ0LDcg
KzExNDQsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBl
dmFsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbAogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBpZiAoZXZhbC0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAg
ICAgaWYgKGV2YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHM7ICsraSkgewogICAgICAg
ICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0
aW9uRGVjbChpKTsKICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh2YXJpYWJs
ZU9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oCmluZGV4IDkwYTlkYjVjNWE5ZmIwMjU2YzU3ZDFkNmNlNDk5YTdmZTczMWUwODUuLjY0
NTM5MTI3YjhjNzRjODIwMjliMmJiNjE4MGU2OTY5NzFhNjRiYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0xNTAsNyArMTUwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RF
UykKICAgICB9OwogCi0gICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CisgICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1v
ZGUpOwogCiAgICAgaW5saW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxG
cmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNzBmNWRkNDgxZjE2ZGYxNmFiZGQzMjNiYjQ2NGI1
NzAyNjRkYjNiYy4uYWJhMGVlYjU5NWJkMDA1OTczMzVjZmQzMTA4NWE0YTc2NjFlNjcyOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNDcyLDE5
ICsxNDcyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdE1vZGVG
b3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgYXV0byogaW5saW5lQ2Fs
bEZyYW1lID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpOwotICAgICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKTsKLSAg
ICB9Ci0gICAgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3RyaWN0TW9kZUZvcihjb2RlT3JpZ2luKSA/IFN0
cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOwotICAgIH0KLSAgICAKICAgICBFeGVjdXRhYmxlQmFz
ZSogZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKTsKICAgICAKICAg
ICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBiMmJmY2U2MzM3
ZDliZTAyZDYxZjM4OTVjZTVlY2EzYTBkNzgzMjA2Li5lMWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZm
YjQ0NzFmZmNiMjBiODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAg
LTEzOCw3ICsxMzgsOCBAQCBib29sIEpJVDo6Y29tcGlsZUNhbGxFdmFsKGNvbnN0IE9wQ2FsbEV2
YWwmIGJ5dGVjb2RlKQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0
Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7
CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCksIHJlZ1QxKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2Vj
bWFNb2RlLnZhbHVlKCkpLCByZWdUMik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxs
RXZhbCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCByZWdUMSwgcmVnVDIpOwogCiAgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY0MTEw
MjE3NjRkOTg5NjYyMjNmZTE4MjBhMmYzODM5YWMzZTdiOWYuLmQ3YTFjMWY4NmU3MDRkYmJmNmEz
NDFkZTIwMDZhNzcwYzA3NmM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBq
aXQpCiAKIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1Bh
dGhGdW5jdGlvbigpCiB7Ci0gICAgaWYgKG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgeworICAg
IGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgaWYgKG1fcHV0S2luZCA9PSBE
aXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9w
dGltaXplOwogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCmluZGV4IDI2ZTcwMGZiYjdhZDE4M2JlMWFjYmE3M2YzN2Y2ZmI0MmZlZmNkMGUuLjM5MjZj
NTVjMjc5ZmI4ODBhYTIyMmM3YmU3YWI5MDY4MmNkM2U2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTEyNyw3ICsx
MjcsOSBAQCBwdWJsaWM6CiAKIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklU
QnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6Ci0gICAgSklUUHV0QnlJZEdlbmVyYXRvcigpIHsgfQor
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQorICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6
OnN0cmljdCgpKQorICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCmluZGV4IDIzZmY1YzgxYzFjMDMyMjJmOTEyYTQ5OTMxZjI4MzZkYWRjZmFj
YjcuLjdkY2JlOGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3NTY1NTMzZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0xNjYsNyArMTY2LDcgQEAgQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmUKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Nsb3dDYXNlSWZO
b3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgVmlydHVhbFJl
Z2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRl
KHJlZykpCisgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkKICAgICAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogfQogCkBAIC00OTYsNyArNDk2LDcgQEAgaW5saW5lIHZvaWQg
SklUOjplbWl0U3RvcmUoVmlydHVhbFJlZ2lzdGVyIHJlZywgY29uc3QgSlNWYWx1ZSBjb25zdGFu
dCwgUmVnaXN0ZXIKIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoVmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3du
Tm90SW1tZWRpYXRlKHJlZykpIHsKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChy
ZWcpKSB7CiAgICAgICAgIGlmIChyZWcuaXNDb25zdGFudCgpKQogICAgICAgICAgICAgYWRkU2xv
d0Nhc2UoanVtcCgpKTsKICAgICAgICAgZWxzZQpAQCAtNTA2LDcgKzUwNiw3IEBAIGlubGluZSB2
b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdpc3RlciByZWcp
CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxS
ZWdpc3RlciByZWcsIFJlZ2lzdGVySUQgdGFnKQogewotICAgIGlmICghbV9jb2RlQmxvY2stPmlz
S25vd25Ob3RJbW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25D
ZWxsKHJlZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBh
ZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC02MDAsNyArNjAwLDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVy
SUQgcmVnKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwoUmVnaXN0ZXJJRCByZWcsIFZpcnR1YWxSZWdpc3RlciB2UmVnKQogewotICAgIGlmICgh
bV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUodlJlZykpCisgICAgaWYgKCFtX2NvZGVC
bG9jay0+aXNLbm93bkNlbGwodlJlZykpCiAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChyZWcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCBjZmIxMzQwYWU3YWQ2MzliZTE4YTZiNzhjMzhiYjhkZWE3MjRkMDYwLi5jNWU5
ZGJiNGE2NDY0MjFiZTE2ZjU4YTllZmEwZDIxOGMwNzA1NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBE
aXJlY3QpOwogfQogCi1zdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUg
c3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3N0YXRpYyB2
b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZh
bHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02OTQsMTIg
KzY5NCwxMiBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogCiAgICAgICAgICAgICBieVZhbElu
Zm8tPmFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSk7CisgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICBiYXNlVmFsdWUucHV0QnlJbmRleChnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpLCB2YWx1ZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOwpAQCAtNzE1LDE1ICs3MTUsMTQgQEAgc3RhdGljIHZvaWQg
cHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTVmFsdWUKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwg
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGds
b2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKIH0KIAotc3RhdGljIHZvaWQgZGly
ZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2
YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCitzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1
ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9k
ZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsKIAogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0
LmlzVUludDMyKCkpKSB7CiAgICAgICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIEpTVmFsdWU6Omlz
VUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25seSBmb3IgcG9zaXRpdmUgYm94ZWQgaW50MzJfdDsg
YWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQgYXJyYXkgaW5kaWNlcy4KQEAgLTc0NSw3ICs3NDQs
NyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogICAgICAgICB9CiAKICAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRU
aHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOworICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgMCwgZWNtYU1vZGUu
aXNTdHJpY3QoKSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNo
b3VsZE5vdFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzU1LDcgKzc1NCw3
IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJs
ZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewog
ICAgICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICAgICAg
c2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/
IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93
KTsKKyAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwg
c3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGly
ZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNzY3LDcgKzc2Niw3IEBAIHN0
YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHkpKSB7CiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRo
ID0gdHJ1ZTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0
cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91
bGROb3RUaHJvdyk7CisgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9i
amVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3NSw3ICs3NzQsNyBAQCBzdGF0aWMgdm9pZCBk
aXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
aXNTdHJpY3RNb2RlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBlY21h
TW9kZS5pc1N0cmljdCgpKTsKICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlm
eSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwog
fQogCkBAIC04NjEsNyArODYwLDcgQEAgc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlQdXRC
eVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICByZXR1
cm4gb3B0aW1pemF0aW9uUmVzdWx0OwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTg3OSw3ICs4NzgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogICAg
ICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIGN0aVBhdGNoQ2Fs
bEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9w
ZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2Ny
aXB0LCB2YWx1ZSwgYnlWYWxJbmZvKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBw
dXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJ
bmZvLCBlY21hTW9kZSkpOwogfQogCiBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeURpcmVj
dFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogb2JqZWN0LCBKU1Zh
bHVlIHN1YnNjcmlwdCwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcykKQEAgLTk1MSw3ICs5NTAsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0
IHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAog
ICAgIHJldHVybiBvcHRpbWl6YXRpb25SZXN1bHQ7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZh
bEluZm8pCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtOTcyLDEwICs5NzEsMTAgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJl
dHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVj
dFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBvYmplY3QsIHN1YnNjcmlwdCwgdmFs
dWUsIGJ5VmFsSW5mbykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0
QnlWYWwoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywg
ZWNtYU1vZGUpKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vi
c2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAt
OTg1LDExICs5ODQsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAKLSAgICBwdXRCeVZhbChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIGJhc2VWYWx1ZSwgc3Vic2NyaXB0
LCB2YWx1ZSwgYnlWYWxJbmZvKTsKKyAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1
ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKIAotdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtOTk5LDEwICs5OTgs
MTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUu
aXNPYmplY3QoKSk7Ci0gICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZh
bEluZm8pOworICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZVZh
bHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTEwMTIsNyArMTAxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
CiAgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVGcmFtZS0+Z3VhcmFudGVlZEpTVmFsdWVD
YWxsZWUoKSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWwoZ2xvYmFsT2JqZWN0LCBj
YWxsZWVGcmFtZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsKGdsb2JhbE9iamVjdCwgY2Fs
bGVlRnJhbWUsIGVjbWFNb2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0yMTQwLDcgKzIxMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xv
YmFsT2JqZWN0LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93
blByb3BlcnR5KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkK
K3N0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMTUwLDEyICsyMTQ5LDEyIEBAIHN0YXRpYyBib29s
IGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFZNJiB2CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIGNvdWxkRGVsZXRl
ID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCksIHNsb3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxl
dGUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4g
Y291bGREZWxldGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEVD
TUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMTY2
LDcgKzIxNjUsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwogICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVj
dHVyZU9yTnVsbCgpOwogCi0gICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFzZVZhbHVlLCB1aWQpOworICAgIGJvb2wgcmVzdWx0
ID0gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHVpZCwgZWNt
YU1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CkBAIC0yMTc2LDIzICsyMTc1LDIz
IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTCiAgICAgICAgIGlmICghcGFyc2VJbmRleChpZGVu
dCkpIHsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnlJZCh2
bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpKQotICAgICAgICAgICAg
ICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZh
bHVlLCBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhpZGVudCksICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwp
OworICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhpZGVudCksICpzdHViSW5mbywgRGVs
QnlLaW5kOjpOb3JtYWwsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKLSAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0s
IHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CisgICAgcmV0dXJuIGRl
bGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKSwgdWlkLCBlY21hTW9kZSk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKK3N0YXRp
YyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5LCBFQ01B
TW9kZSBlY21hTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKQEAgLTIyMTEsMTIgKzIyMTAsMTIgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAg
ICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGRE
ZWxldGUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1
cm4gY291bGREZWxldGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFN1YnNjcmlwdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTIyMjgsNyArMjIyNyw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKIAotICAgIGJvb2wgcmVzdWx0ID0g
ZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUs
IHN1YnNjcmlwdCk7CisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9iYWxPYmplY3Qs
IHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgZWNtYU1vZGUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGJhc2VWYWx1
ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmll
ckNlbGwoc3Vic2NyaXB0KSkgewpAQCAtMjIzOSwyMCArMjIzOCwyMCBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCk7CiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkp
OwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeVZhbCh2bSwgY29k
ZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCksIGlkZW50aWZpZXIpKQotICAgICAg
ICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwg
YmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5k
OjpOb3JtYWxCeVZhbCk7CisgICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmll
ciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsLCBlY21hTW9kZSk7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICByZXR1
cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkp
OworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCks
IGVjbWFNb2RlKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRo
U2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVD
ZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkKQEAgLTI1MTksNyArMjUxOCw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEluc3RyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgUHV0UHJv
cGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGdl
dFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25D
b250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkp
KTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwg
aWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CmluZGV4IDYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAuLjM4NmIxYTI5
NDllMjZkYzIwMWM2MDhmMTM3MjM2NGNiMzY5Y2FhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIFZNOwogY2xhc3Mg
V2F0Y2hwb2ludFNldDsKIAogc3RydWN0IEJ5VmFsSW5mbzsKK3N0cnVjdCBFQ01BTW9kZTsKIHN0
cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKQEAgLTE4OCwxMSAr
MTg5LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRM
aXN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1
aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlW
YWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZv
KikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZf
SU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFs
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
Owordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUp
IFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bEV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
OwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2Fs
bEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWND
YWxsKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVS
TkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENh
bGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJO
QUw7CkBAIC0yNTEsMTAgKzI1MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVy
dHkpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8q
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhh
c0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikg
V1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJn
ZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwor
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRT
dHJpbmdJbXBsKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCwgRUNN
QU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01BTW9kZSkgV1RGX0lOVEVS
TkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVj
dCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRo
U2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50
U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCmluZGV4IDJiOGZkYWVmYzI1NDBhZmEwMWMyZWQ0Njc5MjYzMzI4OWE5N2Y0ZjIu
LjdlNmM4N2Q5NzhlODlmZWI5MDc2MWJjYzhiZTY1YzE0MTgwODYxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yODcsNyArMjg3
LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChC
eVZhbEluZm8qIGJ5VmFsSW5mbywgT3AgYnl0ZWMKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
Z2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMSksIHJlZ1QyLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2luZCk7CisgICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUu
bV9lY21hTW9kZSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBp
ZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJh
cnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTMx
MSwxMSArMzExLDEzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5OwogICAgIFZpcnR1YWxSZWdp
c3RlciB2YWx1ZTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsK
IAogICAgIGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2RlKSB7CiAgICAgICAgIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
ICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworICAgICAgICBlY21hTW9kZSA9IGJ5
dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTMzMSw3
ICszMzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHks
IHJlZ1QxKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7Ci0gICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVnVDIsIGJ5VmFsSW5m
byk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVnVDIs
IGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpKTsKIAogICAgIG1fYnlW
YWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0
ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CkBAIC00MjUsNyArNDI3LDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2wKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlk
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1
YkluZm8oKSwgcmVnVDAsIHVpZCwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFs
dWUoKSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpAQCAtNDc1LDcg
KzQ3Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5
LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7CiAgICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAs
IEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC02NTIsNyArNjU0LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWVWUmVnID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICBib29sIGRpcmVjdCA9
ICEhKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpOworICAgIGJvb2wgZGlyZWN0
ID0gYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpOwogCiAgICAgLy8gSW4gb3JkZXIgdG8gYmUg
YWJsZSB0byBwYXRjaCBib3RoIHRoZSBTdHJ1Y3R1cmUsIGFuZCB0aGUgb2JqZWN0IG9mZnNldCwg
d2Ugc3RvcmUgb25lIHBvaW50ZXIsCiAgICAgLy8gdG8ganVzdCBhZnRlciB0aGUgYXJndW1lbnRz
IGhhdmUgYmVlbiBsb2FkZWQgaW50byByZWdpc3RlcnMgJ2hvdFBhdGhCZWdpbicsIGFuZCB3ZSBn
ZW5lcmF0ZSBjb2RlCkBAIC02NjQsNyArNjY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCisgICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNv
ZGUubV9mbGFncy5lY21hTW9kZSgpLAogICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJl
Y3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4
IDUxNzRmY2Y4N2MyMjI3YzA3YjE0OTZiYTQ4MzdiNjI5ZWE2NzViNjIuLmY2N2MxZmI5NTc1NWE4
NzNhZTMyMTMzMzlmOGFlYzhiMzE2ZGE2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNDIyLDcgKzQyMiw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDIsIHJlZ1Qx
KTsKICAgICBlbWl0TG9hZChwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QwKTsKICAgICBlbWl0TG9hZCh2
YWx1ZSwgcmVnVDUsIHJlZ1Q0KTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGly
ZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDIs
IHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDUsIHJl
Z1Q0KSwgYnlWYWxJbmZvKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0
ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0
aW1pemUsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDIsIHJl
Z1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0
KSwgYnlWYWxJbmZvLCBieXRlY29kZS5tX2lzU3RyaWN0TW9kZSk7CiAKICAgICBtX2J5VmFsQ29t
cGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNs
b3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5k
ZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKaW5kZXggZTE2NGJjMTU0ODljODEyZTdmYTg2YTEyM2QyMjUwZjNkYjk4N2E5My4uM2JiNjBm
MGI3NTdlNzczMDhmOWJkYjM0YTk5YjZiNDQ1MmUzMjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCkBAIC03MzcsNyArNzM3LDcgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1
ZQogICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNs
b3QsIHB1dEtpbmQpKTsKIH0KIAotc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVs
ZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQpCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1l
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgcmVzdWx0OwpAQCAtNzcwLDcgKzc3MCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jCiAgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG5ld09mZnNldCkpOwogICAgICAgICAgICAg
bmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSh2bSwgY29kZUJsb2NrLCBwcm9wZXJ0
eU5hbWUsIG5ld09mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOwotICAgICAgICB9
IGVsc2UgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIH0gZWxzZSBp
ZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzTm9uY29u
ZmlndXJhYmxlKCkpCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGUsIHByb3Bl
cnR5TmFtZSwgaW52YWxpZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOwogICAg
ICAgICAgICAgZWxzZQpAQCAtNzkxLDEyICs3OTEsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2MKICAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6
IFJldHJ5Q2FjaGVMYXRlcjsKIH0KIAotdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNo
ZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBEZWxCeUtpbmQga2luZCkKK3ZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVs
QnlLaW5kIGtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAKLSAgICBpZiAodHJ5Q2FjaGVEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
c2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtp
bmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICBpZiAodHJ5Q2FjaGVEZWxldGVCeShnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgc3R1YkluZm8sIGtpbmQsIGVjbWFNb2RlKSA9PSBHaXZlVXBPbkNhY2hlKSB7CiAgICAg
ICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMsIGJhc2VWYWx1ZS5j
bGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6
Ok5vcm1hbCkKICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJp
Yyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGMwMDBhN2RjNTA5ZDk4ZmRh
MGZlYmE1YzA1M2FkZWI0NzhmOGE2MmEuLjdiN2Q3YTY5YzY3YmE5ZGU4MjlmMTFlZTZjODk1YmIz
ZmU2NWE0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00OSw3ICs0OSw3
IEBAIGVudW0gY2xhc3MgRGVsQnlLaW5kIHsKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0
cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEpTVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xv
dCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQo
SlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQ
dXRLaW5kKTsKLXZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwordm9pZCByZXBhdGNoRGVs
ZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBK
U1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIERlbEJ5S2luZCwgRUNNQU1vZGUpOwogdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgYm9vbCB3YXNG
b3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVw
YXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVl
LCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsK
IHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayos
IEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCAyYmZmYzM4MTYzZmUzMWJlOTQxYmVkNmE1ZmI1NmQyOThiZWI2MjI3Li5mMzlmOGY1YzFhYzA3
YmQ5NDAwMGQ4NmRhYTY1NDg5ZmE4OTM1NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTgzNiwxMCArODM2LDEwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAg
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUu
bV9iYXNlKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKIAogICAgIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKLSAgICBpZiAoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5
SWRJc0RpcmVjdCkKKyAgICBpZiAoYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpKQogICAgICAg
ICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBh
c09iamVjdChiYXNlVmFsdWUpLCBpZGVudCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fdmFsdWUpLCBzbG90KTsKICAgICBlbHNlCiAgICAgICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUo
Z2xvYmFsT2JqZWN0LCBpZGVudCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFs
dWUpLCBzbG90KTsKQEAgLTg4OCw3ICs4ODgsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X2J5X2lkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
b2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBuZXdTdHJ1
Y3R1cmUtPmlkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYnl0ZWNvZGUu
bV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIShieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCkpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG5ld1N0cnVjdHVyZS0+cHJv
dG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlQ2VsbCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUNoYWluLnNldCh2bSwgY29kZUJsb2Nr
LCBjaGFpbik7CkBAIC05MjcsNyArOTI3LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2RlbF9ieV9pZCkKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBib29sIGNv
dWxkRGVsZXRlID0gSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21h
TW9kZS5pc1N0cmljdCgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKICAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CiB9CkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOwogICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkp
OwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92
YWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
OworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgp
OwogICAgIAogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAg
IHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKQEAgLTEwNTgsNyArMTA1OCw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBK
U1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUg
PSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0
ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0Lmlz
VUludDMyKCkpKSB7CiAgICAgICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIEpTVmFsdWU6OmlzVUlu
dDMyIHdpbGwgcmV0dXJuIHRydWUgb25seSBmb3IgcG9zaXRpdmUgYm94ZWQgaW50MzJfdDsgYWxs
IHRob3NlIHZhbHVlcyBhcmUgdmFsaWQgYXJyYXkgaW5kaWNlcy4KICAgICAgICAgQVNTRVJUKGlz
SW5kZXgoc3Vic2NyaXB0LmFzVUludDMyKCkpKTsKQEAgLTExMTIsNyArMTExMiw3IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAgIH0KICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKIAotICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGJ5dGVjb2RlLm1fZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CiAgICAgCiAgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOwpAQCAtMTczOCw3ICsxNzM4LDcgQEAgaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgY29uc3QgSW5zdHJ1Y3Rpb24KICAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFs
dWUsIGdsb2JhbEZ1bmNFdmFsKSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpKTsK
ICAgICAKLSAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChnbG9iYWxPYmplY3QsIGNh
bGxlZUZyYW1lKTsKKyAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChnbG9iYWxPYmpl
Y3QsIGNhbGxlZUZyYW1lLCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICBMTElOVF9DQUxMX1JF
VFVSTihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0aW9uUHRyVGFnKTsKIH0KICAgICAKQEAgLTE4NzQsNyAr
MTg3NCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAg
ICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RG
b3VuZCAmJiAhaGFzUHJvcGVydHkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5l
ZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2JqZWN0LCBpZGVudCkpOwogCi0gICAgUHV0UHJvcGVydHlT
bG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xv
dDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24obWV0YWRhdGEubV9nZXRQdXRJbmZv
LmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUs
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpLmlzU3RyaWN0KCksIFB1dFByb3BlcnR5
U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24obWV0YWRhdGEubV9nZXRQdXRJ
bmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+
cHV0KHNjb3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAg
Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJ5dGVjb2RlLCBzY29wZSwgc2xvdCwgaWRlbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDdhNjQyYzAyNmZk
YjBkMjA5OWNhZWRlNjZjNzIxNTE3ZTZmNmZlZTEuLmIwNDdmYjU4MDhjZjBjOGUwMGFjMDEzNWMx
MTllMjM1NDFiMjAyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKQEAgLTU5OSw3ICs1OTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgLy8gMS4gTGV0IGFycmF5IGJlIHRo
ZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBvbiB0aGUgdGhpcyB2YWx1ZS4KICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAt
NjgxLDcgKzY4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpAQCAtNzc5LDcgKzc3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNKb2luKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8g
YmUgPyBUb09iamVjdCh0aGlzIHZhbHVlKS4KLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC04NjQsNyArODY0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0
cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgaWYgKGlz
SlNBcnJheSh0aGlzVmFsdWUpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcChnbG9iYWxPYmplY3QpKSk7CkBA
IC04OTksNyArODk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1B1c2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKTsKIAogICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KHRoaXNWYWx1ZSkgJiYgY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPT0gMSkpIHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBh
c0FycmF5KHRoaXNWYWx1ZSk7CkBAIC05NDAsNyArOTQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTAzNyw3ICsxMDM3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlz
T2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEwNjQsNyArMTA2
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1
Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNsaWNlCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYg
KFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTExMjQsNyArMTEy
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3Qq
IHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05f
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VM
WSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTIyMiw3
ICsxMjIyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Vu
U2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTUuNC40LjEzCiAKLSAgICBKU09iamVjdCog
dGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3Ry
aWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFz
Y29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMzU0LDcgKzEzNTQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2Rl
KS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3Bl
LmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmpl
Y3QpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyAxNS40LjQuMTUKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVj
dChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5
cGVzLmNwcAppbmRleCAyMjZiNDgzNTQ2MmQ4YzQ1ZTYxOWY2NjgwMGJlOTk3YTkxYWU4OGExLi44
MDJmMjAyZjkyOWIwMDgwMzRmYTdkNmViODEwOTBhYjczMzBkMmIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC0xODE4LDcgKzE4MTgsNiBA
QCBwdWJsaWM6CiAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gbWV0YWRhdGEoRGVjb2Rl
ciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5kZWNvZGUoZGVjb2Rlcik7IH0K
IAogICAgIHVuc2lnbmVkIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQot
ICAgIHVuc2lnbmVkIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2Rl
OyB9CiAgICAgdW5zaWduZWQgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25z
dHJ1Y3RvcjsgfQogICAgIHVuc2lnbmVkIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQogICAgIHVuc2lnbmVkIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQpAQCAtMTg1MSw3
ICsxODUwLDYgQEAgcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVy
OwogCiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7Ci0gICAgdW5zaWduZWQgbV9pc1N0cmlj
dE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5G
dW5jdGlvbiA6IDE7CkBAIC0yMDQ4LDcgKzIwNDYsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2Vk
Q29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUq
CiAgICAgLCBtX3Njb3BlUmVnaXN0ZXIoY2FjaGVkQ29kZUJsb2NrLnNjb3BlUmVnaXN0ZXIoKSkK
IAogICAgICwgbV91c2VzRXZhbChjYWNoZWRDb2RlQmxvY2sudXNlc0V2YWwoKSkKLSAgICAsIG1f
aXNTdHJpY3RNb2RlKGNhY2hlZENvZGVCbG9jay5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faXND
b25zdHJ1Y3RvcihjYWNoZWRDb2RlQmxvY2suaXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXND
YXB0dXJlZFZhcmlhYmxlcyhjYWNoZWRDb2RlQmxvY2suaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkK
ICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY2FjaGVkQ29kZUJsb2NrLmlzQnVpbHRpbkZ1bmN0
aW9uKCkpCkBAIC0yMjM0LDcgKzIyMzEsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29k
ZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogICAg
IG1fdGhpc1JlZ2lzdGVyID0gY29kZUJsb2NrLm1fdGhpc1JlZ2lzdGVyOwogICAgIG1fc2NvcGVS
ZWdpc3RlciA9IGNvZGVCbG9jay5tX3Njb3BlUmVnaXN0ZXI7CiAgICAgbV91c2VzRXZhbCA9IGNv
ZGVCbG9jay5tX3VzZXNFdmFsOwotICAgIG1faXNTdHJpY3RNb2RlID0gY29kZUJsb2NrLm1faXNT
dHJpY3RNb2RlOwogICAgIG1faXNDb25zdHJ1Y3RvciA9IGNvZGVCbG9jay5tX2lzQ29uc3RydWN0
b3I7CiAgICAgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA9IGNvZGVCbG9jay5tX2hhc0NhcHR1cmVk
VmFyaWFibGVzOwogICAgIG1faXNCdWlsdGluRnVuY3Rpb24gPSBjb2RlQmxvY2subV9pc0J1aWx0
aW5GdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuY3BwCmluZGV4IDhkZGQ5OGExYmZiMGZlYzE1YTdkNzMyYWNjM2MyY2VmODVkMDQw
YjQuLmJmODU0MTIyNDZiMjljOTk5ZTUyM2E3YTRlY2NjODMxMDcyNmM3OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTc4
LDcgKzE3OCw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAKICAgICBpZiAoIXRoaXNPYmpl
Y3QtPnNwZWNpYWxzTWF0ZXJpYWxpemVkKCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXNPYmplY3QtPm1f
Y2FsbGVlLT5leGVjdXRhYmxlKCkpOwotICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1
dGFibGUtPmlzU3RyaWN0TW9kZSgpOworICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1
dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCk7CiAKICAgICAgICAgaWYgKGlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPmNhbGxlZSkgewogICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewpA
QCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgQ2xvbmVkQXJndW1lbnRzOjptYXRlcmlhbGl6ZVNwZWNp
YWxzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2NhbGxlZS0+ZXhlY3V0YWJsZSgpKTsKLSAgICBi
b29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKTsKICAgICAKICAg
ICBpZiAoaXNTdHJpY3RNb2RlKQogICAgICAgICBwdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwgdGhpcy0+Z2xvYmFsT2JqZWN0KHZtKS0+dGhy
b3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIoKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggZmEzY2QzMjZiY2Q1Yjk3ODlhMjQyN2U2MTNhYzk1NDhi
MmZiM2FlMi4uOWUxNzJiNmFlYTc0YjA2MmRlOWZmZWY4ZGE1NmQ0OTM0Zjk0ZDU1NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC05MSwxMSArOTEs
MTEgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1w
bChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICAgICAgZXhlY3V0YWJsZS0+cmVjb3Jk
UGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCkgfCBhcnJvd0NvbnRleHRGZWF0dXJlLCByb290Tm9k
ZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgcm9vdE5vZGUtPmxhc3RMaW5lKCksIGVuZENvbHVt
bik7CiAKICAgICBib29sIHVzZXNFdmFsID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBFdmFsRmVh
dHVyZTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgU3Ry
aWN0TW9kZUZlYXR1cmU7CisgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVy
ZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6
OnNsb3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRh
YmxlPikKICAgICAgICAgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLT5u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOwotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKHVzZXNFdmFsLCBpc1N0cmljdE1vZGUsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBl
czxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNl
LCBldmFsQ29udGV4dFR5cGUpOworICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVz
ZXNFdmFsLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBl
Pjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKTsKIAog
ICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBVbmxpbmtlZENv
ZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZUluZm8sIGNvZGVHZW5lcmF0aW9uTW9k
ZSk7CiAgICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJl
cygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgbGluZUNvdW50LCB1bmxpbmtl
ZEVuZENvbHVtbik7CkBAIC0xMDQsNyArMTA0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
ICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCku
aXNOdWxsKCkpCiAgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLT5zZXRTb3VyY2VNYXBwaW5nVVJM
RGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkp
OwogCi0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2Rl
LmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHZh
cmlhYmxlc1VuZGVyVERaKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5l
cmF0aW9uTW9kZSwgdmFyaWFibGVzVW5kZXJURFosIGVjbWFNb2RlKTsKIAogICAgIGlmIChlcnJv
ci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNDRkOGZiNGI0MjJh
OTJkMDNiODFhYjBhZjE4ZDRmNjViMWU4YzgzNS4uYjU2YTc0OGVkNDZjNDhhNjNhMGI1NTA3MjMz
YTMxNzkyYmRiMmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3RvX3RoaXMpCiAgICAgLy8gZGlmZmVyZW50IG9iamVjdCB0aGF0IHN0aWxsIGhhcyB0
aGUgc2FtZSBzdHJ1Y3R1cmUgb24gdGhlIGZhc3QgcGF0aCBzaW5jZSBpdCdsbCBwcm9kdWNlCiAg
ICAgLy8gdGhlIHNhbWUgU3BlY3VsYXRlZFR5cGUuIFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0
byB3b3JyeSBhYm91dCB2YWx1ZSBwcm9maWxpbmcgb24gdGhlCiAgICAgLy8gZmFzdCBwYXRoLgot
ICAgIGF1dG8gdmFsdWUgPSB2MS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOworICAgIGF1dG8gdmFsdWUg
PSB2MS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICBSRVRV
Uk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCB2YWx1ZSwgUFJPRklM
RV9WQUxVRSh2YWx1ZSkpOwogfQogCkBAIC05ODksNyArOTg5LDcgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAgfQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAg
IAotICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICBpZiAoIWNvdWxkRGVsZXRlICYmIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAg
ICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQ
cm9wZXJ0eUVycm9yKSk7CiAgICAgCiAgICAgUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkp
OwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9p
ZF93aXRoX3RoaXMpCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jh
c2UpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHRoaXNWYWwgPSBHRVRfQyhieXRlY29kZS5tX3Ro
aXNWYWx1ZSkuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcHV0VmFsdWUgPSBHRVRfQyhieXRlY29k
ZS5tX3ZhbHVlKS5qc1ZhbHVlKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbCwg
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsK
KyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBieXRlY29kZS5tX2VjbWFNb2RlLmlz
U3RyaWN0KCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgYmFzZVZhbHVlLnB1
dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBwdXRWYWx1ZSwgc2xvdCk7CiAgICAgRU5EKCk7
CiB9CkBAIC0xMzIyLDcgKzEzMjIsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5
X3ZhbF93aXRoX3RoaXMpCiAgICAgCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgUHV0
UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsK
KyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUu
aXNTdHJpY3QoKSk7CiAgICAgYmFzZVZhbHVlLnB1dChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2
YWx1ZSwgc2xvdCk7CiAgICAgRU5EKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmgKaW5kZXggMzdhZmE3NmM0MDU3
NTkzNTUwNmU1OWI4NGQyYjVmMWU4MDlhZmZmMy4uYmI1NDc0MDdjMTc1NzVlYWM0NGRhZWMxZjRi
N2UwNzE5OWRjNDY0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgdm9p
ZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdS
ZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAg
ICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGlu
ZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3
UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNt
YU1vZGUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhS
T1VHSDsKQEAgLTYxLDcgKzYxLDcgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xv
YmFsKAogICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxF
bnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAg
ICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQ
dXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwg
bmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUo
KSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFk
YXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEu
bV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8u
ZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRy
eS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJs
ZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMDksNyArMTA5LDcgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwo
CiAgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNv
bHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KICAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwot
ICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5t
X2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0
UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dl
dFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgp
LCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBp
bmxpbmUgdm9pZCB0cnlDYWNoZUdldEZyb21TY29wZUdsb2JhbCgKICAgICAgICAgICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxl
KCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwo
KSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9s
b2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0
YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0
YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAg
ICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOwogICAg
ICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgp
KS5zbG90KCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCAyMTE3Y2M5ZTk2ZDlmMDA0ZmExNjM5ZWE5ZmQ4
MDZhNDUzOGMwMGVjLi5lYmM2ZjIyZTAwOWQyMzRjODA1MzA0YTdlMDc2MDc3ZDA2OTk5MGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTQy
LDcgKzE0Miw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiAKICAgICBpZiAoIXRoaXNWYWx1
ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgdGhpc1ZhbHVlID0g
Z2xvYmFsT2JqZWN0OwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTT2JqZWN0Kj4o
dGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICBKU09i
amVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmlu
dGVycHJldGVyLT5leGVjdXRlUHJvZ3JhbShzb3VyY2UsIGdsb2JhbE9iamVjdCwgdGhpc09iaik7
CiAKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCAxYTcyYmZi
NDdlZmVmYTU1MGRlZjk4MzU2NjU0YWY2NDkwNzc5NzM1Li43YzE5Yjc1YzYyYzgwNDEzNjJkZDll
YjEyZWRhNTk3OTI1MTE1ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1EaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKK0RpcmVjdEV2YWxFeGVjdXRh
YmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2
ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBFQ01BTW9kZSBlY21hTW9kZSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDUsMTEgKzQ1LDExIEBAIERpcmVjdEV2YWxFeGVj
dXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFi
bGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0u
aGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpc0luU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFs
Q29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRh
YmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVkQ29u
dGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhl
Y3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0g
ICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1v
ZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3Q7CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBlY21hTW9kZS5p
c1N0cmljdCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2Vu
ZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsK
IAogICAgIC8vIFdlIGRvbid0IGJvdGhlciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2UgZGly
ZWN0IGV2YWwgdXNlcyBhIHNwZWNpYWxpemVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaApp
bmRleCA0NzgyNmJmMzIwYzFjMTdkNTgzMTM5YzQ2ZTUzZTZkYWVkYWJiZDQ5Li4yNDA3NWE3ZjVh
MzZjNzNmZWJhNDA3ZTcxMDlhNmZjMzNmMjcwZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDcgKzMxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29s
IGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
KTsKKyAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqLCBFQ01BTW9kZSk7CiBwcml2YXRlOgogICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0
YWJsZS5oCmluZGV4IDYwNWIyZWZmYjFkN2I4MmU1Y2RiN2M2NDUzZGM1ZGU3MWYzMDI2NzYuLjY3
ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZiOGU3ZTk5NDgwZWQ3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtNjIsNyArNjIsNyBAQCBw
dWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3Ry
aWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0
VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlh
YmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsg
fQogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4g
bV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKaW5kZXggNDQzYmIzOGE2NWNiODA0NzQ1Njg1N2NkOGQyNzZhZGU5ZjdhNmI1Yy4uYmFk
ZTk4NzM1Zjk5ZGM0N2U3YTZkYzc4N2M1Nzk3MTFjZTUxNWVmYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTE0Myw3ICsx
NDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBQZXIgaHR0cHM6Ly90YzM5LmdpdGh1
Yi5pby9lY21hMjYyLyNzZWMtZm9yYmlkZGVuLWV4dGVuc2lvbnMsIG9ubHkgc2xvcHB5LW1vZGUg
bm9uLWJ1aWx0aW4gZnVuY3Rpb25zIGluIG9sZC1zdHlsZSAocHJlLUVTNikgc3ludGFjdGljIGZv
cm1zIGNhbiBjb250YWluCiAgICAgICAgIC8vICJjYWxsZXIiIGFuZCAiYXJndW1lbnRzIi4KLSAg
ICAgICAgcmV0dXJuICFpc1N0cmljdE1vZGUoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24o
KTsKKyAgICAgICAgcmV0dXJuICFpc0luU3RyaWN0Q29udGV4dCgpICYmIHBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlICYmICFpc0NsYXNzQ29uc3RydWN0
b3JGdW5jdGlvbigpOwogICAgIH0KICAgICBib29sIGhhc1Byb3RvdHlwZVByb3BlcnR5KCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQ
dXRJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgKaW5k
ZXggMDZmZmQ0M2EwMjVmMGI1ZWNiNGUwMTBlMjcxOGQwNmMwMWI0NTlkZS4uOTM0MDgwMWYyMWY2
NWQyN2I2YTNmODE2NmFkODQ4NjUyZDFiNjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldFB1dEluZm8uaApAQCAtMjAyLDE4ICsyMDIsMjAgQEAgY2xhc3MgR2V0UHV0SW5m
byB7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBPcGVyYW5kOwogcHVibGljOgogICAgIC8vIEdpdmUg
ZWFjaCBmaWVsZCAxMCBiaXRzIGZvciBzaW1wbGljaXR5LgotICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKE9wZXJhbmQpICogOCA+IDMwLCAiTm90IGVub3VnaCBiaXRzIGZvciBHZXRQdXRJbmZvIik7
CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3BlcmFuZCkgKiA4ID4gMzEsICJOb3QgZW5vdWdo
IGJpdHMgZm9yIEdldFB1dEluZm8iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGlz
U3RyaWN0U2hpZnQgPSAzMDsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1vZGVTaGlm
dCA9IDIwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW5pdGlhbGl6YXRpb25TaGlm
dCA9IDEwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdHlwZUJpdHMgPSAoMSA8PCBp
bml0aWFsaXphdGlvblNoaWZ0KSAtIDE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBp
bml0aWFsaXphdGlvbkJpdHMgPSAoKDEgPDwgbW9kZVNoaWZ0KSAtIDEpICYgfnR5cGVCaXRzOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbW9kZUJpdHMgPSAoKDEgPDwgMzApIC0gMSkg
JiB+aW5pdGlhbGl6YXRpb25CaXRzICYgfnR5cGVCaXRzOwotICAgIHN0YXRpY19hc3NlcnQoKG1v
ZGVCaXRzICYgaW5pdGlhbGl6YXRpb25CaXRzICYgdHlwZUJpdHMpID09IDB4MCwgIlRoZXJlIHNo
b3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNvbHZlTW9kZSBSZXNvbHZlVHlwZSBh
bmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBp
c1N0cmljdEJpdCA9IDEgPDwgMzA7CisgICAgc3RhdGljX2Fzc2VydCgobW9kZUJpdHMgJiBpbml0
aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0cyAmIGlzU3RyaWN0Qml0KSA9PSAweDAsICJUaGVyZSBz
aG91bGQgYmUgbm8gaW50ZXJzZWN0aW9uIGJldHdlZW4gUmVzb2x2ZU1vZGUgUmVzb2x2ZVR5cGUg
YW5kIEluaXRpYWxpemF0aW9uTW9kZSIpOwogCiAgICAgR2V0UHV0SW5mbygpID0gZGVmYXVsdDsK
IAotICAgIEdldFB1dEluZm8oUmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJl
c29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQotICAgICAg
ICA6IG1fb3BlcmFuZCgocmVzb2x2ZU1vZGUgPDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2RlKSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJl
c29sdmVUeXBlKQorICAgIEdldFB1dEluZm8oUmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUsIFJlc29s
dmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2Rl
LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX29wZXJhbmQoKGVjbWFNb2RlLmlzU3Ry
aWN0KCkgPDwgaXNTdHJpY3RTaGlmdCkgfCAocmVzb2x2ZU1vZGUgPDwgbW9kZVNoaWZ0KSB8IChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2RlKSA8PCBpbml0aWFsaXphdGlv
blNoaWZ0KSB8IHJlc29sdmVUeXBlKQogICAgIHsKICAgICB9CiAKQEAgLTIyNSw2ICsyMjcsNyBA
QCBwdWJsaWM6CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4obV9vcGVyYW5kICYgdHlwZUJpdHMpOyB9CiAgICAgSW5p
dGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEluaXRpYWxpemF0aW9uTW9kZT4oKG1fb3BlcmFuZCAmIGluaXRpYWxpemF0aW9uQml0
cykgPj4gaW5pdGlhbGl6YXRpb25TaGlmdCk7IH0KICAgICBSZXNvbHZlTW9kZSByZXNvbHZlTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc29sdmVNb2RlPigobV9vcGVyYW5kICYg
bW9kZUJpdHMpID4+IG1vZGVTaGlmdCk7IH0KKyAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3BlcmFuZCAmIGlzU3RyaWN0Qml0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDog
RUNNQU1vZGU6OnNsb3BweSgpOyB9CiAgICAgdW5zaWduZWQgb3BlcmFuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fb3BlcmFuZDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA1
ZjlmODVlMWVjZGM4MTM0N2Q4OTc0MDZlNjIxMTRkMDY1NDcyNzkzLi42NmNjNzUwNzM5MGJhNDFl
MDg4OWNkNmI2YzUwMGU3NmIwMjE2MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBjYWxsU2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0
ZXJTZXR0ZXIKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0
ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwogCiAgICAgaWYgKGdldHRlclNldHRlck9iai0+aXNT
ZXR0ZXJOdWxsKCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwor
ICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVjbWFNb2RlLmlz
U3RyaWN0KCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKIAogICAgIEpTT2JqZWN0KiBz
ZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4
IDIwMDMxOTI5MGYwYmUwZjk3MzE0MWJmZTk0OTlmM2JhZTg5Nzg4NjIuLjE0ZjdmYWI1YzNkNGVh
YTg3OTQyYmNmMzMyYTQ1ZjFjNTA2ZGFlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCitJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1LDE1ICs0
NSwxNCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW5k
aXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xv
YmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgYXV0byogZXhl
Y3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGU+KHZtLmhlYXApKSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNl
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0
VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFyc2Vy
RXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRh
YmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRp
b25Nb2RlKCk7CiAgICAgCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxD
b2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVubGlua2VkRXZhbENvZGVCbG9jaygKLSAgICAgICAg
dm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUpOworICAgICAgICB2bSwgZXhlY3V0
YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUpOwogCiAgICAgaWYg
KGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSkKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1
Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5w
cm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CkBAIC02OCw4ICs2Nywx
MCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQog
Ci1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0
cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkK
LSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRl
eHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2
YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKQorY29uc3RleHBy
IGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFsc2U7Citjb25zdGV4cHIgYm9vbCBpbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uID0gZmFsc2U7CitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQor
ICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4
dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpObykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IGMxOTkyZmRiMWE0MjUwNTRhZTliYzQ1NzUx
MjhlNmY1MDg2Y2E5YmMuLjQ5OGI1Yzg3MDk4YWIzNzQ3OTdhMjViZjQ4MTYzN2NmYmI5MmVkZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2
YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewog
cHVibGljOgotICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIHByaXZhdGU6Ci0gICAgSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUs
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIH07CiAKIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKEluZGlyZWN0RXZhbEV4ZWN1dGFibGUpID09IHNpemVvZihFdmFs
RXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJkYjJlNTc3MDJiM2NiYzM2OTkzNjlkNzdjOTQzMzBkNC4u
YjE5MWU4NGZlZTFmYTcxMzMxYTNmMmNjMjM4OGQ1ZjRhNTJkODMwMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBK
U1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEFTU0VSVCghaXNDZWxsKCkpOwogCi0gICAg
aWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkp
CiAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUo
KSkKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eQogCiAgICAgICAg
ICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAgIGlm
IChncy5pc0dldHRlclNldHRlcigpKQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOworICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3Qs
ICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBFQ01BTW9kZTo6c3RyaWN0
KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIAogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9t
R2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIo
Z2xvYmFsT2JqZWN0LCBncywgYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CkBAIC00MzQsNCArNDM0LDEy
IEBAIE5FVkVSX0lOTElORSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKEpTVmFsdWUpCiB9CiAj
ZW5kaWYKIAordm9pZCBFQ01BTW9kZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIGlmIChpc1N0cmljdCgpKQorICAgICAgICBvdXQucHJpbnQoIlN0cmljdE1vZGUiKTsKKyAg
ICBlbHNlCisgICAgICAgIG91dC5wcmludCgiTm90U3RyaWN0TW9kZSIpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApp
bmRleCBkZWI2NDAyNTMwZWI1OGJmNTBkMGQ2NzBlZDE2YmM1NDhiN2Y5MjY5Li45MjY5OTAwMzE3
MjMzMzJiMGRkNTFkMmU2OWRkN2UyNDdmNGRiMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC04MCw4ICs4MCwzMSBAQCB1c2luZyBXcml0ZUJhcnJp
ZXJUcmFpdHNTZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxU
LCBVbmtubwogICAgIER1bWJWYWx1ZVRyYWl0czxUPiwgRHVtYlB0clRyYWl0czxUPgogPjo6dHlw
ZTsKIAotZW51bSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJO
dW1iZXIsIFByZWZlclN0cmluZyB9OwotZW51bSBFQ01BTW9kZSB7IFN0cmljdE1vZGUsIE5vdFN0
cmljdE1vZGUgfTsKK2VudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA6IHVpbnQ4X3QgeyBOb1By
ZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07CisKK3N0cnVjdCBFQ01BTW9k
ZSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFN0cmljdE1vZGUgPSAwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDhfdCBTbG9wcHlNb2RlID0gMTsKKworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgZnJvbUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBF
Q01BTW9kZShieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgc3RyaWN0KCkg
eyByZXR1cm4gRUNNQU1vZGUoU3RyaWN0TW9kZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVD
TUFNb2RlIHNsb3BweSgpIHsgcmV0dXJuIEVDTUFNb2RlKFNsb3BweU1vZGUpOyB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNTdHJpY3QoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFN0
cmljdE1vZGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBjb25zdGV4cHIgRUNNQU1vZGUodWludDhfdCB2YWx1ZSkKKyAgICAgICAg
OiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gU3RyaWN0
TW9kZSB8fCBtX3ZhbHVlID09IFNsb3BweU1vZGUsIG1fdmFsdWUpOworICAgIH0KKworICAgIHVp
bnQ4X3QgbV92YWx1ZTsKK307CiAKIGVudW0gY2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZDsKIHN0
cnVjdCBDYWxsRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmlu
ZGV4IDU1M2QxNmY1NjkyNTljZjgyM2I5Njg2OGZkMDkwYjdmMmU3MDhiMjAuLmE0NzRlN2FlNTI3
NWFjNzY4NjQ4MjM2ZjY2ZmQ0MjhhZmRlN2UxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgSlNDZWxsOjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCB1CiAKIEpTVmFsdWUgSlNDZWxsOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUg
PT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0
dXJuIGNlbGw7CiAgICAgcmV0dXJuIGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDA5YWJh
ZTM4YmUwZmUzNDZmZDVkMzhiMjJiZGE0N2JmOWU2NmNhMzUuLjUxOTAzY2E3ODcxZDM3MmUyNmI4
ZWNlMGUzYWUwYTNmMTQ2Yjg1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cnVjdHVyZSogSlNGdW5jdGlvbjo6
c2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
CiAgICAgYm9vbCBpc0J1aWx0aW4gPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOwog
ICAgIGlmIChleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwotICAgIGlmIChl
eGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNJblN0cmlj
dENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaWN0RnVuY3Rpb25T
dHJ1Y3R1cmUoaXNCdWlsdGluKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zbG9wcHlGdW5j
dGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwogfQpAQCAtNDMwLDcgKzQzMCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9y
V3JhcHBlck1ldGhvZE1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldy
YXBwZXJNZXRob2RNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpJbnN0YW5jZUZpZWxk
SW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBpZiAoIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlmICghZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5p
c0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWxsZXIpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJp
Y3QgY2FsbGVyIl9zKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDliYThjNzBkNzZh
NzQyZWViNTcxNjc4Y2M5M2RiYWNiNDc5Mzk0NGUuLmNhOTQ4OWMwZTBlZmRjODZiMGY0MjJmZjI4
ODZlZjQ4ZDE5M2E5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTUwNyw3ICs1MDcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBh
cnNlZE9iamVjdCk7CiAKICAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luID0gY2FsbEZyYW1l
LT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzLCBz
b3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZh
bENvbnRleHRUeXBlOjpOb25lKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291cmNl
T3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBl
OjpOb25lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2
YWwpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBA
IC03MTQsNyArNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
UHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVj
dEVycm9yKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CiAKQEAgLTczNSw3ICs3MzUsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
U3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRo
aXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZp
bmVkRXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggMjVkZmY1MzMzNzg5MTQyOGU2MmZhOTUxOWRlMTRhNzE5NDRkNGI3OC4uZGFjNzIzZWMw
YzkzYTVkNjYzOThlYzg5ODA0Y2I3ZjE0OTcyM2UwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtODEwLDcgKzgxMCw3IEBAIGJvb2wgSlNPYmplY3Q6
OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLT5zdHJ1Y3R1cmUodm0pLT5pc0Rp
Y3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIo
b2JqLCBvZmZzZXQpOwogCi0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVy
KGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFsdWUoKSwgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0
TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOworICAgICAgICAgICAgICAgIGJv
b2wgcmVzdWx0ID0gY2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHNsb3QudGhpc1ZhbHVlKCksIGdz
LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFN
b2RlOjpzbG9wcHkoKSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9
CkBAIC0xODE4LDcgKzE4MTgsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3lj
bGVDaGVjayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJl
dHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQs
ICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCJfcyk7
CiAgICAgfQogCi0gICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2Jh
bE9iamVjdCwgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1ldGhvZFRhYmxl
KHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSA9PSB0
aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlw
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCmluZGV4IDZkNWFiNjgyYzY4MzkxNGY2OWYzZTVjMjI4Mzg0ZmVmZTQ2NTc3Yzgu
LmIzYzI3MjAyMjgwNmI4MTE0MzU3ZDgxZGU5ZjNiNWZjMTAzNTRkOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTEsNyArNDExLDcgQEAgU3ltYm9s
VGFibGUqIEpTU2NvcGU6OnN5bWJvbFRhYmxlKFZNJiB2bSkKIAogSlNWYWx1ZSBKU1Njb3BlOjp0
b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNt
YU1vZGUpCiB7Ci0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFN
b2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBhYWVlOGVlN2E3N2VlYTZkZWZjNzU3YTg3ZDIzYjNl
Y2JhODZmMjFmLi4wZjIwN2EzYjY4NmFlYTdiNTdkNDk1Y2Q3MDI5YWQ4YTgzODZkYmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00MTcsNyArNDE3
LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KSBjb25zdAogCiBKU1ZhbHVlIEpTU3RyaW5nOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAgICBp
ZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkK
ICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRlKGds
b2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhjZWxsKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IDY5
NzZmNzA1ZDM0MDRlMzdhMjFkODkyYjEyM2NiYzM4MDQyMzZkNWIuLjUzNTIzNzE4ZGM5YjlkMjIx
MmI4YjgyMTE3NjM2OGY0ODQyMTgyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC05MzMsNyArOTMzLDcgQEAgSlNWYWx1ZSBMaXRl
cmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQgdG8g
cmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5Il9zOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9u
dWxsT3JDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpIDogZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9u
dWxsT3JDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpIDog
ZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5sYXN0KCkucHV0KG1fZ2xv
YmFsT2JqZWN0LCBpZGVudCwgbGFzdFZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChpZGVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA0NjU0NjIwMDRmMzdlMjAxMmQ3
MjE2OGM2MjA5ZTUwNTE3YzEyMDU1Li4wOTlkODk5YWQ1ZTYzYTc0MzM1OGUyYWJiMjBhYjM0ZjU5
Yjk2MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAg
REVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25z
dCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9k
dWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFs
dWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6
Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4
dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygp
IHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24u
Y3BwCmluZGV4IDEwZjg4NzI1YWMwMDJkMjUzYTljODYzNzFkNDUzOTg1MGRmY2FhMjkuLmVhMjRh
OTRjN2I1NmQwMGI5M2Q0YWMzMjAzZjgzYjQ2ZjFhYWFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcApAQCAtNTIsNyAr
NTIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51
ZTsKIAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHZpc2l0b3ItPmNvZGVCbG9jaygp
OwotICAgICAgICBtX2NhbGxlcklzU3RyaWN0ID0gY29kZUJsb2NrICYmIGNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCk7CisgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQg
dGhhdCB3ZSBtaWdodCBoYXZlIGFuIHN0cmljdCBvcGNvZGUgaW4gYSBub24tc3RyaWN0IGNvbnRl
eHQsIGJ1dCB0aGF0J3MKKyAgICAgICAgLy8gb2sgc2luY2Ugd2UgYXNzZXJ0IGJlbG93IHRoYXQg
dGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGZyb20gYW55IGtpbmQgc3RyaWN0
IGNvbnRleHQuCisgICAgICAgIG1fY2FsbGVySXNTdHJpY3QgPSBjb2RlQmxvY2sgJiYgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKTsKICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKICAgICB9CiAKQEAgLTczLDExICs3NSwxMiBAQCBzdGF0
aWMgYm9vbCBjYWxsZXJJc1N0cmljdChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogbmFt
ZXNwYWNlIE51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQot
ICAgIGlmIChjYWxsZXJJc1N0cmljdCh2bSwgY2FsbEZyYW1lKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGlu
ZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3MpKTsKKyNpZiAhQVNTRVJUX0VO
QUJMRUQKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGVySXNTdHJpY3QpOworI2VuZGlmCisg
ICAgQVNTRVJUKCFjYWxsZXJJc1N0cmljdChnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZSkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRl
eCBjMDU3MTJiMGE0NWExZTBhMGU2ZWIzNjZmYmY0MzQzZGYyNDg2Zjk2Li42ZGFhN2I0YzZiYjVh
YzI5ODQyOTFlMzhiYjI2OThmYjUwNjJmZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgT2JqZWN0
UHJvdG90eXBlKiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFMKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKTsKICAgICBKU09iamVjdCogdmFsdWVPYmogPSB0aGlzVmFsdWUudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlT2JqKSkKICAgICAgICAg
cmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC05Miw3ICs5Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0x
MjQsNyArMTI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBpZiAoIWNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKQEAg
LTE0OCw3ICsxNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY0RlZmluZUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMTc2LDcgKzE3Niw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0
dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHNl
dCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmlj
dE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yMzQs
NyArMjM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNM
b29rdXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGds
b2JhbE9iamVjdCk7CkBAIC0yNjcsNyArMjY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShKU0dsb2JhbE9iamVjdCoK
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0
eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTI4OCw3ICsyODgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYQogICAgIC8vIDIuIEludm9rZShWLCAidG9TdHJpbmciKQogCiAgICAg
Ly8gTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IHBhc3NpbmcgdGhlIHRo
aXMgdmFsdWUgYXMgdGhlIGFyZ3VtZW50LgotICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFs
dWUudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIExldCB0b1N0
cmluZyBiZSB0aGUgTy5bW0dldF1dKCJ0b1N0cmluZyIsIFYpCkBAIC0zMTMsNyArMzEzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aGlzVmFsdWUuaXNVbmRlZmluZWQoKSA/IHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRP
YmplY3RTdHJpbmcoKSA6IHZtLnNtYWxsU3RyaW5ncy5udWxsT2JqZWN0U3RyaW5nKCkpOwogICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5jcHAKaW5kZXggYThmMGI1Zjg5OTQyYjM3ZGFlOWU3YTMwMjkyZDQxOGZiODdlODkzMy4uMmIz
MmY1YTA0YTIwMTIzNmE5N2JiYWVkYzQzNDYyY2QyODhlMzM4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcApAQCAtODIsNyAr
ODIsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgQVNTRVJUKCZnbG9iYWxPYmplY3Qt
PnZtKCkgPT0gJnZtKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZSBzdHJpY3RNb2RlID0gaXNTdHJpY3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6
OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OworICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZSBzdHJpY3RNb2RlID0gaXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0
TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0
LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtLmNvZGVDYWNoZSgpLT5nZXRVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2soCiAgICAgICAgIHZtLCB0aGlzLCBzb3VyY2UoKSwgc3RyaWN0TW9kZSwgY29k
ZUdlbmVyYXRpb25Nb2RlLCBlcnJvcik7CkBAIC0xMzYsNyArMTM2LDcgQEAgSlNPYmplY3QqIFBy
b2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KgogICAgICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGdsb2JhbExleGljYWxF
bnZpcm9ubWVudC0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBlbnRyeS5rZXkuZ2V0KCkpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKICAg
ICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNo
b3VsZFRocm93KCkgJiYgIWlzU3RyaWN0TW9kZSgpKSkgeworICAgICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJh
dGlvblNob3VsZFRocm93KCkgJiYgIWlzSW5TdHJpY3RDb250ZXh0KCkpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIFdlIG9ubHkgYWxsb3cgImNvbnN0IiBkdXBsaWNhdGUgZGVjbGFyYXRpb25z
IHVuZGVyIHRoaXMgc2V0dGluZy4KICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUs
IHdlIGRvbid0ICJsZXQiIHZhcmlhYmxlcyB0byBiZSBvdmVycmlkZGVuIGJ5ICJjb25zdCIgdmFy
aWFibGVzLgogICAgICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LT5pc0NvbnN0VmFyaWFibGUoZW50cnkua2V5LmdldCgpKSkKQEAgLTE4NSw3ICsxODUsNyBAQCBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9
IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChh
dXRvJiBlbnRyeSA6IGxleGljYWxEZWNsYXJhdGlvbnMpIHsKLSAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlv
blNob3VsZFRocm93KCkgJiYgIWlzU3RyaWN0TW9kZSgpKSkgeworICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAmJiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0
aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNJblN0cmljdENvbnRleHQoKSkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoc3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgZW50cnkua2V5LmdldCgpKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCAyOWNh
MDEzMjA1NjFiMTQ2YTYyOWM2ZmI1ZmExODhmZjU4YzNkYjFmLi5iODcxNWFhNzJiYmNiNzMzOWQ2
ZTM0MTNhYzU5Yzc0NDExN2I4MmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAg
ICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0
TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRU
eXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0
VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFRlbXBsYXRl
T2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggYjA3ZTBhMDI5MzMyODI2
MTAzNmY0MTEwNmVlZWU5ZTVmOTBjNjY2MC4uNmQxMWI0MWJhNDA2MTgxNTUyMmRhYjNlYmZlMzFj
Nzc2ZTdlZTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcApAQCAtNTQ3LDcgKzU0Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OlN0cmljdE1vZGUpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmlj
dCgpKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChhcmdBcnJheSk7CiAgICAgQVNTRVJUKCFhcmd1
bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgYXBwbHlNZXRob2QsIGNhbGxUeXBlLCBj
YWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCmluZGV4IDEwNmNmMjVmNjMxZjA0MWI5YmM2
MzE5NDAwZjQ2NjdiMDdiMzljZmMuLjBkZDQ0ZWNiODQzNzFkNDc3MzQ2MGNkNGMwYWFlNTVmZTNj
ZDIzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVj
dXRhYmxlLmgKQEAgLTYwLDEyICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBFdmFsRmVhdHVyZTsgfQogICAgIGJvb2wgdXNl
c0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJl
OyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9p
c0Fycm93RnVuY3Rpb25Db250ZXh0OyB9Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29u
dGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZh
bENvbnRleHRUeXBlPihtX2V2YWxDb250ZXh0VHlwZSk7IH0KKyAgICBib29sIGlzSW5TdHJpY3RD
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9
CiAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgp
ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7IH0KLSAgICAgICAgCiAgICAgdm9pZCBzZXRO
ZXZlcklubGluZShib29sIHZhbHVlKSB7IG1fbmV2ZXJJbmxpbmUgPSB2YWx1ZTsgfQogICAgIHZv
aWQgc2V0TmV2ZXJPcHRpbWl6ZShib29sIHZhbHVlKSB7IG1fbmV2ZXJPcHRpbWl6ZSA9IHZhbHVl
OyB9CiAgICAgdm9pZCBzZXROZXZlckZUTE9wdGltaXplKGJvb2wgdmFsdWUpIHsgbV9uZXZlckZU
TE9wdGltaXplID0gdmFsdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKaW5kZXggODVjMWNmMzQzMzgxODQ3ODgzODg0
NTZlYjM2YWVhMmZmYjYzNDFmYS4uM2ZkNjAwNmUxZTg0NWZhZWVkMjZkMGU3MjgzYzUzZjZjMTBm
MzExNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJy
YXlWYWx1ZU1hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBib29sIFNwYXJzZUFycmF5RW50
cnk6OnB1dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
U3BhcgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIEJhc2U6OmdldCgp
LCB2YWx1ZSwgc2hvdWxkVGhyb3cgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyA/IEVDTUFNb2RlOjpzdHJpY3Qo
KSA6IEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogfQogCiBKU1ZhbHVlIFNwYXJzZUFycmF5RW50cnk6
OmdldE5vblNwYXJzZU1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldEN1c3RvbS5oCmluZGV4IDA5Mjg1MTc2M2NhMGQxYWNhMWJjNzM0NjUz
NTBiNmUyYzBlZWU1MDYuLjM3NjhiZjI5MWM1OWRhZTg5OWRiMGYxNTBhMWIwY2EwOGM3ZGMyYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0
b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50
VGFyZ2V0Q2FzdCh2bSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpOb3RTdHJpY3RNb2RlKSk7CisgICAgICAgIGF1dG8gdGhpc09iamVjdCA9
IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiRXZlbnRUYXJnZXQiLCBvcGVy
YXRpb25OYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4OTIwM2ZkZDk1Y2Y3MDJjNzZiMDA1OTFmYjdiNzc1NDY2
ZjQ3MTY1Li5lMjNjMWU4ZmNkYWYxZTdlYmUwMmE5NjcwZWRmZjk5MWJjNGJlNmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtNDU5MCw3ICs0NTkwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBh
dXRvIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGRlY29kZWRUaGlzVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnNsb3BweSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuICRjYXN0aW5nRnVuY3Rpb24odm0sIGRlY29kZWRUaGlzVmFsdWUpO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0gZWxz
ZSB7CkBAIC00NjA2LDcgKzQ2MDYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAg
ICAgICAgICMgRklYTUU6IE1ha2UgY29uc2lzdGVudCBJRExBdHRyaWJ1dGU8Pjo6Y2FzdCBhbmQg
SURMT3BlcmF0aW9uPD46OmNhc3QgaW4gY2FzZSBvZiBDdXN0b21Qcm94eVRvSlNPYmplY3QuCiAg
ICAgICAgIG15ICRjYXN0aW5nRnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gInRvJHtjbGFzc05hbWV9IiA6IEdldENhc3Rp
bmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOwotICAgICAgICBteSAkdGhpc1ZhbHVl
ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0
fSA/ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBO
b3RTdHJpY3RNb2RlKSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKKyAgICAgICAgbXkgJHRo
aXNWYWx1ZSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9K
U09iamVjdH0gPyAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAke2NsYXNzTmFtZX0q
IElETE9wZXJhdGlvbjwke2NsYXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSlcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gJGNhc3RpbmdGdW5jdGlvbihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJHRo
aXNWYWx1ZSk7XG4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNmI3OTQ5ZjFjZDE2ZjEzZDYwOGE4YTNmMTAzZjA5Y2I5
NWNiYjFjLi40ZjdjZWNiMzkwZDJlZjFmNzgzNjJiYTdjYjM1M2I5MjYzZWUxMmJjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMjAtMDMtMzAgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xh
cmF0aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIHRlc3Qg
c2luY2UgaXQgY29udGFpbmVkIGluY29ycmVjdCBjb2RlLgorCisgICAgICAgICoganMvY2xhc3Mt
c3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMuanM6CisKIDIwMjAtMDMtMjcgIEphc29uIExh
d3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2syIF0gQVNT
RVJUSU9OIEZBSUxFRDogbV9tZXNzYWdlRXZlbnRDb3VudCBAIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OmZpbmlzaGVkRmlyaW5nTWVzc2FnZUV2ZW50KCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKaW5kZXggN2Yx
NDkyNGYzZDNhZDc2OWQ5OTgxYjQ1Y2FiNDZlZWVmOTc2ZDc1Yy4uODg4Y2QyZDIyNTJhOGYzOWNj
M2YyZWUzMDE3NDZiOTA1OGJjYTljOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvY2xhc3Mt
c3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvY2xh
c3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKQEAgLTU2LDkgKzU2LDkgQEAgUEFT
UyBBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNSk7IChuZXcgQSlb
J2ZvbyddKCkgaXMgMjE1CiBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgn
Zm9vJywgMjE2KTsgQiA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdiYXInLCAyMTcp
OyBbKG5ldyBBKVsnZm9vJ10oKSwgKG5ldyBCKVsnYmFyJ10oKV0gaXMgWzIxNiwgMjE3XQogUEFT
UyB4ID0gMjE4OyBjbGFzcyBBIHsgW3grK10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSlbMjE4
XSgpIGlzIDIxOQogUEFTUyB4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgWyh4PTIyMCkgJiYgJ2Zv
byddKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpLmZvbygpIGlzIDIyMAotUEFTUyB4ID0gMjIx
OyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4
KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0oKV0g
aXMgWzIyMSwgMjIyXQorUEFTUyB2YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgWyh4MT14
KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7
IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0oKV0gaXMgWzIyMSwgMjIyXQogUEFT
UyB4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjM7IH0gWydmb28n
ICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBbKG5ldyBBKS5mb28xKCksIChuZXcgQSkuZm9v
MigpXSBpcyBbMjIzLCAyMjRdCi1QQVNTIHggPSAxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgp
IHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsg
fSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSBpcyBbMiwgMywgMjI2XQorUEFTUyB2YXIgeCA9
IDEsIHgxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgp
ICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9v
MigpXSBpcyBbMiwgMywgMjI2XQogCiBTdGF0aWMgbWV0aG9kcyB3aXRoIGNvbXB1dGVkIG5hbWVz
CiBQQVNTIGNsYXNzIEEgeyBzdGF0aWMgWydhJyArICdiJ10oKSB7IHJldHVybiAzMTE7IH0gfTsg
QS5hYigpIGlzIDMxMQpAQCAtNjksOSArNjksOSBAQCBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhT
dGF0aWNNZXRob2QoJ2ZvbycsIDMxNSk7IEFbJ2ZvbyddKCkgaXMgMzE1CiBQQVNTIEEgPSBjcmVh
dGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhT
dGF0aWNNZXRob2QoJ2JhcicsIDMxNyk7IFtBWydmb28nXSgpLCBCWydiYXInXSgpXSBpcyBbMzE2
LCAzMTddCiBQQVNTIHggPSAyMTg7IGNsYXNzIEEgeyBzdGF0aWMgW3grK10oKSB7IHJldHVybiB4
OyB9IH07IEFbMjE4XSgpIGlzIDIxOQogUEFTUyB4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgc3Rh
dGljIFsoeD0yMjApICYmICdmb28nXSgpIHsgcmV0dXJuIHg7IH0gfTsgQS5mb28oKSBpcyAyMjAK
LVBBU1MgeCA9IDIyMTsgY2xhc3MgQSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVy
biB4MTsgfSBzdGF0aWMgWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIx
XSgpLCBBWzIyMl0oKV0gaXMgWzIyMSwgMjIyXQorUEFTUyB2YXIgeCA9IDIyMSwgeDEsIHgyOyBj
bGFzcyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRpYyBb
KHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgpXSBp
cyBbMjIxLCAyMjJdCiBQQVNTIHggPSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArIHgrK10o
KSB7IHJldHVybiAyMjM7IH0gc3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7IH0g
fTsgW0EuZm9vMSgpLCBBLmZvbzIoKV0gaXMgWzIyMywgMjI0XQotUEFTUyB4ID0gMTsgY2xhc3Mg
QSB7IHN0YXRpYyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgp
ICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSBp
cyBbMiwgMywgMjI2XQorUEFTUyB2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9v
JyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFsoeDE9eCkgJiYgJ2ZvbycgKyB4Kytd
KCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28yKCldIGlzIFsyLCAzLCAyMjZdCiAK
IEluc3RhbmNlIG1ldGhvZHMgd2l0aCBkdXBsaWNhdGVkIG5hbWVzCiBQQVNTIGNsYXNzIEEgeyBh
YigpIHsgcmV0dXJuIDQwMSB9IGFiKCkgeyByZXR1cm4gNDAyOyB9IH07IChuZXcgQSkuYWIoKSBp
cyA0MDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50
YXgtbWV0aG9kLW5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5
bnRheC1tZXRob2QtbmFtZXMuanMKaW5kZXggMTQyYmIwNWIzYjQwOWQ5MDEyYWE0OWFkNDI1MjNk
ZTk3MTUzYzZhNi4uMWJiZTkwMzU4NmU4NTQ3MjI0ZGQzYmJjZjRhOTBlZjgyNDQzYjkwNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2Qt
bmFtZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1t
ZXRob2QtbmFtZXMuanMKQEAgLTU3LDkgKzU3LDkgQEAgc2hvdWxkQmUoIkEgPSBjcmVhdGVDbGFz
c1dpdGhJbnN0YW5jZU1ldGhvZCgnZm9vJywgMjE1KTsgKG5ldyBBKVsnZm9vJ10oKSIsICIyMTUK
IHNob3VsZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNik7
IEIgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnYmFyJywgMjE3KTsgWyhuZXcgQSlb
J2ZvbyddKCksIChuZXcgQilbJ2JhciddKCldIiwgIlsyMTYsIDIxN10iKTsKIHNob3VsZEJlKCJ4
ID0gMjE4OyBjbGFzcyBBIHsgW3grK10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSlbMjE4XSgp
IiwgIjIxOSIpOwogc2hvdWxkQmUoInggPSB1bmRlZmluZWQ7IGNsYXNzIEEgeyBbKHg9MjIwKSAm
JiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSkuZm9vKCkiLCAiMjIwIik7Ci1zaG91
bGRCZSgieCA9IDIyMTsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9
IFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5l
dyBBKVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDIyMSwgeDEs
IHgyOyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAm
JiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0o
KV0iLCAiWzIyMSwgMjIyXSIpOwogc2hvdWxkQmUoInggPSAxOyBjbGFzcyBBIHsgWydmb28nICsg
eCsrXSgpIHsgcmV0dXJuIDIyMzsgfSBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI0OyB9IH07
IFsobmV3IEEpLmZvbzEoKSwgKG5ldyBBKS5mb28yKCldIiwgIlsyMjMsIDIyNF0iKTsKLXNob3Vs
ZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4
MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEp
LmZvbzIoKV0iLCAiWzIsIDMsIDIyNl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDEsIHgxOyBjbGFz
cyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsg
eCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSIsICJbMiwg
MywgMjI2XSIpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnU3RhdGljIG1ldGhvZHMgd2l0aCBjb21w
dXRlZCBuYW1lcycpOwpAQCAtNzIsOSArNzIsOSBAQCBzaG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNz
V2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE1KTsgQVsnZm9vJ10oKSIsICIzMTUiKTsKIHNob3Vs
ZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTYpOyBCID0gY3Jl
YXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdiYXInLCAzMTcpOyBbQVsnZm9vJ10oKSwgQlsnYmFy
J10oKV0iLCAiWzMxNiwgMzE3XSIpOwogc2hvdWxkQmUoInggPSAyMTg7IGNsYXNzIEEgeyBzdGF0
aWMgW3grK10oKSB7IHJldHVybiB4OyB9IH07IEFbMjE4XSgpIiwgIjIxOSIpOwogc2hvdWxkQmUo
InggPSB1bmRlZmluZWQ7IGNsYXNzIEEgeyBzdGF0aWMgWyh4PTIyMCkgJiYgJ2ZvbyddKCkgeyBy
ZXR1cm4geDsgfSB9OyBBLmZvbygpIiwgIjIyMCIpOwotc2hvdWxkQmUoInggPSAyMjE7IGNsYXNz
IEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gc3RhdGljIFsoeDI9
eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFtBWzIyMV0oKSwgQVsyMjJdKCldIiwgIlsy
MjEsIDIyMl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgc3Rh
dGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRpYyBbKHgyPXgpICYmIHgr
K10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgpXSIsICJbMjIxLCAyMjJd
Iik7CiBzaG91bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsg
cmV0dXJuIDIyMzsgfSBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBb
QS5mb28xKCksIEEuZm9vMigpXSIsICJbMjIzLCAyMjRdIik7Ci1zaG91bGRCZSgieCA9IDE7IGNs
YXNzIEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMgWyh4
MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCBBLmZvbzIo
KV0iLCAiWzIsIDMsIDIyNl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsg
c3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFsoeDE9eCkgJiYg
J2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28yKCldIiwgIlsy
LCAzLCAyMjZdIik7CiAKIGRlYnVnKCcnKTsKIGRlYnVnKCdJbnN0YW5jZSBtZXRob2RzIHdpdGgg
ZHVwbGljYXRlZCBuYW1lcycpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCAwZDcyOTFlM2ZjNTM0NzkwZGYyZDllOTU4ZWE2M2I3NDM3ZmI0
YzdlLi41NTA1ZWJiZjkyZTI0NDg0NmE4MTJiMzg2ODIyYTk2MDcwZGU2NzJiIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTAzLTMwICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisg
ICAgICAgIE5vdCB1c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4gQ2xhc3NEZWNsYXJhdGlvbiBzdGF0
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NTU3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1ODk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc3VwZXJjbGFzcy1leHBy
ZXNzaW9uLXN0cmljdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAoZi50cnkuYyk6CisgICAgICAg
IChmKToKKwogMjAyMC0wMy0yNyAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBTa2lwIG5ldyBtZW1vcnkgdGVzdCBzdHJlc3MvdHlwZWQtYXJyYXktb29tLWluLi4u
IGluIG1lbW9yeSBsaW1pdGVkIGRldmljZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N1
cGVyY2xhc3MtZXhwcmVzc2lvbi1zdHJpY3RuZXNzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3VwZXJj
bGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdlYTY4NDc5Yzk3M2Yz
YzYyMGFjZmJmMWYwMTlhYmVkYTkyYTJlZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3N1cGVyY2xhc3MtZXhwcmVzc2lvbi1zdHJpY3RuZXNzLmpzCkBAIC0wLDAgKzEsNTkgQEAK
K2Z1bmN0aW9uIGYoKSB7CisgICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMoZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiB7fTsKKyAgICAgICAgICAgIH0sIGQpIHt9CisgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
ZXJyb3IgfHwgZXJyb3IubWVzc2FnZSAhPSAiQ2FuJ3QgZmluZCB2YXJpYWJsZTogZCIpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgcmVmZXJl
bmNlIGVycm9yIik7CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAg
IHZhciBvYmogPSB7fTsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ3gnLCB7
IGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVlOiAxIH0pOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgY2xhc3MgYyBleHRlbmRzKGRlbGV0ZSBvYmoueCwgKCk9Pnt9KSB7fQorICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0gIlVuYWJsZSB0byBkZWxldGUgcHJvcGVy
dHkuIikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJv
d24gYSB0eXBlIGVycm9yIik7CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgZXJyb3I7Cisg
ICAgICAgIHZhciBvYmogPSB7fTsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwg
J3gnLCB7IGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVlOiAxIH0pOworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgY2xhc3MgYyBleHRlbmRzKGV2YWwoJ2RlbGV0ZSBvYmoueCcpLCBjbGFzc3t9
KSB7fQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0gIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBz
aG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVycm9yIik7CisgICAgfQorCisgICAgeworICAgICAg
ICB2YXIgbyA9IHt9OworICAgICAgICBvLl9fZGVmaW5lR2V0dGVyX18oIngiLCBmdW5jdGlvbiAo
KSB7IHJldHVybiA0MjsgfSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4
dGVuZHMgKG8ueCA9IDEzLCBjbGFzcyB7IH0pIHsgfQorICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8
IGVycm9yLm1lc3NhZ2UgIT0gIkF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVy
dHkuIikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJv
d24gYSB0eXBlIGVycm9yIik7CisgICAgfQorfQorCisgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKQorICAgIGYoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394998</attachid>
            <date>2020-03-30 18:30:44 -0700</date>
            <delta_ts>2020-03-30 20:02:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200330183044.patch</filename>
            <type>text/plain</type>
            <size>258998</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjZmOGI0YWU1MDEyMzE4NjcyM2QwMmI3OTAyODM4ODk1MjlkNGE2Li5mZmJkNjgzOTBmNDZkYTkw
MjkyNmU1NjI0MjZhMTkzYzQ3YjJkYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MzMgQEAKKzIwMjAtMDMtMzAgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0
IHN0cmljdCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQg
d2hlbiBlbWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0
IHdlIGNhbiBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0
IG11c3QgYmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUg
YmxvY2sgaXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9u
bHkgdGVuCisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5l
c3MsIHNvIGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVz
LgorICAgICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBi
YXNlbGluZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3RydWN0b3IgY29u
c3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjppc1N0cmljdE1vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmVjbWFNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjppc0tub3duTm90SW1tZWRpYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6dXNlc0V2YWwgY29uc3Qp
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5D
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmlzQ29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvcjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlW
YWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplY21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVTY29wZTo6U3RyaWN0
TW9kZVNjb3BlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVNjb3BlOjp+U3RyaWN0TW9kZVNj
b3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzU3RyaWN0TW9kZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Cisg
ICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZv
ckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAoSlND
OjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZTo6dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6
OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRp
dHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFy
c2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmlzU3RyaWN0TW9kZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmVjbWFNb2RlRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0VDTUFNb2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjplY21hTW9kZSk6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAo
SlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlRG91YmxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxs
V2l0aFN5bWJvbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXREeW5hbWljVmFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dEJ5SWREaXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlW
YWwpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1pY1Zhcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2
YWwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aXNTdHJpY3RNb2RlRm9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplY21hTW9kZUZvcik6IERlbGV0ZWQu
CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVD
YWxsRXZhbCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAg
ICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlf
dmFsKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
RGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTElu
dDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9G
dW5jSm9pbik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZl
cnNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGlj
ZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFz
dEluZGV4T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWNoZWRDb2RlQmxvY2s6OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVk
Q29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRD
b2RlQmxvY2s6OmlzU3RyaWN0TW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9DbG9uZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6bWF0ZXJp
YWxpemVTcGVjaWFscyk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAg
ICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5o
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAg
KiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpFQ01BTW9kZTo6ZnJvbUJ5dGUpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6c3RyaWN0
KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6Om5vdFN0cmljdCk6CisgICAgICAgIChKU0M6OkVD
TUFNb2RlOjppc1N0cmljdCBjb25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjp2YWx1ZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpFQ01BTW9kZSk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhpcyk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c2Vs
ZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNh
bGxlckdldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKEpTQzo6Z2xvYmFs
RnVuY1Byb3RvR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dElubGluZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0
aEN5Y2xlQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChK
U0M6OkpTU2NvcGU6OnRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJz
ZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0Q2Fs
bGVyU3RyaWN0bmVzc0Z1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpO
dWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAgICAg
ICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5j
TG9va3VwR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVy
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChK
U0M6Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxp
emVHbG9iYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
Lmg6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnBl
cmZvcm1Qcm94eUNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc0Fycm93RnVuY3Rpb25Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aXNJblN0cmljdENvbnRleHQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc1N0cmljdE1vZGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplY21hTW9kZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKworICAgICAgICAqIEFQ
SS9BUElDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rp
b246OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbCk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0NvbnRleHRHZXRHbG9iYWxPYmplY3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjppc0tub3duQ2VsbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhl
Y3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnVzZXNFdmFsIGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKEpT
Qzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5
SWRGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJl
Y3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmlzRGlyZWN0IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZEZsYWdzOjplY21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRGbGFnczo6UHV0QnlJZEZsYWdzKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
Ojppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZy
b21TY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29w
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVz
aEZ1bmN0aW9uTmFtZVNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRUb1RoaXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZWNtYU1vZGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJpY3RNb2RlU2NvcGU6OlN0cmljdE1vZGVTY29wZSk6CisgICAgICAgIChKU0M6OlN0
cmljdE1vZGVTY29wZTo6flN0cmljdE1vZGVTY29wZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAo
SlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBj
b25zdCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZv
cik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNFQ01BTW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdPcEluZm8uaDoKKyAgICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVj
aXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
SW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2wpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgICogaml0L0pJVENh
bGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJ
ZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1
dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQv
UmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlRGVsZXRlQnkpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQdXNo
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSW5kZXhP
Zik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6
OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5
cGU+OjplbmNvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Om1hdGVyaWFsaXplU3BlY2lhbHMpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hl
UHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2Fj
aGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6
OmV4ZWN1dGFibGVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2V0UHV0SW5mby5oOgorICAgICAgICAoSlNDOjpH
ZXRQdXRJbmZvOjpHZXRQdXRJbmZvKToKKyAgICAgICAgKEpTQzo6R2V0UHV0SW5mbzo6ZWNtYU1v
ZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSk6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9U
aGlzU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2
ZSk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmZyb21CeXRlKToKKyAg
ICAgICAgKEpTQzo6RUNNQU1vZGU6OnN0cmljdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpz
bG9wcHkpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6aXNTdHJpY3QgY29uc3QpOgorICAgICAg
ICAoSlNDOjpFQ01BTW9kZTo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6
RUNNQU1vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OnNlbGVjdFN0cnVjdHVyZUZvck5ld0Z1bmNFeHApOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZh
bCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6
Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjp0b1RoaXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9UaGlzKToK
KyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRl
cmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkdldENhbGxlclN0cmljdG5lc3NGdW5jdG9yOjpvcGVyYXRvcigp
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNhbGxS
ZXR1cm5VbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9G
dW5jSXNQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZUdl
dHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcik6CisgICAg
ICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcik6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0xvb2t1cFNldHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y1Byb3BlcnR5SXNFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyk6CisgICAgICAgICog
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKiBydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1
dGFibGU6OmlzSW5TdHJpY3RDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuY3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheUVudHJ5OjpwdXQp
OgorCiAyMDIwLTAzLTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
IAogICAgICAgICBSZWdFeHAucHJvdG90eXBlLmV4ZWMgbXVzdCBhbHdheXMgYWNjZXNzIGxhc3RJ
bmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDMwYzFlNDJjMWI1NGU3ZTY4YjgwNmZjZTUyYmE4ZTI5MmJiYTFh
NzguLmYwNDkyMGNlYmU0NWRjZmQ3YTdjOTUzNjdiYTk2NDVlMjY0Njk5MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAyMC0wMy0zMCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFw
cGxlLmNvbT4KKworICAgICAgICBOb3QgdXNpbmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVj
bGFyYXRpb24gc3RhdGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDU1NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IEpTVGVz
dHMvIHN0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcworCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6
SURMT3BlcmF0aW9uPEpTRXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorCiAyMDIwLTAzLTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgT3ZlcnJpZGVzIG9mIEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
c2hvdWxkIG5vdCBuZWVkIHRvIHF1ZXJ5IHRoZSBiYXNlIGNsYXNzJ3MgaGFzUGVuZGluZ0FjdGl2
aXR5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9u
LmgKaW5kZXggYzk5MTA1M2ExOTE5ZjhlMWJhNGVhOThiNzdkOGUxYTlkMWI3ZGRlOC4uZDU2NWI0
MTI4OWU3ZjY4NjFmOGY5ZjliN2VhZGIwOTE2OTZlYTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9iYWxPYmplY3QpOwog
ICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5qc0NhbGxlZSgp
KTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4o
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2Rl
KSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3Qq
PihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
bG9wcHkoKSkpKTsKIAogICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8aW50Pihj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBh
cmd1bWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDAyY2VkYzc5NjZiZWMwYTUzYTliYzAyYTlmMzc4M2U3
OWY3MzJlMmYuLjAzYTE4ZGM5MDM2YjY2Nzg0MTkyZWY1MGM5MjA0NWVkMzUzOGI2NzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCkBAIC01MjMsNyArNTIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKIAogICAg
IEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVj
dFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNP
YmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICBK
U09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7
CiAgICAgCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+Kj4odG9KUyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBq
c0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2Fs
bEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0
aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXgg
MjIyYTRlZTIwZGNiYWRiMDdiN2JjNjU0ZGNmOGFhODBjZjJjMTJiZS4uMjQwMTc5MTZlNzUxNzZi
ODNlMzVkOWVkMDI4ODI4MzI1MjE2Yzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UmVmLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIEpTT2JqZWN0UmVmIEpTQ29udGV4
dEdldEdsb2JhbE9iamVjdChKU0NvbnRleHRSZWYgY3R4KQogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIHJldHVybiB0
b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihnbG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9U
aGlzKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSkpOworICAgIHJl
dHVybiB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihnbG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+dG9UaGlzKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkp
KSk7CiB9CiAKIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJl
ZiBjdHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAppbmRleCBkMzcyMzZmNDBhYTg5OTEyN2M3NDllYmRiOTg2OTZjNzc4NWQ4Y2IzLi5k
OTEwNjJjZjdhMzU0ZjA2YTJjNjJmNDRmNDE4MzQ0OTVkNjgzMTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTM3LDcgKzM3
LDYgQEAKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVySW5s
aW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCi0jaW5jbHVkZSAiUHV0QnlJ
ZEZsYWdzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlRvVGhp
c1N0YXR1cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA5ZjJhYmEzOWYyY2U3MDhkMzEzYjhkOTQwY2Y5NmZi
YTQyZmNjOTRlLi5mZGFhYTY5NDVmZjBlOWQ1MTUxYWFhODlhN2E5OTIwN2FjMWMyOWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICAgICAgICAgICAgICBzY29wZSwgLy8g
c2NvcGUKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlk
ZW50aWZpZXIKICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZCwgLy8gdmFsdWUKLSAgICAgICAg
ICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJl
VmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgLy8gaW5mbworICAg
ICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENs
b3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIG1fYnl0ZWNv
ZGVHZW5lcmF0b3IuZWNtYU1vZGUoKSksIC8vIGluZm8KICAgICAgICAgICAgICAgICAgICAgU3lt
Ym9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4IH0pLCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQg
aW5kZXgKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAv
LyBzY29wZSBvZmZzZXQKICAgICAgICAgICAgICAgICApOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgICAgICAgICAgICAgICAg
IG9wZXJhbmQsIC8vIGRzdAogICAgICAgICAgICAgICAgICAgICBzY29wZSwgLy8gc2NvcGUKICAg
ICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIK
LSAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9j
YWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgLy8g
aW5mbworICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5k
LCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24s
IG1fYnl0ZWNvZGVHZW5lcmF0b3IuZWNtYU1vZGUoKSksIC8vIGluZm8KICAgICAgICAgICAgICAg
ICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKICAgICAgICAgICAgICAgICAgICAgc3RvcmFn
ZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKICAgICAgICAgICAgICAgICAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5k
ZXggMzQ4MzQ3YzZiNGNkNzU0NjgwYzEyNmEwZjcyNzUzNmYxYmUzN2M0ZS4uMWY1NjY5NGNlNzAw
ZmRlYmUxZmRjYmQwNDRmMmE4N2QwODhmN2VhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0yNyw2ICsyNyw3IEBAIHR5cGVzIFsKICAg
ICA6QmFzaWNCbG9ja0xvY2F0aW9uLAogICAgIDpCb3VuZExhYmVsLAogICAgIDpEZWJ1Z0hvb2tU
eXBlLAorICAgIDpFQ01BTW9kZSwKICAgICA6RXJyb3JUeXBlLAogICAgIDpHZXRCeUlkTW9kZSwK
ICAgICA6R2V0QnlJZE1vZGVNZXRhZGF0YSwKQEAgLTE3NCw2ICsxNzUsNyBAQCBvcCA6YXJndW1l
bnRfY291bnQsCiBvcCA6dG9fdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIHNyY0RzdDogVmly
dHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewogICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCkBAIC01
MjIsNiArNTI0LDcgQEAgb3AgOnB1dF9ieV9pZF93aXRoX3RoaXMsCiAgICAgICAgIHRoaXNWYWx1
ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgICAg
IHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAg
ICB9CiAKIG9wIDpkZWxfYnlfaWQsCkBAIC01MjksNiArNTMyLDcgQEAgb3AgOmRlbF9ieV9pZCwK
ICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdp
c3RlciwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAorICAgICAgICBlY21hTW9kZTogRUNN
QU1vZGUsCiAgICAgfQogCiBvcCA6Z2V0X2J5X3ZhbCwKQEAgLTU0OCw2ICs1NTIsNyBAQCBvcCA6
cHV0X2J5X3ZhbCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9w
ZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAor
ICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAg
ICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKQEAgLTU1OSw2ICs1NjQsNyBAQCBvcCA6
cHV0X2J5X3ZhbF93aXRoX3RoaXMsCiAgICAgICAgIHRoaXNWYWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmly
dHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6
cHV0X2J5X3ZhbF9kaXJlY3QsCkBAIC01NjYsNiArNTcyLDcgQEAgb3AgOnB1dF9ieV92YWxfZGly
ZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAg
IGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLApAQCAtNTc2LDYgKzU4Myw3IEBAIG9wIDpkZWxfYnlf
dmFsLAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBl
Y21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6cHV0X2dldHRlcl9ieV9pZCwKQEAgLTc3
OCw2ICs3ODYsNyBAQCBvcCA6Y2FsbF9ldmFsLAogICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdp
c3RlciwKICAgICAgICAgYXJnYzogdW5zaWduZWQsCiAgICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAor
ICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAg
ICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2NTdlMmJiM2UyM2JhNzViNDY3MjAz
MGFhYzM4ZjZmODUzYzI0OWY1Li5kYWVkZWNiNDlhOWI3NjRmYWY0YTFjNGU3NmFmODVlNzFlZjVi
NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQXNzdW1pbmdKSVRUeXBlKFBy
aW50U3RyZWFtJiBvdXQsIEpJVFR5cGUgaml0VHlwZSkgY29uc3QKICAgICAgICAgb3V0LnByaW50
KCIgKE5ldmVyRlRMT3B0aW1pemUpIik7CiAgICAgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5kaWRU
cnlUb0VudGVySW5Mb29wKCkpCiAgICAgICAgIG91dC5wcmludCgiIChEaWRUcnlUb0VudGVySW5M
b29wKSIpOwotICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAg
aWYgKG93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICBvdXQu
cHJpbnQoIiAoU3RyaWN0TW9kZSkiKTsKICAgICBpZiAobV9kaWRGYWlsSklUQ29tcGlsYXRpb24p
CiAgICAgICAgIG91dC5wcmludCgiIChKSVRGYWlsKSIpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICAgICAgICAgIEFTU0VSVCghaXNJbml0aWFsaXph
dGlvbihieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICAg
ICAgICAgIGlmIChieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBMb2NhbENs
b3N1cmVWYXIpIHsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQ
dXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBi
eXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC02MjcsOSArNjI3LDkgQEAg
Ym9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2Nv
cGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUubV9sb2Nh
bFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVz
b2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAgICAg
ICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1
dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRp
YWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdl
dFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5
dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQ
dXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gTW9kdWxlVmFy
KQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0
ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLm1f
Z2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgQ2xvc3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9u
TW9kZSgpLCBieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBp
ZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09
IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAg
IG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAg
ICBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCkBAIC02NjEsNyArNjYxLDcgQEAgYm9vbCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0
UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUubV9zeW1ib2xUYWJsZU9yU2Nv
cGVEZXB0aC5zY29wZURlcHRoKCksIHNjb3BlLCBpZGVudCwgUHV0LCBieXRlY29kZS5tX2dldFB1
dEluZm8ucmVzb2x2ZVR5cGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9u
TW9kZSgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5
dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBieXRlY29kZS5tX2dl
dFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUo
KSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBi
eXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBpZiAob3AudHlw
ZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlm
IChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCmluZGV4IGQzYjA2YTg5MWFlZmM2Yzc5NGQ3NWUxYzBkMDA0NmUxOTIzOGU4MjYuLmUxMTEz
OWQ1YTM4NDM1YTA2ZGUyNjc3NWZmZjMxMDAxNWVjYzQ0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIyMiw5ICsyMjIsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGR1bXBNYXRoSUNTdGF0cygpOwogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aXNTdHJpY3RNb2RlKCk7IH0KICAgICBib29s
IGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aXNDb25zdHJ1
Y3RvcigpOyB9Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBpc1N0cmlj
dE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAgICAgQ29kZVR5cGUgY29k
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+Y29kZVR5cGUoKTsgfQogCiAg
ICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+c2NyaXB0TW9kZSgpOyB9CkBAIC0yMzIsMTEgKzIzMCw4IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0luc3RhbGxlZFZNVHJhcEJyZWFrcG9pbnRzKCkgY29uc3Q7CiAgICAgYm9vbCBp
bnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoKTsKIAotICAgIGlubGluZSBib29sIGlzS25vd25Ob3RJ
bW1lZGlhdGUoVmlydHVhbFJlZ2lzdGVyIHJlZykKKyAgICBpbmxpbmUgYm9vbCBpc0tub3duQ2Vs
bChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgIHsKLSAgICAgICAgaWYgKHJlZyA9PSB0aGlzUmVn
aXN0ZXIoKSAmJiAhaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQog
ICAgICAgICBpZiAocmVnLmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJldHVybiBnZXRDb25z
dGFudChyZWcpLmlzQ2VsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDc3ZjE5MjkwNjkwODMzNmViZDAwOGRjZjBjMzZmNGFj
NmU5ZTc1ZDQuLjQ5ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcxOTkwYmU5MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0z
Niw5ICszNiw4IEBAIGVudW0gY2xhc3MgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiB1aW50
OF90IHsgTm8sIFllcyB9OwogLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQg
cHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhl
Y3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNT
dHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRN
b2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNDb25zdHJ1
Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0Nv
bnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAgICAgIDogbV91c2Vz
RXZhbCh1c2VzRXZhbCkKLSAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAg
ICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAgICAgICAgICwgbV9pc0J1
aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVjdG9y
S2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKQEAgLTU3LDcgKzU2
LDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB9CiAKICAgICBib29sIHVzZXNFdmFs
KCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
b25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtNzIsNyArNzAsNiBAQCBz
dHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdXNlc0V2
YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBt
X2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRml0cy5oCmluZGV4IDU3Nzg5YmMyYzY2OWY3Y2FkODg4M2RlY2YzNTEzMjc4NDQ5
YzgyNGYuLjY0ZWVhYjhiZDk5MmY5OWIyODY4M2M5YjAwNjRmNDlkMDk1MzgwYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgRml0
czsKIAogLy8gSW1wbGljaXQgY29udmVyc2lvbiBmb3IgdHlwZXMgb2YgdGhlIHNhbWUgc2l6ZQog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgT3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8VCwgc2l6
ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiB7
CitzdHJ1Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihUKSA9PSBzaXpl
ICYmIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gewog
ICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25l
ZFR5cGU7CiAKICAgICBzdGF0aWMgYm9vbCBjaGVjayhUKSB7IHJldHVybiB0cnVlOyB9CkBAIC0x
NzcsMTUgKzE3NywxNiBAQCBzdHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBzaXplLCBzdGQ6OmVuYWJs
ZV9pZl90PHNpemUgIT0gT3Bjb2RlU2l6ZTo6V2lkZTMyLCBzdGQ6OgogICAgIC8vCiAgICAgLy8g
VHJ5IHRvIGVuY29kZSBlbmNvZGUgYXMKICAgICAvLwotICAgIC8vICAgICAgICAgICBpbml0aWFs
aXphdGlvbiBtb2RlCi0gICAgLy8gICAgICAgICAgICAgICAgICAgIHYKLSAgICAvLyBmcmVlIGJp
dC0+IDB8MDAwMHwwMHwwCi0gICAgLy8gICAgICAgICAgICAgICAgIF4gICAgXgotICAgIC8vICAg
IHJlc29sdmUgIHR5cGUgICByZXNvbHZlIG1vZGUKKyAgICAvLyAgICAgICAgICAgIGluaXRpYWxp
emF0aW9uIG1vZGUKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAvLyBpc1N0cmlj
dCAtPiAwfDAwMDB8MDB8MAorICAgIC8vICAgICAgICAgICAgICAgICAgXiAgICBeCisgICAgLy8g
ICAgICByZXNvbHZlICB0eXBlICAgIHJlc29sdmUgbW9kZQogICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfcmVzb2x2ZVR5cGVNYXggPSAxIDw8IDQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
c19pbml0aWFsaXphdGlvbk1vZGVNYXggPSAxIDw8IDI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgc19yZXNvbHZlTW9kZU1heCA9IDEgPDwgMTsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IHNfaXNTdHJpY3RCaXQgPSAoc19yZXNvbHZlVHlwZU1heCAtIDEpIDw8IDM7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgc19yZXNvbHZlVHlwZUJpdHMgPSAoc19yZXNvbHZlVHlwZU1heCAtIDEp
IDw8IDM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pbml0aWFsaXphdGlvbk1vZGVCaXRz
ID0gKHNfaW5pdGlhbGl6YXRpb25Nb2RlTWF4IC0gMSkgPDwgMTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBzX3Jlc29sdmVNb2RlQml0cyA9IChzX3Jlc29sdmVNb2RlTWF4IC0gMSk7CkBAIC0y
MDYsNyArMjA3LDggQEAgc3RydWN0IEZpdHM8R2V0UHV0SW5mbywgc2l6ZSwgc3RkOjplbmFibGVf
aWZfdDxzaXplICE9IE9wY29kZVNpemU6OldpZGUzMiwgc3RkOjoKICAgICAgICAgYXV0byByZXNv
bHZlVHlwZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5yZXNvbHZlVHlwZSgpKTsKICAgICAg
ICAgYXV0byBpbml0aWFsaXphdGlvbk1vZGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkuaW5p
dGlhbGl6YXRpb25Nb2RlKCkpOwogICAgICAgICBhdXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oZ3BpLnJlc29sdmVNb2RlKCkpOwotICAgICAgICByZXR1cm4gKHJlc29sdmVU
eXBlIDw8IDMpIHwgKGluaXRpYWxpemF0aW9uTW9kZSA8PCAxKSB8IHJlc29sdmVNb2RlOworICAg
ICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLmVjbWFNb2RlKCku
aXNTdHJpY3QoKSk7CisgICAgICAgIHJldHVybiAoaXNTdHJpY3QgPDwgNykgfCAocmVzb2x2ZVR5
cGUgPDwgMykgfCAoaW5pdGlhbGl6YXRpb25Nb2RlIDw8IDEpIHwgcmVzb2x2ZU1vZGU7CiAgICAg
fQogCiAgICAgc3RhdGljIEdldFB1dEluZm8gY29udmVydChUYXJnZXRUeXBlIGdwaSkKQEAgLTIx
NCwxMCArMjE2LDQ1IEBAIHN0cnVjdCBGaXRzPEdldFB1dEluZm8sIHNpemUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c2l6ZSAhPSBPcGNvZGVTaXplOjpXaWRlMzIsIHN0ZDo6CiAgICAgICAgIGF1dG8gcmVz
b2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oKGdwaSAmIHNfcmVzb2x2ZVR5cGVC
aXRzKSA+PiAzKTsKICAgICAgICAgYXV0byBpbml0aWFsaXphdGlvbk1vZGUgPSBzdGF0aWNfY2Fz
dDxJbml0aWFsaXphdGlvbk1vZGU+KChncGkgJiBzX2luaXRpYWxpemF0aW9uTW9kZUJpdHMpID4+
IDEpOwogICAgICAgICBhdXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU1vZGU+
KGdwaSAmIHNfcmVzb2x2ZU1vZGVCaXRzKTsKLSAgICAgICAgcmV0dXJuIEdldFB1dEluZm8ocmVz
b2x2ZU1vZGUsIHJlc29sdmVUeXBlLCBpbml0aWFsaXphdGlvbk1vZGUpOworICAgICAgICBhdXRv
IGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7CisgICAg
ICAgIHJldHVybiBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSwgaW5pdGlhbGl6
YXRpb25Nb2RlLCBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9w
cHkoKSk7CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZp
dHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1l
IFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKKworICAgIC8vIFB1dEJ5SWRGbGFncyBp
cyBqdXN0IHR3byBib29sZWFuIHZhbHVlcyBlbmNvZGVkIGFzCisgICAgLy8KKyAgICAvLyAgICAg
ICAgaXNTdHJpY3QKKyAgICAvLyAgICAgICAgICAgdgorICAgIC8vICAgIDAwMDAwMHwwfDAKKyAg
ICAvLyAgICAgICAgICAgICBeCisgICAgLy8gICAgICAgICBpc0RpcmVjdAorICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IHNfaXNEaXJlY3RCaXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IHNfaXNTdHJpY3RCaXQgPSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlJZEZsYWdz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIFRhcmdl
dFR5cGUgY29udmVydChQdXRCeUlkRmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBhdXRvIGlz
RGlyZWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7CisgICAgICAg
IGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlz
U3RyaWN0KCkpOworICAgICAgICByZXR1cm4gKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7Cisg
ICAgfQorCisgICAgc3RhdGljIFB1dEJ5SWRGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQor
ICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNf
aXNEaXJlY3RCaXQpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4o
Z3BpICYgc19pc1N0cmljdEJpdCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/
IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICAgICAgcmV0dXJu
IGlzRGlyZWN0ID8gUHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlJ
ZEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpOworICAgIH0KK307CiB0ZW1wbGF0ZTx0eXBlbmFtZSBF
LCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90
PHNpemVvZihFKSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90
eXBlPj4gOiBwdWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAg
ICAgdXNpbmcgQmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBA
IC0zMjcsNCArMzY0LDI5IEBAIHN0cnVjdCBGaXRzPEdlbmVyaWNCb3VuZExhYmVsPEdlbmVyYXRv
clRyYWl0cz4sIHNpemU+IDogcHVibGljIEZpdHM8aW50LCBzaXplPiB7CiAgICAgfQogfTsKIAor
dGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8RUNNQU1vZGUsIHNpemU+IDog
cHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4
X3QsIHNpemU+OworCisgICAgLy8gYSBwYWlyIG9mIChSZXN1bHRUeXBlOjpUeXBlLCBSZXN1bHRU
eXBlOjpUeXBlKSAtIHRyeSB0byBmaXQgZWFjaCB0eXBlIGludG8gNCBiaXRzCisgICAgLy8gYWRk
aXRpb25hbGx5LCBlbmNvZGUgdW5rbm93biB0eXBlcyBhcyAwIHJhdGhlciB0aGFuIHRoZSB8IG9m
IGFsbCB0eXBlcworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdHlwZVdpZHRoID0gNDsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFR5cGUgPSAoMSA8PCB0eXBlV2lkdGgp
IC0gMTsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEJhc2U6OmNoZWNrKGVjbWFNb2RlLnZhbHVlKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoRUNNQU1vZGUgZWNt
YU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChlY21hTW9kZS52YWx1
ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRUNNQU1vZGUgY29udmVydCh0eXBlbmFtZSBCYXNl
OjpUYXJnZXRUeXBlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpm
cm9tQnl0ZShCYXNlOjpjb252ZXJ0KGVjbWFNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuY3BwCmluZGV4IDNlM2U2NWY1OWM1MTMwMWViMmY0NGIyZDIzMWVmY2VjYTkxZWNj
ZjEuLjc5OTFhYzJhOGU2N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC02
Nyw3ICs2Nyw3IEBAIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wQnJpZWZGdW5jdGlvbkluZm9y
bWF0aW9uKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QK
IHsKICAgICBvdXQucHJpbnQoYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCksICI6PCIsIFJhd1Bv
aW50ZXIoYmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpKTsKLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkp
CisgICAgaWYgKGlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJp
Y3RNb2RlKSIpOwogICAgIG91dC5wcmludCgiLCAiLCBkaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRl
eCgpLCAiLCAiLCBzdGF0aWNfY2FzdDxLaW5kPihraW5kKSk7CiAgICAgaWYgKGlzQ2xvc3VyZUNh
bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1l
LmgKaW5kZXggZTI5ZjM4NGQxZDA2NzJmZWVhMDcxMjA1YmNhYTI4MWE2NDliMjIyOS4uNzVmOWJi
MWE4NDY4YTYxZDdiZTk2YzNhYzliOTFlOTUzZWEzYmY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAtMjMxLDcgKzIzMSw3IEBA
IHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxG
cmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKTsgfQogICAgIHB0cmRpZmZfdCByZXR1cm5QQ09mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxG
cmFtZTo6cmV0dXJuUENPZmZzZXQoKTsgfQogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25z
dCB7IHJldHVybiBiYXNlbGluZUNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAgICBib29s
IGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpOyB9CiAKICAgICB2b2lkIGR1bXBC
cmllZkZ1bmN0aW9uSW5mb3JtYXRpb24oUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRGbGFncy5jcHAKaW5kZXggYzhhNGI2MGZhNTg4YjAxN2Q3OWVjZjI3MGQ5N2Fi
YjY4YTI0ODI0OS4uNjY1MDBlNjI3NmJjNDY5N2JlMGVlYTFkODgxNDlmZjFhNTAxNGQ0NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKQEAg
LTM2LDggKzM2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBQdXRCeUlkRmxhZ3MgZmxhZ3MpIHsKICAgICBDb21tYVByaW50
ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpCisgICAgaWYg
KGZsYWdzLmlzRGlyZWN0KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklzRGlyZWN0Iik7
CisgICAgaWYgKGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiU3RyaWN0Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCmluZGV4IDVjMDQ5MjgxMGUxYzkz
ZmY2MTUzZTY1NmVmNDRjNzdlMmZmOTc0OGUuLjhlYzBkYmE2ZTQ0ZTdhMzExNjRjYTk3YTMzMWY0
ZTdjZDU3NDFhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkRmxhZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZEZsYWdzLmgKQEAgLTI5LDEzICsyOSwzMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBQ
dXRCeUlkRmxhZ3MgOiBpbnQzMl90IHsKLSAgICBQdXRCeUlkTm9uZSA9IDAsCitjbGFzcyBQdXRC
eUlkRmxhZ3MgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlJZEZsYWdzIGNy
ZWF0ZShFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRCeUlkRmxh
Z3MoZmFsc2UsIGVjbWFNb2RlKTsKKyAgICB9CiAKLSAgICAvLyBUaGlzIGZsYWcgaW5kaWNhdGVz
IHRoYXQgdGhlIHB1dF9ieV9pZCBpcyBkaXJlY3QuIFRoYXQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0
aGUgcHJvcGVydHkgd2l0aG91dAotICAgIC8vIGNoZWNraW5nIGlmIHRoZSBwcm90b3R5cGUgY2hh
aW4gaGFzIGEgc2V0dGVyLgotICAgIFB1dEJ5SWRJc0RpcmVjdCA9IDB4MSwKLSAgICBQdXRCeUlk
UGVyc2lzdGVudEZsYWdzTWFzayA9IDB4MSwKKyAgICAvLyBBIGRpcmVjdCBwdXRfYnlfaWQgbWVh
bnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2luZyBpZiB0aGUKKyAg
ICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgorICAgIGNvbnN0ZXhwciBzdGF0aWMg
UHV0QnlJZEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBQdXRCeUlkRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOworICAgIH0KKworICAgIGJv
b2wgaXNEaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9CisgICAgRUNNQU1vZGUg
ZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9CisKK3ByaXZhdGU6CisgICAg
Y29uc3RleHByIFB1dEJ5SWRGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkK
KyAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQorICAgICAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9pc0RpcmVjdDsKKyAgICBFQ01BTW9k
ZSBtX2VjbWFNb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKaW5kZXggMmNiY2JjYWM5MjA0
ZDVkMzA3ZTJjYjQ4M2QzZWYwOGEzYTcxZTE0ZC4uZjFlZGIzODA3ZWIwMjFlNDQ0OWNjZDYxMDY5
YWYyYWI4NjM5MDdhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcApAQCAtNzksNyArNzksNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29k
ZQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uKTsKICAgICAKICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7Ci0gICAgaWYgKCEoYnl0
ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkpIHsKKyAgICBpZiAoIShieXRlY29kZS5t
X2ZsYWdzLmlzRGlyZWN0KCkpKSB7CiAgICAgICAgIGNvbmRpdGlvblNldCA9CiAgICAgICAgICAg
ICBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3NDb25jdXJyZW50bHkoCiAg
ICAgICAgICAgICAgICAgdm0sIHByb2ZpbGVkQmxvY2stPmdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1
cmUsIHVpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAppbmRleCA1ODkxZjJhNWMyNTc3Yjk5YzUyOTIyZDNkZmRmNTk2YmEy
ZmU1NmJmLi41NGRhNTdkYWI2OWNhMjYxYWVmZGNlYjkzOGZmYTBmNGZmMDM3OTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKQEAgLTU3LDcgKzU3LDYgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkQ29kZUJsb2NrOjpz
X2luZm8gPSB7ICJVbmxpbmtlZENvZGVCbG9jayIsIG51bGxwdHIsIG51bGwKIFVubGlua2VkQ29k
ZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
b2RlVHlwZSBjb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8sIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSkKICAgICAsIG1fdXNlc0V2YWwoaW5mby51c2VzRXZhbCgpKQotICAgICwgbV9pc1N0
cmljdE1vZGUoaW5mby5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZv
LmlzQ29uc3RydWN0b3IoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAg
ICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5k
ZXggZGQyMTdiN2ZkNGZlZjU2ZGY4ZDgxYzM1YzI4MTMzZDVjODdhMWE5Yy4uMDBkYzYxNjMzNWZk
MzFiMDQzMjUxZTM0NDAwZTU3ZGVmNTMxNWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEyMyw3ICsxMjMsNiBAQCBw
dWJsaWM6CiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5jdGlvbiB9OwogCiAgICAg
Ym9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9Ci0g
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQog
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25Q
YXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9CkBAIC0zMzUsNyArMzM0LDYgQEAgcHJpdmF0ZToKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwogCiAgICAgdW5zaWduZWQgbV91c2Vz
RXZhbCA6IDE7Ci0gICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVk
IG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oCmluZGV4IDIxM2EzYTgzMmQ3ZWFhYTliOTcxMGYwMWE4NjRkYTkzNWJkZDdlYTUu
LjJlYjk4NGMxYjA1YTQ1ZTBhYTUyMGUxZmQzNzhhZDllMmZjOTMyMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygpOyB9
CiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9CiAgICAgYm9vbCB1
c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAgICAg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5w
YXJzZU1vZGUoKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgeyByZXR1cm4gbV9jb2Rl
QmxvY2stPmlzQXJyb3dGdW5jdGlvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRl
eCBjZDhiZWJmOGQzNjQ1NDVkMTgyZDc5Y2JmODA2ODA2NzFmNDExOTdmLi4wYmYzMDI4ZDgxMGM2
MTZlYjA3YWRhNjZjNTdkYTkyOTllMWJiY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
QEAgLTcxLDEwICs3MSwxMSBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogCiAgICAgYm9vbCBpc0NsYXNzQ29udGV4
dCA9IGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkOwog
Ci0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0
aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZv
ckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVj
dXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+c3VwZXJC
aW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4
ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNlLCBpc0NsYXNzQ29u
dGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwgY29kZUdlbmVyYXRp
b25Nb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUlu
Zm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rp
b25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3Rv
cktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9k
ZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPm5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRU
eXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwgY29kZUdlbmVyYXRpb25Nb2RlKTsKIAogICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBleGVjdXRhYmxlLT5w
YXJlbnRTY29wZVREWlZhcmlhYmxlcygpOwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgJnBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICBFQ01BTW9kZSBlY21hTW9k
ZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkg
OiBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25N
b2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGVjbWFNb2RlKTsKIAogICAgIGlmIChlcnJv
ci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCBhMDFkNDdkN2RjMGJjMWI0ODAxNjViYmNkMjY2ZDExYTZjMjMyYjQ1Li42Mjg0MWI1NjdkMGUx
Zjg4NGVlYWZlN2Y2MjBlYzFlMDg5MzFjNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjk3LDE0
ICsyOTcsMjEgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICByZXR1cm4gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiB9CiAKLUJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9n
cmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJh
dG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJs
b2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUp
CiAgICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENh
bGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENv
ZGUpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAs
IG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZh
bHNlKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKKyAgICAsIG1faW5UYWlsUG9z
aXRpb24oZmFsc2UpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQog
ICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQocHJvZ3JhbU5vZGUtPnVz
ZXNBcnJvd0Z1bmN0aW9uKCkgfHwgcHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2Vj
bWFNb2RlKGVjbWFNb2RlKQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIApAQCAtMzM4LDE0ICsz
NDUsMTcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJv
Z3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICB9CiB9CiAKLUJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJh
dG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJs
b2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUp
CiAgICAgLCBtX3Njb3BlTm9kZShmdW5jdGlvbk5vZGUpCiAgICAgLCBtX2NvZGVUeXBlKEZ1bmN0
aW9uQ29kZSkKICAgICAsIG1fdm0odm0pCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEg
ZmxhZworICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhwcmVzc2lvblRv
b0RlZXAoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWls
dGluRnVuY3Rpb24oKSkKLSAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2Vz
RXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV91c2VzTm9uU3Ry
aWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGhhdmUgdGFpbCBjYWxsIGVsaW1pbmF0
aW9uIHdpdGggdGhlIHByb2ZpbGVyCiAgICAgLy8gZW5hYmxlZC4gVGhpcyBpcyBjdXJyZW50bHkg
bm90IHBvc3NpYmxlIGJlY2F1c2UgdGhlIHByb2ZpbGVyIGV4cGVjdHMKICAgICAvLyBvcF93aWxs
X2NhbGwgLyBvcF9kaWRfY2FsbCBwYWlycyBiZWZvcmUgYW5kIGFmdGVyIGEgY2FsbCwgd2hpY2gg
YXJlIG5vdApAQCAtMzUzLDggKzM2MywxMCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4MTkKICAgICAv
LwogICAgIC8vIE5vdGUgdGhhdCB3ZSBpbnRlbnRpb25hbGx5IGVuYWJsZSB0YWlsIGNhbGwgZm9y
IG5ha2VkIGNvbnN0cnVjdG9ycyBzaW5jZSBpdCBkb2VzIG5vdCBoYXZlIHNwZWNpYWwgY29kZSBm
b3IgInJldHVybiIuCi0gICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxs
cygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lICYmIGlzU3RyaWN0TW9kZSgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihP
cHRpb25zOjp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBlY21hTW9kZS5pc1N0cmljdCgpKQor
ICAgICwgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWihmYWxzZSkKICAgICAsIG1fbmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rp
b24oKSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4
dFR5cGUoKSkKIHsKICAgICBTeW1ib2xUYWJsZSogZnVuY3Rpb25TeW1ib2xUYWJsZSA9IFN5bWJv
bFRhYmxlOjpjcmVhdGUobV92bSk7CkBAIC00MzcsNyArNDQ5LDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBh
cnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKICAgICAgICAg
QVNTRVJUKCFpc0FzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpOwotICAgICAg
ICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJs
b2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgYm9v
bCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+
dXNlc0V2YWwoKSwgZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlv
bk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOwog
ICAgICAgICBib29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlv
bk5hbWVDYXB0dXJlZDsKICAgICAgICAgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShmdW5jdGlv
bk5vZGUtPmlkZW50KCksICZtX2NhbGxlZVJlZ2lzdGVyLCBtYXJrQXNDYXB0dXJlZCk7CkBAIC00
ODcsNyArNDk5LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgbV9hcmd1bWVu
dHNSZWdpc3Rlci0+cmVmKCk7CiAgICAgfQogICAgIAotICAgIGlmIChuZWVkc0FyZ3VtZW50cyAm
JiAhY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsK
KyAgICBpZiAobmVlZHNBcmd1bWVudHMgJiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkgJiYgaXNTaW1w
bGVQYXJhbWV0ZXJMaXN0KSB7CiAgICAgICAgIC8vIElmIHdlIGNhcHR1cmVkIGFueSBmb3JtYWwg
cGFyYW1ldGVyIGJ5IG5hbWUsIHRoZW4gd2UgdXNlIFNjb3BlZEFyZ3VtZW50cy4gT3RoZXJ3aXNl
IHdlCiAgICAgICAgIC8vIHVzZSBEaXJlY3RBcmd1bWVudHMuIFdpdGggU2NvcGVkQXJndW1lbnRz
LCB3ZSBsaWZ0IGFsbCBvZiBvdXIgYXJndW1lbnRzIGludG8gdGhlCiAgICAgICAgIC8vIGFjdGl2
YXRpb24uCkBAIC01MTYsNyArNTI4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAg
ICAgICAgICAgICAgICAgZW50cnkuZGlzYWJsZVdhdGNoaW5nKG1fdm0pOwogICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBuYW1l
LCBlbnRyeSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIE9wUHV0VG9TY29w
ZTo6ZW1pdCh0aGlzLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBVSU5UX01BWCwgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5mbyhU
aHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbiksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0
dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQo
KSk7CisgICAgICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIsIFVJTlRfTUFYLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9z
dXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBlY21hTW9kZSks
IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBz
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFRoaXMgY3JlYXRlcyBhIHNjb3BlZCBh
cmd1bWVudHMgb2JqZWN0IGFuZCBjb3BpZXMgdGhlIG92ZXJmbG93IGFyZ3VtZW50cyBpbnRvIHRo
ZQpAQCAtNTU0LDExICs1NjYsMTEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBCaW5kaW5nTm9kZSo+KHBhcmFtZXRlcnMuYXQoaSku
Zmlyc3QpLT5ib3VuZFByb3BlcnR5KCk7CiAgICAgICAgICAgICBmdW5jdGlvblN5bWJvbFRhYmxl
LT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBuYW1lLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNl
dChvZmZzZXQpKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1p
dCh0aGlzLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBhZGRDb25zdGFudChpZGVudCks
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSksIEdldFB1dElu
Zm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6
Tm90SW5pdGlhbGl6YXRpb24pLCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUo
VmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBvZmZzZXQub2Zm
c2V0KCkpOworICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIsIGFkZENvbnN0YW50KGlkZW50KSwgdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91bmQs
IExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiwg
ZWNtYU1vZGUpLCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJl
Z2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBvZmZzZXQub2Zmc2V0KCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChuZWVkc0FyZ3VtZW50cyAmJiAoY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSB8fCAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSkgeworICAgIGlm
IChuZWVkc0FyZ3VtZW50cyAmJiAoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAhaXNTaW1wbGVQYXJh
bWV0ZXJMaXN0KSkgewogICAgICAgICAvLyBBbGxvY2F0ZSBhIGNsb25lZCBhcmd1bWVudHMgb2Jq
ZWN0LgogICAgICAgICBPcENyZWF0ZUNsb25lZEFyZ3VtZW50czo6ZW1pdCh0aGlzLCBtX2FyZ3Vt
ZW50c1JlZ2lzdGVyKTsKICAgICB9CkBAIC03MTIsNyArNzI0LDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKICAgICAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRFbWl0VG9UaGlzID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwg
Y29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5j
dGlvbnNVc2VUaGlzKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1Vz
ZUV2YWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEVtaXRUb1RoaXMgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgoZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQ
cm9wZXJ0eSgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBl
clByb3BlcnR5KCkpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKChmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkgfHwg
bV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyUHJvcGVydHkoKSkg
JiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IG11c3QgZW1pdCB0b190aGlzIHdoZW4gd2UncmUgbm90IGluIHN0cmljdCBtb2RlIGJlY2F1c2Ug
d2UKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgY29udmVydCB8dGhpc3wgdG8gYW4g
b2JqZWN0LCBhbmQgdGhhdCBvYmplY3QgbWF5IGJlIHBhc3NlZAogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdG8gYSBzdHJpY3QgZnVuY3Rpb24gYXMgfHRoaXN8LiBUaGlzIGlzIG9ic2VydmFi
bGUgYmVjYXVzZSB0aGF0CkBAIC04MzMsMTUgKzg0NSwyMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0
aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hv
dWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtl
ZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4g
Y29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVj
bWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVy
YXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2Rl
KQogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkK
ICAgICAsIG1fY29kZVR5cGUoRXZhbENvZGUpCiAgICAgLCBtX3ZtKHZtKQotICAgICwgbV91c2Vz
Tm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9leHByZXNz
aW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCisgICAg
LCBtX3VzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUu
aXNTdHJpY3QoKSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCisgICAgLCBtX2hhc0Nh
Y2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dG
dW5jdGlvbkNvbnRleHQoZXZhbE5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZXZhbE5vZGUt
PnVzZXNFdmFsKCkpCisgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICwgbV9kZXJpdmVk
Q29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsKICAgICBtX2Nv
ZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKQEAgLTg5MSwxNSArOTA5LDIxIEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9k
ZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERa
Q2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVk
LCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1C
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFt
Tm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
Y29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1v
ZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQor
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3Jh
bU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25N
b2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywg
RUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1
ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6
bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwg
bV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5v
ZGUobW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRo
aXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShNb2R1bGVDb2RlKQogICAgICwg
bV92bSh2bSkKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBtX2V4cHJlc3Np
b25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKICAgICAs
IG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNl
KQorICAgICwgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWihmYWxzZSkKICAgICAsIG1fbmVl
ZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXJy
b3dGdW5jdGlvbigpIHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9l
Y21hTW9kZShlY21hTW9kZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKQEAgLTIzOTUsNyAr
MjQxOSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnJvbVNjb3Bl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvCiAgICAgICAgICAgICBraWxsKGRzdCks
CiAgICAgICAgICAgICBzY29wZSwKICAgICAgICAgICAgIGFkZENvbnN0YW50KHZhcmlhYmxlLmlk
ZW50KCkpLAotICAgICAgICAgICAgR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgdmFyaWFibGUub2Zm
c2V0KCkuaXNTY29wZSgpID8gTG9jYWxDbG9zdXJlVmFyIDogcmVzb2x2ZVR5cGUoKSwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksCisgICAgICAgICAgICBHZXRQdXRJbmZv
KHJlc29sdmVNb2RlLCB2YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyBMb2NhbENsb3N1cmVW
YXIgOiByZXNvbHZlVHlwZSgpLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
LCBlY21hTW9kZSgpKSwKICAgICAgICAgICAgIGxvY2FsU2NvcGVEZXB0aCgpLAogICAgICAgICAg
ICAgdmFyaWFibGUub2Zmc2V0KCkuaXNTY29wZSgpID8gdmFyaWFibGUub2Zmc2V0KCkuc2NvcGVP
ZmZzZXQoKS5vZmZzZXQoKSA6IDApOwogICAgICAgICByZXR1cm4gZHN0OwpAQCAtMjQyMiwxMSAr
MjQ0NiwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvU2NvcGUo
UmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IFZhcmlhYmxlJgogICAgICAgICBTY29wZU9mZnNldCBv
ZmZzZXQ7CiAgICAgICAgIGlmICh2YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkpIHsKICAgICAg
ICAgICAgIG9mZnNldCA9IHZhcmlhYmxlLm9mZnNldCgpLnNjb3BlT2Zmc2V0KCk7Ci0gICAgICAg
ICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgTG9jYWxDbG9zdXJlVmFy
LCBpbml0aWFsaXphdGlvbk1vZGUpOworICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8ocmVzb2x2ZU1vZGUsIExvY2FsQ2xvc3VyZVZhciwgaW5pdGlhbGl6YXRpb25Nb2RlLCBlY21h
TW9kZSgpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gU3ltYm9sVGFi
bGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHZhcmlhYmxlLnN5
bWJvbFRhYmxlQ29uc3RhbnRJbmRleCgpIH0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKHJlc29sdmVUeXBlKCkgIT0gTG9jYWxDbG9zdXJlVmFyKTsKLSAgICAgICAgICAg
IGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSgpLCBpbml0
aWFsaXphdGlvbk1vZGUpOworICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocmVz
b2x2ZU1vZGUsIHJlc29sdmVUeXBlKCksIGluaXRpYWxpemF0aW9uTW9kZSwgZWNtYU1vZGUoKSk7
CiAgICAgICAgICAgICBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCA9IFN5bWJvbFRhYmxlT3JTY29w
ZURlcHRoOjpzY29wZURlcHRoKGxvY2FsU2NvcGVEZXB0aCgpKTsKICAgICAgICAgfQogICAgICAg
ICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgc2NvcGUsIGFkZENvbnN0YW50KHZhcmlhYmxlLmlk
ZW50KCkpLCB2YWx1ZSwgZ2V0UHV0SW5mbywgc3ltYm9sVGFibGVPclNjb3BlRGVwdGgsICEhb2Zm
c2V0ID8gb2Zmc2V0Lm9mZnNldCgpIDogMCk7CkBAIC0yNTA3LDcgKzI1MzEsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgcAogCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQo
YmFzZSwgcHJvcGVydHlJbmRleCk7CiAKLSAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwg
cHJvcGVydHlJbmRleCwgdmFsdWUsIFB1dEJ5SWROb25lKTsgLy8gaXMgbm90IGRpcmVjdAorICAg
IE9wUHV0QnlJZDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgUHV0QnlJ
ZEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUoKSkpOyAvLyBpcyBub3QgZGlyZWN0CiAgICAgcmV0dXJu
IHZhbHVlOwogfQogCkBAIC0yNTE3LDcgKzI1NDEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1Zh
bAogCiAgICAgdW5zaWduZWQgcHJvcGVydHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsK
IAotICAgIE9wUHV0QnlJZFdpdGhUaGlzOjplbWl0KHRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJv
cGVydHlJbmRleCwgdmFsdWUpOworICAgIE9wUHV0QnlJZFdpdGhUaGlzOjplbWl0KHRoaXMsIGJh
c2UsIHRoaXNWYWx1ZSwgcHJvcGVydHlJbmRleCwgdmFsdWUsIGVjbWFNb2RlKCkpOwogCiAgICAg
cmV0dXJuIHZhbHVlOwogfQpAQCAtMjUzMCw3ICsyNTU0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWYKIAogICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UsIHByb3Bl
cnR5SW5kZXgpOwogCi0gICAgUHV0QnlJZEZsYWdzIHR5cGUgPSAocHV0VHlwZSA9PSBQcm9wZXJ0
eU5vZGU6Oktub3duRGlyZWN0IHx8IHByb3BlcnR5ICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5k
ZXJzY29yZVByb3RvKSA/IFB1dEJ5SWRJc0RpcmVjdCA6IFB1dEJ5SWROb25lOworICAgIFB1dEJ5
SWRGbGFncyB0eXBlID0gKHB1dFR5cGUgPT0gUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCB8fCBw
cm9wZXJ0eSAhPSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgPyBQdXRCeUlk
RmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSgpKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVj
bWFNb2RlKCkpOwogICAgIE9wUHV0QnlJZDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eUluZGV4
LCB2YWx1ZSwgdHlwZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQpAQCAtMjU5MCw3ICsyNjE0LDcg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEFzeW5jR2VuZXJhdG9yRmllbGRzKFJl
Z2lzdGVySUQqIG5leHRGdW5jdGlvbikKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxldGVCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0gICAgT3BEZWxCeUlkOjplbWl0KHRoaXMsIGRzdCwg
YmFzZSwgYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICBPcERlbEJ5SWQ6OmVtaXQodGhpcywg
ZHN0LCBiYXNlLCBhZGRDb25zdGFudChwcm9wZXJ0eSksIGVjbWFNb2RlKCkpOwogICAgIHJldHVy
biBkc3Q7CiB9CiAKQEAgLTI2MzQsMjUgKzI2NTgsMjUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0g
ICAgT3BQdXRCeVZhbDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIE9w
UHV0QnlWYWw6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsK
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbFdp
dGhUaGlzOjplbWl0KHRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKKyAg
ICBPcFB1dEJ5VmFsV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0
eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRC
eVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIE9wUHV0
QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgp
KTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSkKIHsKLSAgICBPcERlbEJ5VmFsOjplbWl0KHRoaXMsIGRzdCwgYmFz
ZSwgcHJvcGVydHkpOworICAgIE9wRGVsQnlWYWw6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9w
ZXJ0eSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMzI0Niw3ICszMjcw
LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjCiAgICAgLy8gRW1pdCBjYWxsLgogICAgIEFT
U0VSVChkc3QpOwogICAgIEFTU0VSVChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKTsKLSAgICBDYWxs
T3A6OmVtaXQodGhpcywgZHN0LCBmdW5jLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCksIGNhbGxBcmd1bWVudHMuc3RhY2tPZmZzZXQoKSk7CisgICAgaWYgY29uc3Rl
eHByIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpCisgICAgICAgIENhbGxPcDo6ZW1pdCh0aGlz
LCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSwg
Y2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpLCBlY21hTW9kZSgpKTsKKyAgICBlbHNlCisgICAg
ICAgIENhbGxPcDo6ZW1pdCh0aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpKTsKICAgICAK
ICAgICBpZiAoZXhwZWN0ZWRGdW5jdGlvbiAhPSBOb0V4cGVjdGVkRnVuY3Rpb24pCiAgICAgICAg
IGVtaXRMYWJlbChkb25lLmdldCgpKTsKQEAgLTM3ODksNyArMzgxNiw3IEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIFJlCiAgICAgdW5zaWduZWQgbnVtVmFycyA9IG1fY29kZUJsb2NrLT5udW1WYXJz
KCk7CiAgICAgcHVzaExleGljYWxTY29wZUludGVybmFsKG5hbWVTY29wZUVudmlyb25tZW50LCBU
RFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0
ZWQsIG51bGxwdHIsIFREWlJlcXVpcmVtZW50OjpOb3RVbmRlclREWiwgU2NvcGVUeXBlOjpGdW5j
dGlvbk5hbWVTY29wZSwgU2NvcGVSZWdpc3RlclR5cGU6OlZhcik7CiAgICAgQVNTRVJUX1VOVVNF
RChudW1WYXJzLCBtX2NvZGVCbG9jay0+bnVtVmFycygpID09IHN0YXRpY19jYXN0PGludD4obnVt
VmFycyArIDEpKTsgLy8gU2hvdWxkIGhhdmUgb25seSBjcmVhdGVkIG9uZSBuZXcgInZhciIgZm9y
IHRoZSBmdW5jdGlvbiBuYW1lIHNjb3BlLgotICAgIGJvb2wgc2hvdWxkVHJlYXRBc0xleGljYWxW
YXJpYWJsZSA9IGlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgc2hvdWxkVHJlYXRBc0xleGljYWxW
YXJpYWJsZSA9IGVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKICAgICBWYXJpYWJsZSBmdW5jdGlvblZh
ciA9IHZhcmlhYmxlRm9yTG9jYWxFbnRyeShwcm9wZXJ0eSwgbV9sZXhpY2FsU2NvcGVTdGFjay5s
YXN0KCkubV9zeW1ib2xUYWJsZS0+Z2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgcHJvcGVydHkuaW1w
bCgpKSwgbV9sZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zeW1ib2xUYWJsZUNvbnN0YW50SW5k
ZXgsIHNob3VsZFRyZWF0QXNMZXhpY2FsVmFyaWFibGUpOwogICAgIGVtaXRQdXRUb1Njb3BlKG1f
bGV4aWNhbFNjb3BlU3RhY2subGFzdCgpLm1fc2NvcGUsIGZ1bmN0aW9uVmFyLCBjYWxsZWUsIFRo
cm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiB9
CkBAIC0zOTcyLDcgKzM5OTksNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9u
bHlFeGNlcHRpb25JZk5lZWRlZChjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCiB7CiAgICAgLy8g
SWYgd2UncmUgaW4gc3RyaWN0IG1vZGUsIHdlIGFsd2F5cyB0aHJvdy4KICAgICAvLyBJZiB3ZSdy
ZSBub3QgaW4gc3RyaWN0IG1vZGUsIHdlIHRocm93IGZvciAiY29uc3QiIHZhcmlhYmxlcyBidXQg
bm90IHRoZSBmdW5jdGlvbiBjYWxsZWUuCi0gICAgaWYgKGlzU3RyaWN0TW9kZSgpIHx8IHZhcmlh
YmxlLmlzQ29uc3QoKSkgeworICAgIGlmIChlY21hTW9kZSgpLmlzU3RyaWN0KCkgfHwgdmFyaWFi
bGUuaXNDb25zdCgpKSB7CiAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKG1fdm0sIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTUwNTUsNyArNTA4Miw3IEBAIHZvaWQgU3RhdGljUHJvcGVy
dHlBbmFseXNpczo6cmVjb3JkKCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhp
cygpCiB7Ci0gICAgT3BUb1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsK
KyAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlciksIGVjbWFNb2Rl
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyOTg5Mzc0MGE4
NWE1ODQ5ZTM5NzI4ODU2NTAzMmFlNzRiYWZmNTViLi43MDc1OTZhNDk3NzIwMWNlZTc0MWUzMmEx
Nzg3MzZkNTRhMTYyNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zODAsMTMgKzM4MCwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEZpbmFsbHlDb250ZXh0OwogICAgICAg
ICBmcmllbmQgY2xhc3MgSW5kZXhlZEZvckluQ29udGV4dDsKICAgICAgICAgZnJpZW5kIGNsYXNz
IFN0cnVjdHVyZUZvckluQ29udGV4dDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFN0cmljdE1vZGVT
Y29wZTsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1
bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIAotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihW
TSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKLSAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVu
bGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwg
TW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwor
ICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1vZGUp
OworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwg
TW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVD
TUFNb2RlKTsKIAogICAgICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3IoKTsKICAgICAgICAgCkBAIC00
MDYsMTQgKzQwNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQogCiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrPgotICAgICAg
ICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogZW52aXJvbm1lbnQpCisgICAgICAgIHN0YXRpYyBQYXJz
ZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBlbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIE1vbm90b25pY1RpbWUgYmVmb3JlOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKQogICAgICAgICAgICAgICAg
IGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICBEZWZlckdDIGRl
ZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFr
ZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBj
b2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5s
aW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQsIGVjbWFNb2Rl
KTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0b3ItPmdlbmVyYXRl
KCk7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNv
bXBpbGVUaW1lcygpKSkgewpAQCAtMTAxOSw3ICsxMDIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgc2hvdWxkRW1pdFR5cGVQcm9maWxlckhvb2tzKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlR2VuZXJhdGlvbk1vZGUuY29udGFpbnMoQ29kZUdlbmVyYXRpb25Nb2RlOjpUeXBlUHJv
ZmlsZXIpOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdENvbnRyb2xGbG93UHJvZmlsZXJIb29r
cygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUdlbmVyYXRpb25Nb2RlLmNvbnRhaW5zKENvZGVHZW5l
cmF0aW9uTW9kZTo6Q29udHJvbEZsb3dQcm9maWxlcik7IH0KICAgICAgICAgCi0gICAgICAgIGJv
b2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpOyB9CisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21h
TW9kZTsgfQogICAgICAgICB2b2lkIHNldFVzZXNDaGVja3BvaW50cygpIHsgbV9jb2RlQmxvY2st
PnNldEhhc0NoZWNrcG9pbnRzKCk7IH0KIAogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CkBAIC0xMjk3
LDggKzEyOTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX3VzZXNOb25TdHJpY3RFdmFsIHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFsc2UgfTsKLSAgICAgICAg
Ym9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICAgICAgYm9vbCBt
X2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX25l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CisgICAgICAgIEVDTUFNb2RlIG1f
ZWNtYU1vZGU7CiAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0VHlw
ZSB7IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSB9OwogCiAgICAgICAgIENvbXBhY3RWYXJpYWJs
ZU1hcDo6SGFuZGxlIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFo7CkBAIC0xMzEyLDYgKzEzMTQs
MjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxDYXRjaEVudHJ5PiBtX2V4Y2Vw
dGlvbkhhbmRsZXJzVG9FbWl0OwogICAgIH07CiAKKyAgICBjbGFzcyBTdHJpY3RNb2RlU2NvcGUg
eworICAgIHB1YmxpYzoKKyAgICAgICAgU3RyaWN0TW9kZVNjb3BlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IpCisgICAgICAgICAgICA6IG1fZ2VuZXJhdG9yKGdlbmVyYXRvcikKKyAgICAg
ICAgICAgICwgbV9wcmV2aW91c0VDTUFNb2RlKGdlbmVyYXRvci5tX2VjbWFNb2RlKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2dlbmVyYXRvci5tX2VjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmlj
dCgpOworICAgICAgICB9CisKKyAgICAgICAgflN0cmljdE1vZGVTY29wZSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fZ2VuZXJhdG9yLm1fZWNtYU1vZGUgPSBtX3ByZXZpb3VzRUNNQU1vZGU7
CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yJiBt
X2dlbmVyYXRvcjsKKyAgICAgICAgRUNNQU1vZGUgbV9wcmV2aW91c0VDTUFNb2RlOworICAgIH07
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2NDBi
MjQ5NzU1ZTEwZWNkZDlhODNiOWUxNGIwOTdhYjM5ZmQwOTRmLi5iZDMzYjhhMGY5YmIyMjIzNjdk
Njk0N2ZmMmJiODQ0MTg5N2Y3NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yOTAzLDcgKzI5MDMsNyBAQCBSZWdp
c3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAg
IGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGdlbmVyYXRvci5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgIGlm
IChtX2Fzc2lnbm1lbnRDb250ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpBc3NpZ25tZW50RXhw
cmVzc2lvbikKQEAgLTI5MjAsNyArMjkyMCw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHJldHVyblJlc3VsdCA9IHJlc3VsdC5nZXQoKTsK
ICAgICBpZiAoIWlzUmVhZE9ubHkpIHsKLSAgICAgICAgcmV0dXJuUmVzdWx0ID0gZ2VuZXJhdG9y
LmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHJlc3VsdC5nZXQoKSwgZ2VuZXJhdG9y
LmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQs
IGluaXRpYWxpemF0aW9uTW9kZUZvckFzc2lnbm1lbnRDb250ZXh0KG1fYXNzaWdubWVudENvbnRl
eHQpKTsKKyAgICAgICAgcmV0dXJuUmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNj
b3BlLmdldCgpLCB2YXIsIHJlc3VsdC5nZXQoKSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXph
dGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Fzc2lnbm1lbnRDb250ZXh0KSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmVzdWx0LmdldCgpLCB2YXIsIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogCkBAIC0zMTQwLDcgKzMxNDAsNyBAQCBSZWdpc3Rl
cklEKiBFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpcwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRy
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3Bl
LmdldCgpLCB2YXIsIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJv
d0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJ
bml0aWFsaXphdGlvbik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5n
ZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/
IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1v
ZGU6OkluaXRpYWxpemF0aW9uKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2
YWx1ZS5nZXQoKSwgdmFyLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsgbV9pZGVudC5sZW5ndGgo
KSk7IAogICAgIH0KIApAQCAtMzM1MCwxMyArMzM1MCwxMyBAQCB2b2lkIEZvckluTm9kZTo6ZW1p
dExvb3BIZWFkZXIoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcHJv
cGVydAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5l
ZWRlZCh2YXIpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUobG9jYWwsIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0
TW9kZSgpKQorICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkp
CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgaWYgKHZhci5pc1JlYWRPbmx5
KCkpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVl
ZGVkKHZhcik7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwot
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHBy
b3BlcnR5TmFtZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDog
RG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2
YXIsIHByb3BlcnR5TmFtZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93
SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5v
dEluaXRpYWxpemF0aW9uKTsKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHByb3BlcnR5TmFtZSwgdmFyLCBtX2xleHByLT5wb3NpdGlvbigpLCBtX2xleHByLT5w
b3NpdGlvbigpICsgaWRlbnQubGVuZ3RoKCkpOwogICAgIH07CkBAIC0zNjA3LDEzICszNjA3LDEz
IEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0
b3IubW92ZShsb2NhbCwgdmFsdWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGlmIChn
ZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKHZhci5pc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAg
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVz
b2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1
ZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJv
d0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2
YWx1ZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6
IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0
aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUodmFsdWUsIHZhciwgbV9sZXhwci0+cG9zaXRpb24oKSwgbV9sZXhwci0+cG9zaXRpb24oKSAr
IGlkZW50Lmxlbmd0aCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChtX2xleHByLT5pc0RvdEFjY2Vz
c29yTm9kZSgpKSB7CkBAIC00Mzk3LDYgKzQzOTcsOCBAQCB2b2lkIENsYXNzRGVjbE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAog
UmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBTdHJpY3RNb2RlU2NvcGUgc3Ry
aWN0TW9kZVNjb3BlKGdlbmVyYXRvcik7CisKICAgICBpZiAobV9uZWVkc0xleGljYWxTY29wZSkK
ICAgICAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVHZW5lcmF0
b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6Ok5l
c3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQpOwogCkBAIC00ODMxLDcgKzQ4MzMsNyBAQCB2b2lkIEJp
bmRpbmdOb2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogdmFsdWUpIGNvbgogICAgICAgICAgICAgZ2VuZXJhdG9yLmxpZnRURFpDaGVja0lmUG9z
c2libGUodmFyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoZ2VuZXJhdG9yLmlz
U3RyaWN0TW9kZSgpKQorICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC00
ODQxLDcgKzQ4NDMsNyBAQCB2b2lkIEJpbmRpbmdOb2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUpIGNvbgogICAgICAgICBnZW5lcmF0
b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFs
dWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhy
b3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Jp
bmRpbmdDb250ZXh0KSk7CisgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgp
LCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5v
dEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIGluaXRpYWxpemF0aW9uTW9kZUZvckFzc2ln
bm1lbnRDb250ZXh0KG1fYmluZGluZ0NvbnRleHQpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHZhbHVlLCB2YXIsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKG1f
YmluZGluZ0NvbnRleHQgPT0gQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50
IHx8IG1fYmluZGluZ0NvbnRleHQgPT0gQXNzaWdubWVudENvbnRleHQ6OkNvbnN0RGVjbGFyYXRp
b25TdGF0ZW1lbnQpCiAgICAgICAgIGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3NpYmxlKHZh
cik7CkBAIC00ODc5LDcgKzQ4ODEsNyBAQCB2b2lkIEFzc2lnbm1lbnRFbGVtZW50Tm9kZTo6Ymlu
ZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGdlbmVy
YXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlz
U3RyaWN0KCkpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
RW5kKCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIG51bGxwdHIsIHNj
b3BlLmdldCgpKTsKQEAgLTQ4OTAsNyArNDg5Miw3IEBAIHZvaWQgQXNzaWdubWVudEVsZW1lbnRO
b2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoK
ICAgICAgICAgfQogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5k
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGlmICghaXNSZWFkT25seSkg
ewotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIs
IHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05v
dFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwg
dmFsdWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQg
OiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCB2YXIs
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1f
YXNzaWdubWVudFRhcmdldC0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggMzlj
YmY4MmUyMTEzMjA1YjU2ZjNhN2Q2ODc2MzVmMGMzZTcwZjE3YS4uZjQ1ZTAxZDA2NzE5MzA3NjJm
YzA3MDg1NTBmM2U0N2JjYTNjNGI1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yMTIsOSArMjEyLDkgQEAgSlNW
YWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKFZNJiB2bSkgY29uc3QKICAgICBpZiAo
IXRoaXNWYWx1ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBFQ01BTW9k
ZSBlY21hTW9kZSA9IE5vdFN0cmljdE1vZGU7Ci0gICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICBlY21hTW9kZSA9IFN0cmljdE1vZGU7CisgICAg
RUNNQU1vZGUgZWNtYU1vZGUgPSBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgaWYgKGNvZGVCbG9j
ayAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQor
ICAgICAgICBlY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsKICAgICByZXR1cm4gdGhpc1Zh
bHVlLnRvVGhpcyhtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSwg
ZWNtYU1vZGUpOwogfQogCkBAIC0yNTMsNyArMjUzLDggQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxG
cmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpT
T2IKICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgIEpTU2Nv
cGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNTY29wZSgpLCB2
YXJpYWJsZXNVbmRlclREWik7CiAKLSAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNh
bGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4
dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6
OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOworICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNh
bGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9jay0+dW5saW5rZWRDb2Rl
QmxvY2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxl
c1VuZGVyVERaLCBlY21hTW9kZSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CiAg
ICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCA5NTNmYmFlZjQ4ZjNhNTU0ZDQ1OWJkOWEyYjNkNmU2M2RhYTdjYWM3Li4wZGU4Y2VmYTdiY2Zm
ZTM0ZWFjNDVmOTc5NmJlZTNkNzk5NTkzNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xODYs
MTAgKzE4NiwxMCBAQCBlbnVtIGNsYXNzIFRvVGhpc1Jlc3VsdCB7CiAgICAgR2xvYmFsVGhpcywK
ICAgICBEeW5hbWljLAogfTsKLWlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5
KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmIHZhbHVlRm9yTm9kZSkK
K2lubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgRUNNQU1vZGUg
ZWNtYU1vZGUsIEFic3RyYWN0VmFsdWUmIHZhbHVlRm9yTm9kZSkKIHsKICAgICAvLyBXZSBsb29r
IGF0IHRoZSB0eXBlIGZpcnN0IHNpbmNlIHRoYXQgd2lsbCBjb3ZlciBtb3N0IGNhc2VzIGFuZCBk
b2VzIG5vdCByZXF1aXJlIGl0ZXJhdGluZyBhbGwgdGhlIHN0cnVjdHVyZXMuCi0gICAgaWYgKGlz
U3RyaWN0TW9kZSkgeworICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgIGlm
ICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIFNwZWNPYmpl
Y3RPdGhlcikpCiAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKICAg
ICB9IGVsc2UgewpAQCAtMjAzLDIwICsyMDMsMjAgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1Rv
VGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYK
ICAgICAgICAgICAgIGlmICh0b1RoaXNNZXRob2QgPT0gJkpTT2JqZWN0Ojp0b1RoaXMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgICAgICAgICBp
ZiAodG9UaGlzTWV0aG9kID09ICZKU1Njb3BlOjp0b1RoaXMpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaXNTdHJpY3RNb2RlKQorICAgICAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgoaXNTdHJpY3RNb2RlIHx8ICh2YWx1
ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkp
ICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAgaWYgKChlY21h
TW9kZS5pc1N0cmljdCgpIHx8ICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2Rl
Lm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkpICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0Zp
bml0ZSgpKSB7CiAgICAgICAgIGJvb2wgYWxsU3RydWN0dXJlc0FyZUpTU2NvcGUgPSAhdmFsdWVG
b3JOb2RlLm1fc3RydWN0dXJlLmlzQ2xlYXIoKTsKICAgICAgICAgYm9vbCBvdmVycmlkZXNUb1Ro
aXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZd
KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5mbyB0
eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwogICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNP
YmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5
bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7Ci0gICAgICAgICAgICBpZiAo
IWlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAg
ICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8vIFdl
IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0
aGVyOgogICAgICAgICAgICAgLy8gMSkgV2UgYXJlIGluIHN0cmljdCBtb2RlIGFuZCBzdHJpbmdz
L3N5bWJvbHMgYXJlIG5vdCB3cmFwcGVkCkBAIC0yMzAsNyArMjMwLDcgQEAgaW5saW5lIFRvVGhp
c1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJz
dHJhY3RWYWx1ZSYKICAgICAgICAgaWYgKCFvdmVycmlkZXNUb1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKICAgICAgICAgaWYgKGFsbFN0cnVjdHVyZXNB
cmVKU1Njb3BlKSB7Ci0gICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKQorICAgICAgICAgICAg
aWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jl
c3VsdDo6VW5kZWZpbmVkOwogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6R2xvYmFs
VGhpczsKICAgICAgICAgfQpAQCAtMjczMCw5ICsyNzMwLDkgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGlu
YXRpb24gPSBmb3JOb2RlKG5vZGUpOwotICAgICAgICBib29sIHN0cmljdE1vZGUgPSBtX2dyYXBo
LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBFQ01BTW9k
ZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAKLSAgICAgICAgVG9UaGlzUmVzdWx0IHJl
c3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX3ZtLCBzdHJpY3RNb2RlLCBzb3VyY2UpOworICAg
ICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fdm0sIGVjbWFN
b2RlLCBzb3VyY2UpOwogICAgICAgICBzd2l0Y2ggKHJlc3VsdCkgewogICAgICAgICBjYXNlIFRv
VGhpc1Jlc3VsdDo6SWRlbnRpdHk6CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNv
bnN0YW50Rm9sZGluZyh0cnVlKTsKQEAgLTI3NDYsNyArMjc0Niw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNP
YmplY3QpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpE
eW5hbWljOgotICAgICAgICAgICAgaWYgKHN0cmljdE1vZGUpCisgICAgICAgICAgICBpZiAoZWNt
YU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5tYWtlSGVhcFRv
cCgpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBz
b3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDk5NjFkOTAzMmQ2ODBkODUzNDY1OThkZTZhMmI4ZmFjZDczNDI3YmQuLjAyYzkw
ZDQwY2Y3MWVkZDY5ZDlhNGJlMjFhMTk2MmM5ZmUxM2VmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNDUsMTAgKzI0NSwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGRlc3RpbmF0aW9uLCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5
cGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSk7CiAgICAgdm9pZCBlbWl0UHV0QnlJZCgKLSAg
ICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgTm9kZSogdmFsdWUsICBjb25z
dCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0RpcmVjdCk7CisgICAgICAgIE5vZGUqIGJhc2UsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJv
b2wgaXNEaXJlY3QsIEVDTUFNb2RlKTsKICAgICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAgICAg
IE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiwKLSAgICAgICAgYm9vbCBpc0Rp
cmVjdCwgdW5zaWduZWQgaW50cnVjdGlvblNpemUpOworICAgICAgICBib29sIGlzRGlyZWN0LCB1
bnNpZ25lZCBpbnRydWN0aW9uU2l6ZSwgRUNNQU1vZGUpOwogICAgIAogICAgIC8vIEVpdGhlciBy
ZWdpc3RlciBhIHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNvbmRpdGlvbi4g
UmV0dXJucyBmYWxzZSBpZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIGhvbGRzLCBh
bmQgdGhlcmVmb3JlIG5vIHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQuCkBAIC04NDYs
MTggKzg0NiwxOCBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAot
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgY29uc3QgRE9NSklU
OjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUg
b3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0
ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAg
ICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKICAgICAgICAgICAgIGlmIChhbGxJbmxpbmVGcmFt
ZXNBcmVUYWlsQ2FsbHMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdpdGhvdXRT
ZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdp
dGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBvcEluZm8sIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVy
T2Zmc2V0LCBPcEluZm8oKSk7CiAgICAgICAgICAgICBvcCA9IFRhaWxDYWxsSW5saW5lZENhbGxl
cjsKICAgICAgICAgfQogCiAKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0
dGluZ1Jlc3VsdCgKLSAgICAgICAgICAgIG9wLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBh
cmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAg
ICBvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKHBy
ZWRpY3Rpb24pKTsKICAgICAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBz
ZXQocmVzdWx0LCBjYWxsKTsKICAgICAgICAgcmV0dXJuIGNhbGw7CkBAIC0xMzQ0LDcgKzEzNDQs
NyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNh
bGwoCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxs
KHJlc3VsdCwgb3AsIG51bGxwdHIsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgTm9kZSogY2FsbE5vZGUgPSBh
ZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIEFTU0VSVChjYWxs
Tm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENh
bGxGb3J3YXJkVmFyYXJncyk7CiAgICAgcmV0dXJuIGNhbGxOb2RlLT5vcCgpID09IFRhaWxDYWxs
ID8gVGVybWluYWwgOiBOb25UZXJtaW5hbDsKIH0KQEAgLTIxODIsNyArMjE4Miw3IEBAIEJ5dGVD
b2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZygKICAgICBOb2RlKiBteUNhbGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJl
Zyk7CiAgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRoKSB7CiAgICAgICAgIGFkZENhbGwoCi0gICAg
ICAgICAgICByZXN1bHQsIGNhbGxPcCwgbnVsbHB0ciwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgICAgICByZXN1bHQsIGNhbGxPcCwgT3BJbmZv
KCksIG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAg
ICAgICAgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICBWRVJCT1NFX0xPRygi
V2UgYWRkZWQgYSBjYWxsIGluIHRoZSBzbG93IHBhdGhcbiIpOwogICAgIH0gZWxzZSB7CkBAIC0z
NjU2LDcgKzM2NTYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5v
ZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsCiAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8PSBKU0NfRE9NSklUX1NJR05BVFVS
RV9NQVhfQVJHVU1FTlRTX0lOQ0xVRElOR19USElTLCAiQ3VycmVudGx5IENhbGxET00gZG9lcyBu
b3Qgc3VwcG9ydCBhbiBhcmJpdHJhcnkgbGVuZ3RoIGFyZ3VtZW50cy4iKTsKIAogICAgIGluc2Vy
dENoZWNrcygpOwotICAgIGFkZENhbGwocmVzdWx0LCBDYWxsLCBzaWduYXR1cmUsIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgYWRkQ2FsbChyZXN1bHQsIENhbGwsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsVGFy
Z2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rp
b24pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NjE1LDIyICs0NjE1LDIyIEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmVtaXRQdXRCeUlkKAotICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJv
b2wgaXNEaXJlY3QpCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9v
bCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYgKGlzRGlyZWN0KQotICAg
ICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgYmFzZSwg
dmFsdWUpOworICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVudGlm
aWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwgdmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAg
YWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IFB1dEJ5SWRGbHVzaCA6IFB1
dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgYmFzZSwgdmFsdWUpOworICAgICAgICBhZGRUb0dy
YXBoKHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gUHV0QnlJZEZsdXNoIDogUHV0QnlJZCwg
T3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8oZWNtYU1vZGUpLCBiYXNlLCB2YWx1ZSk7CiB9CiAK
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgTm9kZSogYmFzZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBO
b2RlKiB2YWx1ZSwKLSAgICBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29s
IGlzRGlyZWN0LCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpCisgICAgY29uc3QgUHV0QnlJZFN0
YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25T
aXplLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTaW1w
bGUoKSB8fCAhcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nl
c3NJbmxpbmluZygpKSB7CiAgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NldCgpKQogICAg
ICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwotICAgICAgICBlbWl0UHV0QnlJZChi
YXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAg
ICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNE
aXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTQ2Mzgs
NyArNDYzOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAg
IGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMo
KQogICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmco
KQogICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6
bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKLSAgICAgICAgICAgIGVt
aXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCk7CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0
QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICAKQEAgLTQ2NDcsNyArNDY0Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXNbdmFy
aWFudEluZGV4XS5raW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmICghY2hlY2socHV0QnlJ
ZFN0YXR1c1t2YXJpYW50SW5kZXhdLmNvbmRpdGlvblNldCgpKSkgewotICAgICAgICAgICAgICAg
ICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywg
aXNEaXJlY3QpOworICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTQ2OTAsNyArNDY5MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAK
ICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3Ry
dWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAgIGlmICgh
Y2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlk
KGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAg
ICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1
cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC00NzU3LDcgKzQ3NTcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogCiAgICAgICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90aGVyLCBiYXNl
LCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAgICAgICAgaWYgKCFsb2FkZWRWYWx1ZSkg
ewotICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5
SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50
aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDgwMSw3ICs0ODAxLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgCiAgICAgZGVm
YXVsdDogewotICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0
QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0gfQogfQpAQCAtNDk3Myw3ICs0OTczLDggQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIG9wX3RvX3RoaXM6IHsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRoaXMoKTsKLSAg
ICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvVGhp
cz4oKS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgICAgICAgICBTdHJ1Y3R1
cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CiAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBpZiAoY2FjaGVkU3RydWN0dXJlSUQpCkBAIC00OTg0LDcgKzQ5ODUsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAg
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2Uo
bV9jdXJyZW50SW5kZXgpCiAgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpCiAgICAgICAg
ICAgICAgICAgfHwgKG9wMS0+b3AoKSA9PSBHZXRMb2NhbCAmJiBvcDEtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKCksIE9wSW5mbyhnZXRQcmVkaWN0
aW9uKCkpLCBvcDEpKTsKKyAgICAgICAgICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgoVG9UaGlz
LCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLCBv
cDEpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgK
ICAgICAgICAgICAgICAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsCkBAIC01ODI0LDcgKzU4MjUsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgYWRkVmFyQXJnQ2hpbGQodGhpc1ZhbHVlKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0No
aWxkKHByb3BlcnR5KTsKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKLSAgICAg
ICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBQdXRCeVZhbFdpdGhUaGlzLCBPcEluZm8o
MCksIE9wSW5mbygwKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgUHV0
QnlWYWxXaXRoVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBPcEluZm8oMCkpOwog
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAg
ICAgIH0KQEAgLTU4OTQsMTQgKzU4OTUsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNv
ZGUubV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKICAg
ICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClb
aWRlbnRpZmllck51bWJlcl07Ci0gICAgICAgICAgICBib29sIGRpcmVjdCA9ICEhKGJ5dGVjb2Rl
Lm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpOworICAgICAgICAgICAgYm9vbCBkaXJlY3QgPSBi
eXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCk7CiAKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMg
cHV0QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAogICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCiAgICAgICAg
ICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50
aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChi
YXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBjdXJyZW50SW5zdHJ1Y3Rpb24t
PnNpemUoKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCksIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRC
eUlkU3RhdHVzLCBkaXJlY3QsIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpLCBieXRlY29kZS5t
X2ZsYWdzLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X2lk
KTsKICAgICAgICAgfQogCkBAIC01OTEyLDggKzU5MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBn
ZXQoYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUubV9wcm9w
ZXJ0eV07CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFB1
dEJ5SWRXaXRoVGhpcywgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IHVpZCkpLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
UHV0QnlJZFdpdGhUaGlzLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywgdWlkKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSwgdGhpc1ZhbHVlLCB2
YWx1ZSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWRfd2l0aF90aGlzKTsK
ICAgICAgICAgfQogCkBAIC01OTQ4LDcgKzU5NDgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChi
eXRlY29kZS5tX2Jhc2UpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHld
OwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwg
YWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywgdWlkKSksIGJhc2UpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwg
YWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywgdWlkKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSkpOwogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X2lkKTsKICAgICAgICAgfQogCkBAIC01OTU2
LDcgKzU5NTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BEZWxCeVZhbD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9i
YXNlKTsKICAgICAgICAgICAgIE5vZGUqIGtleSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsK
LSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeVZhbCwg
YmFzZSwga2V5KSk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgo
RGVsZXRlQnlWYWwsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSwga2V5KSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfdmFsKTsKICAgICAgICAgfQogCkBAIC02
NDc5LDcgKzY0NzksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICAgICAg
ICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1ieXRlY29kZS5tX2FyZ3Y7Ci0gICAgICAgICAgICBh
ZGRDYWxsKGJ5dGVjb2RlLm1fZHN0LCBDYWxsRXZhbCwgbnVsbHB0ciwgZ2V0KGJ5dGVjb2RlLm1f
Y2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigp
KTsKKyAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8o
Ynl0ZWNvZGUubV9lY21hTW9kZSksIGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1f
YXJnYywgcmVnaXN0ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9jYWxsX2V2YWwpOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTY4Mjgs
NyArNjgyOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICBpZiAobmVlZHNEeW5hbWljTG9va3VwKHJlc29sdmVUeXBlLCBvcF9w
dXRfdG9fc2NvcGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXJOdW1iZXIg
IT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgIHVpbnQ2NF90IG9wSW5mbzEgPSBtYWtlRHlu
YW1pY1Zhck9wSW5mbyhpZGVudGlmaWVyTnVtYmVyLCBnZXRQdXRJbmZvLm9wZXJhbmQoKSk7Ci0g
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZvMSks
IE9wSW5mbygpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZv
MSksIE9wSW5mbyhnZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSks
IGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
cHV0X3RvX3Njb3BlKTsKICAgICAgICAgICAgIH0KIApAQCAtNjg1MCw3ICs2ODUwLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
ICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMQogICAgICAgICAgICAgICAgICAgICB8
fCBzdGF0dXNbMF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlCiAgICAgICAgICAg
ICAgICAgICAgIHx8IHN0YXR1c1swXS5zdHJ1Y3R1cmUoKS5zaXplKCkgIT0gMSkgewotICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0
ZWNvZGUubV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQs
IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZv
KGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUp
LCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IHdlYWtKU0NvbnN0
YW50KGdsb2JhbE9iamVjdCk7CkBAIC03NDk2LDggKzc0OTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgIiBmb3IgaW5saW5pbmcgYXQg
IiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVFR5cGU6OkRGR0pJVCksCiAg
ICAgICAgICAgICAgICAgIiAiLCBpbmxpbmVDYWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyKTsKICAg
ICAgICAgfQotICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIiwgaXNTdHJpY3RNb2RlID0g
IiwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCksICJcbiIpOwor
ICAgICAgICBkYXRhTG9nTG4oKTsKICAgICAgICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24o
KS0+ZHVtcEJ5dGVjb2RlKCk7CiAgICAgfQogICAgIApAQCAtNzYwNCw3ICs3NjAzLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2ln
bmVkIGluc3RydWN0aW9uU2l6ZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFz
UHV0QnlJZCkKLSAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRl
bnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBpbnN0cnVjdGlv
blNpemUpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVu
dGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0aW9u
U2l6ZSwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFz
UHV0QnlJZCkgewpAQCAtNzYxNSw3ICs3NjE0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSkK
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZCgw
KTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChO
b2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZv
KGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbygwKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9k
ZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhh
cnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAg
ICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBi
ZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNl
IG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDY1MDUzY2Vi
NWUwODdhMGNkNGEzMTQ4MGFmZGU4ZDY1MTgxZWQxNDMuLmU3ODAxZjgyMWMxM2Y1MWRmODliYjNm
YzUxNmE4M2U1NmY1MzY4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC03NDQsNyArNzQ0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1RoaXM6IHsKLSAgICAgICAg
ICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgu
bV92bSwgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7CisgICAgICAgICAgICAgICAgVG9UaGlzUmVz
dWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX2dyYXBoLm1fdm0sIG5vZGUtPmVjbWFN
b2RlKCksIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpOwogICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpJZGVudGl0eSkgewogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CmluZGV4IDc5YTljNGZhYjUwZTZjNjY1NWE0NmQ0YzlhMWY5OGJlZjNjNzhmMzcuLjRmY2JjZmMz
ZGIxOWI5NWQyYThkNGYzOTk4NGYxYTkzYTgyYzJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjgzMSw3ICsyODMxLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgZml4dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCk7CiAKICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAppbmRleCA5NDdlZmFhYmE5ZTY0OTZiM2IwNWM2ZjU1MTQyYWI3Yzc3
YjViNWEyLi4xNjY2ZDc1Mzg3ZGJjNTU0MDJjOWY3YmUwMzYxMTc1YmM3NWM4MjE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC00NDEsNyArNDQxLDcgQEAgcHVibGljOgog
ICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikK
ICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBnbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbik7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1l
dGhvZFRhYmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBvYmplY3QsIE5vdFN0cmljdE1vZGUpKTsK
KyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUobV92
bSktPnRvVGhpcyhvYmplY3QsIG9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAgICAgfQog
ICAgIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVGb3IoSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUpCkBAIC00NjksMTggKzQ2OSw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29k
ZU9yaWdpbiwgbV9wcm9maWxlZEJsb2NrKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmlj
dE1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKCFjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsKLSAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lKCktPmlzU3RyaWN0TW9kZSgpOwotICAgIH0KLSAgICAKLSAgICBFQ01BTW9kZSBlY21hTW9k
ZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJp
Y3RNb2RlRm9yKGNvZGVPcmlnaW4pID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7Ci0gICAg
fQotICAgIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxs
VmFsaWQoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICB7CiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50KCktPmlzU3RpbGxWYWxpZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApp
bmRleCBiYzdjZmIxMmQwYThlMmQzMmUyNzI5N2Y3NDhhNjU1ZTM1MTcyNjc2Li4yOTVmYzhjYjY2
MDU4Zjg3OTIxNzNjYjI5OWQzYjk5YmVhNDQ1YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaApAQCAtMjIwNCw2ICsyMjA0LDUzIEBAIHB1YmxpYzoKICAgICAgICAgbV9vcEluZm8g
PSBhcnJheU1vZGUuYXNXb3JkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKworICAg
IGJvb2wgaGFzRUNNQU1vZGUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAg
ICAgIGNhc2UgQ2FsbEV2YWw6CisgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2Fz
ZSBEZWxldGVCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICBjYXNlIFB1dEJ5
SWREaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICBjYXNlIFB1dEJ5
SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5
VmFsV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKKyAgICAgICAgY2FzZSBU
b1RoaXM6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEVDTUFNb2RlIGVj
bWFNb2RlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNFQ01BTW9kZSgpKTsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQ2FsbEV2YWw6CisgICAgICAgIGNhc2UgRGVs
ZXRlQnlWYWw6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2FzZSBU
b1RoaXM6CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFz
PHVpbnQ4X3Q+KCkpOworICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CisgICAgICAgIGNhc2UgUHV0
QnlJZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5SWRG
bHVzaDoKKyAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0QnlW
YWw6CisgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbERp
cmVjdDoKKyAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICAgICAgcmV0dXJuIEVD
TUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8dWludDhfdD4oKSk7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAg
ICBib29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJ
bmZvLmgKaW5kZXggNDVlN2FjM2RiNThmNjViNzhhYjYwMmU3OGU0YTMxYzQ0NTgzYzljNy4uMGU0
YzMxYmYwZDdlNTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEwYjYzOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oCkBAIC00Nyw2ICs0Nyw3IEBAIHN0cnVjdCBPcEluZm8gewogICAg
IGV4cGxpY2l0IE9wSW5mbyhSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdHJ1Y3R1cmUp
KSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92YWx1ZShvcC5hc0Jp
dHMoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJhd0JpdHMo
KSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVl
KGVjbWFNb2RlLnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAg
ZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCmluZGV4IGYwYWRkOWFlNTYwMGZlZWVhOTA0NjFiY2I5ZjE4ZWQ0MjY1NWM3
NmQuLmM3ZTM5ZjI2YjQyN2YzMjBlYTNlZWY0MzQ1ZDJhYjNjNGNkODM4NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjk4LDcgKzI5OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0
TW9kZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTMwNyw3
ICszMDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0
cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IFN0cmljdE1vZGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwog
fQogCiBKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkKQEAgLTM0
MTQsNyArMzQxNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3Ry
aWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlm
ICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKaW5kZXggMzYxODFhMjgyMTMzOWU4OGI2NjNj
NjU4NzFjMGRhM2NjNDRkZThhMi4uYmFhMjFjMGJiZmEyYWNmYmE1MGQ1YThmOTkzMmQzMTRkYjU0
NDlmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9j
YWxDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNl
TG9jYWxDbG9iYmVyaXplLmgKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgCiAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJt
b3N0IGFyZ3VtZW50cywgZXhjZXB0IHRoaXMsIGFyZSByZWFkIGluIHNsb3BweSBtb2RlLgotICAg
ICAgICAgICAgaWYgKCFtX2dyYXBoLm1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAg
ICAgICAgICAgaWYgKCFtX2dyYXBoLm1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJ
blN0cmljdENvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
Z3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tOykKICAgICAgICAgICAgICAg
ICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7
CiAgICAgICAgICAgICB9CkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBSZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50cyBhbmQgY2FsbCBm
cmFtZSBoZWFkZXJzIHRoYXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4KICAgICAgICAgICAg
IGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJh
bWUgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlcklubGluZUZyYW1lU2tpcHBpbmdUYWlsQ2Fs
bHMoKSkgewotICAgICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1v
ZGUoKSkgeworICAgICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0luU3RyaWN0
Q29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tOykKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKS5vZmZz
ZXQoKSkpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4
ODU4YjM4YzE2YTY1YThjOGViZGI5ZDQzNzAxMjgzNDcyYTUwYS4uYTA3YmJmNDY2MTczYTBjM2Iy
NTljZjU2NGM3OGEyNmMxOGNiYzNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUwNiw3
ICs1MDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7
CiAgICAgICAgICAgICAvLyBUb1RoaXMgaW4gbWV0aG9kcyBmb3IgcHJpbWl0aXZlIHR5cGVzIHNo
b3VsZCBzcGVjdWxhdGUgcHJpbWl0aXZlIHR5cGVzIGluIHN0cmljdCBtb2RlLgotICAgICAgICAg
ICAgYm9vbCBpc1N0cmljdE1vZGUgPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21h
TW9kZSgpLmlzU3RyaWN0KCk7CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0Jv
b2xlYW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBkMzhjZmRmMmFlMjg0OWUxMzk3YjBkZWM5MWY5ZmMwMzljZjljM2NjLi5mYTdm
NDY0ZTJhMGY0YzNjZTNmMmExNjE3Njk1YzJlYWM0NzMwNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjExOSw3ICsyMTE5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUs
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kJiBiYXMKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
CiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRo
aXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAg
ICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRp
b25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAg
ICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91Ymxl
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dERvdWJs
ZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgIE5vUmVz
dWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZh
bHVlUmVnKSk7CkBAIC0zMTUwLDI0ICszMTUwLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0
CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3Vs
dCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZUdQUikp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAg
ICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBv
cGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LAorICAg
ICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5
VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBwcm9wZXJ0eSwgdmFs
dWVHUFIpKTsKICAgICAgICAgfQogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNl
cywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3Qg
OiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBKU1ZhbHVlUmVncyhw
cm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVH
UFIpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAg
ICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5v
blN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJp
Y3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVn
cyh2YWx1ZVRhZ0dQUiwgdmFsdWVHUFIpKSk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzI5OSw3
ICszMjk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdp
dGhTdHJpbmcoTm9kZSogbm9kZSwgRWRnZSYgY2hpbGQxLAogICAgIHNwZWN1bGF0ZVN0cmluZyhj
aGlsZDIsIGFyZzJHUFIpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5n
Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwg
YXJnM1JlZ3MpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
ID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsU3RyaW5nTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwg
YXJnMkdQUiwgYXJnM1JlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBu
b1Jlc3VsdChub2RlKTsKQEAgLTMzMTgsNyArMzMxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxk
MSwKICAgICBzcGVjdWxhdGVTeW1ib2woY2hpbGQyLCBhcmcyR1BSKTsKIAogICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6IG9w
ZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMTMyOSw3ICsxMTMy
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqIG5v
ZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAog
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1v
ZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJp
Y3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24obm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6
IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzY29wZUdQUiwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjE1LDcgKzEyMjE1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0g
ICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVn
cywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0K
QEAgLTEyMjMwLDcgKzEyMjMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
SWQoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVl
UmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNh
Y2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNj
cmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0KTsKKyAgICBj
YWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+
ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjQ1LDcgKzEyMjQ1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9k
ZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgRGlyZWN0KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjYwLDcgKzEyMjYwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwotICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeUlkV2l0aFRoaXMsCisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlk
V2l0aFRoaXMsCiAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywg
dGhpc1JlZ3MsIHZhbHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMo
KSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMTI2MjksNyArMTI2MjksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgbV9q
aXQubW92ZVZhbHVlUmVncyh0aGlzVmFsdWVSZWdzLCB0ZW1wUmVncyk7CiAKICAgICBKX0pJVE9w
ZXJhdGlvbl9HSiBmdW5jdGlvbjsKLSAgICBpZiAobV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpCisgICAgaWYgKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkK
ICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAgZWxzZQogICAg
ICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKQEAgLTEzODI4LDcgKzEzODI4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAg
bm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
dXRLaW5kIHB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJl
Z2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJ
ZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNw
aWxsTW9kZSA9PSBEb250U3BpbGwpIHsKQEAgLTEzODQwLDcgKzEzODQwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVu
dGlmaWVyLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVl
UmVncywKLSAgICAgICAgc2NyYXRjaEdQUiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiks
IHB1dEtpbmQpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCk7CiAKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAyMzA2MWU1M2MxNTNiMGExMTVlN2UxN2Ew
MjMwZmViNjk5MmY5ZWYzLi4xMGViYjliZjFiMjk4YjJhNzJiNTUzZDRmZDZmOGM3Yjg1OGRkODQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBA
IC03MTcsNyArNzE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUNoZWNrTmV1dGVyZWQo
Tm9kZSopOwogCiAgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7
Ci0gICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVy
OjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVl
UmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVD
TUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hl
ZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAxMzMyMTU1ZTEyODJlNTEzYjdlMWNjNDM4
YTJiYmY4NGU1ZmM2NWY2Li5hZWJkNDU1ZDA1MGUzZDQzODAwZTNjMWU4NjM2NWNlYzNjNjhiNjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTc2MCw3ICs3NjAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlKQogICAgICAgICB1bnNpZ25lZCByZXF1aXJlZEJ5dGVzID0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpICsgc2l6ZW9mKENhbGxGcmFtZSopICogMjsKICAgICAgICAgcmVxdWlyZWRC
eXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJl
cXVpcmVkQnl0ZXMpOwogICAgICAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHJlcXVpcmVk
Qnl0ZXMpLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25DYWxsRXZhbCk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAg
IHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKICAgICAgICAgbV9qaXQuYXBwZW5kQ2FsbChvcGVy
YXRpb25DYWxsRXZhbCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0yNzI1
LDkgKzI3MjYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBHUFJSZWcgYXJnM0dQUiA9IGFyZzMuZ3ByKCk7CiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJl
Y3QpCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFH
UFIsIGFyZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFH
UFIsIGFyZzJHUFIsIGFyZzNHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0yODA5LDcg
KzI4MTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBpZiAoYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2UsIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAg
ICAgICAgICAgICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRp
b25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAg
ICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZywgdmFsdWVSZWcpKTsKQEAgLTI4OTMsNyArMjg5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmICghc2xvd0Nhc2VzLmVtcHR5
KCkpIHsKICAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25k
QXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6IChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QpLAogICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwpAQCAtMzg5Nyw3ICszODk4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBH
UFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsV2l0aFRoaXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCB0
aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhp
c1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7
CkBAIC01NDY1LDcgKzU0NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRl
QnlJZChOb2RlKiBub2RlKQogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogCiAgICAgICAgIG1faml0LmFkZERlbEJ5SWQoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKQEAgLTU0ODQsNyArNTQ4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5l
cmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNl
UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtNTUyMyw3ICs1NTI0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwK
LSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogCiAgICAgICAg
IG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC01NTQzLDcgKzU1NDQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5UmVncyk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAzNDk4ZjkxMjE0YWI3
YjE0YWEyZTFlMmU5YmViOGY5ODNmZTIyODA4Li4yNDViNmExZWY0NDhmZWM4NjY2NGEzYzRiZmU2
ZjZlNGU0ODI2NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC0yMTIwLDcgKzIxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIEpfSklU
T3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0
cmljdDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1Ro
aXM7CkBAIC0zNjgyLDcgKzM2ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgdGhpc1Zh
bHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKIAotICAgICAgICB2bUNhbGwoVm9pZCwg
bV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0
aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAorICAg
ICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCiAgICAg
ICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVl
LCBtX291dC5jb25zdEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCkpKTsKICAgICB9CiAKQEAgLTM2OTQsNyArMzY5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExW
YWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIp
KTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMykpOwogCi0gICAgICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9k
ZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywKKyAgICAgICAgdm1DYWxsKFZvaWQs
IG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhp
c1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsCiAgICAgICAgICAgICB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAg
ICAgfQogICAgIApAQCAtMzk2Nyw3ICszOTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHBy
ZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0
ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBtX2dy
YXBoLmV4ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZWNtYU1vZGUoKTsKKyAg
ICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogICAgICAgICAKICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAg
LTQ4MjUsMTIgKzQ4MjUsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWX0pJVE9wZXJh
dGlvbl9HQ0NKIG9wZXJhdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxk
Mi51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX25v
ZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RDZWxsU3RyaW5nU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0Q2VsbFN0cmluZ05vblN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0
aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0OwogICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9w
ZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdDsKQEAgLTQ4NDEsMTIgKzQ4NDEsMTIg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGlmIChjaGlsZDIudXNlS2luZCgpID09IFN5
bWJvbFVzZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5
VmFsRGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmlj
dE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFN0
cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xOb25T
dHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1
dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENl
bGxTeW1ib2xOb25TdHJpY3Q7CkBAIC00ODU4LDEyICs0ODU4LDEyIEBAIHByaXZhdGU6CiAKICAg
ICAgICAgICAgIFZfSklUT3BlcmF0aW9uX0dKSkogb3BlcmF0aW9uOwogICAgICAgICAgICAgaWYg
KG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAg
ICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdDsKICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpKQorICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkK
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Q7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBv
cGVyYXRpb25QdXRCeVZhbE5vblN0cmljdDsKQEAgLTQ5MDksNyArNDkwOSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNv
bnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAg
ICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFy
cmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QpLAogICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNv
bnRpbnVhdGlvbik7CkBAIC00OTM1LDcgKzQ5MzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjb250aWd1b3VzUHV0QnlW
YWxPdXRPZkJvdW5kcygKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pc1N0cmljdE1vZGVG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IChtX25vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJl
eW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJh
eUJvdW5kc1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG1fbm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJy
YXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91
bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3RvcmFnZSwgaW5kZXgs
IHZhbHVlLCBjb250aW51YXRpb24pOwpAQCAtNDk3NSw3ICs0OTc1LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIExWYWx1ZSBpc091dE9mQm91bmRzID0gbV9vdXQuYWJvdmVPckVxdWFsKAogICAg
ICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hl
YXBzLkFycmF5U3RvcmFnZV92ZWN0b3JMZW5ndGgpKTsKIAotICAgICAgICAgICAgYXV0byBzbG93
UGF0aEZ1bmN0aW9uID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpCisgICAgICAgICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSBtX25vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRC
eVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAg
ICAgICAgIDogKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJl
eW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KTsKICAgICAgICAgICAgIGlmICghYXJyYXlNb2RlLmlz
T3V0T2ZCb3VuZHMoKSkgewpAQCAtNTI0MCw3ICs1MjQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlv
biwgcmV0dXJuR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0KS5j
YWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1Bh
dGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTUyNjksNyArNTI2OSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
Mzk3CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgc2V0
Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlk
R2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFz
ZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0
cygpKSkpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJ
bnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIG1fb3V0LmludFB0clplcm8sIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApA
QCAtNTMxMCw3ICs1MzEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZt
Q2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBzdWJzY3JpcHQpKSk7CisgICAgICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsR2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRy
WmVybywgYmFzZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+ZWNtYU1vZGUo
KS52YWx1ZSgpKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05ODA1
LDcgKzk4MDUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlcXVpcmVk
Qnl0ZXMgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBzaXplb2YoQ2FsbEZyYW1lKikgKiAy
OwogICAgICAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgICAgICAg
ICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3Qs
IEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7
CisgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNh
bGxFdmFsKT4oZ2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwog
ICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86Om5vblByZXNl
cnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6
bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTMzNTUs
NyArMTMzNTYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgIHNldEpTVmFsdWUodm1D
YWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFy
Tm9uU3RyaWN0LAorICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRp
b25QdXREeW5hbWljVmFyTm9uU3RyaWN0LAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUt
PmdldFB1dEluZm8oKSkpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDA4MGZh
ZWRlODFhMjI2ODIyMWQxYzUwODk0MWQ5ZWYyNzEyNzlhMjAuLjk3YmZiMjAyZTVmNzQ4NGU2Y2E0
YjQ5ZDE0YmFjN2YzMTYzZGNiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xNTAsNyArMTUwLDcg
QEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9iamVj
dCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgIHJldHVybiBqc1N0cmlu
Zyh2bSwgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUob2JqZWN0KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDUxODhjMDIzOWRmNDZlMDAyZGM5ZTJhMWIzNzIxYjVkMGIwYzBmOGUuLmM0ZDljNzI3ZTA3MThl
ZWFlZjAwNjgyODQ0YzU0NzNkYjIyYmJmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1KU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNWYWx1ZSBldmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogCiAgICAgRGly
ZWN0RXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmRpcmVjdEV2YWxDb2Rl
Q2FjaGUoKS50cnlHZXQocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ2FsbFNpdGVJbmRleCk7CiAgICAg
aWYgKCFldmFsKSB7Ci0gICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkgeworICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgICAgIGlm
IChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNl
cjxMQ2hhcj4gcHJlcGFyc2VyKGdsb2JhbE9iamVjdCwgcHJvZ3JhbVNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBwcm9ncmFtU291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OLCBjYWxsZXJDb2RlQmxv
Y2spOwogICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNl
ci50cnlMaXRlcmFsUGFyc2UoKSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBKU1ZhbHVlIGV2YWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAg
IAogICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAg
ICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hh
aW4sIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxl
ckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBjYWxsZXJD
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlu
a2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOwor
ICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92
aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5r
ZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNt
YU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAg
dW5zaWduZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMgPSBldmFsLT5udW1GdW5jdGlv
bkhvaXN0aW5nQ2FuZGlkYXRlcygpOwogCiAgICAgSlNTY29wZSogdmFyaWFibGVPYmplY3Q7Ci0g
ICAgaWYgKChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSAmJiBldmFs
LT5pc1N0cmljdE1vZGUoKSkgeworICAgIGlmICgobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVs
RnVuY3Rpb25EZWNscykgJiYgZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkgewogICAgICAgICBz
Y29wZSA9IFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c3Ry
aWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSwgc2NvcGUpOwogICAgICAgICB2YXJpYWJsZU9i
amVjdCA9IHNjb3BlOwogICAgIH0gZWxzZSB7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkRXZhbENvZGVCbG9jaygpOwogCiAgICAgLy8gV2Ug
Y2FuJ3QgZGVjbGFyZSBhICJ2YXIiLyJmdW5jdGlvbiIgdGhhdCBvdmVyd3JpdGVzIGEgZ2xvYmFs
ICJsZXQiLyJjb25zdCIvImNsYXNzIiBpbiBhIHNsb3BweS1tb2RlIGV2YWwuCi0gICAgaWYgKHZh
cmlhYmxlT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpICYmICFldmFsLT5pc1N0cmljdE1vZGUoKSAm
JiAobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKKyAgICBpZiAo
dmFyaWFibGVPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250
ZXh0KCkgJiYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpKSB7CiAg
ICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2YXJpYWJsZU9iamVjdCktPmdsb2JhbExleGlj
YWxFbnZpcm9ubWVudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFy
aWFibGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gdW5s
aW5rZWRDb2RlQmxvY2stPnZhcmlhYmxlKGkpOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWwKIAogICAgIGlmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxG
dW5jdGlvbkRlY2xzIHx8IG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKSB7CiAgICAgICAg
IEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcih2bSwgdmFyaWFibGVPYmplY3Qp
OwotICAgICAgICBpZiAodmFyaWFibGVPYmplY3QtPm5leHQoKSAmJiAhZXZhbC0+aXNTdHJpY3RN
b2RlKCkpCisgICAgICAgIGlmICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpICYmICFldmFsLT5pc0lu
U3RyaWN0Q29udGV4dCgpKQogICAgICAgICAgICAgdmFyaWFibGVPYmplY3QtPmdsb2JhbE9iamVj
dCh2bSktPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+ZmlyZUFsbCh2bSwgIkV4ZWN1dGVkIGV2
YWwsIGZpcmVkIFZhckluamVjdGlvbiB3YXRjaHBvaW50Iik7CiAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7CkBAIC0xMTQ0LDcgKzExNDQsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAoZXZhbC0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgaWYgKGV2
YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHM7ICsraSkgewogICAgICAgICAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChp
KTsKICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh2YXJpYWJsZU9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmlu
ZGV4IDkwYTlkYjVjNWE5ZmIwMjU2YzU3ZDFkNmNlNDk5YTdmZTczMWUwODUuLjY0NTM5MTI3Yjhj
NzRjODIwMjliMmJiNjE4MGU2OTY5NzFhNjRiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0xNTAsNyArMTUwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICB9
OwogCi0gICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAg
SlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpOwogCiAg
ICAgaW5saW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKaW5kZXggNzBmNWRkNDgxZjE2ZGYxNmFiZGQzMjNiYjQ2NGI1NzAyNjRkYjNi
Yy4uYWJhMGVlYjU5NWJkMDA1OTczMzVjZmQzMTA4NWE0YTc2NjFlNjcyOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNDcyLDE5ICsxNDcyLDYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdE1vZGVGb3IoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0g
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJh
bWUpCi0gICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOwotICAg
ICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKTsKLSAgICB9Ci0gICAg
Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGlzU3RyaWN0TW9kZUZvcihjb2RlT3JpZ2luKSA/IFN0cmljdE1vZGUg
OiBOb3RTdHJpY3RNb2RlOwotICAgIH0KLSAgICAKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0
YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKTsKICAgICAKICAgICBDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBiMmJmY2U2MzM3ZDliZTAyZDYx
ZjM4OTVjZTVlY2EzYTBkNzgzMjA2Li5lMWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZmYjQ0NzFmZmNi
MjBiODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTEzOCw3ICsx
MzgsOCBAQCBib29sIEpJVDo6Y29tcGlsZUNhbGxFdmFsKGNvbnN0IE9wQ2FsbEV2YWwmIGJ5dGVj
b2RlKQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29k
ZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIHJlZ1QxKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpLCByZWdUMik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsRXZhbCwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCByZWdUMSwgcmVnVDIpOwogCiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDk4Zjk0YTI2ODgzMTY5
MWY2Nzk1YjI3OWYxYjcwOWQxYWQxMWU0MGYuLjIyNmU2Yjc5ODUxYjYxYmNjYmQ1MTA3Y2ZhNWZj
YzMwMjYwZTc5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZf
SklUT3BlcmF0aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlv
bigpCiB7Ci0gICAgaWYgKG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgeworICAgIGlmIChtX2Vj
bWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3QpCiAg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwog
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4
IGE2NDdjNDViM2Y0ZTNiNDNkYjVkNDYwNTVkZjc1OGI2YjkyZWY4ZWEuLmYwM2UwOTI1Mzg1NDFm
YjAzNDBmMTJjNmJhOGE2MTExMWYzMzY3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTEyOCw3ICsxMjgsOSBAQCBw
dWJsaWM6CiAKIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVy
YXRvciB7CiBwdWJsaWM6Ci0gICAgSklUUHV0QnlJZEdlbmVyYXRvcigpIHsgfQorICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IoKQorICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgp
KQorICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDIzZmY1YzgxYzFjMDMyMjJmOTEyYTQ5OTMx
ZjI4MzZkYWRjZmFjYjcuLjdkY2JlOGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3NTY1NTMzZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0xNjYsNyArMTY2LDcg
QEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmUKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlu
a1Nsb3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
ciwgVmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3du
Tm90SW1tZWRpYXRlKHJlZykpCisgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVn
KSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogfQogCkBAIC00OTYsNyArNDk2LDcgQEAg
aW5saW5lIHZvaWQgSklUOjplbWl0U3RvcmUoVmlydHVhbFJlZ2lzdGVyIHJlZywgY29uc3QgSlNW
YWx1ZSBjb25zdGFudCwgUmVnaXN0ZXIKIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJs
b2NrLT5pc0tub3duTm90SW1tZWRpYXRlKHJlZykpIHsKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5p
c0tub3duQ2VsbChyZWcpKSB7CiAgICAgICAgIGlmIChyZWcuaXNDb25zdGFudCgpKQogICAgICAg
ICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgZWxzZQpAQCAtNTA2LDcgKzUwNiw3
IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxS
ZWdpc3RlciByZWcpCiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKFZpcnR1YWxSZWdpc3RlciByZWcsIFJlZ2lzdGVySUQgdGFnKQogewotICAgIGlmICghbV9j
b2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9jb2RlQmxv
Y2stPmlzS25vd25DZWxsKHJlZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAg
ICAgICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC02MDAsNyAr
NjAwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKFJlZ2lzdGVySUQgcmVnKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCByZWcsIFZpcnR1YWxSZWdpc3RlciB2UmVnKQog
ewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUodlJlZykpCisgICAg
aWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwodlJlZykpCiAgICAgICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCA1NzZmNWY1NGVlN2M4ZTc1MjY2OTJjOTA0ZDBiYjY0MmUz
YmI1NjM5Li4zMjE4MzQwNjQwNTk1NGJiYjYxMjU5NWIyZTk1ZGNlYzM0ZWFhOTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcwMSw3ICs3MDEs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudGlmaWVyLCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvKQorc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTcxNywxMiArNzE3LDEyIEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAKICAg
ICAgICAgICAgIGJ5VmFsSW5mby0+YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAg
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPnB1dEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgZWNtYU1vZGUuaXNT
dHJpY3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGdsb2JhbE9iamVjdCwg
aSwgdmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBiYXNlVmFsdWUu
cHV0QnlJbmRleChnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzSW50MzIoKSkgewog
ICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CkBAIC03MzgsMTUgKzczOCwx
NCBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93
UGF0aCA9IHRydWU7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoYmFzZVZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgIGJhc2VW
YWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQog
Ci1zdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUgc3Vi
c2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3N0YXRpYyB2b2lk
IGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwogCiAgICAgaWYg
KExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMg
bmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2
ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2Vz
LgpAQCAtNzY4LDcgKzc2Nyw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIH0K
IAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Cisg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgsIHZh
bHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6
IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC03NzgsNyArNzc3LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAgICAgaWYg
KHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2Ny
aXB0QXNVSW50MzIpKSB7CiAgICAgICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRy
dWU7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwg
MCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdElu
ZGV4U2hvdWxkTm90VGhyb3cpOworICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGVjbWFNb2RlLmlz
U3RyaWN0KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91
bGROb3RUaHJvdyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC03
OTAsNyArNzg5LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpIHsKICAgICAgICAgYnlWYWxJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQ
dXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgZWNtYU1vZGUu
aXNTdHJpY3QoKSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNo
b3VsZE5vdFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzk4LDcgKzc5Nyw3
IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGJhc2VPYmplY3QsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgIENvbW1vblNsb3dQYXRoczo6
cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKQEAgLTg4NCw3ICs4ODMsNyBAQCBzdGF0aWMgT3B0aW1pemF0
aW9uUmVzdWx0IHRyeVB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbAogICAgIHJldHVybiBvcHRpbWl6YXRpb25SZXN1bHQ7CiB9CiAKLXZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8pCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtOTAyLDcgKzkwMSw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAg
ICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKICAgICB9Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
YmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3Jp
cHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CiAKIHN0YXRpYyBPcHRpbWl6YXRp
b25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2Jq
ZWN0KiBvYmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAtOTc0LDcgKzk3Myw3IEBAIHN0YXRpYyBP
cHRpbWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIG9wdGltaXphdGlvblJlc3VsdDsKIH0KIAotdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFN
b2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC05OTUsMTAg
Kzk5NCwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBjdGlQYXRjaENhbGxC
eVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIG9iamVj
dCwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2
YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3Jp
cHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xMDA4LDExICsxMDA3LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlCiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogCi0gICAgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBi
YXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbyk7CisgICAgcHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1v
ZGUpOwogfQogCiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTEwMjIsMTAgKzEwMjEsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpT
VmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBSRUxF
QVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgZGlyZWN0UHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBhc09iamVjdChiYXNlVmFsdWUpLCBz
dWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pOworICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9i
amVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBl
Y21hTW9kZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUg
ZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEwMzUsNyArMTAzNCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVGcmFt
ZS0+Z3VhcmFudGVlZEpTVmFsdWVDYWxsZWUoKSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBl
dmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGVjbWFNb2RlKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMTYzLDcgKzIxNjIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5o
YXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wg
ZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1Zh
bHVlIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxNzMsMTIg
KzIxNzIsMTIgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHYKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxl
dGUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4g
Y291bGREZWxldGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2Fj
aGVhYmxlSWRlbnRpZmllcikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2Fj
aGVhYmxlSWRlbnRpZmllciwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTIxOTIsMjEgKzIxOTEsMjEgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFMKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7
CiAKLSAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUs
IHZtLCBzbG90LCBiYXNlVmFsdWUsIGlkZW50KTsKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5
SWQoZ2xvYmFsT2JqZWN0LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBpZGVudCwgZWNtYU1vZGUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
aWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmICghcGFyc2VJbmRleChpZGVu
dCkpIHsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0s
IGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVudGlmaWVyKSkKLSAg
ICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNs
b3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5
S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVy
LCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3
Q2FjaGVhYmxlSWRlbnRpZmllcikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJ
ZGVudGlmaWVyLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMjIxNCwxMCArMjIxMywxMCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdAogICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIg
aWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGlk
ZW50KTsKKyAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBpZGVudCwgZWNtYU1vZGUpOwogfQogCi1zdGF0aWMg
Ym9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBrZXkpCitzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBi
YXNlLCBKU1ZhbHVlIGtleSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMjM2LDEyICsyMjM1LDEyIEBAIHN0YXRp
YyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBWTSYKICAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHks
IHNsb3QpOwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0g
ICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJv
cGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1zaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVDTUFNb2RlIGVjbWFN
b2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMjUzLDcgKzIyNTIsNyBA
QCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAg
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7
CiAKLSAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQpOworICAgIGJvb2wgcmVzdWx0ID0gZGVs
ZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGVj
bWFNb2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVy
Ojppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKQEAgLTIyNjQsMjAgKzIy
NjMsMjAgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNl
bGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lk
ZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBp
ZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAq
c3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICAgICAgICAgIHJlcGF0
Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRT
dHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCwg
ZWNtYU1vZGUpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdWJzY3JpcHQpKTsKKyAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0
LCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdWJzY3JpcHQpLCBlY21hTW9kZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCkBAIC0y
NTQ0LDcgKzI1NDMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6
YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOworICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KHNjb3BlLCBnZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJv
cGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNj
b3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB2b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBiNTI0OWFlMjEzOGY5MjBkOWE1YzM0OWM0ZDcyZWNm
MjYyMjI4NTcyLi4xMjAyOTliZTE1MGY4YmM3MWRlMGM5NTE1MDMyMjcwMWI3NWQxYmJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNjQsNiArNjQsNyBA
QCBjbGFzcyBWTTsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAKIHN0cnVjdCBCeVZhbEluZm87Citz
dHJ1Y3QgRUNNQU1vZGU7CiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0
aW9uOwogCkBAIC0xODcsMTEgKzE4OCwxMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlUwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRF
Uk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9J
TlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1Bh
dGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJl
dHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKENhbGxG
cmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwogU2xv
d1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENhbGwoQ2FsbEZy
YW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CkBAIC0y
NTAsMTAgKzI1MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVS
TkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1
aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdl
dCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlW
YWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90LCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRhcmdldCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRo
U2NvcGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRK
U1ZhbHVlIG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1c2hXaXRoU2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGMzNTQzZGFlN2QwODJlYmRlYzYxZDBiY2Q1Yjhm
ODc1MjA0MGJlNzQuLmE0MDgwNTkzNjUwYTZlYzU2OGFhNjEwNjkxN2ZlOTdiMzhmMTMzOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC0yODcsNyArMjg3LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdp
dGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFN
b2RlKCksIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVy
ZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6
IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRv
IHJlZHVjZSBjb2RlIHNpemUuCkBAIC0zMTEsMTEgKzMxMSwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8UwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWU7CisgICAgRUNNQU1vZGUgZWNtYU1v
ZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7CiAKICAgICBhdXRvIGxvYWQgPSBbJl0oYXV0byBieXRl
Y29kZSkgewogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKKyAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAg
ICBpZiAoaXNEaXJlY3QpCkBAIC0zMzEsNyArMzMzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcih2YWx1ZSwgcmVnVDIpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJl
Y3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCwgcmVnVDEsIHJlZ1QyLCBieVZhbEluZm8pOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9u
UHV0QnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCByZWdUMCwgcmVnVDEsIHJlZ1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihlY21hTW9k
ZS52YWx1ZSgpKSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpA
QCAtNDI3LDcgKzQyOSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QwKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwor
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMy
KGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVl
UmVncyhyZWdUMCkpOwpAQCAtNDc3LDcgKzQ3OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOwor
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgcmVnVDAsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1
ZSgpKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsK
IAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC02NTQsNyAr
NjU2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVj
b2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWVWUmVnID0gYnl0ZWNvZGUubV92
YWx1ZTsKLSAgICBib29sIGRpcmVjdCA9ICEhKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNE
aXJlY3QpOworICAgIGJvb2wgZGlyZWN0ID0gYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpOwog
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICAvLyBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHBh
dGNoIGJvdGggdGhlIFN0cnVjdHVyZSwgYW5kIHRoZSBvYmplY3Qgb2Zmc2V0LCB3ZSBzdG9yZSBv
bmUgcG9pbnRlciwKQEAgLTY2OCw3ICs2NzAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwK
LSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBt
X2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksCiAgICAg
ICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggOGQxODgwMzZhMjM1OWRmMGIxZTFhZjFhYjRk
ODc3ZmM2YzYwYzlhYS4uNTM1NDg2Y2Q4ZjE1MzJhZDFiZWI1MTVhODZiOTA4YWJjODM2OTZlMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAg
ICBlbWl0TG9hZChiYXNlLCByZWdUMiwgcmVnVDEpOwogICAgIGVtaXRMb2FkKHByb3BlcnR5LCBy
ZWdUMywgcmVnVDApOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwotICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8pOworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9w
dGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8sIGJ5dGVjb2RlLm1faXNT
dHJpY3RNb2RlKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0
aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0
aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBjM2RmMDc5MmU0ZTcyZDQ5YjRk
N2EyMjZjYTEwMTE5NWQ4ZjRjNjA4Li5kZTdkNjZkMDMxZWNkYjljMzU0YTVhYzk4MWEyNzVjYzQx
YTI2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTczOCw3ICs3
MzgsNyBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3By
aWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCi1zdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50
aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2lu
ZCkKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgRGVsQnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CkBAIC03NzEs
NyArNzcxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgICAgIEFTU0VSVChu
ZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZz
ZXQobmV3T2Zmc2V0KSk7CiAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKHZtLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1
cmUsIG5ld1N0cnVjdHVyZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpIHsKKyAgICAgICAgfSBlbHNlIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkgewog
ICAgICAgICAgICAgaWYgKHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKICAgICAgICAgICAgICAg
ICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6
OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwgcHJvcGVydHlOYW1lLCBpbnZhbGlkT2Zmc2V0LCBvbGRT
dHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CiAgICAgICAgICAgICBlbHNlCkBAIC03OTIsMTIgKzc5
MiwxMiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgIHJldHVybiByZXN1bHQuc2hvdWxk
R2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lk
IHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1l
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQordm9pZCByZXBh
dGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGlmICh0cnlDYWNoZURlbGV0
ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgeworICAg
IGlmICh0cnlDYWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNl
VmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1v
ZGUpID09IEdpdmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJl
cGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3Qt
PnZtKCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAg
ICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmgKaW5kZXggZTVjZTQ2ODcxMTQ2MzkyZTRlNzJlNjE0YTJmNWU1OGVhNjc0OTk0NS4uZDg5
MGZkNzBhYWNkODJmZmJmNGRhOGZiMjRlMWYzZGZmNTc0OWRjMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgZW51bSBjbGFzcyBEZWxCeUtpbmQgewog
dm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpT
VmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVw
YXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRC
eUtpbmQpOwogdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayos
IEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Ci12b2lkIHJlcGF0Y2hEZWxl
dGVCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpT
VmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZv
JiwgRGVsQnlLaW5kKTsKK3ZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQsIEVDTUFNb2RlKTsK
IHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90
JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3Ry
dWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxG
cmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyYmZmYzM4MTYzZmUzMWJlOTQxYmVk
NmE1ZmI1NmQyOThiZWI2MjI3Li5mMzlmOGY1YzFhYzA3YmQ5NDAwMGQ4NmRhYTY1NDg5ZmE4OTM1
NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKQEAgLTgzNiwxMCArODM2LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWQpCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKLSAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9j
ay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
LCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgY29kZUJsb2NrLT5wdXRC
eUlkQ29udGV4dCgpKTsKIAogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVl
LmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsK
LSAgICBpZiAoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkKKyAgICBpZiAoYnl0
ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpKQogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBpZGVu
dCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpLCBzbG90KTsKICAgICBl
bHNlCiAgICAgICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpZGVudCwgZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpLCBzbG90KTsKQEAgLTg4OCw3ICs4
ODgsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1
Y3R1cmUtPmlkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZz
ZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVj
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShieXRlY29kZS5tX2ZsYWdz
LmlzRGlyZWN0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IG5ld1N0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0
LCBhc09iamVjdChiYXNlQ2VsbCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X3N0cnVjdHVyZUNoYWluLnNldCh2bSwgY29kZUJsb2NrLCBjaGFpbik7CkBAIC05MjcsNyArOTI3
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gSlNDZWxsOjpkZWxl
dGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlm
ICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAg
ICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0
ZVByb3BlcnR5RXJyb3IpKTsKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRl
KSk7CiB9CkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX2Jhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIAogICAgIGlmIChMSUtFTFko
c3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQu
YXNVSW50MzIoKTsKQEAgLTEwNTgsNyArMTA1OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VW
YWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmlj
dCgpOwogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIC8v
IERlc3BpdGUgaXRzIG5hbWUsIEpTVmFsdWU6OmlzVUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25s
eSBmb3IgcG9zaXRpdmUgYm94ZWQgaW50MzJfdDsgYWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQg
YXJyYXkgaW5kaWNlcy4KICAgICAgICAgQVNTRVJUKGlzSW5kZXgoc3Vic2NyaXB0LmFzVUludDMy
KCkpKTsKQEAgLTExMTIsNyArMTExMiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9kZWxfYnlfdmFsKQogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIAotICAg
IGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQ
cm9wZXJ0eUVycm9yKSk7CiAgICAgCiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERl
bGV0ZSkpOwpAQCAtMTczOCw3ICsxNzM4LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBj
b21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24KICAg
ICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIHNldFVwQ2FsbChjYWxsZWVGcmFt
ZSwgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpKTsKICAgICAKLSAgICB2bS5ob3N0Q2FsbFJl
dHVyblZhbHVlID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lKTsKKyAgICB2bS5ob3N0
Q2FsbFJldHVyblZhbHVlID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBieXRlY29k
ZS5tX2VjbWFNb2RlKTsKICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNhbGxl
ZUZyYW1lLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0
aW9uUHRyVGFnKTsKIH0KICAgICAKQEAgLTE4NzQsNyArMTg3NCw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAgICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVydHkpCiAg
ICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCkpOwogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5p
dGlhbGl6YXRpb24obWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7
CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5l
Y21hTW9kZSgpLmlzU3RyaWN0KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlz
SW5pdGlhbGl6YXRpb24obWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KSk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmplY3Qs
IGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgQ29tbW9uU2xvd1BhdGhzOjp0cnlDYWNo
ZVB1dFRvU2NvcGVHbG9iYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJ5dGVjb2RlLCBzY29w
ZSwgc2xvdCwgaWRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCmluZGV4IDdhNjQyYzAyNmZkYjBkMjA5OWNhZWRlNjZjNzIxNTE3ZTZm
NmZlZTEuLmIwNDdmYjU4MDhjZjBjOGUwMGFjMDEzNWMxMTllMjM1NDFiMjAyNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTU5
OSw3ICs1OTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
VG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpOwogCiAgICAgLy8gMS4gTGV0IGFycmF5IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09i
amVjdCBvbiB0aGUgdGhpcyB2YWx1ZS4KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNW
YWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtNjgxLDcgKzY4MSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0
TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNzc5LDcgKzc3OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8gYmUgPyBUb09iamVjdCh0aGlzIHZhbHVl
KS4KLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CkBAIC04NjQsNyArODY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1BvcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpKQogICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRo
aXNWYWx1ZSktPnBvcChnbG9iYWxPYmplY3QpKSk7CkBAIC04OTksNyArODk5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2EKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJp
Y3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIGlmIChMSUtF
TFkoaXNKU0FycmF5KHRoaXNWYWx1ZSkgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0g
MSkpIHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNWYWx1ZSk7CkBAIC05
NDAsNyArOTQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1JldmVyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Cisg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3Qp
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEwNjQsNyArMTA2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXku
cHJvdG90eXBlLnNsaWNlCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhpc09i
aiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKQEAgLTExMjQsNyArMTEyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgLy8gMTUuNC40LjEzCiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhp
c09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29k
ZWRKU1ZhbHVlKCk7CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1
LjQuNC4xNAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2Jq
ZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9
OwpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxNS40LjQuMTUKLSAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCAyMjZiNDgzNTQ2
MmQ4YzQ1ZTYxOWY2NjgwMGJlOTk3YTkxYWU4OGExLi44MDJmMjAyZjkyOWIwMDgwMzRmYTdkNmVi
ODEwOTBhYjczMzBkMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCkBAIC0xODE4LDcgKzE4MTgsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFVubGlu
a2VkTWV0YWRhdGFUYWJsZT4gbWV0YWRhdGEoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1
cm4gbV9tZXRhZGF0YS5kZWNvZGUoZGVjb2Rlcik7IH0KIAogICAgIHVuc2lnbmVkIHVzZXNFdmFs
KCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIHVuc2lnbmVkIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgdW5zaWduZWQgaXNDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIHVuc2lnbmVk
IGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlh
YmxlczsgfQogICAgIHVuc2lnbmVkIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0J1aWx0aW5GdW5jdGlvbjsgfQpAQCAtMTg1MSw3ICsxODUwLDYgQEAgcHJpdmF0ZToKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwogCiAgICAgdW5zaWduZWQgbV91c2Vz
RXZhbCA6IDE7Ci0gICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVk
IG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CkBAIC0yMDQ4LDcg
KzIwNDYsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVC
bG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiAgICAgLCBtX3Njb3BlUmVnaXN0ZXIo
Y2FjaGVkQ29kZUJsb2NrLnNjb3BlUmVnaXN0ZXIoKSkKIAogICAgICwgbV91c2VzRXZhbChjYWNo
ZWRDb2RlQmxvY2sudXNlc0V2YWwoKSkKLSAgICAsIG1faXNTdHJpY3RNb2RlKGNhY2hlZENvZGVC
bG9jay5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihjYWNoZWRDb2RlQmxv
Y2suaXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhjYWNoZWRD
b2RlQmxvY2suaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rp
b24oY2FjaGVkQ29kZUJsb2NrLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCkBAIC0yMjM0LDcgKzIyMzEs
NiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIG1fdGhpc1JlZ2lzdGVyID0gY29kZUJs
b2NrLm1fdGhpc1JlZ2lzdGVyOwogICAgIG1fc2NvcGVSZWdpc3RlciA9IGNvZGVCbG9jay5tX3Nj
b3BlUmVnaXN0ZXI7CiAgICAgbV91c2VzRXZhbCA9IGNvZGVCbG9jay5tX3VzZXNFdmFsOwotICAg
IG1faXNTdHJpY3RNb2RlID0gY29kZUJsb2NrLm1faXNTdHJpY3RNb2RlOwogICAgIG1faXNDb25z
dHJ1Y3RvciA9IGNvZGVCbG9jay5tX2lzQ29uc3RydWN0b3I7CiAgICAgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlcyA9IGNvZGVCbG9jay5tX2hhc0NhcHR1cmVkVmFyaWFibGVzOwogICAgIG1faXNCdWls
dGluRnVuY3Rpb24gPSBjb2RlQmxvY2subV9pc0J1aWx0aW5GdW5jdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IDhkZGQ5
OGExYmZiMGZlYzE1YTdkNzMyYWNjM2MyY2VmODVkMDQwYjQuLmJmODU0MTIyNDZiMjljOTk5ZTUy
M2E3YTRlY2NjODMxMDcyNmM3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgQ2xvbmVk
QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhCiAKICAgICBpZiAoIXRoaXNPYmplY3QtPnNwZWNpYWxzTWF0ZXJpYWxpemVk
KCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXNPYmplY3QtPm1fY2FsbGVlLT5leGVjdXRhYmxlKCkpOwot
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpOwor
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0
KCk7CiAKICAgICAgICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSkgewog
ICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQg
Q2xvbmVkQXJndW1lbnRzOjptYXRlcmlhbGl6ZVNwZWNpYWxzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIAogICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihtX2NhbGxlZS0+ZXhlY3V0YWJsZSgpKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1
dGFibGUtPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJs
ZS0+aXNJblN0cmljdENvbnRleHQoKTsKICAgICAKICAgICBpZiAoaXNTdHJpY3RNb2RlKQogICAg
ICAgICBwdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNh
bGxlZSwgdGhpcy0+Z2xvYmFsT2JqZWN0KHZtKS0+dGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxs
ZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNz
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXgg
ZmEzY2QzMjZiY2Q1Yjk3ODlhMjQyN2U2MTNhYzk1NDhiMmZiM2FlMi4uOWUxNzJiNmFlYTc0YjA2
MmRlOWZmZWY4ZGE1NmQ0OTM0Zjk0ZDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCkBAIC05MSwxMSArOTEsMTEgQEAgVW5saW5rZWRDb2RlQmxvY2tU
eXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHMKICAgICAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVz
KCkgfCBhcnJvd0NvbnRleHRGZWF0dXJlLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSwgcm9vdE5vZGUtPmxhc3RMaW5lKCksIGVuZENvbHVtbik7CiAKICAgICBib29sIHVzZXNFdmFs
ID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBFdmFsRmVhdHVyZTsKLSAgICBib29sIGlzU3RyaWN0
TW9kZSA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmU7CisgICAgRUNN
QU1vZGUgZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJl
ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8
RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikKICAgICAgICAgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpOwotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBpc1N0cmlj
dE1vZGUsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+
OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOworICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29u
dGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlw
ZSogdW5saW5rZWRDb2RlQmxvY2sgPSBVbmxpbmtlZENvZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZUluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxv
Y2stPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoKSwgbGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7CkBAIC0xMDQsNyAr
MTA0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2Nr
SW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBpZiAoIXNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIHVubGlu
a2VkQ29kZUJsb2NrLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkpOwogCi0gICAgZXJyb3IgPSBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2Vk
Q29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBl
cnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNv
dXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgdmFyaWFibGVzVW5k
ZXJURFosIGVjbWFNb2RlKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKaW5kZXggNDRkOGZiNGI0MjJhOTJkMDNiODFhYjBhZjE4ZDRmNjViMWU4
YzgzNS4uYjU2YTc0OGVkNDZjNDhhNjNhMGI1NTA3MjMzYTMxNzkyYmRiMmE4MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0z
ODAsNyArMzgwLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgLy8g
ZGlmZmVyZW50IG9iamVjdCB0aGF0IHN0aWxsIGhhcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgb24gdGhl
IGZhc3QgcGF0aCBzaW5jZSBpdCdsbCBwcm9kdWNlCiAgICAgLy8gdGhlIHNhbWUgU3BlY3VsYXRl
ZFR5cGUuIFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB2YWx1ZSBwcm9m
aWxpbmcgb24gdGhlCiAgICAgLy8gZmFzdCBwYXRoLgotICAgIGF1dG8gdmFsdWUgPSB2MS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6
IE5vdFN0cmljdE1vZGUpOworICAgIGF1dG8gdmFsdWUgPSB2MS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9N
KGJ5dGVjb2RlLm1fc3JjRHN0LCB2YWx1ZSwgUFJPRklMRV9WQUxVRSh2YWx1ZSkpOwogfQogCkBA
IC05ODksNyArOTg5LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiAg
ICAgfQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIAotICAgIGlmICghY291bGREZWxldGUg
JiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGJ5
dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgVEhST1coY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CiAgICAgCiAg
ICAgUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWwgPSBHRVRfQyhieXRlY29kZS5tX3RoaXNWYWx1ZSkuanNWYWx1ZSgpOwogICAg
IEpTVmFsdWUgcHV0VmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX3ZhbHVlKS5qc1ZhbHVlKCk7Ci0g
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbCwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzVmFsLCBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCksIGNvZGVCbG9jay0+cHV0
QnlJZENvbnRleHQoKSk7CiAgICAgYmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlk
ZW50LCBwdXRWYWx1ZSwgc2xvdCk7CiAgICAgRU5EKCk7CiB9CkBAIC0xMzIyLDcgKzEzMjIsNyBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgCiAg
ICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1Zh
bHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzVmFsdWUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgYmFzZVZh
bHVlLnB1dChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgRU5EKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHNJbmxpbmVzLmgKaW5kZXggMzdhZmE3NmM0MDU3NTkzNTUwNmU1OWI4NGQyYjVmMWU4MDlh
ZmZmMy4uYmI1NDc0MDdjMTc1NzVlYWM0NGRhZWMxZjRiN2UwNzE5OWRjNDY0NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGlu
ZXMuaApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9i
YWwoCiAgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdS
ZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4K
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2sp
OwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0
YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1f
Z2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5t
X2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9k
ZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9u
TW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTYxLDcgKzYxLDcgQEAg
aW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKAogICAgICAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUo
KS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgp
KTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0
YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZl
TW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAg
ICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkp
LnNsb3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDksNyArMTA5LDcgQEAgaW5saW5l
IHZvaWQgdHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBSZXNvbHZlVHlw
ZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5Owog
ICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cg
Y2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUo
KSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1v
ZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1l
dGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRh
dGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dElu
Zm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBG
QUxMVEhST1VHSDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZUdldEZy
b21TY29wZUdsb2JhbCgKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwog
ICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6
YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0
SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUs
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50
U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVy
YW5kID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpOwogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApp
bmRleCAyMTE3Y2M5ZTk2ZDlmMDA0ZmExNjM5ZWE5ZmQ4MDZhNDUzOGMwMGVjLi5lYmM2ZjIyZTAw
OWQyMzRjODA1MzA0YTdlMDc2MDc3ZDA2OTk5MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTVmFsdWUgZXZh
bHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBKU1ZhbHVlCiAKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkKICAgICAgICAgdGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0OwotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxP
YmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxK
U09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5
KCkpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlUHJvZ3Jh
bShzb3VyY2UsIGdsb2JhbE9iamVjdCwgdGhpc09iaik7CiAKICAgICBpZiAoc2NvcGUuZXhjZXB0
aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCAxYTcyYmZiNDdlZmVmYTU1MGRlZjk4MzU2NjU0YWY2
NDkwNzc5NzM1Li43YzE5Yjc1YzYyYzgwNDEzNjJkZDllYjEyZWRhNTk3OTI1MTE1ZGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1
dGFibGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EaXJlY3RF
dmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29u
dGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWikKK0RpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250
ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlh
Ymxlc1VuZGVyVERaLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtNDUsMTEgKzQ1LDExIEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRh
YmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRl
eHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8q
IGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0
YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNl
LCBlY21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9k
ZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CisgICAgSlNQYXJzZXJT
dHJpY3RNb2RlIHN0cmljdE1vZGUgPSBlY21hTW9kZS5pc1N0cmljdCgpID8gSlNQYXJzZXJTdHJp
Y3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmpl
Y3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKIAogICAgIC8vIFdlIGRvbid0IGJvdGhl
ciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2UgZGlyZWN0IGV2YWwgdXNlcyBhIHNwZWNpYWxp
emVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAppbmRleCA0NzgyNmJmMzIwYzFjMTdkNTgz
MTM5YzQ2ZTUzZTZkYWVkYWJiZDQ5Li4yNDA3NWE3ZjVhMzZjNzNmZWJhNDA3ZTcxMDlhNmZjMzNm
MjcwZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RF
dmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZh
bEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBE
ZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29u
dGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiBwcml2YXRl
OgogICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNl
Q29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDYwNWIyZWZmYjFk
N2I4MmU1Y2RiN2M2NDUzZGM1ZGU3MWYzMDI2NzYuLjY3ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZi
OGU3ZTk5NDgwZWQ3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZh
bEV4ZWN1dGFibGUuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZl
ZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNl
c0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5
cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5r
ZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bUZ1bmN0
aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
Pm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggNDQzYmIzOGE2NWNi
ODA0NzQ1Njg1N2NkOGQyNzZhZGU5ZjdhNmI1Yy4uYmFkZTk4NzM1Zjk5ZGM0N2U3YTZkYzc4N2M1
Nzk3MTFjZTUxNWVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICAvLyBQZXIgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZm9yYmlk
ZGVuLWV4dGVuc2lvbnMsIG9ubHkgc2xvcHB5LW1vZGUgbm9uLWJ1aWx0aW4gZnVuY3Rpb25zIGlu
IG9sZC1zdHlsZSAocHJlLUVTNikgc3ludGFjdGljIGZvcm1zIGNhbiBjb250YWluCiAgICAgICAg
IC8vICJjYWxsZXIiIGFuZCAiYXJndW1lbnRzIi4KLSAgICAgICAgcmV0dXJuICFpc1N0cmljdE1v
ZGUoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9k
ZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuICFpc0lu
U3RyaWN0Q29udGV4dCgpICYmIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFs
RnVuY3Rpb25Nb2RlICYmICFpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOwogICAgIH0KICAg
ICBib29sIGhhc1Byb3RvdHlwZVByb3BlcnR5KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgKaW5kZXggMDZmZmQ0M2EwMjVmMGI1ZWNiNGUw
MTBlMjcxOGQwNmMwMWI0NTlkZS4uOTM0MDgwMWYyMWY2NWQyN2I2YTNmODE2NmFkODQ4NjUyZDFi
NjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5m
by5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaApAQCAt
MjAyLDE4ICsyMDIsMjAgQEAgY2xhc3MgR2V0UHV0SW5mbyB7CiAgICAgdHlwZWRlZiB1bnNpZ25l
ZCBPcGVyYW5kOwogcHVibGljOgogICAgIC8vIEdpdmUgZWFjaCBmaWVsZCAxMCBiaXRzIGZvciBz
aW1wbGljaXR5LgotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmQpICogOCA+IDMwLCAi
Tm90IGVub3VnaCBiaXRzIGZvciBHZXRQdXRJbmZvIik7CisgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoT3BlcmFuZCkgKiA4ID4gMzEsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1dEluZm8iKTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGlzU3RyaWN0U2hpZnQgPSAzMDsKICAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1vZGVTaGlmdCA9IDIwOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgaW5pdGlhbGl6YXRpb25TaGlmdCA9IDEwOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgdHlwZUJpdHMgPSAoMSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSAtIDE7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsaXphdGlvbkJpdHMgPSAoKDEg
PDwgbW9kZVNoaWZ0KSAtIDEpICYgfnR5cGVCaXRzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbW9kZUJpdHMgPSAoKDEgPDwgMzApIC0gMSkgJiB+aW5pdGlhbGl6YXRpb25CaXRzICYg
fnR5cGVCaXRzOwotICAgIHN0YXRpY19hc3NlcnQoKG1vZGVCaXRzICYgaW5pdGlhbGl6YXRpb25C
aXRzICYgdHlwZUJpdHMpID09IDB4MCwgIlRoZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24g
YmV0d2VlbiBSZXNvbHZlTW9kZSBSZXNvbHZlVHlwZSBhbmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpc1N0cmljdEJpdCA9IDEgPDwgMzA7Cisg
ICAgc3RhdGljX2Fzc2VydCgobW9kZUJpdHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0
cyAmIGlzU3RyaWN0Qml0KSA9PSAweDAsICJUaGVyZSBzaG91bGQgYmUgbm8gaW50ZXJzZWN0aW9u
IGJldHdlZW4gUmVzb2x2ZU1vZGUgUmVzb2x2ZVR5cGUgYW5kIEluaXRpYWxpemF0aW9uTW9kZSIp
OwogCiAgICAgR2V0UHV0SW5mbygpID0gZGVmYXVsdDsKIAotICAgIEdldFB1dEluZm8oUmVzb2x2
ZU1vZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlv
bk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQotICAgICAgICA6IG1fb3BlcmFuZCgocmVzb2x2ZU1v
ZGUgPDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25N
b2RlKSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQorICAgIEdldFB1dElu
Zm8oUmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0
aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAg
ICAgICAgOiBtX29wZXJhbmQoKGVjbWFNb2RlLmlzU3RyaWN0KCkgPDwgaXNTdHJpY3RTaGlmdCkg
fCAocmVzb2x2ZU1vZGUgPDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5p
dGlhbGl6YXRpb25Nb2RlKSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQog
ICAgIHsKICAgICB9CiAKQEAgLTIyNSw2ICsyMjcsNyBAQCBwdWJsaWM6CiAgICAgUmVzb2x2ZVR5
cGUgcmVzb2x2ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4o
bV9vcGVyYW5kICYgdHlwZUJpdHMpOyB9CiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxp
emF0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEluaXRpYWxpemF0aW9uTW9k
ZT4oKG1fb3BlcmFuZCAmIGluaXRpYWxpemF0aW9uQml0cykgPj4gaW5pdGlhbGl6YXRpb25TaGlm
dCk7IH0KICAgICBSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFJlc29sdmVNb2RlPigobV9vcGVyYW5kICYgbW9kZUJpdHMpID4+IG1vZGVTaGlmdCk7
IH0KKyAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZCAmIGlz
U3RyaWN0Qml0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOyB9CiAg
ICAgdW5zaWduZWQgb3BlcmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZDsgfQogCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA1ZjlmODVlMWVjZGM4MTM0N2Q4OTc0MDZl
NjIxMTRkMDY1NDcyNzkzLi42NmNjNzUwNzM5MGJhNDFlMDg4OWNkNmI2YzUwMGU3NmIwMjE2MGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBjYWxsU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIKICAgICBHZXR0ZXJTZXR0
ZXIqIGdldHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIp
OwogCiAgICAgaWYgKGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpCi0gICAgICAgIHJl
dHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZWNtYU1vZGUgPT0gU3RyaWN0TW9k
ZSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICByZXR1cm4gdHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGVjbWFNb2RlLmlzU3RyaWN0KCksIFJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKIAogICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmot
PnNldHRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDIwMDMxOTI5MGYwYmUwZjk3MzE0MWJm
ZTk0OTlmM2JhZTg5Nzg4NjIuLjE0ZjdmYWI1YzNkNGVhYTg3OTQyYmNmMzMyYTQ1ZjFjNTA2ZGFl
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZh
bEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFs
Q29udGV4dFR5cGUpCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1LDE1ICs0NSwxNCBAQCBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iagogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0u
aGVhcCkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5T
dHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGV2YWxDb250ZXh0VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEluZGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+
ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJz
ZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpT
UGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7
CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0g
Z2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAgICAgCiAgICAgVW5s
aW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdl
dFVubGlua2VkRXZhbENvZGVCbG9jaygKLSAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFi
bGUtPnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFs
Q29udGV4dFR5cGUpOworICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNl
KCksIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVy
cm9yLCBldmFsQ29udGV4dFR5cGUpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzRGVidWdn
ZXIoKSkKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xv
YmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCks
IGVycm9yLm1lc3NhZ2UoKSk7CkBAIC02OCw4ICs2NywxMCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iagogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxl
OjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGds
b2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKQorY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0g
ZmFsc2U7Citjb25zdGV4cHIgYm9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CitJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBF
dmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xv
YmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4
dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5o
CmluZGV4IGMxOTkyZmRiMWE0MjUwNTRhZTliYzQ1NzUxMjhlNmY1MDg2Y2E5YmMuLjQ5OGI1Yzg3
MDk4YWIzNzQ3OTdhMjViZjQ4MTYzN2NmYmI5MmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkg
KzMxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VD
b2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGly
ZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlKTsKIHByaXZhdGU6Ci0gICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSk7CisgICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEluZGly
ZWN0RXZhbEV4ZWN1dGFibGUpID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJk
YjJlNTc3MDJiM2NiYzM2OTkzNjlkNzdjOTQzMzBkNC4uYjE5MWU4NGZlZTFmYTcxMzMxYTNmMmNj
MjM4OGQ1ZjRhNTJkODMwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Ns
b3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQog
ewogICAgIEFTU0VSVCghaXNDZWxsKCkpOwogCi0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1v
ZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiAqdGhpczsK
IAogICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKQEAgLTE4OSw3ICsxODksNyBAQCBi
b29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eQogCiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5n
ZXREaXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKQot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9i
YWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RN
b2RlIDogTm90U3RyaWN0TW9kZSkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkp
KTsKIAogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBncywgYXR0cmli
dXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNW
YWx1ZSgpLCB2YWx1ZSk7CkBAIC00MzQsNCArNDM0LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIGVu
c3VyZVN0aWxsQWxpdmVIZXJlKEpTVmFsdWUpCiB9CiAjZW5kaWYKIAordm9pZCBFQ01BTW9kZTo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1N0cmljdCgpKQorICAg
ICAgICBvdXQucHJpbnQoIlN0cmljdE1vZGUiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmlu
dCgiTm90U3RyaWN0TW9kZSIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBkZWI2NDAyNTMwZWI1OGJmNTBk
MGQ2NzBlZDE2YmM1NDhiN2Y5MjY5Li45MjY5OTAwMzE3MjMzMzJiMGRkNTFkMmU2OWRkN2UyNDdm
NGRiMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBA
IC04MCw4ICs4MCwzMSBAQCB1c2luZyBXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3QgPSB0eXBlbmFt
ZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtubwogICAgIER1bWJWYWx1ZVRy
YWl0czxUPiwgRHVtYlB0clRyYWl0czxUPgogPjo6dHlwZTsKIAotZW51bSBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9Owot
ZW51bSBFQ01BTW9kZSB7IFN0cmljdE1vZGUsIE5vdFN0cmljdE1vZGUgfTsKK2VudW0gUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSA6IHVpbnQ4X3QgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwg
UHJlZmVyU3RyaW5nIH07CisKK3N0cnVjdCBFQ01BTW9kZSB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50OF90IFN0cmljdE1vZGUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBT
bG9wcHlNb2RlID0gMTsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUg
ZnJvbUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBFQ01BTW9kZShieXRlKTsgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgc3RyaWN0KCkgeyByZXR1cm4gRUNNQU1vZGUoU3RyaWN0
TW9kZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVDTUFNb2RlIHNsb3BweSgpIHsgcmV0dXJu
IEVDTUFNb2RlKFNsb3BweU1vZGUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTdHJp
Y3QoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFN0cmljdE1vZGU7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIg
RUNNQU1vZGUodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gU3RyaWN0TW9kZSB8fCBtX3ZhbHVlID09IFNsb3Bw
eU1vZGUsIG1fdmFsdWUpOworICAgIH0KKworICAgIHVpbnQ4X3QgbV92YWx1ZTsKK307CiAKIGVu
dW0gY2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZDsKIHN0cnVjdCBDYWxsRGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDU1M2QxNmY1NjkyNTljZjgyM2I5
Njg2OGZkMDkwYjdmMmU3MDhiMjAuLmE0NzRlN2FlNTI3NWFjNzY4NjQ4MjM2ZjY2ZmQ0MjhhZmRl
N2UxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTUx
LDcgKzE1MSw3IEBAIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1CiAKIEpTVmFsdWUgSlNDZWxsOjp0
b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZSBlY21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAo
ZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIGNl
bGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDA5YWJhZTM4YmUwZmUzNDZmZDVkMzhiMjJiZGE0
N2JmOWU2NmNhMzUuLjUxOTAzY2E3ODcxZDM3MmUyNmI4ZWNlMGUzYWUwYTNmMTQ2Yjg1OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03NSw3
ICs3NSw3IEBAIFN0cnVjdHVyZSogSlNGdW5jdGlvbjo6c2VsZWN0U3RydWN0dXJlRm9yTmV3RnVu
Y0V4cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgYm9vbCBpc0J1aWx0aW4gPSBl
eGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Fy
cm93RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YXJyb3dGdW5jdGlv
blN0cnVjdHVyZShpc0J1aWx0aW4pOwotICAgIGlmIChleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUo
KSkKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC0+c3RyaWN0RnVuY3Rpb25TdHJ1Y3R1cmUoaXNCdWlsdGluKTsKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zbG9wcHlGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4p
OwogfQpAQCAtNDMwLDcgKzQzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxl
ckdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAg
ICBpZiAoIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAg
IGlmICghZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGdW5j
dGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIl9zKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCmluZGV4IDliYThjNzBkNzZhNzQyZWViNTcxNjc4Y2M5M2RiYWNiNDc5
Mzk0NGUuLmNhOTQ4OWMwZTBlZmRjODZiMGY0MjJmZjI4ODZlZjQ4ZDE5M2E5MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAKQEAgLTUwNyw3ICs1MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7CiAKICAgICBTb3Vy
Y2VPcmlnaW4gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0p
OwotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKKyAg
ICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShn
bG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05f
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC03MTQsNyArNzE0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmlj
dE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlKSk7CiAKQEAgLTczNSw3ICs3MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMjVkZmY1MzMzNzg5MTQyOGU2
MmZhOTUxOWRlMTRhNzE5NDRkNGI3OC4uZGFjNzIzZWMwYzkzYTVkNjYzOThlYzg5ODA0Y2I3ZjE0
OTcyM2UwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApA
QCAtODEwLDcgKzgxMCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5CiAgICAgICAgICAgICAg
ICAgaWYgKCF0aGlzLT5zdHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAg
ICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZzZXQpOwogCi0gICAgICAg
ICAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlz
VmFsdWUoKSwgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5v
dFN0cmljdE1vZGUpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbFNldHRlcihn
bG9iYWxPYmplY3QsIHNsb3QudGhpc1ZhbHVlKCksIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSk7CiAgICAgICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CkBAIC0xODE4LDcgKzE4MTgsNyBAQCBi
b29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBv
ZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCJfcyk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1l
dGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkg
PT0gdGhpcyk7CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5n
ZXRQcm90b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDZkNWFiNjgy
YzY4MzkxNGY2OWYzZTVjMjI4Mzg0ZmVmZTQ2NTc3YzguLmIzYzI3MjAyMjgwNmI4MTE0MzU3ZDgx
ZGU5ZjNiNWZjMTAzNTRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwCkBAIC00MTEsNyArNDExLDcgQEAgU3ltYm9sVGFibGUqIEpTU2NvcGU6OnN5bWJvbFRh
YmxlKFZNJiB2bSkKIAogSlNWYWx1ZSBKU1Njb3BlOjp0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7Ci0gICAgaWYgKGVjbWFN
b2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRo
aXMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRl
eCBhYWVlOGVlN2E3N2VlYTZkZWZjNzU3YTg3ZDIzYjNlY2JhODZmMjFmLi4wZjIwN2EzYjY4NmFl
YTdiNTdkNDk1Y2Q3MDI5YWQ4YTgzODZkYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5n
Ojp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogCiBKU1ZhbHVl
IEpTU3RyaW5nOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9k
ZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAg
ICAgcmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFs
T2JqZWN0LCBhc1N0cmluZyhjZWxsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IDY5NzZmNzA1ZDM0MDRlMzdhMjFkODkyYjEy
M2NiYzM4MDQyMzZkNWIuLjUzNTIzNzE4ZGM5YjlkMjIxMmI4YjgyMTE3NjM2OGY0ODQyMTgyYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
CkBAIC05MzMsNyArOTMzLDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFy
c2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3Bl
cnR5Il9zOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpIDogZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpIDogZmFsc2UpOwogICAgICAgICAgICAgICAg
ICAgICBvYmplY3RTdGFjay5sYXN0KCkucHV0KG1fZ2xvYmFsT2JqZWN0LCBpZGVudCwgbGFzdFZh
bHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUuaAppbmRleCA0NjU0NjIwMDRmMzdlMjAxMmQ3MjE2OGM2MjA5ZTUwNTE3YzEyMDU1Li4w
OTlkODk5YWQ1ZTYzYTc0MzM1OGUyYWJiMjBhYjM0ZjU5Yjk2MGVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0
VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNF
dmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlw
dE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6
TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29u
dGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDEwZjg4NzI1YWMwMDJk
MjUzYTljODYzNzFkNDUzOTg1MGRmY2FhMjkuLmVhMjRhOTRjN2I1NmQwMGI5M2Q0YWMzMjAzZjgz
YjQ2ZjFhYWFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bGxTZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVsbFNldHRlckZ1bmN0aW9uLmNwcApAQCAtNTIsNyArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAogICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IHZpc2l0b3ItPmNvZGVCbG9jaygpOwotICAgICAgICBtX2NhbGxlcklzU3Ry
aWN0ID0gY29kZUJsb2NrICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIC8v
IFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhhdCB3ZSBtaWdodCBoYXZlIGFuIHN0
cmljdCBvcGNvZGUgaW4gYSBub24tc3RyaWN0IGNvbnRleHQsIGJ1dCB0aGF0J3MKKyAgICAgICAg
Ly8gb2sgc2luY2Ugd2UgYXNzZXJ0IGJlbG93IHRoYXQgdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2
ZXIgYmUgY2FsbGVkIGZyb20gYW55IGtpbmQgc3RyaWN0IGNvbnRleHQuCisgICAgICAgIG1fY2Fs
bGVySXNTdHJpY3QgPSBjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+
aXNJblN0cmljdENvbnRleHQoKTsKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsK
ICAgICB9CiAKQEAgLTczLDExICs3NSwxMiBAQCBzdGF0aWMgYm9vbCBjYWxsZXJJc1N0cmljdChW
TSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogbmFtZXNwYWNlIE51bGxTZXR0ZXJGdW5jdGlv
bkludGVybmFsIHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1
cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChjYWxsZXJJc1N0cmljdCh2
bSwgY2FsbEZyYW1lKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9u
bHkgYSBnZXR0ZXIiX3MpKTsKKyNpZiAhQVNTRVJUX0VOQUJMRUQKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBVTlVTRURf
UEFSQU0oY2FsbGVySXNTdHJpY3QpOworI2VuZGlmCisgICAgQVNTRVJUKCFjYWxsZXJJc1N0cmlj
dChnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCBjMDU3MTJiMGE0NWExZTBhMGU2ZWIz
NjZmYmY0MzQzZGYyNDg2Zjk2Li42ZGFhN2I0YzZiYjVhYzI5ODQyOTFlMzhiYjI2OThmYjUwNjJm
ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgT2JqZWN0UHJvdG90eXBlKiBPYmplY3RQcm90b3R5
cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFMKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBKU09i
amVjdCogdmFsdWVPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZhbHVlT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CkBAIC05Miw3ICs5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jSGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1Zh
bHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWwKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsK
ICAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3Ry
aWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09i
amVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yMzQsNyArMjM0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNjcsNyAr
MjY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9w
ZXJ0eUlzRW51bWVyYWJsZShKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHNjb3BlLnJlbGVh
c2UoKTsKQEAgLTI4OCw3ICsyODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIC8v
IDIuIEludm9rZShWLCAidG9TdHJpbmciKQogCiAgICAgLy8gTGV0IE8gYmUgdGhlIHJlc3VsdCBv
ZiBjYWxsaW5nIFRvT2JqZWN0IHBhc3NpbmcgdGhlIHRoaXMgdmFsdWUgYXMgdGhlIGFyZ3VtZW50
LgotICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwg
U3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogb2JqZWN0
ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIExldCB0b1N0cmluZyBiZSB0aGUgTy5bW0dldF1dKCJ0
b1N0cmluZyIsIFYpCkBAIC0zMTMsNyArMzEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUuaXNVbmRlZmlu
ZWQoKSA/IHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRPYmplY3RTdHJpbmcoKSA6IHZtLnNtYWxs
U3RyaW5ncy5udWxsT2JqZWN0U3RyaW5nKCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
dGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKaW5kZXggYThmMGI1Zjg5OTQy
YjM3ZGFlOWU3YTMwMjkyZDQxOGZiODdlODkzMy4uMmIzMmY1YTA0YTIwMTIzNmE5N2JiYWVkYzQz
NDYyY2QyODhlMzM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmNwcApAQCAtODIsNyArODIsNyBAQCBKU09iamVjdCogUHJvZ3Jh
bUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqCiAgICAgQVNTRVJUKCZnbG9iYWxPYmplY3QtPnZtKCkgPT0gJnZtKTsKIAogICAgIFBh
cnNlckVycm9yIGVycm9yOwotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gaXNT
dHJpY3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0
TW9kZTo6Tm90U3RyaWN0OworICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gaXNJ
blN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJT
dHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4g
Y29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25N
b2RlKCk7CiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9
IHZtLmNvZGVDYWNoZSgpLT5nZXRVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2soCiAgICAgICAgIHZt
LCB0aGlzLCBzb3VyY2UoKSwgc3RyaWN0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvcik7
CkBAIC0xMzYsNyArMTM2LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFs
aXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAg
Ym9vbCBoYXNQcm9wZXJ0eSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+aGFzUHJvcGVydHko
Z2xvYmFsT2JqZWN0LCBlbnRyeS5rZXkuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0
eSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkg
JiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzU3RyaWN0
TW9kZSgpKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0Nv
bnN0KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlz
SW5TdHJpY3RDb250ZXh0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgYWxs
b3cgImNvbnN0IiBkdXBsaWNhdGUgZGVjbGFyYXRpb25zIHVuZGVyIHRoaXMgc2V0dGluZy4KICAg
ICAgICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIHdlIGRvbid0ICJsZXQiIHZhcmlhYmxl
cyB0byBiZSBvdmVycmlkZGVuIGJ5ICJjb25zdCIgdmFyaWFibGVzLgogICAgICAgICAgICAgICAg
ICAgICBpZiAoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5pc0NvbnN0VmFyaWFibGUoZW50cnku
a2V5LmdldCgpKSkKQEAgLTE4NSw3ICsxODUsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAg
ICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1i
b2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGljYWxEZWNs
YXJhdGlvbnMpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0
KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzU3Ry
aWN0TW9kZSgpKSkgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29u
c3QoKSAmJiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNJ
blN0cmljdENvbnRleHQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmNv
bnRhaW5zKGxvY2tlciwgZW50cnkua2V5LmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCAyOWNhMDEzMjA1NjFiMTQ2YTYyOWM2ZmI1ZmEx
ODhmZjU4YzNkYjFmLi5iODcxNWFhNzJiYmNiNzMzOWQ2ZTM0MTNhYzU5Yzc0NDExN2I4MmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lORk87
CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4
ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENv
bnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
dXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2Vy
U2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250
ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0
ZU9iamVjdE1hcChWTSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5jcHAKaW5kZXggYjA3ZTBhMDI5MzMyODI2MTAzNmY0MTEwNmVlZWU5ZTVmOTBjNjY2
MC4uNmQxMWI0MWJhNDA2MTgxNTUyMmRhYjNlYmZlMzFjNzc2ZTdlZTc3MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNTQ3LDcgKzU0Nyw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OlN0cmlj
dE1vZGUpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7CiAgICAgYXJndW1lbnRzLmFw
cGVuZChhcmdBcnJheSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2Jh
bE9iamVjdCwgYXBwbHlNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1l
bnRzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5oCmluZGV4IDEwNmNmMjVmNjMxZjA0MWI5YmM2MzE5NDAwZjQ2NjdiMDdiMzljZmMuLjBk
ZDQ0ZWNiODQzNzFkNDc3MzQ2MGNkNGMwYWFlNTVmZTNjZDIzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKQEAgLTYwLDEyICs2MCwx
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVy
ZXMgJiBFdmFsRmVhdHVyZTsgfQogICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlOyB9CiAgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9
Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3Ry
aWN0TW9kZUZlYXR1cmU7IH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBlPihtX2Rl
cml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPihtX2V2YWxDb250
ZXh0VHlwZSk7IH0KKyAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAKLSAgICBFQ01BTW9kZSBlY21hTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmlj
dE1vZGU7IH0KLSAgICAgICAgCiAgICAgdm9pZCBzZXROZXZlcklubGluZShib29sIHZhbHVlKSB7
IG1fbmV2ZXJJbmxpbmUgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0TmV2ZXJPcHRpbWl6ZShib29s
IHZhbHVlKSB7IG1fbmV2ZXJPcHRpbWl6ZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXROZXZlckZU
TE9wdGltaXplKGJvb2wgdmFsdWUpIHsgbV9uZXZlckZUTE9wdGltaXplID0gdmFsdWU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVN
YXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHAKaW5kZXggODVjMWNmMzQzMzgxODQ3ODgzODg0NTZlYjM2YWVhMmZmYjYzNDFmYS4uM2Zk
NjAwNmUxZTg0NWZhZWVkMjZkMGU3MjgzYzUzZjZjMTBmMzExNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKQEAgLTIw
Myw3ICsyMDMsNyBAQCBib29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cgPyBT
dHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVl
LCBzaG91bGRUaHJvdyA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSkp
OwogfQogCiBKU1ZhbHVlIFNwYXJzZUFycmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1
c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5o
CmluZGV4IDA5Mjg1MTc2M2NhMGQxYWNhMWJjNzM0NjUzNTBiNmUyYzBlZWU1MDYuLjM3NjhiZjI5
MWM1OWRhZTg5OWRiMGYxNTBhMWIwY2EwOGM3ZGMyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgY2FsbEZyYW1l
LnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpOb3RTdHJpY3RN
b2RlKSk7CisgICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCBj
YWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVD
TUFNb2RlOjpzbG9wcHkoKSkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQog
ICAgICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCAiRXZlbnRUYXJnZXQiLCBvcGVyYXRpb25OYW1lKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4
OTIwM2ZkZDk1Y2Y3MDJjNzZiMDA1OTFmYjdiNzc1NDY2ZjQ3MTY1Li5lMjNjMWU4ZmNkYWYxZTdl
YmUwMmE5NjcwZWRmZjk5MWJjNGJlNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDU5MCw3ICs0NTkwLDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpO1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKGRlY29kZWRUaGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGRlY29kZWRUaGlzVmFs
dWUgPSBKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KS50b1RoaXMoJmxleGljYWxHbG9iYWxP
YmplY3QsIE5vdFN0cmljdE1vZGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmpl
Y3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKTtcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVu
Y3Rpb24odm0sIGRlY29kZWRUaGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NjA2LDcgKzQ2MDYsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICMgRklYTUU6IE1ha2UgY29u
c2lzdGVudCBJRExBdHRyaWJ1dGU8Pjo6Y2FzdCBhbmQgSURMT3BlcmF0aW9uPD46OmNhc3QgaW4g
Y2FzZSBvZiBDdXN0b21Qcm94eVRvSlNPYmplY3QuCiAgICAgICAgIG15ICRjYXN0aW5nRnVuY3Rp
b24gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmpl
Y3R9ID8gInRvJHtjbGFzc05hbWV9IiA6IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRp
bnRlcmZhY2UpOwotICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJjYWxsRnJhbWUudGhpc1ZhbHVl
KCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSIgOiAiY2FsbEZy
YW1lLnRoaXNWYWx1ZSgpIjsKKyAgICAgICAgbXkgJHRoaXNWYWx1ZSA9ICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAiY2FsbEZyYW1lLnRo
aXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgp
KSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ0ZW1wbGF0ZTw+IGlubGluZSAke2NsYXNzTmFtZX0qIElETE9wZXJhdGlvbjwke2NsYXNzTmFt
ZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUm
IGNhbGxGcmFtZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlvbihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJHRoaXNWYWx1ZSk7XG4iKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAz
YWZjMDliMGE4ZWI4ZWVlYTdhNDM3MzUyM2MzMzExODFiMGNlZTljLi44NTFlYjlkZDU3MTcwZTI5
NTQwODBkMWY4Njk3Yzg1NzM4NzllMDM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDMt
MzAgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTm90IHVz
aW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0aW9uIHN0YXRlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTc4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIHRlc3Qgc2luY2UgaXQgY29udGFpbmVkIGluY29y
cmVjdCBjb2RlLgorCisgICAgICAgICoganMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2Qt
bmFtZXMuanM6CisKIDIwMjAtMDMtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgc2Nyb2xsSW50b1ZpZXcoKSBlcnJvbmVvdXNseSBzY3JvbGxzIG5v
bi1jb250YWluaW5nIGJsb2NrIHNjcm9sbGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
Y2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9j
bGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLWV4cGVjdGVkLnR4dAppbmRleCA3ZjE0OTI0ZjNkM2Fk
NzY5ZDk5ODFiNDVjYWI0NmVlZWY5NzZkNzVjLi44ODhjZDJkMjI1MmE4ZjM5Y2MzZjJlZTMwMTc0
NmI5MDU4YmNhOWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbWV0
aG9kLW5hbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgt
bWV0aG9kLW5hbWVzLWV4cGVjdGVkLnR4dApAQCAtNTYsOSArNTYsOSBAQCBQQVNTIEEgPSBjcmVh
dGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnZm9vJywgMjE1KTsgKG5ldyBBKVsnZm9vJ10oKSBp
cyAyMTUKIFBBU1MgQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28nLCAyMTYp
OyBCID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2JhcicsIDIxNyk7IFsobmV3IEEp
Wydmb28nXSgpLCAobmV3IEIpWydiYXInXSgpXSBpcyBbMjE2LCAyMTddCiBQQVNTIHggPSAyMTg7
IGNsYXNzIEEgeyBbeCsrXSgpIHsgcmV0dXJuIHg7IH0gfTsgKG5ldyBBKVsyMThdKCkgaXMgMjE5
CiBQQVNTIHggPSB1bmRlZmluZWQ7IGNsYXNzIEEgeyBbKHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJl
dHVybiB4OyB9IH07IChuZXcgQSkuZm9vKCkgaXMgMjIwCi1QQVNTIHggPSAyMjE7IGNsYXNzIEEg
eyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBbKHgyPXgpICYmIHgrK10oKSB7IHJl
dHVybiB4MjsgfSB9OyBbKG5ldyBBKVsyMjFdKCksIChuZXcgQSlbMjIyXSgpXSBpcyBbMjIxLCAy
MjJdCitQQVNTIHZhciB4ID0gMjIxLCB4MSwgeDI7IGNsYXNzIEEgeyBbKHgxPXgpICYmIHgrK10o
KSB7IHJldHVybiB4MTsgfSBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbKG5l
dyBBKVsyMjFdKCksIChuZXcgQSlbMjIyXSgpXSBpcyBbMjIxLCAyMjJdCiBQQVNTIHggPSAxOyBj
bGFzcyBBIHsgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyMzsgfSBbJ2ZvbycgKyB4KytdKCkg
eyByZXR1cm4gMjI0OyB9IH07IFsobmV3IEEpLmZvbzEoKSwgKG5ldyBBKS5mb28yKCldIGlzIFsy
MjMsIDIyNF0KLVBBU1MgeCA9IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4g
MjI1OyB9IFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwg
eCwgKG5ldyBBKS5mb28yKCldIGlzIFsyLCAzLCAyMjZdCitQQVNTIHZhciB4ID0gMSwgeDE7IGNs
YXNzIEEgeyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IFsoeDE9eCkgJiYgJ2Zvbycg
KyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgKG5ldyBBKS5mb28yKCldIGlzIFsy
LCAzLCAyMjZdCiAKIFN0YXRpYyBtZXRob2RzIHdpdGggY29tcHV0ZWQgbmFtZXMKIFBBU1MgY2xh
c3MgQSB7IHN0YXRpYyBbJ2EnICsgJ2InXSgpIHsgcmV0dXJuIDMxMTsgfSB9OyBBLmFiKCkgaXMg
MzExCkBAIC02OSw5ICs2OSw5IEBAIFBBU1MgQSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhv
ZCgnZm9vJywgMzE1KTsgQVsnZm9vJ10oKSBpcyAzMTUKIFBBU1MgQSA9IGNyZWF0ZUNsYXNzV2l0
aFN0YXRpY01ldGhvZCgnZm9vJywgMzE2KTsgQiA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhv
ZCgnYmFyJywgMzE3KTsgW0FbJ2ZvbyddKCksIEJbJ2JhciddKCldIGlzIFszMTYsIDMxN10KIFBB
U1MgeCA9IDIxODsgY2xhc3MgQSB7IHN0YXRpYyBbeCsrXSgpIHsgcmV0dXJuIHg7IH0gfTsgQVsy
MThdKCkgaXMgMjE5CiBQQVNTIHggPSB1bmRlZmluZWQ7IGNsYXNzIEEgeyBzdGF0aWMgWyh4PTIy
MCkgJiYgJ2ZvbyddKCkgeyByZXR1cm4geDsgfSB9OyBBLmZvbygpIGlzIDIyMAotUEFTUyB4ID0g
MjIxOyBjbGFzcyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0
YXRpYyBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIy
XSgpXSBpcyBbMjIxLCAyMjJdCitQQVNTIHZhciB4ID0gMjIxLCB4MSwgeDI7IGNsYXNzIEEgeyBz
dGF0aWMgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gc3RhdGljIFsoeDI9eCkgJiYg
eCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFtBWzIyMV0oKSwgQVsyMjJdKCldIGlzIFsyMjEsIDIy
Ml0KIFBBU1MgeCA9IDE7IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsgcmV0dXJu
IDIyMzsgfSBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBbQS5mb28x
KCksIEEuZm9vMigpXSBpcyBbMjIzLCAyMjRdCi1QQVNTIHggPSAxOyBjbGFzcyBBIHsgc3RhdGlj
IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFsoeDE9eCkgJiYgJ2Zvbycg
KyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28yKCldIGlzIFsyLCAzLCAy
MjZdCitQQVNTIHZhciB4ID0gMSwgeDE7IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgp
IHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMgWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVy
biAyMjY7IH0gfTsgW3gxLCB4LCBBLmZvbzIoKV0gaXMgWzIsIDMsIDIyNl0KIAogSW5zdGFuY2Ug
bWV0aG9kcyB3aXRoIGR1cGxpY2F0ZWQgbmFtZXMKIFBBU1MgY2xhc3MgQSB7IGFiKCkgeyByZXR1
cm4gNDAxIH0gYWIoKSB7IHJldHVybiA0MDI7IH0gfTsgKG5ldyBBKS5hYigpIGlzIDQwMgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2Qt
bmFtZXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LW1ldGhv
ZC1uYW1lcy5qcwppbmRleCAxNDJiYjA1YjNiNDA5ZDkwMTJhYTQ5YWQ0MjUyM2RlOTcxNTNjNmE2
Li4xYmJlOTAzNTg2ZTg1NDcyMjRkZDNiYmNmNGE5MGVmODI0NDNiOTA2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy5qcwor
KysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1l
cy5qcwpAQCAtNTcsOSArNTcsOSBAQCBzaG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3Rh
bmNlTWV0aG9kKCdmb28nLCAyMTUpOyAobmV3IEEpWydmb28nXSgpIiwgIjIxNQogc2hvdWxkQmUo
IkEgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnZm9vJywgMjE2KTsgQiA9IGNyZWF0
ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdiYXInLCAyMTcpOyBbKG5ldyBBKVsnZm9vJ10oKSwg
KG5ldyBCKVsnYmFyJ10oKV0iLCAiWzIxNiwgMjE3XSIpOwogc2hvdWxkQmUoInggPSAyMTg7IGNs
YXNzIEEgeyBbeCsrXSgpIHsgcmV0dXJuIHg7IH0gfTsgKG5ldyBBKVsyMThdKCkiLCAiMjE5Iik7
CiBzaG91bGRCZSgieCA9IHVuZGVmaW5lZDsgY2xhc3MgQSB7IFsoeD0yMjApICYmICdmb28nXSgp
IHsgcmV0dXJuIHg7IH0gfTsgKG5ldyBBKS5mb28oKSIsICIyMjAiKTsKLXNob3VsZEJlKCJ4ID0g
MjIxOyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAm
JiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0o
KV0iLCAiWzIyMSwgMjIyXSIpOworc2hvdWxkQmUoInZhciB4ID0gMjIxLCB4MSwgeDI7IGNsYXNz
IEEgeyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBbKHgyPXgpICYmIHgrK10oKSB7
IHJldHVybiB4MjsgfSB9OyBbKG5ldyBBKVsyMjFdKCksIChuZXcgQSlbMjIyXSgpXSIsICJbMjIx
LCAyMjJdIik7CiBzaG91bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyB4KytdKCkgeyBy
ZXR1cm4gMjIzOyB9IFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7IH0gfTsgWyhuZXcgQSku
Zm9vMSgpLCAobmV3IEEpLmZvbzIoKV0iLCAiWzIyMywgMjI0XSIpOwotc2hvdWxkQmUoInggPSAx
OyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdm
b28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSIs
ICJbMiwgMywgMjI2XSIpOworc2hvdWxkQmUoInZhciB4ID0gMSwgeDE7IGNsYXNzIEEgeyBbJ2Zv
bycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyBy
ZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgKG5ldyBBKS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7
CiAKIGRlYnVnKCcnKTsKIGRlYnVnKCdTdGF0aWMgbWV0aG9kcyB3aXRoIGNvbXB1dGVkIG5hbWVz
Jyk7CkBAIC03Miw5ICs3Miw5IEBAIHNob3VsZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGlj
TWV0aG9kKCdmb28nLCAzMTUpOyBBWydmb28nXSgpIiwgIjMxNSIpOwogc2hvdWxkQmUoIkEgPSBj
cmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNik7IEIgPSBjcmVhdGVDbGFzc1dp
dGhTdGF0aWNNZXRob2QoJ2JhcicsIDMxNyk7IFtBWydmb28nXSgpLCBCWydiYXInXSgpXSIsICJb
MzE2LCAzMTddIik7CiBzaG91bGRCZSgieCA9IDIxODsgY2xhc3MgQSB7IHN0YXRpYyBbeCsrXSgp
IHsgcmV0dXJuIHg7IH0gfTsgQVsyMThdKCkiLCAiMjE5Iik7CiBzaG91bGRCZSgieCA9IHVuZGVm
aW5lZDsgY2xhc3MgQSB7IHN0YXRpYyBbKHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJldHVybiB4OyB9
IH07IEEuZm9vKCkiLCAiMjIwIik7Ci1zaG91bGRCZSgieCA9IDIyMTsgY2xhc3MgQSB7IHN0YXRp
YyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0aWMgWyh4Mj14KSAmJiB4Kytd
KCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0oKV0iLCAiWzIyMSwgMjIyXSIp
Oworc2hvdWxkQmUoInZhciB4ID0gMjIxLCB4MSwgeDI7IGNsYXNzIEEgeyBzdGF0aWMgWyh4MT14
KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0
dXJuIHgyOyB9IH07IFtBWzIyMV0oKSwgQVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKIHNob3Vs
ZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjIz
OyB9IHN0YXRpYyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI0OyB9IH07IFtBLmZvbzEoKSwg
QS5mb28yKCldIiwgIlsyMjMsIDIyNF0iKTsKLXNob3VsZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IHN0
YXRpYyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgpICYmICdm
b28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSIsICJbMiwg
MywgMjI2XSIpOworc2hvdWxkQmUoInZhciB4ID0gMSwgeDE7IGNsYXNzIEEgeyBzdGF0aWMgWydm
b28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMgWyh4MT14KSAmJiAnZm9vJyArIHgr
K10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCBBLmZvbzIoKV0iLCAiWzIsIDMsIDIyNl0i
KTsKIAogZGVidWcoJycpOwogZGVidWcoJ0luc3RhbmNlIG1ldGhvZHMgd2l0aCBkdXBsaWNhdGVk
IG5hbWVzJyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDYyMDNlNWM1ZWMzNDc3ZGQ1ODg1NzU4OTFmYjdkNDMwN2FkNzU1NjEuLjMzODEx
Yjg4ZGJlMTc0MTVlMDJkNWNkM2EwZmE2ZGNjMTQ3OTIzODEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAt
MDMtMzAgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTm90
IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0aW9uIHN0YXRlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTc4CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3Ry
aWN0bmVzcy5qczogQWRkZWQuCisgICAgICAgIChmLnRyeS5jKToKKyAgICAgICAgKGYpOgorCiAy
MDIwLTAzLTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAg
ICAgICBSZWdFeHAucHJvdG90eXBlLmV4ZWMgbXVzdCBhbHdheXMgYWNjZXNzIGxhc3RJbmRleApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5l
c3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wN2VhNjg0NzljOTczZjNjNjIwYWNmYmYxZjAxOWFiZWRhOTJhMmVlCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0
cmljdG5lc3MuanMKQEAgLTAsMCArMSw1OSBAQAorZnVuY3Rpb24gZigpIHsKKyAgICB7CisgICAg
ICAgIHZhciBlcnJvcjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsYXNzIGMgZXh0ZW5k
cyhkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHt9OworICAgICAgICAg
ICAgfSwgZCkge30KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJD
YW4ndCBmaW5kIHZhcmlhYmxlOiBkIikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVz
dCBzaG91bGQgaGF2ZSB0aHJvd24gYSByZWZlcmVuY2UgZXJyb3IiKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIHZhciBlcnJvcjsKKyAgICAgICAgdmFyIG9iaiA9IHt9OworICAgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkob2JqLCAneCcsIHsgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6
IDEgfSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMoZGVsZXRl
IG9iai54LCAoKT0+e30pIHt9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGVy
cm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZXJyb3IgfHwgZXJyb3IubWVzc2Fn
ZSAhPSAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJUZXN0IHNob3VsZCBoYXZlIHRocm93biBhIHR5cGUgZXJyb3IiKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIHZhciBlcnJvcjsKKyAgICAgICAgdmFyIG9iaiA9IHt9OworICAgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAneCcsIHsgY29uZmlndXJhYmxlOiBmYWxzZSwg
dmFsdWU6IDEgfSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMo
ZXZhbCgnZGVsZXRlIG9iai54JyksIGNsYXNze30pIHt9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZXJyb3Ig
fHwgZXJyb3IubWVzc2FnZSAhPSAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IHNob3VsZCBoYXZlIHRocm93biBhIHR5cGUgZXJy
b3IiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIHZhciBvID0ge307CisgICAgICAgIG8uX19k
ZWZpbmVHZXR0ZXJfXygieCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyOyB9KTsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGNsYXNzIGMgZXh0ZW5kcyAoby54ID0gMTMsIGNsYXNzIHsgfSkg
eyB9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghZXJyb3IgfHwgZXJyb3IubWVzc2FnZSAhPSAiQXR0ZW1wdGVk
IHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJUZXN0IHNob3VsZCBoYXZlIHRocm93biBhIHR5cGUgZXJyb3IiKTsKKyAgICB9Cit9
CisKKyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgZigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395008</attachid>
            <date>2020-03-30 20:02:23 -0700</date>
            <delta_ts>2020-03-31 09:53:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200330200222.patch</filename>
            <type>text/plain</type>
            <size>260022</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjZmOGI0YWU1MDEyMzE4NjcyM2QwMmI3OTAyODM4ODk1MjlkNGE2Li5mZmJkNjgzOTBmNDZkYTkw
MjkyNmU1NjI0MjZhMTkzYzQ3YjJkYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MzMgQEAKKzIwMjAtMDMtMzAgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0
IHN0cmljdCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQg
d2hlbiBlbWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0
IHdlIGNhbiBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0
IG11c3QgYmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUg
YmxvY2sgaXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9u
bHkgdGVuCisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5l
c3MsIHNvIGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVz
LgorICAgICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBi
YXNlbGluZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3RydWN0b3IgY29u
c3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjppc1N0cmljdE1vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmVjbWFNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjppc0tub3duTm90SW1tZWRpYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6dXNlc0V2YWwgY29uc3Qp
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5D
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmlzQ29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvcjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6aXNTdHJpY3RNb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlW
YWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplY21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVTY29wZTo6U3RyaWN0
TW9kZVNjb3BlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVNjb3BlOjp+U3RyaWN0TW9kZVNj
b3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzU3RyaWN0TW9kZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Cisg
ICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZv
ckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAoSlND
OjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZTo6dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6
OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRp
dHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFy
c2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmlzU3RyaWN0TW9kZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmVjbWFNb2RlRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0VDTUFNb2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjplY21hTW9kZSk6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAo
SlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlRG91YmxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxs
V2l0aFN5bWJvbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXREeW5hbWljVmFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dEJ5SWREaXJlY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlW
YWwpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1pY1Zhcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2
YWwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aXNTdHJpY3RNb2RlRm9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplY21hTW9kZUZvcik6IERlbGV0ZWQu
CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVD
YWxsRXZhbCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAg
ICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlf
dmFsKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
RGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTElu
dDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9G
dW5jSm9pbik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZl
cnNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGlj
ZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFz
dEluZGV4T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWNoZWRDb2RlQmxvY2s6OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVk
Q29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRD
b2RlQmxvY2s6OmlzU3RyaWN0TW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9DbG9uZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6bWF0ZXJp
YWxpemVTcGVjaWFscyk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAg
ICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5o
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAg
KiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpFQ01BTW9kZTo6ZnJvbUJ5dGUpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6c3RyaWN0
KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6Om5vdFN0cmljdCk6CisgICAgICAgIChKU0M6OkVD
TUFNb2RlOjppc1N0cmljdCBjb25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjp2YWx1ZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpFQ01BTW9kZSk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhpcyk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c2Vs
ZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNh
bGxlckdldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKEpTQzo6Z2xvYmFs
RnVuY1Byb3RvR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dElubGluZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0
aEN5Y2xlQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChK
U0M6OkpTU2NvcGU6OnRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJz
ZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0Q2Fs
bGVyU3RyaWN0bmVzc0Z1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpO
dWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAgICAg
ICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5j
TG9va3VwR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVy
KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChK
U0M6Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxp
emVHbG9iYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
Lmg6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnBl
cmZvcm1Qcm94eUNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc0Fycm93RnVuY3Rpb25Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aXNJblN0cmljdENvbnRleHQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc1N0cmljdE1vZGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplY21hTW9kZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKworICAgICAgICAqIEFQ
SS9BUElDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rp
b246OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbCk6CisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0NvbnRleHRHZXRHbG9iYWxPYmplY3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjppc0tub3duQ2VsbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhl
Y3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnVzZXNFdmFsIGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKEpT
Qzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5
SWRGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJl
Y3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmlzRGlyZWN0IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZEZsYWdzOjplY21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRGbGFnczo6UHV0QnlJZEZsYWdzKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
Ojppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZy
b21TY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29w
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVz
aEZ1bmN0aW9uTmFtZVNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRUb1RoaXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZWNtYU1vZGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJpY3RNb2RlU2NvcGU6OlN0cmljdE1vZGVTY29wZSk6CisgICAgICAgIChKU0M6OlN0
cmljdE1vZGVTY29wZTo6flN0cmljdE1vZGVTY29wZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAo
SlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBj
b25zdCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZv
cik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNFQ01BTW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdPcEluZm8uaDoKKyAgICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVj
aXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
SW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2wpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgICogaml0L0pJVENh
bGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJ
ZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1
dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQv
UmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlRGVsZXRlQnkpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQdXNo
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSW5kZXhP
Zik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6
OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5
cGU+OjplbmNvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Om1hdGVyaWFsaXplU3BlY2lhbHMpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hl
UHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2Fj
aGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6
OmV4ZWN1dGFibGVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2V0UHV0SW5mby5oOgorICAgICAgICAoSlNDOjpH
ZXRQdXRJbmZvOjpHZXRQdXRJbmZvKToKKyAgICAgICAgKEpTQzo6R2V0UHV0SW5mbzo6ZWNtYU1v
ZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSk6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9U
aGlzU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2
ZSk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmZyb21CeXRlKToKKyAg
ICAgICAgKEpTQzo6RUNNQU1vZGU6OnN0cmljdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpz
bG9wcHkpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6aXNTdHJpY3QgY29uc3QpOgorICAgICAg
ICAoSlNDOjpFQ01BTW9kZTo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6
RUNNQU1vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OnNlbGVjdFN0cnVjdHVyZUZvck5ld0Z1bmNFeHApOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZh
bCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6
Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjp0b1RoaXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9UaGlzKToK
KyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRl
cmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkdldENhbGxlclN0cmljdG5lc3NGdW5jdG9yOjpvcGVyYXRvcigp
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWw6OmNhbGxS
ZXR1cm5VbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9G
dW5jSXNQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZUdl
dHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcik6CisgICAg
ICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcik6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0xvb2t1cFNldHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y1Byb3BlcnR5SXNFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyk6CisgICAgICAgICog
cnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKiBydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1
dGFibGU6OmlzSW5TdHJpY3RDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuY3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheUVudHJ5OjpwdXQp
OgorCiAyMDIwLTAzLTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
IAogICAgICAgICBSZWdFeHAucHJvdG90eXBlLmV4ZWMgbXVzdCBhbHdheXMgYWNjZXNzIGxhc3RJ
bmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDMwYzFlNDJjMWI1NGU3ZTY4YjgwNmZjZTUyYmE4ZTI5MmJiYTFh
NzguLjc5ODJmMTIyMThlNWFhZTg3MDk5Mjc5ZmQ3YWJmZjNjNjMwYjNhZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAyMC0wMy0zMCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFw
cGxlLmNvbT4KKworICAgICAgICBOb3QgdXNpbmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVj
bGFyYXRpb24gc3RhdGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDU1NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IEpTVGVz
dHMvIHN0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcworCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURMT3BlcmF0aW9uPEpTRE9NV2luZG93Pjo6Y2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpT
RXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDIwLTAz
LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgT3ZlcnJpZGVz
IG9mIEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgc2hvdWxkIG5vdCBuZWVk
IHRvIHF1ZXJ5IHRoZSBiYXNlIGNsYXNzJ3MgaGFzUGVuZGluZ0FjdGl2aXR5KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggYzk5MTA1
M2ExOTE5ZjhlMWJhNGVhOThiNzdkOGUxYTlkMWI3ZGRlOC4uZDU2NWI0MTI4OWU3ZjY4NjFmOGY5
ZjliN2VhZGIwOTE2OTZlYTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9BUElDYWxsYmFja0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlND
b250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9iYWxPYmplY3QpOwogICAgIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKLSAgICBKU09iamVj
dFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSkpOworICAgIEpTT2Jq
ZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpKTsKIAog
ICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8aW50PihjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSk7CiAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVudHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oCmluZGV4IDAyY2VkYzc5NjZiZWMwYTUzYTliYzAyYTlmMzc4M2U3OWY3MzJlMmYuLjAzYTE4
ZGM5MDM2YjY2Nzg0MTkyZWY1MGM5MjA0NWVkMzUzOGI2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC01MjMs
NyArNTIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKIAogICAgIEpTQ29udGV4dFJlZiBl
eGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJl
ZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09i
alJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICBKU09iamVjdFJlZiB0aGlz
T2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CiAgICAgCiAgICAgZm9y
IChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Kj4o
dG9KUyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFz
cy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxs
YmFjayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggMjIyYTRlZTIwZGNiYWRi
MDdiN2JjNjU0ZGNmOGFhODBjZjJjMTJiZS4uMjQwMTc5MTZlNzUxNzZiODNlMzVkOWVkMDI4ODI4
MzI1MjE2Yzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNw
cApAQCAtMTkzLDcgKzE5Myw3IEBAIEpTT2JqZWN0UmVmIEpTQ29udGV4dEdldEdsb2JhbE9iamVj
dChKU0NvbnRleHRSZWYgY3R4KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIHJldHVybiB0b1JlZihqc0Nhc3Q8SlNP
YmplY3QqPihnbG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSkpOworICAgIHJldHVybiB0b1JlZihqc0Nh
c3Q8SlNPYmplY3QqPihnbG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CiB9CiAKIEpTQ29u
dGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCBk
MzcyMzZmNDBhYTg5OTEyN2M3NDllYmRiOTg2OTZjNzc4NWQ4Y2IzLi5kOTEwNjJjZjdhMzU0ZjA2
YTJjNjJmNDRmNDE4MzQ0OTVkNjgzMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1
ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCi0jaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogI2lu
Y2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcAppbmRleCA5ZjJhYmEzOWYyY2U3MDhkMzEzYjhkOTQwY2Y5NmZiYTQyZmNjOTRlLi5mZGFh
YTY5NDVmZjBlOWQ1MTUxYWFhODlhN2E5OTIwN2FjMWMyOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uOjpydW4oKQogICAgICAgICAgICAgICAgICAgICBzY29wZSwgLy8gc2NvcGUKICAgICAgICAg
ICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKICAgICAg
ICAgICAgICAgICAgICAgb3BlcmFuZCwgLy8gdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgR2V0
UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXph
dGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAg
ICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRp
YWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIG1fYnl0ZWNvZGVHZW5lcmF0b3IuZWNt
YU1vZGUoKSksIC8vIGluZm8KICAgICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVPclNjb3Bl
RGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4IH0pLCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgKICAgICAgICAg
ICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQK
ICAgICAgICAgICAgICAgICApOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQsIC8vIGRz
dAogICAgICAgICAgICAgICAgICAgICBzY29wZSwgLy8gc2NvcGUKICAgICAgICAgICAgICAgICAg
ICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKLSAgICAgICAgICAgICAg
ICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJ
bml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgLy8gaW5mbworICAgICAgICAg
ICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVW
YXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIG1fYnl0ZWNvZGVHZW5l
cmF0b3IuZWNtYU1vZGUoKSksIC8vIGluZm8KICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbG9j
YWwgc2NvcGUgZGVwdGgKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5v
ZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKICAgICAgICAgICAgICAgICApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNk
NzU0NjgwYzEyNmEwZjcyNzUzNmYxYmUzN2M0ZS4uMWY1NjY5NGNlNzAwZmRlYmUxZmRjYmQwNDRm
MmE4N2QwODhmN2VhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCkBAIC0yNyw2ICsyNyw3IEBAIHR5cGVzIFsKICAgICA6QmFzaWNCbG9ja0xv
Y2F0aW9uLAogICAgIDpCb3VuZExhYmVsLAogICAgIDpEZWJ1Z0hvb2tUeXBlLAorICAgIDpFQ01B
TW9kZSwKICAgICA6RXJyb3JUeXBlLAogICAgIDpHZXRCeUlkTW9kZSwKICAgICA6R2V0QnlJZE1v
ZGVNZXRhZGF0YSwKQEAgLTE3NCw2ICsxNzUsNyBAQCBvcCA6YXJndW1lbnRfY291bnQsCiBvcCA6
dG9fdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIHNyY0RzdDogVmlydHVhbFJlZ2lzdGVyLAor
ICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAg
ICAgICBjYWNoZWRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCkBAIC01MjIsNiArNTI0LDcgQEAg
b3AgOnB1dF9ieV9pZF93aXRoX3RoaXMsCiAgICAgICAgIHRoaXNWYWx1ZTogVmlydHVhbFJlZ2lz
dGVyLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFs
UmVnaXN0ZXIsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9CiAKIG9wIDpkZWxf
YnlfaWQsCkBAIC01MjksNiArNTMyLDcgQEAgb3AgOmRlbF9ieV9pZCwKICAgICAgICAgZHN0OiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
cHJvcGVydHk6IHVuc2lnbmVkLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQog
CiBvcCA6Z2V0X2J5X3ZhbCwKQEAgLTU0OCw2ICs1NTIsNyBAQCBvcCA6cHV0X2J5X3ZhbCwKICAg
ICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJl
Z2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9k
ZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZSwKQEAgLTU1OSw2ICs1NjQsNyBAQCBvcCA6cHV0X2J5X3ZhbF93aXRo
X3RoaXMsCiAgICAgICAgIHRoaXNWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9w
ZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAor
ICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6cHV0X2J5X3ZhbF9kaXJl
Y3QsCkBAIC01NjYsNiArNTcyLDcgQEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBi
YXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIs
CiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVjbWFNb2RlOiBFQ01B
TW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLApAQCAtNTc2LDYgKzU4Myw3IEBAIG9wIDpkZWxfYnlfdmFsLAogICAgICAgICBk
c3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAg
ICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1v
ZGUsCiAgICAgfQogCiBvcCA6cHV0X2dldHRlcl9ieV9pZCwKQEAgLTc3OCw2ICs3ODYsNyBAQCBv
cCA6Y2FsbF9ldmFsLAogICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
YXJnYzogdW5zaWduZWQsCiAgICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAorICAgICAgICBlY21hTW9k
ZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0lu
Zm86IExMSW50Q2FsbExpbmtJbmZvLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA2NTdlMmJiM2UyM2JhNzViNDY3MjAzMGFhYzM4ZjZmODUzYzI0
OWY1Li5kYWVkZWNiNDlhOWI3NjRmYWY0YTFjNGU3NmFmODVlNzFlZjViNzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMjA1LDcgKzIwNSw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQXNzdW1pbmdKSVRUeXBlKFByaW50U3RyZWFtJiBvdXQs
IEpJVFR5cGUgaml0VHlwZSkgY29uc3QKICAgICAgICAgb3V0LnByaW50KCIgKE5ldmVyRlRMT3B0
aW1pemUpIik7CiAgICAgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5kaWRUcnlUb0VudGVySW5Mb29w
KCkpCiAgICAgICAgIG91dC5wcmludCgiIChEaWRUcnlUb0VudGVySW5Mb29wKSIpOwotICAgIGlm
IChvd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKG93bmVyRXhlY3V0
YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICBvdXQucHJpbnQoIiAoU3RyaWN0
TW9kZSkiKTsKICAgICBpZiAobV9kaWRGYWlsSklUQ29tcGlsYXRpb24pCiAgICAgICAgIG91dC5w
cmludCgiIChKSVRGYWlsKSIpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAKICAgICAgICAgICAgIEFTU0VSVCghaXNJbml0aWFsaXphdGlvbihieXRlY29kZS5t
X2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICAgICAgICAgIGlmIChieXRl
Y29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBMb2NhbENsb3N1cmVWYXIpIHsKLSAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1
dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
Z2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2Rl
KCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUo
KSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogCkBAIC02MjcsOSArNjI3LDkgQEAgYm9vbCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVz
b2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUubV9sb2NhbFNjb3BlRGVwdGgsIHNj
b3BlLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAgICAgICAgICAgbWV0YWRhdGEu
bV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1v
ZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2Rl
KCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gTW9kdWxlVmFyKQotICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZv
ID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xvc3Vy
ZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBieXRlY29k
ZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBH
bG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8
IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0
Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlmIChvcC5z
dHJ1Y3R1cmUpCkBAIC02NjEsNyArNjYxLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2Jh
bE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUubV9zeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5zY29wZURl
cHRoKCksIHNjb3BlLCBpZGVudCwgUHV0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5
cGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCi0gICAgICAg
ICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0
SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlh
bGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0
UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0
ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBieXRlY29kZS5tX2dldFB1
dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIg
fHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUg
PT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNl
dCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IENs
b3N1cmVWYXIgfHwgb3AudHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGQzYjA2
YTg5MWFlZmM2Yzc5NGQ3NWUxYzBkMDA0NmUxOTIzOGU4MjYuLmUxMTEzOWQ1YTM4NDM1YTA2ZGUy
Njc3NWZmZjMxMDAxNWVjYzQ0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKQEAgLTIyMiw5ICsyMjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBN
YXRoSUNTdGF0cygpOwogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkQ29kZS0+aXNTdHJpY3RNb2RlKCk7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aXNDb25zdHJ1Y3RvcigpOyB9Ci0gICAg
RUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmlj
dE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkQ29kZS0+Y29kZVR5cGUoKTsgfQogCiAgICAgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+c2NyaXB0
TW9kZSgpOyB9CkBAIC0yMzIsMTEgKzIzMCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0luc3Rh
bGxlZFZNVHJhcEJyZWFrcG9pbnRzKCkgY29uc3Q7CiAgICAgYm9vbCBpbnN0YWxsVk1UcmFwQnJl
YWtwb2ludHMoKTsKIAotICAgIGlubGluZSBib29sIGlzS25vd25Ob3RJbW1lZGlhdGUoVmlydHVh
bFJlZ2lzdGVyIHJlZykKKyAgICBpbmxpbmUgYm9vbCBpc0tub3duQ2VsbChWaXJ0dWFsUmVnaXN0
ZXIgcmVnKQogICAgIHsKLSAgICAgICAgaWYgKHJlZyA9PSB0aGlzUmVnaXN0ZXIoKSAmJiAhaXNT
dHJpY3RNb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgICAgICBpZiAocmVn
LmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJldHVybiBnZXRDb25zdGFudChyZWcpLmlzQ2Vs
bCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0
YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5m
by5oCmluZGV4IDc3ZjE5MjkwNjkwODMzNmViZDAwOGRjZjBjMzZmNGFjNmU5ZTc1ZDQuLjQ5ZWRk
NTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcxOTkwYmU5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zNiw5ICszNiw4IEBAIGVu
dW0gY2xhc3MgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiB1aW50OF90IHsgTm8sIFllcyB9
OwogLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8g
WFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewot
ICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29s
IGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29s
IGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4
ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1
aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJT
Y3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUs
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250
ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAgICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkK
LSAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0Nv
bnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihp
c0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKQEAgLTU3LDcgKzU2LDYgQEAgc3RydWN0IEV4
ZWN1dGFibGVJbmZvIHsKICAgICB9CiAKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1
cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+
KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtNzIsNyArNzAsNiBAQCBzdHJ1Y3QgRXhlY3V0YWJs
ZUluZm8gewogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVu
c2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3Ig
OiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5o
CmluZGV4IDU3Nzg5YmMyYzY2OWY3Y2FkODg4M2RlY2YzNTEzMjc4NDQ5YzgyNGYuLjY0ZWVhYjhi
ZDk5MmY5OWIyODY4M2M5YjAwNjRmNDlkMDk1MzgwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ZpdHMuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgRml0czsKIAogLy8gSW1wbGlj
aXQgY29udmVyc2lvbiBmb3IgdHlwZXMgb2YgdGhlIHNhbWUgc2l6ZQogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgT3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVf
aWZfdDxzaXplb2YoVCkgPT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiB7CitzdHJ1Y3QgRml0czxU
LCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihUKSA9PSBzaXplICYmIHN0ZDo6aXNfY29u
c3RydWN0aWJsZTxUPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdl
dFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CiAKICAgICBz
dGF0aWMgYm9vbCBjaGVjayhUKSB7IHJldHVybiB0cnVlOyB9CkBAIC0xNzcsMTUgKzE3NywxNiBA
QCBzdHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemUgIT0g
T3Bjb2RlU2l6ZTo6V2lkZTMyLCBzdGQ6OgogICAgIC8vCiAgICAgLy8gVHJ5IHRvIGVuY29kZSBl
bmNvZGUgYXMKICAgICAvLwotICAgIC8vICAgICAgICAgICBpbml0aWFsaXphdGlvbiBtb2RlCi0g
ICAgLy8gICAgICAgICAgICAgICAgICAgIHYKLSAgICAvLyBmcmVlIGJpdC0+IDB8MDAwMHwwMHww
Ci0gICAgLy8gICAgICAgICAgICAgICAgIF4gICAgXgotICAgIC8vICAgIHJlc29sdmUgIHR5cGUg
ICByZXNvbHZlIG1vZGUKKyAgICAvLyAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG1vZGUKKyAg
ICAvLyAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAvLyBpc1N0cmljdCAtPiAwfDAwMDB8MDB8
MAorICAgIC8vICAgICAgICAgICAgICAgICAgXiAgICBeCisgICAgLy8gICAgICByZXNvbHZlICB0
eXBlICAgIHJlc29sdmUgbW9kZQogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZVR5
cGVNYXggPSAxIDw8IDQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pbml0aWFsaXphdGlv
bk1vZGVNYXggPSAxIDw8IDI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19yZXNvbHZlTW9k
ZU1heCA9IDEgPDwgMTsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQg
PSAoc19yZXNvbHZlVHlwZU1heCAtIDEpIDw8IDM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
c19yZXNvbHZlVHlwZUJpdHMgPSAoc19yZXNvbHZlVHlwZU1heCAtIDEpIDw8IDM7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgc19pbml0aWFsaXphdGlvbk1vZGVCaXRzID0gKHNfaW5pdGlhbGl6
YXRpb25Nb2RlTWF4IC0gMSkgPDwgMTsKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3Jlc29s
dmVNb2RlQml0cyA9IChzX3Jlc29sdmVNb2RlTWF4IC0gMSk7CkBAIC0yMDYsNyArMjA3LDggQEAg
c3RydWN0IEZpdHM8R2V0UHV0SW5mbywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplICE9IE9w
Y29kZVNpemU6OldpZGUzMiwgc3RkOjoKICAgICAgICAgYXV0byByZXNvbHZlVHlwZSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KGdwaS5yZXNvbHZlVHlwZSgpKTsKICAgICAgICAgYXV0byBpbml0aWFs
aXphdGlvbk1vZGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkuaW5pdGlhbGl6YXRpb25Nb2Rl
KCkpOwogICAgICAgICBhdXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3Bp
LnJlc29sdmVNb2RlKCkpOwotICAgICAgICByZXR1cm4gKHJlc29sdmVUeXBlIDw8IDMpIHwgKGlu
aXRpYWxpemF0aW9uTW9kZSA8PCAxKSB8IHJlc29sdmVNb2RlOworICAgICAgICBhdXRvIGlzU3Ry
aWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7Cisg
ICAgICAgIHJldHVybiAoaXNTdHJpY3QgPDwgNykgfCAocmVzb2x2ZVR5cGUgPDwgMykgfCAoaW5p
dGlhbGl6YXRpb25Nb2RlIDw8IDEpIHwgcmVzb2x2ZU1vZGU7CiAgICAgfQogCiAgICAgc3RhdGlj
IEdldFB1dEluZm8gY29udmVydChUYXJnZXRUeXBlIGdwaSkKQEAgLTIxNCwxMCArMjE2LDQ1IEBA
IHN0cnVjdCBGaXRzPEdldFB1dEluZm8sIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZSAhPSBP
cGNvZGVTaXplOjpXaWRlMzIsIHN0ZDo6CiAgICAgICAgIGF1dG8gcmVzb2x2ZVR5cGUgPSBzdGF0
aWNfY2FzdDxSZXNvbHZlVHlwZT4oKGdwaSAmIHNfcmVzb2x2ZVR5cGVCaXRzKSA+PiAzKTsKICAg
ICAgICAgYXV0byBpbml0aWFsaXphdGlvbk1vZGUgPSBzdGF0aWNfY2FzdDxJbml0aWFsaXphdGlv
bk1vZGU+KChncGkgJiBzX2luaXRpYWxpemF0aW9uTW9kZUJpdHMpID4+IDEpOwogICAgICAgICBh
dXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU1vZGU+KGdwaSAmIHNfcmVzb2x2
ZU1vZGVCaXRzKTsKLSAgICAgICAgcmV0dXJuIEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29s
dmVUeXBlLCBpbml0aWFsaXphdGlvbk1vZGUpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3Rh
dGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7CisgICAgICAgIHJldHVybiBHZXRQ
dXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSwgaW5pdGlhbGl6YXRpb25Nb2RlLCBpc1N0
cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSk7CiAgICAgfQog
fTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdz
LCBzaXplPiB7CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6
ZT46OnVuc2lnbmVkVHlwZTsKKworICAgIC8vIFB1dEJ5SWRGbGFncyBpcyBqdXN0IHR3byBib29s
ZWFuIHZhbHVlcyBlbmNvZGVkIGFzCisgICAgLy8KKyAgICAvLyAgICAgICAgaXNTdHJpY3QKKyAg
ICAvLyAgICAgICAgICAgdgorICAgIC8vICAgIDAwMDAwMHwwfDAKKyAgICAvLyAgICAgICAgICAg
ICBeCisgICAgLy8gICAgICAgICBpc0RpcmVjdAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNf
aXNEaXJlY3RCaXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQg
PSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlJZEZsYWdzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIFRhcmdldFR5cGUgY29udmVydChQ
dXRCeUlkRmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7CisgICAgICAgIGF1dG8gaXNTdHJpY3Qg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAg
ICAgICByZXR1cm4gKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7CisgICAgfQorCisgICAgc3Rh
dGljIFB1dEJ5SWRGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsKKyAgICAgICAg
YXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOwor
ICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmlj
dEJpdCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJp
Y3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICAgICAgcmV0dXJuIGlzRGlyZWN0ID8gUHV0
QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUo
ZWNtYU1vZGUpOworICAgIH0KK307CiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNp
emU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBz
aXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMg
Rml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9
IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC0zMjcsNCArMzY0LDI5
IEBAIHN0cnVjdCBGaXRzPEdlbmVyaWNCb3VuZExhYmVsPEdlbmVyYXRvclRyYWl0cz4sIHNpemU+
IDogcHVibGljIEZpdHM8aW50LCBzaXplPiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2Rl
U2l6ZSBzaXplPgorc3RydWN0IEZpdHM8RUNNQU1vZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWlu
dDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisg
ICAgLy8gYSBwYWlyIG9mIChSZXN1bHRUeXBlOjpUeXBlLCBSZXN1bHRUeXBlOjpUeXBlKSAtIHRy
eSB0byBmaXQgZWFjaCB0eXBlIGludG8gNCBiaXRzCisgICAgLy8gYWRkaXRpb25hbGx5LCBlbmNv
ZGUgdW5rbm93biB0eXBlcyBhcyAwIHJhdGhlciB0aGFuIHRoZSB8IG9mIGFsbCB0eXBlcworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdHlwZVdpZHRoID0gNDsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heFR5cGUgPSAoMSA8PCB0eXBlV2lkdGgpIC0gMTsKKworICAgIHN0
YXRpYyBib29sIGNoZWNrKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEJhc2U6OmNoZWNrKGVjbWFNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0eXBl
bmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgewor
ICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChlY21hTW9kZS52YWx1ZSgpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgRUNNQU1vZGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGVj
bWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShCYXNlOjpj
b252ZXJ0KGVjbWFNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCmlu
ZGV4IDNlM2U2NWY1OWM1MTMwMWViMmY0NGIyZDIzMWVmY2VjYTkxZWNjZjEuLjc5OTFhYzJhOGU2
N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wQnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBvdXQucHJp
bnQoYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCksICI6PCIsIFJhd1BvaW50ZXIoYmFzZWxpbmVD
b2RlQmxvY2suZ2V0KCkpKTsKLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGlzSW5T
dHJpY3RDb250ZXh0KCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2RlKSIpOwogICAg
IG91dC5wcmludCgiLCAiLCBkaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRleCgpLCAiLCAiLCBzdGF0
aWNfY2FzdDxLaW5kPihraW5kKSk7CiAgICAgaWYgKGlzQ2xvc3VyZUNhbGwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKaW5kZXggZTI5ZjM4
NGQxZDA2NzJmZWVhMDcxMjA1YmNhYTI4MWE2NDliMjIyOS4uNzVmOWJiMWE4NDY4YTYxZDdiZTk2
YzNhYzliOTFlOTUzZWEzYmY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0cnVjdCBJbmxpbmVD
YWxsRnJhbWUgewogICAgIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6Y2FsbGVyRnJh
bWVPZmZzZXQoKTsgfQogICAgIHB0cmRpZmZfdCByZXR1cm5QQ09mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6cmV0dXJuUENP
ZmZzZXQoKTsgfQogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBiYXNl
bGluZUNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luU3RyaWN0Q29udGV4dCgpOyB9CiAKICAgICB2b2lkIGR1bXBCcmllZkZ1bmN0aW9uSW5m
b3JtYXRpb24oUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFn
cy5jcHAKaW5kZXggYzhhNGI2MGZhNTg4YjAxN2Q3OWVjZjI3MGQ5N2FiYjY4YTI0ODI0OS4uNjY1
MDBlNjI3NmJjNDY5N2JlMGVlYTFkODgxNDlmZjFhNTAxNGQ0NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKQEAgLTM2LDggKzM2LDEwIEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBQdXRCeUlkRmxhZ3MgZmxhZ3MpIHsKICAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsK
LSAgICBpZiAoZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpCisgICAgaWYgKGZsYWdzLmlzRGlyZWN0
KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklzRGlyZWN0Iik7CisgICAgaWYgKGZsYWdz
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiU3RyaWN0
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRGbGFncy5oCmluZGV4IDVjMDQ5MjgxMGUxYzkzZmY2MTUzZTY1NmVmNDRj
NzdlMmZmOTc0OGUuLjhlYzBkYmE2ZTQ0ZTdhMzExNjRjYTk3YTMzMWY0ZTdjZDU3NDFhYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKQEAgLTI5
LDEzICsyOSwzMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBQdXRCeUlkRmxhZ3MgOiBp
bnQzMl90IHsKLSAgICBQdXRCeUlkTm9uZSA9IDAsCitjbGFzcyBQdXRCeUlkRmxhZ3MgeworcHVi
bGljOgorICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlJZEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBl
Y21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRCeUlkRmxhZ3MoZmFsc2UsIGVjbWFN
b2RlKTsKKyAgICB9CiAKLSAgICAvLyBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoYXQgdGhlIHB1dF9i
eV9pZCBpcyBkaXJlY3QuIFRoYXQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0
aG91dAotICAgIC8vIGNoZWNraW5nIGlmIHRoZSBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVy
LgotICAgIFB1dEJ5SWRJc0RpcmVjdCA9IDB4MSwKLSAgICBQdXRCeUlkUGVyc2lzdGVudEZsYWdz
TWFzayA9IDB4MSwKKyAgICAvLyBBIGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9y
ZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2luZyBpZiB0aGUKKyAgICAvLyBwcm90b3R5cGUg
Y2hhaW4gaGFzIGEgc2V0dGVyLgorICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlJZEZsYWdzIGNy
ZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRC
eUlkRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOworICAgIH0KKworICAgIGJvb2wgaXNEaXJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9CisgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2VjbWFNb2RlOyB9CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIFB1dEJ5
SWRGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX2lz
RGlyZWN0KGlzRGlyZWN0KQorICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgewor
ICAgIH0KKworICAgIGJvb2wgbV9pc0RpcmVjdDsKKyAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKaW5kZXggMmNiY2JjYWM5MjA0ZDVkMzA3ZTJjYjQ4M2Qz
ZWYwOGEzYTcxZTE0ZC4uZjFlZGIzODA3ZWIwMjFlNDQ0OWNjZDYxMDY5YWYyYWI4NjM5MDdhZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cApAQCAtNzksNyArNzksNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRlY29kZQogICAgICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uKTsKICAgICAKICAgICBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7Ci0gICAgaWYgKCEoYnl0ZWNvZGUubV9mbGFncyAm
IFB1dEJ5SWRJc0RpcmVjdCkpIHsKKyAgICBpZiAoIShieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0
KCkpKSB7CiAgICAgICAgIGNvbmRpdGlvblNldCA9CiAgICAgICAgICAgICBnZW5lcmF0ZUNvbmRp
dGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3NDb25jdXJyZW50bHkoCiAgICAgICAgICAgICAgICAg
dm0sIHByb2ZpbGVkQmxvY2stPmdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUsIHVpZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cAppbmRleCA1ODkxZjJhNWMyNTc3Yjk5YzUyOTIyZDNkZmRmNTk2YmEyZmU1NmJmLi41NGRhNTdk
YWI2OWNhMjYxYWVmZGNlYjkzOGZmYTBmNGZmMDM3OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTU3LDcgKzU3
LDYgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxp
bmtlZENvZGVCbG9jayIsIG51bGxwdHIsIG51bGwKIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtl
ZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlVHlw
ZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8sIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAs
IG1fdXNlc0V2YWwoaW5mby51c2VzRXZhbCgpKQotICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5p
c1N0cmljdE1vZGUoKSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLmlzQ29uc3RydWN0b3Io
KSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRp
bkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZGQyMTdiN2ZkNGZl
ZjU2ZGY4ZDgxYzM1YzI4MTMzZDVjODdhMWE5Yy4uMDBkYzYxNjMzNWZkMzFiMDQzMjUxZTM0NDAw
ZTU3ZGVmNTMxNWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEyMyw3ICsxMjMsNiBAQCBwdWJsaWM6CiAgICAgZW51
bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5jdGlvbiB9OwogCiAgICAgYm9vbCBpc0NvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9Ci0gICAgYm9vbCBpc1N0cmlj
dE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2
YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VN
b2RlKCkpOyB9CkBAIC0zMzUsNyArMzM0LDYgQEAgcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbV9zY29wZVJlZ2lzdGVyOwogCiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7Ci0gICAg
dW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3Rv
ciA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5z
aWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4
IDIxM2EzYTgzMmQ3ZWFhYTliOTcxMGYwMWE4NjRkYTkzNWJkZDdlYTUuLjJlYjk4NGMxYjA1YTQ1
ZTBhYTUyMGUxZmQzNzhhZDllMmZjOTMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC01
MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygpOyB9CiAgICAgSlNQYXJzZXJT
Y3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0
TW9kZSgpOyB9CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIoKTsgfQotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAgICAgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQog
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQXJyb3dG
dW5jdGlvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBjZDhiZWJmOGQzNjQ1
NDVkMTgyZDc5Y2JmODA2ODA2NzFmNDExOTdmLi4wYmYzMDI4ZDgxMGM2MTZlYjA3YWRhNjZjNTdk
YTkyOTllMWJiY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTcxLDEwICs3MSwx
MSBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKAogCiAgICAgYm9vbCBpc0NsYXNzQ29udGV4dCA9IGV4ZWN1dGFibGUt
PnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkOwogCi0gICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgp
LCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVu
Y3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1
Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNl
TW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPm5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRl
eHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwgY29kZUdlbmVyYXRpb25Nb2RlKTsKKyAgICBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPnVz
ZXNFdmFsKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0
TW9kZSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+
ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2
YWxDb250ZXh0KSwgY29kZUdlbmVyYXRpb25Nb2RlKTsKIAogICAgIFZhcmlhYmxlRW52aXJvbm1l
bnQgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZh
cmlhYmxlcygpOwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBm
dW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgJnBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGV4ZWN1dGFibGUt
PmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xv
cHB5KCk7CisgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIGZ1bmN0
aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25Nb2RlLCAmcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIGVjbWFNb2RlKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBhMDFkNDdkN2RjMGJj
MWI0ODAxNjViYmNkMjY2ZDExYTZjMjMyYjQ1Li42Mjg0MWI1NjdkMGUxZjg4NGVlYWZlN2Y2MjBl
YzFlMDg5MzFjNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjk3LDE0ICsyOTcsMjEgQEAgUGFy
c2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICByZXR1cm4gUGFyc2Vy
RXJyb3IoUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
ayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5p
cXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2Nr
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAg
LCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3Bl
Tm9kZShwcm9ncmFtTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0Fy
Z3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENvZGUpCiAgICAgLCBtX3Zt
KHZtKQorICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhwcmVzc2lvblRv
b0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQorICAgICwgbV91
c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCisg
ICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1Rv
VXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQocHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9u
KCkgfHwgcHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2Rl
KQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIApAQCAtMzM4LDE0ICszNDUsMTcgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dy
YW1Ob2RlLCBVbmxpbmtlZFAKICAgICB9CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5p
cXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2Nr
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAg
LCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3Bl
Tm9kZShmdW5jdGlvbk5vZGUpCiAgICAgLCBtX2NvZGVUeXBlKEZ1bmN0aW9uQ29kZSkKICAgICAs
IG1fdm0odm0pCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgZmxhZworICAgICwgbV91
c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCiAg
ICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkK
LSAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxv
Y2stPnVzZXNFdmFsKCkgJiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBiZSBhYmxlIHRvIGhhdmUgdGFpbCBjYWxsIGVsaW1pbmF0aW9uIHdpdGggdGhlIHBy
b2ZpbGVyCiAgICAgLy8gZW5hYmxlZC4gVGhpcyBpcyBjdXJyZW50bHkgbm90IHBvc3NpYmxlIGJl
Y2F1c2UgdGhlIHByb2ZpbGVyIGV4cGVjdHMKICAgICAvLyBvcF93aWxsX2NhbGwgLyBvcF9kaWRf
Y2FsbCBwYWlycyBiZWZvcmUgYW5kIGFmdGVyIGEgY2FsbCwgd2hpY2ggYXJlIG5vdApAQCAtMzUz
LDggKzM2MywxMCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4MTkKICAgICAvLwogICAgIC8vIE5vdGUg
dGhhdCB3ZSBpbnRlbnRpb25hbGx5IGVuYWJsZSB0YWlsIGNhbGwgZm9yIG5ha2VkIGNvbnN0cnVj
dG9ycyBzaW5jZSBpdCBkb2VzIG5vdCBoYXZlIHNwZWNpYWwgY29kZSBmb3IgInJldHVybiIuCi0g
ICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0
cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYm
IGlzU3RyaWN0TW9kZSgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25zOjp1c2VUYWls
Q2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSAmJiBlY21hTW9kZS5pc1N0cmljdCgpKQorICAgICwgbV9oYXNDYWNo
ZWRWYXJpYWJsZXNVbmRlclREWihmYWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVu
Y3Rpb25Db250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBmdW5jdGlv
bk5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICwgbV9k
ZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsKICAg
ICBTeW1ib2xUYWJsZSogZnVuY3Rpb25TeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUo
bV92bSk7CkBAIC00MzcsNyArNDQ5LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBp
ZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25O
b2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKICAgICAgICAgQVNTRVJUKCFpc0FzeW5j
RnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpOwotICAgICAgICBib29sIGlzRHluYW1p
Y1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgp
LCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29w
ZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgZWNt
YU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9
IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOwogICAgICAgICBib29sIG1h
cmtBc0NhcHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsK
ICAgICAgICAgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCks
ICZtX2NhbGxlZVJlZ2lzdGVyLCBtYXJrQXNDYXB0dXJlZCk7CkBAIC00ODcsNyArNDk5LDcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgbV9hcmd1bWVudHNSZWdpc3Rlci0+cmVm
KCk7CiAgICAgfQogICAgIAotICAgIGlmIChuZWVkc0FyZ3VtZW50cyAmJiAhY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICBpZiAobmVlZHNB
cmd1bWVudHMgJiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkgJiYgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0
KSB7CiAgICAgICAgIC8vIElmIHdlIGNhcHR1cmVkIGFueSBmb3JtYWwgcGFyYW1ldGVyIGJ5IG5h
bWUsIHRoZW4gd2UgdXNlIFNjb3BlZEFyZ3VtZW50cy4gT3RoZXJ3aXNlIHdlCiAgICAgICAgIC8v
IHVzZSBEaXJlY3RBcmd1bWVudHMuIFdpdGggU2NvcGVkQXJndW1lbnRzLCB3ZSBsaWZ0IGFsbCBv
ZiBvdXIgYXJndW1lbnRzIGludG8gdGhlCiAgICAgICAgIC8vIGFjdGl2YXRpb24uCkBAIC01MTYs
NyArNTI4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICAgICAg
ZW50cnkuZGlzYWJsZVdhdGNoaW5nKG1fdm0pOwogICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
blN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBuYW1lLCBlbnRyeSk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBt
X2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBVSU5UX01BWCwgdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91bmQs
IExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiks
IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBz
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQoKSk7CisgICAgICAgICAg
ICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0
ZXIsIFVJTlRfTUFYLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSAr
IGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBlY21hTW9kZSksIFN5bWJvbFRhYmxlT3JT
Y29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0
YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIFRoaXMgY3JlYXRlcyBhIHNjb3BlZCBhcmd1bWVudHMgb2JqZWN0
IGFuZCBjb3BpZXMgdGhlIG92ZXJmbG93IGFyZ3VtZW50cyBpbnRvIHRoZQpAQCAtNTU0LDExICs1
NjYsMTEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVu
Y3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBCaW5kaW5nTm9kZSo+KHBhcmFtZXRlcnMuYXQoaSkuZmlyc3QpLT5ib3VuZFBy
b3BlcnR5KCk7CiAgICAgICAgICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5n
TmVjZXNzYXJ5LCBuYW1lLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChvZmZzZXQpKSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBtX2xleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBhZGRDb25zdGFudChpZGVudCksIHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZv
dW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pLCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVy
IHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBvZmZzZXQub2Zmc2V0KCkpOworICAgICAg
ICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0
ZXIsIGFkZENvbnN0YW50KGlkZW50KSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRp
bmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZh
ciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiwgZWNtYU1vZGUpLCBTeW1i
b2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9s
VGFibGVDb25zdGFudEluZGV4IH0pLCBvZmZzZXQub2Zmc2V0KCkpOwogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIGlmIChuZWVkc0FyZ3VtZW50cyAmJiAoY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSB8fCAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSkgeworICAgIGlmIChuZWVkc0FyZ3VtZW50
cyAmJiAoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSkgewog
ICAgICAgICAvLyBBbGxvY2F0ZSBhIGNsb25lZCBhcmd1bWVudHMgb2JqZWN0LgogICAgICAgICBP
cENyZWF0ZUNsb25lZEFyZ3VtZW50czo6ZW1pdCh0aGlzLCBtX2FyZ3VtZW50c1JlZ2lzdGVyKTsK
ICAgICB9CkBAIC03MTIsNyArNzI0LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBzaG91bGRFbWl0VG9UaGlzID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2Vz
RXZhbCgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VUaGlzKCkg
fHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZUV2YWwoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEVtaXRUb1RoaXMgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICgoZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQcm9wZXJ0eSgpIHx8IG1f
c2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlclByb3BlcnR5KCkpICYm
ICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKChmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkgfHwgbV9zY29wZU5vZGUtPmRv
QW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyUHJvcGVydHkoKSkgJiYgIWVjbWFNb2RlLmlz
U3RyaWN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgZW1pdCB0b190
aGlzIHdoZW4gd2UncmUgbm90IGluIHN0cmljdCBtb2RlIGJlY2F1c2Ugd2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHdpbGwgY29udmVydCB8dGhpc3wgdG8gYW4gb2JqZWN0LCBhbmQgdGhh
dCBvYmplY3QgbWF5IGJlIHBhc3NlZAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBz
dHJpY3QgZnVuY3Rpb24gYXMgfHRoaXN8LiBUaGlzIGlzIG9ic2VydmFibGUgYmVjYXVzZSB0aGF0
CkBAIC04MzMsMTUgKzg0NSwyMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIHB1c2hM
ZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwg
TmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJs
b2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25N
b2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykK
K0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBl
dmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDog
Qnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVH
ZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQogICAgICwgbV90aGlz
UmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5
cGUoRXZhbENvZGUpCiAgICAgLCBtX3ZtKHZtKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChj
b2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAg
LCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxz
ZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCisgICAgLCBtX3VzZXNOb25TdHJp
Y3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAg
ICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1Vu
ZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQo
ZXZhbE5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZXZhbE5vZGUtPnVzZXNFdmFsKCkpCisg
ICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29k
ZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVt
UGFyYW1ldGVycygxKTsKQEAgLTg5MSwxNSArOTA5LDIxIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFs
Q29kCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRp
b246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91
bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJv
Z3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVBy
b2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1v
ZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlv
bk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3Jh
bU5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpKQogICAgICwgbV9jb2RlVHlwZShNb2R1bGVDb2RlKQogICAgICwgbV92bSh2bSkKKyAgICAs
IG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNl
KQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKICAgICAsIG1fdXNlc05vblN0cmlj
dEV2YWwoZmFsc2UpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQorICAgICwgbV9oYXND
YWNoZWRWYXJpYWJsZXNVbmRlclREWihmYWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93
RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8
IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKQEAgLTIzOTUsNyArMjQxOSw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnJvbVNjb3BlKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc2NvCiAgICAgICAgICAgICBraWxsKGRzdCksCiAgICAgICAgICAgICBz
Y29wZSwKICAgICAgICAgICAgIGFkZENvbnN0YW50KHZhcmlhYmxlLmlkZW50KCkpLAotICAgICAg
ICAgICAgR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgdmFyaWFibGUub2Zmc2V0KCkuaXNTY29wZSgp
ID8gTG9jYWxDbG9zdXJlVmFyIDogcmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpO
b3RJbml0aWFsaXphdGlvbiksCisgICAgICAgICAgICBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCB2
YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyBMb2NhbENsb3N1cmVWYXIgOiByZXNvbHZlVHlw
ZSgpLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBlY21hTW9kZSgpKSwK
ICAgICAgICAgICAgIGxvY2FsU2NvcGVEZXB0aCgpLAogICAgICAgICAgICAgdmFyaWFibGUub2Zm
c2V0KCkuaXNTY29wZSgpID8gdmFyaWFibGUub2Zmc2V0KCkuc2NvcGVPZmZzZXQoKS5vZmZzZXQo
KSA6IDApOwogICAgICAgICByZXR1cm4gZHN0OwpAQCAtMjQyMiwxMSArMjQ0NiwxMSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvU2NvcGUoUmVnaXN0ZXJJRCogc2Nv
cGUsIGNvbnN0IFZhcmlhYmxlJgogICAgICAgICBTY29wZU9mZnNldCBvZmZzZXQ7CiAgICAgICAg
IGlmICh2YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkpIHsKICAgICAgICAgICAgIG9mZnNldCA9
IHZhcmlhYmxlLm9mZnNldCgpLnNjb3BlT2Zmc2V0KCk7Ci0gICAgICAgICAgICBnZXRQdXRJbmZv
ID0gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgTG9jYWxDbG9zdXJlVmFyLCBpbml0aWFsaXphdGlv
bk1vZGUpOworICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUs
IExvY2FsQ2xvc3VyZVZhciwgaW5pdGlhbGl6YXRpb25Nb2RlLCBlY21hTW9kZSgpKTsKICAgICAg
ICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6
OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHZhcmlhYmxlLnN5bWJvbFRhYmxlQ29uc3Rh
bnRJbmRleCgpIH0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlc29s
dmVUeXBlKCkgIT0gTG9jYWxDbG9zdXJlVmFyKTsKLSAgICAgICAgICAgIGdldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSgpLCBpbml0aWFsaXphdGlvbk1vZGUp
OworICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29s
dmVUeXBlKCksIGluaXRpYWxpemF0aW9uTW9kZSwgZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBz
eW1ib2xUYWJsZU9yU2NvcGVEZXB0aCA9IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzY29wZURl
cHRoKGxvY2FsU2NvcGVEZXB0aCgpKTsKICAgICAgICAgfQogICAgICAgICBPcFB1dFRvU2NvcGU6
OmVtaXQodGhpcywgc2NvcGUsIGFkZENvbnN0YW50KHZhcmlhYmxlLmlkZW50KCkpLCB2YWx1ZSwg
Z2V0UHV0SW5mbywgc3ltYm9sVGFibGVPclNjb3BlRGVwdGgsICEhb2Zmc2V0ID8gb2Zmc2V0Lm9m
ZnNldCgpIDogMCk7CkBAIC0yNTA3LDcgKzI1MzEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cAogCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZSwgcHJvcGVydHlJ
bmRleCk7CiAKLSAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHlJbmRleCwg
dmFsdWUsIFB1dEJ5SWROb25lKTsgLy8gaXMgbm90IGRpcmVjdAorICAgIE9wUHV0QnlJZDo6ZW1p
dCh0aGlzLCBiYXNlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgUHV0QnlJZEZsYWdzOjpjcmVhdGUo
ZWNtYU1vZGUoKSkpOyAvLyBpcyBub3QgZGlyZWN0CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBA
IC0yNTE3LDcgKzI1NDEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbAogCiAgICAgdW5zaWdu
ZWQgcHJvcGVydHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsKIAotICAgIE9wUHV0QnlJ
ZFdpdGhUaGlzOjplbWl0KHRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHlJbmRleCwgdmFs
dWUpOworICAgIE9wUHV0QnlJZFdpdGhUaGlzOjplbWl0KHRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwg
cHJvcGVydHlJbmRleCwgdmFsdWUsIGVjbWFNb2RlKCkpOwogCiAgICAgcmV0dXJuIHZhbHVlOwog
fQpAQCAtMjUzMCw3ICsyNTU0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWYKIAogICAgIG1f
c3RhdGljUHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UsIHByb3BlcnR5SW5kZXgpOwogCi0g
ICAgUHV0QnlJZEZsYWdzIHR5cGUgPSAocHV0VHlwZSA9PSBQcm9wZXJ0eU5vZGU6Oktub3duRGly
ZWN0IHx8IHByb3BlcnR5ICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSA/
IFB1dEJ5SWRJc0RpcmVjdCA6IFB1dEJ5SWROb25lOworICAgIFB1dEJ5SWRGbGFncyB0eXBlID0g
KHB1dFR5cGUgPT0gUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCB8fCBwcm9wZXJ0eSAhPSBtX3Zt
LnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgPyBQdXRCeUlkRmxhZ3M6OmNyZWF0ZURp
cmVjdChlY21hTW9kZSgpKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKCkpOwogICAg
IE9wUHV0QnlJZDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgdHlwZSk7
CiAgICAgcmV0dXJuIHZhbHVlOwogfQpAQCAtMjU5MCw3ICsyNjE0LDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dEFzeW5jR2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVySUQqIG5leHRG
dW5jdGlvbikKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeUlk
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHkpCiB7Ci0gICAgT3BEZWxCeUlkOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgYWRkQ29uc3Rh
bnQocHJvcGVydHkpKTsKKyAgICBPcERlbEJ5SWQ6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBhZGRD
b25zdGFudChwcm9wZXJ0eSksIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAg
LTI2MzQsMjUgKzI2NTgsMjUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFIKIAogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbDo6
ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIE9wUHV0QnlWYWw6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbFdpdGhUaGlzOjplbWl0KHRo
aXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICBPcFB1dEJ5VmFsV2l0
aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFN
b2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1p
dCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlW
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSkKIHsKLSAgICBPcERlbEJ5VmFsOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkpOwor
ICAgIE9wRGVsQnlWYWw6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSwgZWNtYU1vZGUo
KSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMzI0Niw3ICszMjcwLDEwIEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGZ1bmMsIEV4cGVjCiAgICAgLy8gRW1pdCBjYWxsLgogICAgIEFTU0VSVChkc3QpOwogICAg
IEFTU0VSVChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKTsKLSAgICBDYWxsT3A6OmVtaXQodGhpcywg
ZHN0LCBmdW5jLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCksIGNh
bGxBcmd1bWVudHMuc3RhY2tPZmZzZXQoKSk7CisgICAgaWYgY29uc3RleHByIChvcGNvZGVJRCA9
PSBvcF9jYWxsX2V2YWwpCisgICAgICAgIENhbGxPcDo6ZW1pdCh0aGlzLCBkc3QsIGZ1bmMsIGNh
bGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSwgY2FsbEFyZ3VtZW50cy5z
dGFja09mZnNldCgpLCBlY21hTW9kZSgpKTsKKyAgICBlbHNlCisgICAgICAgIENhbGxPcDo6ZW1p
dCh0aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpKTsKICAgICAKICAgICBpZiAoZXhwZWN0
ZWRGdW5jdGlvbiAhPSBOb0V4cGVjdGVkRnVuY3Rpb24pCiAgICAgICAgIGVtaXRMYWJlbChkb25l
LmdldCgpKTsKQEAgLTM3ODksNyArMzgxNiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlCiAg
ICAgdW5zaWduZWQgbnVtVmFycyA9IG1fY29kZUJsb2NrLT5udW1WYXJzKCk7CiAgICAgcHVzaExl
eGljYWxTY29wZUludGVybmFsKG5hbWVTY29wZUVudmlyb25tZW50LCBURFpDaGVja09wdGltaXph
dGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIFRE
WlJlcXVpcmVtZW50OjpOb3RVbmRlclREWiwgU2NvcGVUeXBlOjpGdW5jdGlvbk5hbWVTY29wZSwg
U2NvcGVSZWdpc3RlclR5cGU6OlZhcik7CiAgICAgQVNTRVJUX1VOVVNFRChudW1WYXJzLCBtX2Nv
ZGVCbG9jay0+bnVtVmFycygpID09IHN0YXRpY19jYXN0PGludD4obnVtVmFycyArIDEpKTsgLy8g
U2hvdWxkIGhhdmUgb25seSBjcmVhdGVkIG9uZSBuZXcgInZhciIgZm9yIHRoZSBmdW5jdGlvbiBu
YW1lIHNjb3BlLgotICAgIGJvb2wgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSA9IGlzU3Ry
aWN0TW9kZSgpOworICAgIGJvb2wgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSA9IGVjbWFN
b2RlKCkuaXNTdHJpY3QoKTsKICAgICBWYXJpYWJsZSBmdW5jdGlvblZhciA9IHZhcmlhYmxlRm9y
TG9jYWxFbnRyeShwcm9wZXJ0eSwgbV9sZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zeW1ib2xU
YWJsZS0+Z2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgcHJvcGVydHkuaW1wbCgpKSwgbV9sZXhpY2Fs
U2NvcGVTdGFjay5sYXN0KCkubV9zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIHNob3VsZFRyZWF0
QXNMZXhpY2FsVmFyaWFibGUpOwogICAgIGVtaXRQdXRUb1Njb3BlKG1fbGV4aWNhbFNjb3BlU3Rh
Y2subGFzdCgpLm1fc2NvcGUsIGZ1bmN0aW9uVmFyLCBjYWxsZWUsIFRocm93SWZOb3RGb3VuZCwg
SW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiB9CkBAIC0zOTcyLDcgKzM5
OTksNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5l
ZWRlZChjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCiB7CiAgICAgLy8gSWYgd2UncmUgaW4gc3Ry
aWN0IG1vZGUsIHdlIGFsd2F5cyB0aHJvdy4KICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gc3RyaWN0
IG1vZGUsIHdlIHRocm93IGZvciAiY29uc3QiIHZhcmlhYmxlcyBidXQgbm90IHRoZSBmdW5jdGlv
biBjYWxsZWUuCi0gICAgaWYgKGlzU3RyaWN0TW9kZSgpIHx8IHZhcmlhYmxlLmlzQ29uc3QoKSkg
eworICAgIGlmIChlY21hTW9kZSgpLmlzU3RyaWN0KCkgfHwgdmFyaWFibGUuaXNDb25zdCgpKSB7
CiAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0s
IFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTUwNTUsNyArNTA4Miw3IEBAIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXNpczo6cmVj
b3JkKCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcygpCiB7Ci0gICAgT3BU
b1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAgICBPcFRvVGhpczo6
ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlciksIGVjbWFNb2RlKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyOTg5Mzc0MGE4NWE1ODQ5ZTM5NzI4ODU2
NTAzMmFlNzRiYWZmNTViLi43MDc1OTZhNDk3NzIwMWNlZTc0MWUzMmExNzg3MzZkNTRhMTYyNzY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCkBAIC0zODAsMTMgKzM4MCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEZpbmFsbHlDb250ZXh0OwogICAgICAgICBmcmllbmQgY2xhc3Mg
SW5kZXhlZEZvckluQ29udGV4dDsKICAgICAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZUZvcklu
Q29udGV4dDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFN0cmljdE1vZGVTY29wZTsKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVu
Y3Rpb25TdGFjazsKIAotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2Rl
KiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0
b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKLSAg
ICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVC
bG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50Kik7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5v
ZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgICAgICBCeXRlY29k
ZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
LCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVuY3Rpb25Ob2Rl
KiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRl
Y29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBF
Q01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5v
ZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIAogICAg
ICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3IoKTsKICAgICAgICAgCkBAIC00MDYsMTQgKzQwNywxNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE5vZGUsIHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrPgotICAgICAgICBzdGF0aWMgUGFyc2Vy
RXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogZW52aXJvbm1lbnQpCisgICAgICAgIHN0YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0
ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBlbnZp
cm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIE1vbm90
b25pY1RpbWUgYmVmb3JlOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9y
dEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKQogICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90
b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7
Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29k
ZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1v
ZGUsIGVudmlyb25tZW50KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBt
YWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ss
IGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKICAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lcygpKSkg
ewpAQCAtMTAxOSw3ICsxMDIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hv
dWxkRW1pdFR5cGVQcm9maWxlckhvb2tzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlR2VuZXJhdGlv
bk1vZGUuY29udGFpbnMoQ29kZUdlbmVyYXRpb25Nb2RlOjpUeXBlUHJvZmlsZXIpOyB9CiAgICAg
ICAgIGJvb2wgc2hvdWxkRW1pdENvbnRyb2xGbG93UHJvZmlsZXJIb29rcygpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUdlbmVyYXRpb25Nb2RlLmNvbnRhaW5zKENvZGVHZW5lcmF0aW9uTW9kZTo6Q29u
dHJvbEZsb3dQcm9maWxlcik7IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9CisgICAgICAg
IEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQogICAgICAg
ICB2b2lkIHNldFVzZXNDaGVja3BvaW50cygpIHsgbV9jb2RlQmxvY2stPnNldEhhc0NoZWNrcG9p
bnRzKCk7IH0KIAogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CkBAIC0xMjk3LDggKzEyOTgsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIHsgZmFsc2Ug
fTsKICAgICAgICAgYm9vbCBtX3VzZXNOb25TdHJpY3RFdmFsIHsgZmFsc2UgfTsKICAgICAgICAg
Ym9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBtX25lZWRzVG9V
cGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICAgICAgYm9vbCBtX2hhc0NhY2hlZFZhcmlh
Ymxlc1VuZGVyVERaIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJv
d0Z1bmN0aW9uQ29udGV4dCA6IDE7CisgICAgICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAgICAg
ICAgIERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0VHlwZSB7IERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZSB9OwogCiAgICAgICAgIENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlIG1f
Y2FjaGVkVmFyaWFibGVzVW5kZXJURFo7CkBAIC0xMzEyLDYgKzEzMTQsMjUgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFZlY3RvcjxDYXRjaEVudHJ5PiBtX2V4Y2VwdGlvbkhhbmRsZXJzVG9F
bWl0OwogICAgIH07CiAKKyAgICBjbGFzcyBTdHJpY3RNb2RlU2NvcGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgU3RyaWN0TW9kZVNjb3BlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCisg
ICAgICAgICAgICA6IG1fZ2VuZXJhdG9yKGdlbmVyYXRvcikKKyAgICAgICAgICAgICwgbV9wcmV2
aW91c0VDTUFNb2RlKGdlbmVyYXRvci5tX2VjbWFNb2RlKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2dlbmVyYXRvci5tX2VjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOworICAgICAgICB9
CisKKyAgICAgICAgflN0cmljdE1vZGVTY29wZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
Z2VuZXJhdG9yLm1fZWNtYU1vZGUgPSBtX3ByZXZpb3VzRUNNQU1vZGU7CisgICAgICAgIH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yJiBtX2dlbmVyYXRvcjsKKyAg
ICAgICAgRUNNQU1vZGUgbV9wcmV2aW91c0VDTUFNb2RlOworICAgIH07CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2NDBiMjQ5NzU1ZTEwZWNkZDlh
ODNiOWUxNGIwOTdhYjM5ZmQwOTRmLi5iZDMzYjhhMGY5YmIyMjIzNjdkNjk0N2ZmMmJiODQ0MTg5
N2Y3NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC0yOTAzLDcgKzI5MDMsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25S
ZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGlmIChnZW5lcmF0b3Iu
aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkp
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgIGlmIChtX2Fzc2lnbm1lbnRD
b250ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpBc3NpZ25tZW50RXhwcmVzc2lvbikKQEAgLTI5
MjAsNyArMjkyMCw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IFJlZ2lzdGVySUQqIHJldHVyblJlc3VsdCA9IHJlc3VsdC5nZXQoKTsKICAgICBpZiAoIWlzUmVh
ZE9ubHkpIHsKLSAgICAgICAgcmV0dXJuUmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3Bl
KHNjb3BlLmdldCgpLCB2YXIsIHJlc3VsdC5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgp
ID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIGluaXRpYWxpemF0aW9u
TW9kZUZvckFzc2lnbm1lbnRDb250ZXh0KG1fYXNzaWdubWVudENvbnRleHQpKTsKKyAgICAgICAg
cmV0dXJuUmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIs
IHJlc3VsdC5nZXQoKSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZO
b3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3Np
Z25tZW50Q29udGV4dChtX2Fzc2lnbm1lbnRDb250ZXh0KSk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUocmVzdWx0LmdldCgpLCB2YXIsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgfQogCkBAIC0zMTQwLDcgKzMxNDAsNyBAQCBSZWdpc3RlcklEKiBFbXB0eUxldEV4
cHJlc3Npb246OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
cwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZh
bHVlLmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBE
b05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1
ZS5nZXQoKSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3Vu
ZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0
aW9uKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgdmFy
LCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsgbV9pZGVudC5sZW5ndGgoKSk7IAogICAgIH0KIApA
QCAtMzM1MCwxMyArMzM1MCwxMyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcHJvcGVydAogICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAg
ICAgICAgICAgZ2VuZXJhdG9yLm1vdmUobG9jYWwsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQorICAgICAg
ICAgICAgaWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICAgICAgaWYgKHZhci5pc1JlYWRPbmx5KCkpCiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShudWxscHRyLCB2YXIpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHByb3BlcnR5TmFtZSwgZ2Vu
ZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHByb3BlcnR5TmFt
ZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERv
Tm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
KTsKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByb3BlcnR5
TmFtZSwgdmFyLCBtX2xleHByLT5wb3NpdGlvbigpLCBtX2xleHByLT5wb3NpdGlvbigpICsgaWRl
bnQubGVuZ3RoKCkpOwogICAgIH07CkBAIC0zNjA3LDEzICszNjA3LDEzIEBAIHZvaWQgRm9yT2ZO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0
aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShsb2NhbCwg
dmFsdWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoZ2VuZXJh
dG9yLmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuZWNtYU1v
ZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHZhci5pc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxw
dHIsIHZhcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmlz
U3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIElu
aXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9y
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5v
dEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIHZhciwg
bV9sZXhwci0+cG9zaXRpb24oKSwgbV9sZXhwci0+cG9zaXRpb24oKSArIGlkZW50Lmxlbmd0aCgp
KTsKICAgICAgICAgfSBlbHNlIGlmIChtX2xleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKSB7CkBA
IC00Mzk3LDYgKzQzOTcsOCBAQCB2b2lkIENsYXNzRGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogUmVnaXN0ZXJJRCogQ2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKKyAgICBTdHJpY3RNb2RlU2NvcGUgc3RyaWN0TW9kZVNjb3BlKGdl
bmVyYXRvcik7CisKICAgICBpZiAobV9uZWVkc0xleGljYWxTY29wZSkKICAgICAgICAgZ2VuZXJh
dG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVHZW5lcmF0b3I6OlREWkNoZWNrT3B0
aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6Ok5lc3RlZFNjb3BlVHlwZTo6
SXNOZXN0ZWQpOwogCkBAIC00ODMxLDcgKzQ4MzMsNyBAQCB2b2lkIEJpbmRpbmdOb2RlOjpiaW5k
VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUpIGNv
bgogICAgICAgICAgICAgZ2VuZXJhdG9yLmxpZnRURFpDaGVja0lmUG9zc2libGUodmFyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQor
ICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90RW5kKCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC00ODQxLDcgKzQ4NDMsNyBA
QCB2b2lkIEJpbmRpbmdOb2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogdmFsdWUpIGNvbgogICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5
RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBnZW5l
cmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5p
c1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBp
bml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2JpbmRpbmdDb250ZXh0KSk7
CisgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBn
ZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RU
aHJvd0lmTm90Rm91bmQsIGluaXRpYWxpemF0aW9uTW9kZUZvckFzc2lnbm1lbnRDb250ZXh0KG1f
YmluZGluZ0NvbnRleHQpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCB2
YXIsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKG1fYmluZGluZ0NvbnRleHQg
PT0gQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50IHx8IG1fYmluZGluZ0Nv
bnRleHQgPT0gQXNzaWdubWVudENvbnRleHQ6OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQpCiAg
ICAgICAgIGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3NpYmxlKHZhcik7CkBAIC00ODc5LDcg
KzQ4ODEsNyBAQCB2b2lkIEFzc2lnbm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgaWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdl
bmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIG51bGxwdHIsIHNjb3BlLmdldCgpKTsKQEAg
LTQ4OTAsNyArNDg5Miw3IEBAIHZvaWQgQXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICAgICAgfQogICAg
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGlmICghaXNSZWFkT25seSkgewotICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0
b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3Vu
ZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRv
ci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZO
b3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCB2YXIsIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fYXNzaWdubWVudFRhcmdl
dC0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggMzljYmY4MmUyMTEzMjA1YjU2
ZjNhN2Q2ODc2MzVmMGMzZTcwZjE3YS4uZjQ1ZTAxZDA2NzE5MzA3NjJmYzA3MDg1NTBmM2U0N2Jj
YTNjNGI1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yMTIsOSArMjEyLDkgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNh
bGxGcmFtZTo6dGhpc1ZhbHVlKFZNJiB2bSkgY29uc3QKICAgICBpZiAoIXRoaXNWYWx1ZSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IE5v
dFN0cmljdE1vZGU7Ci0gICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKQotICAgICAgICBlY21hTW9kZSA9IFN0cmljdE1vZGU7CisgICAgRUNNQU1vZGUgZWNtYU1v
ZGUgPSBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQorICAgICAgICBlY21hTW9k
ZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsKICAgICByZXR1cm4gdGhpc1ZhbHVlLnRvVGhpcyhtX3Zh
bGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSwgZWNtYU1vZGUpOwogfQog
CkBAIC0yNTMsNyArMjUzLDggQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTT2IKICAgICBWYXJpYWJs
ZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9z
dXJlVmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNTY29wZSgpLCB2YXJpYWJsZXNVbmRlclRE
Wik7CiAKLSAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdp
bih2bSkpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRD
b2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJs
ZXNVbmRlclREWik7CisgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNN
QU1vZGU6OnNsb3BweSgpOworICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFtZS0+Y2FsbGVy
U291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZl
ZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+bmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fy
cm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBlY21h
TW9kZSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAg
ICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CiAgICAgICAgIGNhdGNoU2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5NTNmYmFlZjQ4ZjNh
NTU0ZDQ1OWJkOWEyYjNkNmU2M2RhYTdjYWM3Li4wZGU4Y2VmYTdiY2ZmZTM0ZWFjNDVmOTc5NmJl
ZTNkNzk5NTkzNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xODYsMTAgKzE4NiwxMCBAQCBl
bnVtIGNsYXNzIFRvVGhpc1Jlc3VsdCB7CiAgICAgR2xvYmFsVGhpcywKICAgICBEeW5hbWljLAog
fTsKLWlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBp
c1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmIHZhbHVlRm9yTm9kZSkKK2lubGluZSBUb1RoaXNS
ZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgRUNNQU1vZGUgZWNtYU1vZGUsIEFic3Ry
YWN0VmFsdWUmIHZhbHVlRm9yTm9kZSkKIHsKICAgICAvLyBXZSBsb29rIGF0IHRoZSB0eXBlIGZp
cnN0IHNpbmNlIHRoYXQgd2lsbCBjb3ZlciBtb3N0IGNhc2VzIGFuZCBkb2VzIG5vdCByZXF1aXJl
IGl0ZXJhdGluZyBhbGwgdGhlIHN0cnVjdHVyZXMuCi0gICAgaWYgKGlzU3RyaWN0TW9kZSkgewor
ICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgIGlmICh2YWx1ZUZvck5vZGUu
bV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIFNwZWNPYmplY3RPdGhlcikpCiAgICAg
ICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKICAgICB9IGVsc2UgewpAQCAt
MjAzLDIwICsyMDMsMjAgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHko
Vk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgICAgIGlm
ICh0b1RoaXNNZXRob2QgPT0gJkpTT2JqZWN0Ojp0b1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9k
ID09ICZKU1Njb3BlOjp0b1RoaXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2Rl
KQorICAgICAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmICgoaXNTdHJpY3RNb2RlIHx8ICh2YWx1ZUZvck5vZGUubV90eXBl
ICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkpICYmIHZhbHVlRm9yTm9k
ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAgaWYgKChlY21hTW9kZS5pc1N0cmljdCgp
IHx8ICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIH5TcGVj
T2JqZWN0KSkpICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CiAgICAg
ICAgIGJvb2wgYWxsU3RydWN0dXJlc0FyZUpTU2NvcGUgPSAhdmFsdWVGb3JOb2RlLm1fc3RydWN0
dXJlLmlzQ2xlYXIoKTsKICAgICAgICAgYm9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAg
ICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJl
LT50eXBlSW5mbygpOwogICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBl
LnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlw
ZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7Ci0gICAgICAgICAgICBpZiAoIWlzU3RyaWN0TW9kZSkK
KyAgICAgICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICBB
U1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8g
d29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVyOgogICAgICAgICAg
ICAgLy8gMSkgV2UgYXJlIGluIHN0cmljdCBtb2RlIGFuZCBzdHJpbmdzL3N5bWJvbHMgYXJlIG5v
dCB3cmFwcGVkCkBAIC0yMzAsNyArMjMwLDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhp
c0FuSWRlbnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAg
ICAgICAgaWYgKCFvdmVycmlkZXNUb1RoaXMpCiAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVz
dWx0OjpJZGVudGl0eTsKICAgICAgICAgaWYgKGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlKSB7Ci0g
ICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKQorICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlz
U3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6VW5kZWZpbmVk
OwogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKICAgICAgICAg
fQpAQCAtMjczMCw5ICsyNzMwLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSBmb3JOb2Rl
KG5vZGUpOwotICAgICAgICBib29sIHN0cmljdE1vZGUgPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5v
ZGUtPmVjbWFNb2RlKCk7CiAKLSAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlz
QW5JZGVudGl0eShtX3ZtLCBzdHJpY3RNb2RlLCBzb3VyY2UpOworICAgICAgICBUb1RoaXNSZXN1
bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fdm0sIGVjbWFNb2RlLCBzb3VyY2UpOwog
ICAgICAgICBzd2l0Y2ggKHJlc3VsdCkgewogICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6SWRl
bnRpdHk6CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0
cnVlKTsKQEAgLTI3NDYsNyArMjc0Niw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3QpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpEeW5hbWljOgotICAgICAg
ICAgICAgaWYgKHN0cmljdE1vZGUpCisgICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3Qo
KSkKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5tYWtlSGVhcFRvcCgpOwogICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDk5NjFk
OTAzMmQ2ODBkODUzNDY1OThkZTZhMmI4ZmFjZDczNDI3YmQuLjAyYzkwZDQwY2Y3MWVkZDY5ZDlh
NGJlMjFhMTk2MmM5ZmUxM2VmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNDUsMTAgKzI0NSwxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9u
LCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGUsIHVuc2lnbmVkIGlu
c3RydWN0aW9uU2l6ZSk7CiAgICAgdm9pZCBlbWl0UHV0QnlJZCgKLSAgICAgICAgTm9kZSogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgTm9kZSogdmFsdWUsICBjb25zdCBQdXRCeUlkU3RhdHVz
JiwgYm9vbCBpc0RpcmVjdCk7CisgICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJlY3QsIEVD
TUFNb2RlKTsKICAgICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVl
LCBjb25zdCBQdXRCeUlkU3RhdHVzJiwKLSAgICAgICAgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQg
aW50cnVjdGlvblNpemUpOworICAgICAgICBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnRydWN0
aW9uU2l6ZSwgRUNNQU1vZGUpOwogICAgIAogICAgIC8vIEVpdGhlciByZWdpc3RlciBhIHdhdGNo
cG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNvbmRpdGlvbi4gUmV0dXJucyBmYWxzZSBp
ZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIGhvbGRzLCBhbmQgdGhlcmVmb3JlIG5v
IHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQuCkBAIC04NDYsMTggKzg0NiwxOCBAQCBw
cml2YXRlOgogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNp
Z25hdHVyZSwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwK
KyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcElu
Zm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBpZiAob3AgPT0g
VGFpbENhbGwpIHsKICAgICAgICAgICAgIGlmIChhbGxJbmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KG9w
LCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9w
SW5mbygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVz
dWx0KG9wLCBvcEluZm8sIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8o
KSk7CiAgICAgICAgICAgICBvcCA9IFRhaWxDYWxsSW5saW5lZENhbGxlcjsKICAgICAgICAgfQog
CiAKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAg
ICAgICAgICAgIG9wLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0
ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICBvcCwgb3BJbmZvLCBj
YWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAg
ICAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzZXQocmVzdWx0LCBjYWxs
KTsKICAgICAgICAgcmV0dXJuIGNhbGw7CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBCeXRlQ29kZVBh
cnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51
bGxwdHIsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CisgICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwg
b3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVn
aXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBU
YWlsQ2FsbFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJn
cyk7CiAgICAgcmV0dXJuIGNhbGxOb2RlLT5vcCgpID09IFRhaWxDYWxsID8gVGVybWluYWwgOiBO
b25UZXJtaW5hbDsKIH0KQEAgLTIxODIsNyArMjE4Miw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBO
b2RlKiBteUNhbGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgaWYgKGNv
dWxkVGFrZVNsb3dQYXRoKSB7CiAgICAgICAgIGFkZENhbGwoCi0gICAgICAgICAgICByZXN1bHQs
IGNhbGxPcCwgbnVsbHB0ciwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsCisgICAgICAgICAgICByZXN1bHQsIGNhbGxPcCwgT3BJbmZvKCksIG15Q2FsbFRhcmdl
dE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgcmVnaXN0ZXJP
ZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICBWRVJCT1NFX0xPRygiV2UgYWRkZWQgYSBjYWxs
IGluIHRoZSBzbG93IHBhdGhcbiIpOwogICAgIH0gZWxzZSB7CkBAIC0zNjU2LDcgKzM2NTYsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQs
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQsCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA8PSBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRT
X0lOQ0xVRElOR19USElTLCAiQ3VycmVudGx5IENhbGxET00gZG9lcyBub3Qgc3VwcG9ydCBhbiBh
cmJpdHJhcnkgbGVuZ3RoIGFyZ3VtZW50cy4iKTsKIAogICAgIGluc2VydENoZWNrcygpOwotICAg
IGFkZENhbGwocmVzdWx0LCBDYWxsLCBzaWduYXR1cmUsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgYWRkQ2Fs
bChyZXN1bHQsIENhbGwsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC00NjE1LDIyICs0NjE1LDIyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUdldEJ5SWQoCiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRCeUlkKAot
ICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTm9kZSogdmFs
dWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QpCisg
ICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBOb2RlKiB2YWx1
ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgRUNN
QU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBhZGRUb0dyYXBo
KFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgYmFzZSwgdmFsdWUpOworICAgICAg
ICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGVj
bWFNb2RlKSwgYmFzZSwgdmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgYWRkVG9HcmFwaChwdXRC
eUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IFB1dEJ5SWRGbHVzaCA6IFB1dEJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgYmFzZSwgdmFsdWUpOworICAgICAgICBhZGRUb0dyYXBoKHB1dEJ5SWRTdGF0
dXMubWFrZXNDYWxscygpID8gUHV0QnlJZEZsdXNoIDogUHV0QnlJZCwgT3BJbmZvKGlkZW50aWZp
ZXIpLCBPcEluZm8oZWNtYU1vZGUpLCBiYXNlLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKLSAg
ICBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCB1bnNp
Z25lZCBpbnN0cnVjdGlvblNpemUpCisgICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0
YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhcHV0QnlJ
ZFN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7
CiAgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NldCgpKQogICAgICAgICAgICAgYWRkVG9H
cmFwaChGb3JjZU9TUkV4aXQpOwotICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICBlbWl0UHV0QnlJZChi
YXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2Rl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTQ2MzgsNyArNDYzOCw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIGlmICghbV9ncmFwaC5t
X3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKQogICAgICAgICAgICAg
fHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQogICAgICAgICAgICAg
fHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNB
Y2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2Us
IGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAg
ICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNE
aXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKQEAgLTQ2NDcsNyArNDY0Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5
SWQoCiAgICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5raW5k
KCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIGlmICghY2hlY2socHV0QnlJZFN0YXR1c1t2YXJpYW50
SW5kZXhdLmNvbmRpdGlvblNldCgpKSkgewotICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAg
ICAgICAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0
QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTQ2OTAsNyArNDY5MCw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAKICAgICAgICAgYWRkVG9H
cmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlh
bnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5j
b25kaXRpb25TZXQoKSkpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZp
ZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0
QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVj
bWFNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NzU3LDcgKzQ3
NTcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogCiAgICAgICAgIE5v
ZGUqIGxvYWRlZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVt
YmVyLCB2YXJpYW50KTsKICAgICAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewotICAgICAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0KTsKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBw
dXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIApAQCAtNDgwMSw3ICs0ODAxLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgCiAgICAgZGVmYXVsdDogewotICAgICAg
ICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNE
aXJlY3QpOworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0
QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0g
fQogfQpAQCAtNDk3Myw3ICs0OTczLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3RvX3RoaXM6
IHsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRoaXMoKTsKLSAgICAgICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKS5tZXRhZGF0YShj
b2RlQmxvY2spOworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BUb1RoaXM+KCk7CisgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBTdHJ1
Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoY2FjaGVk
U3RydWN0dXJlSUQpCkBAIC00OTg0LDcgKzQ5ODUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgp
CiAgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpCiAgICAgICAgICAgICAgICAgfHwgKG9w
MS0+b3AoKSA9PSBHZXRMb2NhbCAmJiBvcDEtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5zdHJ1Y3R1
cmVDaGVja0hvaXN0aW5nRmFpbGVkKCkpKSB7Ci0gICAgICAgICAgICAgICAgc2V0VGhpcyhhZGRU
b0dyYXBoKFRvVGhpcywgT3BJbmZvKCksIE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLCBvcDEpKTsK
KyAgICAgICAgICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgoVG9UaGlzLCBPcEluZm8oYnl0ZWNv
ZGUubV9lY21hTW9kZSksIE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLCBvcDEpKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAgICAg
ICAgICAgQ2hlY2tTdHJ1Y3R1cmUsCkBAIC01ODI0LDcgKzU4MjUsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQodGhpc1ZhbHVlKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsK
ICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKLSAgICAgICAgICAgIGFkZFRvR3Jh
cGgoTm9kZTo6VmFyQXJnLCBQdXRCeVZhbFdpdGhUaGlzLCBPcEluZm8oMCksIE9wSW5mbygwKSk7
CisgICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgUHV0QnlWYWxXaXRoVGhpcywg
T3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBPcEluZm8oMCkpOwogCiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KQEAgLTU4OTQs
MTQgKzU4OTUsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5t
X2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKICAgICAgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl07Ci0gICAgICAgICAgICBib29sIGRpcmVjdCA9ICEhKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRC
eUlkSXNEaXJlY3QpOworICAgICAgICAgICAgYm9vbCBkaXJlY3QgPSBieXRlY29kZS5tX2ZsYWdz
LmlzRGlyZWN0KCk7CiAKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1cyA9
IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCiAgICAgICAgICAgICAgICAgY3VycmVu
dENvZGVPcmlnaW4oKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdKTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwg
cHV0QnlJZFN0YXR1cywgZGlyZWN0LCBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAg
ICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssIHVpZCksIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBkaXJl
Y3QsIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2Rl
KCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X2lkKTsKICAgICAgICAgfQog
CkBAIC01OTEyLDggKzU5MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92
YWx1ZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07CiAgICAgICAg
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50
aWZpZXJOdW1iZXJdOwotCi0gICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWRXaXRoVGhpcywg
T3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBiYXNlLCB0
aGlzVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZFdpdGhUaGlz
LCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSksIE9wSW5m
byhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKICAgICAgICAgfQogCkBA
IC01OTQ4LDcgKzU5NDgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2Up
OwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tU
b3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwogICAgICAgICAgICAg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVy
TnVtYmVyXTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxl
dGVCeUlkLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSks
IGJhc2UpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxl
dGVCeUlkLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSks
IE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfZGVsX2J5X2lkKTsKICAgICAgICAgfQogCkBAIC01OTU2LDcgKzU5NTYsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsK
ICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAg
ICAgIE5vZGUqIGtleSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKLSAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeVZhbCwgYmFzZSwga2V5KSk7Cisg
ICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIE9w
SW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSwga2V5KSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9kZWxfYnlfdmFsKTsKICAgICAgICAgfQogCkBAIC02NDc5LDcgKzY0NzksNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICBjYXNlIG9wX2NhbGxfZXZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICAgICAgICAgIGludCByZWdpc3Rl
ck9mZnNldCA9IC1ieXRlY29kZS5tX2FyZ3Y7Ci0gICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2Rl
Lm1fZHN0LCBDYWxsRXZhbCwgbnVsbHB0ciwgZ2V0KGJ5dGVjb2RlLm1fY2FsbGVlKSwgYnl0ZWNv
ZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAg
IGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8oYnl0ZWNvZGUubV9lY21h
TW9kZSksIGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJP
ZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYWxs
X2V2YWwpOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTY4MjgsNyArNjgyOCw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICBpZiAobmVlZHNEeW5hbWljTG9va3VwKHJlc29sdmVUeXBlLCBvcF9wdXRfdG9fc2NvcGUpKSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXJOdW1iZXIgIT0gVUlOVF9NQVgpOwog
ICAgICAgICAgICAgICAgIHVpbnQ2NF90IG9wSW5mbzEgPSBtYWtlRHluYW1pY1Zhck9wSW5mbyhp
ZGVudGlmaWVyTnVtYmVyLCBnZXRQdXRJbmZvLm9wZXJhbmQoKSk7Ci0gICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZvMSksIE9wSW5mbygpLCBnZXQo
Ynl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZvMSksIE9wSW5mbyhnZXRQ
dXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5t
X3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3RvX3Njb3BlKTsK
ICAgICAgICAgICAgIH0KIApAQCAtNjg1MCw3ICs2ODUwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVz
Lm51bVZhcmlhbnRzKCkgIT0gMQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNbMF0ua2lu
ZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0
YXR1c1swXS5zdHJ1Y3R1cmUoKS5zaXplKCkgIT0gMSkgewotICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCB1aWQpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkp
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZ2V0
UHV0SW5mby5lY21hTW9kZSgpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNvZGUu
bV92YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IHdlYWtKU0NvbnN0YW50KGdsb2JhbE9iamVj
dCk7CkBAIC03NDk2LDggKzc0OTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVC
bG9jaygpCiAgICAgICAgICAgICAgICAgIiBmb3IgaW5saW5pbmcgYXQgIiwgQ29kZUJsb2NrV2l0
aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVFR5cGU6OkRGR0pJVCksCiAgICAgICAgICAgICAgICAg
IiAiLCBpbmxpbmVDYWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyKTsKICAgICAgICAgfQotICAgICAg
ICBkYXRhTG9nKAotICAgICAgICAgICAgIiwgaXNTdHJpY3RNb2RlID0gIiwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCksICJcbiIpOworICAgICAgICBkYXRhTG9n
TG4oKTsKICAgICAgICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKS0+ZHVtcEJ5dGVjb2Rl
KCk7CiAgICAgfQogICAgIApAQCAtNzYwNCw3ICs3NjAzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGluc3RydWN0aW9u
U2l6ZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkKLSAgICAg
ICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwg
dmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBpbnN0cnVjdGlvblNpemUpOworICAgICAg
ICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2
YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0aW9uU2l6ZSwgYnl0ZWNvZGUu
bV9lY21hTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewpAQCAt
NzYxNSw3ICs3NjE0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0
ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSkKICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9v
bSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExl
YXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlz
RGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dv
cmQoKSksIE9wSW5mbygwKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0Rp
cmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3Jk
KCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZh
bHNlOyAvLyBQdXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlm
IHRoZXkgY2xvYmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0g
Z2VuZXJpYy4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDY1MDUzY2ViNWUwODdhMGNkNGEzMTQ4
MGFmZGU4ZDY1MTgxZWQxNDMuLmU3ODAxZjgyMWMxM2Y1MWRmODliYjNmYzUxNmE4M2U1NmY1MzY4
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCkBAIC03NDQsNyArNzQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgY2FzZSBUb1RoaXM6IHsKLSAgICAgICAgICAgICAgICBUb1RoaXNS
ZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbV9ncmFwaC5p
c1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKSk7CisgICAgICAgICAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlz
VG9UaGlzQW5JZGVudGl0eShtX2dyYXBoLm1fdm0sIG5vZGUtPmVjbWFNb2RlKCksIG1fc3RhdGUu
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
VG9UaGlzUmVzdWx0OjpJZGVudGl0eSkgewogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDc5YTljNGZh
YjUwZTZjNjY1NWE0NmQ0YzlhMWY5OGJlZjNjNzhmMzcuLjRmY2JjZmMzZGIxOWI5NWQyYThkNGYz
OTk4NGYxYTkzYTgyYzJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcApAQCAtMjgzMSw3ICsyODMxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZml4
dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0g
bV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCk7CiAKICAgICAg
ICAgaWYgKGlzU3RyaWN0TW9kZSkgewogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAppbmRleCA5NDdlZmFhYmE5ZTY0OTZiM2IwNWM2ZjU1MTQyYWI3Yzc3YjViNWEyLi4xNjY2ZDc1
Mzg3ZGJjNTU0MDJjOWY3YmUwMzYxMTc1YmM3NWM4MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCkBAIC00NDEsNyArNDQxLDcgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBn
bG9iYWxUaGlzT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7CiAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7Ci0g
ICAgICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1ldGhvZFRhYmxlKG1fdm0p
LT50b1RoaXMob2JqZWN0LCBvYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICAgICAgcmV0dXJu
IGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUobV92bSktPnRvVGhpcyhvYmpl
Y3QsIG9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAgICAgfQogICAgIAogICAgIFNjcmlw
dEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVGb3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWUpCkBAIC00NjksMTggKzQ2OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJhc2VsaW5l
Q29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgbV9wcm9m
aWxlZEJsb2NrKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdE1vZGVGb3IoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KTsKLSAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCktPmlzU3RyaWN0
TW9kZSgpOwotICAgIH0KLSAgICAKLSAgICBFQ01BTW9kZSBlY21hTW9kZUZvcihDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RNb2RlRm9yKGNvZGVP
cmlnaW4pID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7Ci0gICAgfQotICAgIAogICAgIGJv
b2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICB7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmlzU3Rp
bGxWYWxpZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBiYzdjZmIxMmQw
YThlMmQzMmUyNzI5N2Y3NDhhNjU1ZTM1MTcyNjc2Li4yOTVmYzhjYjY2MDU4Zjg3OTIxNzNjYjI5
OWQzYjk5YmVhNDQ1YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjIw
NCw2ICsyMjA0LDUzIEBAIHB1YmxpYzoKICAgICAgICAgbV9vcEluZm8gPSBhcnJheU1vZGUuYXNX
b3JkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKworICAgIGJvb2wgaGFzRUNNQU1v
ZGUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQ2FsbEV2
YWw6CisgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoK
KyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAg
ICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAg
ICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgorICAgICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6Cisg
ICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKKyAgICAgICAgY2FzZSBUb1RoaXM6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChoYXNFQ01BTW9kZSgpKTsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7
CisgICAgICAgIGNhc2UgQ2FsbEV2YWw6CisgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CisgICAg
ICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2FzZSBUb1RoaXM6CisgICAgICAg
ICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkpOwor
ICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAg
Y2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKKyAgICAgICAg
Y2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgIGNh
c2UgUHV0QnlWYWxBbGlhczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKKyAgICAgICAg
Y2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0
ZShtX29wSW5mbzIuYXM8dWludDhfdD4oKSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIEVDTUFN
b2RlOjpzdHJpY3QoKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICBib29sIGhhc0FyaXRo
TW9kZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKaW5kZXggNDVl
N2FjM2RiNThmNjViNzhhYjYwMmU3OGU0YTMxYzQ0NTgzYzljNy4uMGU0YzMxYmYwZDdlNTg1OGJi
ZGI3NDQyMzBhNjM2N2M0ZmEwYjYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5m
by5oCkBAIC00Nyw2ICs0Nyw3IEBAIHN0cnVjdCBPcEluZm8gewogICAgIGV4cGxpY2l0IE9wSW5m
byhSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdHJ1Y3R1cmUpKSkgeyB9CiAgICAgZXhw
bGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92YWx1ZShvcC5hc0JpdHMoKSkgeyB9CiAgICAg
ZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJhd0JpdHMoKSkpIHsgfQorICAgIGV4
cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFNb2RlLnZhbHVl
KCkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGljaXQgT3BJbmZv
KFQqIHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmlu
ZGV4IGYwYWRkOWFlNTYwMGZlZWVhOTA0NjFiY2I5ZjE4ZWQ0MjY1NWM3NmQuLmM3ZTM5ZjI2YjQy
N2YzMjBlYTNlZWY0MzQ1ZDJhYjNjNGNkODM4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjk4LDcgKzI5OCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTMwNyw3ICszMDcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwogfQogCiBKU0FycmF5KiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkKQEAgLTM0MTQsNyArMzQxNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxv
Y2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9j
YWxDbG9iYmVyaXplLmgKaW5kZXggMzYxODFhMjgyMTMzOWU4OGI2NjNjNjU4NzFjMGRhM2NjNDRk
ZThhMi4uYmFhMjFjMGJiZmEyYWNmYmE1MGQ1YThmOTkzMmQzMTRkYjU0NDlmMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
LmgKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGRl
ZmF1bHQ6IHsKICAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJtb3N0IGFyZ3VtZW50cywg
ZXhjZXB0IHRoaXMsIGFyZSByZWFkIGluIHNsb3BweSBtb2RlLgotICAgICAgICAgICAgaWYgKCFt
X2dyYXBoLm1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgaWYgKCFt
X2dyYXBoLm1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQo
KSkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CiAgICAgICAgICAgICB9
CkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgICAgICAvLyBS
ZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50cyBhbmQgY2FsbCBmcmFtZSBoZWFkZXJzIHRo
YXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4KICAgICAgICAgICAgIGZvciAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWUoKTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxs
RnJhbWUtPmdldENhbGxlcklubGluZUZyYW1lU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewotICAgICAg
ICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAg
ICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0luU3RyaWN0Q29udGV4dCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKS5vZmZzZXQoKSkpOwogICAgICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4ODU4YjM4YzE2YTY1YThj
OGViZGI5ZDQzNzAxMjgzNDcyYTUwYS4uYTA3YmJmNDY2MTczYTBjM2IyNTljZjU2NGM3OGEyNmMx
OGNiYzNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUwNiw3ICs1MDYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgICAgICAv
LyBUb1RoaXMgaW4gbWV0aG9kcyBmb3IgcHJpbWl0aXZlIHR5cGVzIHNob3VsZCBzcGVjdWxhdGUg
cHJpbWl0aXZlIHR5cGVzIGluIHN0cmljdCBtb2RlLgotICAgICAgICAgICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0
KCk7CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0Jvb2xlYW4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBkMzhj
ZmRmMmFlMjg0OWUxMzk3YjBkZWM5MWY5ZmMwMzljZjljM2NjLi5mYTdmNDY0ZTJhMGY0YzNjZTNm
MmExNjE3Njk1YzJlYWM0NzMwNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjExOSw3ICsyMTE5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUsIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kJiBiYXMKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBz
bG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCi0gICAgICAgICAg
ICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAg
ICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAg
ICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5
VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZh
bEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICA6IChub2RlLT5v
cCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlv
bmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJy
YXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0z
MTUwLDI0ICszMTUwLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhp
cywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3ROb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0
cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZUdQUikpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQu
aXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZh
bFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LAorICAgICAgICAgICAgICAgIG5v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWVHUFIpKTsKICAgICAg
ICAgfQogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAgICAg
ICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/
IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0Q2VsbE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdENlbGxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eVRhZ0dQUiwg
cHJvcGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVHUFIpKSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
CiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICBt
X2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1
dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdCwKKyAgICAg
ICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZh
bENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QsCiAgICAgICAgICAg
ICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBKU1ZhbHVl
UmVncyhwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwg
dmFsdWVHUFIpKSk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzI5OSw3ICszMjk5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSog
bm9kZSwgRWRnZSYgY2hpbGQxLAogICAgIHNwZWN1bGF0ZVN0cmluZyhjaGlsZDIsIGFyZzJHUFIp
OwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3Ry
aWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxs
U3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3RyaWN0LCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1JlZ3MpOworICAg
IGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0
QnlWYWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3Ry
aWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1Jl
Z3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsK
QEAgLTMzMTgsNyArMzMxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZh
bEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwKICAgICBzcGVjdWxh
dGVTeW1ib2woY2hpbGQyLCBhcmcyR1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAg
Y2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
Q2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIs
IGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMTMyOSw3ICsxMTMyOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25Q
dXREeW5hbWljVmFyTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVH
UFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBu
b2RlLT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5
bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwg
dmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUt
PmdldFB1dEluZm8oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBub1Jlc3Vs
dChub2RlKTsKIH0KQEAgLTEyMjE1LDcgKzEyMjE1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c2NyYXRjaC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgY2FjaGVkUHV0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIE1hY3JvQXNzZW1ibGVyOjpK
dW1wKCksIERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1w
KCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjMwLDcgKzEy
MjMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9kZSkK
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAK
ICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjQ1LDcgKzEyMjQ1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNo
R1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgRGlyZWN0KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2Rl
KTsKIH0KQEAgLTEyMjYwLDcgKzEyMjYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5SWRXaXRoVGhpcyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9
IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxP
cGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBv
cGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMs
CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCiAgICAg
ICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1JlZ3MsIHZhbHVl
UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CiAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMTI2MjksNyArMTI2MjksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQubW92ZVZhbHVlUmVn
cyh0aGlzVmFsdWVSZWdzLCB0ZW1wUmVncyk7CiAKICAgICBKX0pJVE9wZXJhdGlvbl9HSiBmdW5j
dGlvbjsKLSAgICBpZiAobV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpCisgICAgaWYgKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgZnVuY3Rp
b24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAgZWxzZQogICAgICAgICBmdW5jdGlvbiA9
IG9wZXJhdGlvblRvVGhpczsKQEAgLTEzODI4LDcgKzEzODI4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2Ny
YXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3Bp
bGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBz
Y3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2lu
ZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdp
c3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250
U3BpbGwpIHsKQEAgLTEzODQwLDcgKzEzODQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCks
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAogICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAgICAg
c2NyYXRjaEdQUiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiksIHB1dEtpbmQpOworICAg
ICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCk7CiAKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aChtX2ppdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAppbmRleCAyMzA2MWU1M2MxNTNiMGExMTVlN2UxN2EwMjMwZmViNjk5MmY5ZWYz
Li4xMGViYjliZjFiMjk4YjJhNzJiNTUzZDRmZDZmOGM3Yjg1OGRkODQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MTcsNyArNzE3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUNoZWNrTmV1dGVyZWQoTm9kZSopOwogCiAgICAg
dm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxs
UmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNj
cmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVn
aXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hlZEdldEJ5VmFsKENvZGVP
cmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVn
cyByZXN1bHQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAogI2lmIFVTRShK
U1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCAxMzMyMTU1ZTEyODJlNTEzYjdlMWNjNDM4YTJiYmY4NGU1ZmM2NWY2
Li5hZWJkNDU1ZDA1MGUzZDQzODAwZTNjMWU4NjM2NWNlYzNjNjhiNjRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTc2MCw3
ICs3NjAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAg
ICAgICB1bnNpZ25lZCByZXF1aXJlZEJ5dGVzID0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsg
c2l6ZW9mKENhbGxGcmFtZSopICogMjsKICAgICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwog
ICAgICAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBKSVRDb21w
aWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSwgR1BSSW5mbzo6cmVn
VDEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxs
RXZhbCk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIHByZXBhcmVGb3JFeHRl
cm5hbENhbGwoKTsKICAgICAgICAgbV9qaXQuYXBwZW5kQ2FsbChvcGVyYXRpb25DYWxsRXZhbCk7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0yNzI1LDkgKzI3MjYsOSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJS
ZWcgYXJnM0dQUiA9IGFyZzMuZ3ByKCk7CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpCi0gICAgICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3ROb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBh
cmcyR1BSLCBhcmczR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVj
bWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5v
blN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFy
ZzNHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5v
blN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFy
ZzNHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0yODA5LDcgKzI4MTAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBpZiAoYXJy
YXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMs
Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAg
ICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9u
ZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcp
KTsKQEAgLTI4OTMsNyArMjg5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIGlmICghc2xvd0Nhc2VzLmVtcHR5KCkpIHsKICAgICAgICAg
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJp
Y3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IChub2Rl
LT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRB
cnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJp
Y3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAg
ICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcs
IHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwpAQCAtMzg5Nyw3ICszODk4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIg
PSB2YWx1ZS5ncHIoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8g
b3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRo
aXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHBy
b3BlcnR5R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsV2l0aFRoaXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BS
LCB0aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC01NDY1LDcgKzU0
NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2Rl
KQogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCku
dmFsdWUoKSkpOwogCiAgICAgICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAg
LTU0ODQsNyArNTQ4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlk
KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwpAQCAtNTUyMyw3ICs1NTI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIGtleVJlZ3MpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogCiAgICAgICAgIG1faml0LmFkZERlbEJ5
VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihX
VEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC01NTQzLDcgKzU1NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRl
QnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxs
cHRyLCBiYXNlUmVncywga2V5UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51
bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52
YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAzNDk4ZjkxMjE0YWI3YjE0YWEyZTFlMmU5YmVi
OGY5ODNmZTIyODA4Li4yNDViNmExZWY0NDhmZWM4NjY2NGEzYzRiZmU2ZjZlNGU0ODI2NjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0y
MTIwLDcgKzIxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1
bmN0aW9uOwotICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpKQorICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkp
CiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0cmljdDsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7CkBAIC0zNjgyLDcg
KzM2ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMygpKTsKIAotICAgICAgICB2bUNhbGwoVm9pZCwgbV9ncmFwaC5pc1N0cmlj
dE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhU
aGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAorICAgICAgICB2bUNhbGwoVm9p
ZCwgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRo
aXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCiAgICAgICAgICAgICB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlLCBtX291dC5jb25zdElu
dFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpKTsKICAgICB9CiAK
QEAgLTM2OTQsNyArMzY5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9
IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKICAgICAgICAgTFZh
bHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwog
Ci0gICAgICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxXaXRoVGhpcywKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsV2l0aFRoaXMsCiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQogICAgIApAQCAt
Mzk2Nyw3ICszOTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50
Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9m
dGxTdGF0ZTsKLSAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBtX2dyYXBoLmV4ZWN1dGFibGVG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZWNtYU1vZGUoKTsKKyAgICAgICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogICAgICAgICAKICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTQ4MjUsMTIgKzQ4MjUs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWX0pJVE9wZXJhdGlvbl9HQ0NKIG9wZXJh
dGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMi51c2VLaW5kKCkgPT0g
U3RyaW5nVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUHV0
QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3Ry
aWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5n
U3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05v
blN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
YykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9u
UHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFs
Q2VsbFN0cmluZ05vblN0cmljdDsKQEAgLTQ4NDEsMTIgKzQ4NDEsMTIgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAgICAgICAgIGlmIChjaGlsZDIudXNlS2luZCgpID09IFN5bWJvbFVzZSkgewogICAg
ICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFN0cmljdDsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRp
b24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xOb25TdHJpY3Q7CiAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJv
bFN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJp
Y3Q7CkBAIC00ODU4LDEyICs0ODU4LDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIFZfSklU
T3BlcmF0aW9uX0dKSkogb3BlcmF0aW9uOwogICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0
TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgaWYgKG1f
bm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRp
b24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdDsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
Tm9uU3RyaWN0OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Q7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZh
bE5vblN0cmljdDsKQEAgLTQ5MDksNyArNDkwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZh
bE91dE9mQm91bmRzKAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmlzU3RyaWN0TW9kZUZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+
b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJy
YXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0
KQogICAgICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAg
ICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNvbnRpbnVhdGlvbik7CkBA
IC00OTM1LDcgKzQ5MzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBjb250aWd1b3VzUHV0QnlWYWxPdXRPZkJvdW5kcygK
LSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0
cmljdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IChtX25vZGUtPm9wKCkgPT0gUHV0QnlW
YWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRz
U3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkK
ICAgICAgICAgICAgICAgICAgICAgICAgIDogKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwK
ICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3RvcmFnZSwgaW5kZXgsIHZhbHVlLCBjb250aW51
YXRpb24pOwpAQCAtNDk3NSw3ICs0OTc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1
ZSBpc091dE9mQm91bmRzID0gbV9vdXQuYWJvdmVPckVxdWFsKAogICAgICAgICAgICAgICAgIGlu
ZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hlYXBzLkFycmF5U3RvcmFn
ZV92ZWN0b3JMZW5ndGgpKTsKIAotICAgICAgICAgICAgYXV0byBzbG93UGF0aEZ1bmN0aW9uID0g
bV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAg
ICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KQogICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgIDogKG1fbm9k
ZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25k
QXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRz
Tm9uU3RyaWN0KTsKICAgICAgICAgICAgIGlmICghYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkg
ewpAQCAtNTI0MCw3ICs1MjQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1Bh
dGhDYWxsKTsKQEAgLTUyNjksNyArNTI2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk3CiAgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5u
b3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgbV9vdXQuY29uc3RJ
bnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKSkpKTsKKyAgICAg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9u
RGVsZXRlQnlJZEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1fb3V0LmludFB0
clplcm8sIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLnJhd0JpdHMoKSksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNTMxMCw3ICs1MzEw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsK
LSAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3Bl
cmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291
dC5pbnRQdHJaZXJvLCBiYXNlLCBzdWJzY3JpcHQpKSk7CisgICAgICAgICAgICBzZXRCb29sZWFu
KG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJp
Yywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgc3Vi
c2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05ODA1LDcgKzk4MDUsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlcXVpcmVkQnl0ZXMgPSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykgKyBzaXplb2YoQ2FsbEZyYW1lKikgKiAyOwogICAgICAgICAgICAg
ICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oZ2xvYmFs
T2JqZWN0LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50
R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9u
QXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTMzNTUsNyArMTMzNTYsNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKFZvaWQsIG1fZ3Jh
cGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1
dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LAorICAg
ICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFy
Tm9uU3RyaWN0LAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQu
Y29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmdldFB1dEluZm8oKSkp
KTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDA4MGZhZWRlODFhMjI2ODIyMWQx
YzUwODk0MWQ5ZWYyNzEyNzlhMjAuLjk3YmZiMjAyZTVmNzQ4NGU2Y2E0YjQ5ZDE0YmFjN2YzMTYz
ZGNiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgSlNWYWx1ZSBKU0lu
amVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamUKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09i
amVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgTm90U3RyaWN0TW9kZSkpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgIHJldHVybiBqc1N0cmluZyh2bSwgSlNPYmplY3Q6
OmNhbGN1bGF0ZWRDbGFzc05hbWUob2JqZWN0KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDUxODhjMDIzOWRmNDZl
MDAyZGM5ZTJhMWIzNzIxYjVkMGIwYzBmOGUuLmM0ZDljNzI3ZTA3MThlZWFlZjAwNjgyODQ0YzU0
NzNkYjIyYmJmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1KU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCitKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogCiAgICAgRGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmRpcmVjdEV2YWxDb2RlQ2FjaGUoKS50cnlHZXQo
cHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ2FsbFNpdGVJbmRleCk7CiAgICAgaWYgKCFldmFsKSB7Ci0g
ICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICBp
ZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9ncmFtU291cmNl
LmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gcHJlcGFy
c2VyKGdsb2JhbE9iamVjdCwgcHJvZ3JhbVNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBwcm9ncmFtU291
cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OLCBjYWxsZXJDb2RlQmxvY2spOwogICAgICAgICAg
ICAgICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFy
c2UoKSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIAogICAgICAgICBWYXJp
YWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICBKU1Njb3BlOjpjb2xs
ZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxlc1Vu
ZGVyVERaKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xv
YmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291
cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBjYWxsZXJDb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxs
ZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24o
KSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOworICAgICAgICBldmFsID0g
RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2UocHJv
Z3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VP
cmlnaW4oKSksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPm5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNhbGxl
ckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigp
LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOwogICAgICAg
ICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgICAg
ICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTEwNTcs
NyArMTA1Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUq
IGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAgdW5zaWduZWQgbnVtRnVu
Y3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMgPSBldmFsLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlk
YXRlcygpOwogCiAgICAgSlNTY29wZSogdmFyaWFibGVPYmplY3Q7Ci0gICAgaWYgKChudW1WYXJp
YWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSAmJiBldmFsLT5pc1N0cmljdE1vZGUo
KSkgeworICAgIGlmICgobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykg
JiYgZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkgewogICAgICAgICBzY29wZSA9IFN0cmljdEV2
YWxBY3RpdmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c3RyaWN0RXZhbEFjdGl2YXRp
b25TdHJ1Y3R1cmUoKSwgc2NvcGUpOwogICAgICAgICB2YXJpYWJsZU9iamVjdCA9IHNjb3BlOwog
ICAgIH0gZWxzZSB7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxv
Y2stPnVubGlua2VkRXZhbENvZGVCbG9jaygpOwogCiAgICAgLy8gV2UgY2FuJ3QgZGVjbGFyZSBh
ICJ2YXIiLyJmdW5jdGlvbiIgdGhhdCBvdmVyd3JpdGVzIGEgZ2xvYmFsICJsZXQiLyJjb25zdCIv
ImNsYXNzIiBpbiBhIHNsb3BweS1tb2RlIGV2YWwuCi0gICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5p
c0dsb2JhbE9iamVjdCgpICYmICFldmFsLT5pc1N0cmljdE1vZGUoKSAmJiAobnVtVmFyaWFibGVz
IHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKKyAgICBpZiAodmFyaWFibGVPYmplY3Qt
PmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkgJiYgKG51bVZh
cmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpKSB7CiAgICAgICAgIEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPih2YXJpYWJsZU9iamVjdCktPmdsb2JhbExleGljYWxFbnZpcm9ubWVudCgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsK
ICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gdW5saW5rZWRDb2RlQmxvY2st
PnZhcmlhYmxlKGkpOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWwKIAogICAgIGlmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzIHx8
IG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKSB7CiAgICAgICAgIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyIG9wdGltaXplcih2bSwgdmFyaWFibGVPYmplY3QpOwotICAgICAgICBpZiAo
dmFyaWFibGVPYmplY3QtPm5leHQoKSAmJiAhZXZhbC0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAg
IGlmICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpICYmICFldmFsLT5pc0luU3RyaWN0Q29udGV4dCgp
KQogICAgICAgICAgICAgdmFyaWFibGVPYmplY3QtPmdsb2JhbE9iamVjdCh2bSktPnZhckluamVj
dGlvbldhdGNocG9pbnQoKS0+ZmlyZUFsbCh2bSwgIkV4ZWN1dGVkIGV2YWwsIGZpcmVkIFZhcklu
amVjdGlvbiB3YXRjaHBvaW50Iik7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bVZhcmlhYmxlczsgKytpKSB7CkBAIC0xMTQ0LDcgKzExNDQsNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBp
ZiAoZXZhbC0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgaWYgKGV2YWwtPmlzSW5TdHJpY3RD
b250ZXh0KCkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3BM
ZXZlbEZ1bmN0aW9uRGVjbHM7ICsraSkgewogICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAgICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh2YXJpYWJsZU9iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDkwYTlkYjVjNWE5
ZmIwMjU2YzU3ZDFkNmNlNDk5YTdmZTczMWUwODUuLjY0NTM5MTI3YjhjNzRjODIwMjliMmJiNjE4
MGU2OTY5NzFhNjRiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCkBAIC0xNTAsNyArMTUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5k
aWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICB9OwogCi0gICAgSlNWYWx1
ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgSlNWYWx1ZSBldmFsKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpOwogCiAgICAgaW5saW5lIENhbGxG
cmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25l
ZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5k
ZXggNzBmNWRkNDgxZjE2ZGYxNmFiZGQzMjNiYjQ2NGI1NzAyNjRkYjNiYy4uYWJhMGVlYjU5NWJk
MDA1OTczMzVjZmQzMTA4NWE0YTc2NjFlNjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNDcyLDE5ICsxNDcyLDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdE1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQotICAgIHsKLSAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUoKTsKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAg
ICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOwotICAgICAgICByZXR1cm4gaW5s
aW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKTsKLSAgICB9Ci0gICAgCi0gICAgRUNNQU1vZGUg
ZWNtYU1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGlzU3RyaWN0TW9kZUZvcihjb2RlT3JpZ2luKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2Rl
OwotICAgIH0KLSAgICAKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZUZvcihjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcAppbmRleCBiMmJmY2U2MzM3ZDliZTAyZDYxZjM4OTVjZTVlY2EzYTBk
NzgzMjA2Li5lMWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZmYjQ0NzFmZmNiMjBiODY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBib29sIEpJ
VDo6Y29tcGlsZUNhbGxFdmFsKGNvbnN0IE9wQ2FsbEV2YWwmIGJ5dGVjb2RlKQogICAgIGFkZFB0
cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVv
ZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
ICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHJlZ1QxKTsKKyAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCByZWdUMik7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsRXZhbCwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLCByZWdUMSwgcmVnVDIpOwogCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZFbXB0
eShyZWdUMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDk4Zjk0YTI2ODgzMTY5MWY2Nzk1YjI3OWYxYjcw
OWQxYWQxMWU0MGYuLjIyNmU2Yjc5ODUxYjYxYmNjYmQ1MTA3Y2ZhNWZjYzMwMjYwZTc5NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3BlcmF0aW9uX0dT
c2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7Ci0gICAgaWYg
KG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgeworICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0
KCkpIHsKICAgICAgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwogICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGE2NDdjNDViM2Y0ZTNi
NDNkYjVkNDYwNTVkZjc1OGI2YjkyZWY4ZWEuLmYwM2UwOTI1Mzg1NDFmYjAzNDBmMTJjNmJhOGE2
MTExMWYzMzY3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTEyOCw3ICsxMjgsOSBAQCBwdWJsaWM6CiAKIGNsYXNz
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6
Ci0gICAgSklUUHV0QnlJZEdlbmVyYXRvcigpIHsgfQorICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Io
KQorICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQorICAgIHsgfQogCiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCmluZGV4IDIzZmY1YzgxYzFjMDMyMjJmOTEyYTQ5OTMxZjI4MzZkYWRjZmFjYjcu
LjdkY2JlOGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3NTY1NTMzZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0xNjYsNyArMTY2LDcgQEAgQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRKU1ZhbHVlUmUKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Nsb3dDYXNlSWZOb3RK
U0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgVmlydHVhbFJlZ2lz
dGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKHJl
ZykpCisgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkKICAgICAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwogfQogCkBAIC00OTYsNyArNDk2LDcgQEAgaW5saW5lIHZvaWQgSklU
OjplbWl0U3RvcmUoVmlydHVhbFJlZ2lzdGVyIHJlZywgY29uc3QgSlNWYWx1ZSBjb25zdGFudCwg
UmVnaXN0ZXIKIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
VmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90
SW1tZWRpYXRlKHJlZykpIHsKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcp
KSB7CiAgICAgICAgIGlmIChyZWcuaXNDb25zdGFudCgpKQogICAgICAgICAgICAgYWRkU2xvd0Nh
c2UoanVtcCgpKTsKICAgICAgICAgZWxzZQpAQCAtNTA2LDcgKzUwNiw3IEBAIGlubGluZSB2b2lk
IEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdpc3RlciByZWcpCiAK
IGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdp
c3RlciByZWcsIFJlZ2lzdGVySUQgdGFnKQogewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25v
d25Ob3RJbW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxs
KHJlZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBhZGRT
bG93Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC02MDAsNyArNjAwLDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQg
cmVnKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoUmVnaXN0ZXJJRCByZWcsIFZpcnR1YWxSZWdpc3RlciB2UmVnKQogewotICAgIGlmICghbV9j
b2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUodlJlZykpCisgICAgaWYgKCFtX2NvZGVCbG9j
ay0+aXNLbm93bkNlbGwodlJlZykpCiAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCA1NzZmNWY1NGVlN2M4ZTc1MjY2OTJjOTA0ZDBiYjY0MmUzYmI1NjM5Li4zMjE4MzQw
NjQwNTk1NGJiYjYxMjU5NWIyZTk1ZGNlYzM0ZWFhOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8s
IERpcmVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1
ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQorc3RhdGlj
IHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNl
VmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTcxNywx
MiArNzE3LDEyIEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAKICAgICAgICAgICAgIGJ5VmFs
SW5mby0+YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5k
ZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBiYXNlVmFsdWUucHV0QnlJbmRleChnbG9i
YWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzSW50MzIoKSkgewogICAgICAgICBieVZhbElu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CkBAIC03MzgsMTUgKzczOCwxNCBAQCBzdGF0aWMgdm9p
ZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSlNWYWx1ZQogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAK
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
LCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlVmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQogCi1zdGF0aWMgdm9pZCBk
aXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVl
IHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3N0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKU1Zh
bHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFN
b2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYm9vbCBpc1N0cmljdE1v
ZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwogCiAgICAgaWYgKExJS0VMWShzdWJzY3Jp
cHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6
aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQzMl90
OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgpAQCAtNzY4LDcgKzc2
Nyw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIH0KIAogICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9i
amVjdCwgaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3Vs
ZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CisgICAgICAgIGJhc2VPYmpl
Y3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCAwLCBlY21hTW9k
ZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4
U2hvdWxkTm90VGhyb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NzgsNyArNzc3
LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAgICAgaWYgKHN1YnNjcmlwdEFzRG91
YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7
CiAgICAgICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRl
eChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2Rl
ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhy
b3cpOworICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC03OTAsNyArNzg5LDcgQEAg
c3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1Bh
dGggPSB0cnVlOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2VPYmplY3Qt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIGlz
U3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNo
b3VsZE5vdFRocm93KTsKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgZWNtYU1vZGUuaXNTdHJpY3QoKSA/IFB1
dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzk4LDcgKzc5Nyw3IEBAIHN0YXRpYyB2b2lk
IGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKIAog
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBpc1N0cmljdE1vZGUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGVj
bWFNb2RlLmlzU3RyaWN0KCkpOwogICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJl
aWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7
CiB9CiAKQEAgLTg4NCw3ICs4ODMsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeVB1
dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgIHJl
dHVybiBvcHRpbWl6YXRpb25SZXN1bHQ7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtOTAyLDcgKzkwMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kCiAg
ICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgY3RpUGF0Y2hD
YWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwg
b3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKICAgICB9Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJz
Y3JpcHQsIHZhbHVlLCBieVZhbEluZm8pKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZh
bEluZm8sIGVjbWFNb2RlKSk7CiB9CiAKIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5RGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBvYmplY3QsIEpT
VmFsdWUgc3Vic2NyaXB0LCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKQpAQCAtOTc0LDcgKzk3Myw3IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1
bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
CiAgICAgcmV0dXJuIG9wdGltaXphdGlvblJlc3VsdDsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC05OTUsMTAgKzk5NCwxMCBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
UmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGly
ZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIG9iamVjdCwgc3Vic2NyaXB0LCB2
YWx1ZSwgYnlWYWxJbmZvKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkaXJlY3RQ
dXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZv
LCBlY21hTW9kZSkpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBA
IC0xMDA4LDExICsxMDA3LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiAgICAgSlNWYWx1
ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogCi0gICAgcHV0QnlW
YWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBiYXNlVmFsdWUsIHN1YnNj
cmlwdCwgdmFsdWUsIGJ5VmFsSW5mbyk7CisgICAgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNl
VmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCiAKLXZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1v
ZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTEwMjIsMTAg
KzEwMjEsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNl
VmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVl
LCBieVZhbEluZm8pOworICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3Qo
YmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSkKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEwMzUsNyArMTAzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsCiAgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVGcmFtZS0+Z3VhcmFudGVlZEpT
VmFsdWVDYWxsZWUoKSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsZWVGcmFtZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsKGdsb2JhbE9iamVj
dCwgY2FsbGVlRnJhbWUsIGVjbWFNb2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0yMTYzLDcgKzIxNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVy
aWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldE93blByb3BlcnR5KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxNzMsMTIgKzIxNzIsMTIgQEAgc3Rh
dGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgVk0mIHYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgY291
bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmosIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYgZWNtYU1vZGUu
aXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
VW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9
CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
cikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
ciwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTIxOTIsMjEgKzIxOTEsMjEgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFMKICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
UmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CiAKLSAgICBib29sIHJl
c3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNl
VmFsdWUsIGlkZW50KTsKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0
LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBpZGVudCwgZWNtYU1vZGUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgIGlmICghcGFyc2VJbmRleChpZGVudCkpIHsKICAgICAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAg
ICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFz
ZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICBy
ZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwg
b2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsKTsK
KyAgICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERl
bEJ5S2luZDo6Tm9ybWFsLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlk
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRp
ZmllcikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyLCBFQ01B
TW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjIxNCwx
MCArMjIxMywxMCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdAogICAgIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRz
KHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKLSAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwg
dm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGlkZW50KTsKKyAgICByZXR1
cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpLCBpZGVudCwgZWNtYU1vZGUpOwogfQogCi1zdGF0aWMgYm9vbCBkZWxldGVCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0m
IHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkp
CitzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtl
eSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCkBAIC0yMjM2LDEyICsyMjM1LDEyIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSYKICAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0K
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgaWYgKCFjb3VsZERl
bGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CiAg
ICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMjUzLDcgKzIyNTIsNyBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7CiAKLSAgICBib29sIHJl
c3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFz
ZVZhbHVlLCBzdWJzY3JpcHQpOworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFs
T2JqZWN0LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGVjbWFNb2RlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlk
ZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKQEAgLTIyNjQsMjAgKzIyNjMsMjAgQEAgc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0LmFz
Q2VsbCgpKTsKICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0s
IGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVudGlmaWVyKSkKLSAg
ICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNs
b3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5
S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50
aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCwgZWNtYU1vZGUpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFN1YnNjcmlwdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAg
cmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3Jp
cHQpKTsKKyAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCB2bSwgc2xvdCwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3Jp
cHQpLCBlY21hTW9kZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNo
V2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNj
b3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCkBAIC0yNTQ0LDcgKzI1NDMsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
UHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIFB1
dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24oZ2V0UHV0SW5m
by5pbml0aWFsaXphdGlvbk1vZGUoKSkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3Bl
LCBnZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtu
b3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpKSk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmpl
Y3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB2b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAppbmRleCBiNTI0OWFlMjEzOGY5MjBkOWE1YzM0OWM0ZDcyZWNmMjYyMjI4NTcyLi4xMjAy
OTliZTE1MGY4YmM3MWRlMGM5NTE1MDMyMjcwMWI3NWQxYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBWTTsKIGNs
YXNzIFdhdGNocG9pbnRTZXQ7CiAKIHN0cnVjdCBCeVZhbEluZm87CitzdHJ1Y3QgRUNNQU1vZGU7
CiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwogCkBAIC0xODcs
MTEgKzE4OCwxMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmlj
dE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlUwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAotdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0
QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBX
VEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CisKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKENhbGxGcmFtZSosIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1cm5UeXBl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CkBAIC0yNTAsMTAgKzI1MiwxMCBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVs
dChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNl
LCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFM
Owotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90LCBFQ01BTW9kZSkgV1RGX0lOVEVS
TkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVp
bnRwdHJfdCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCwgRUNNQU1v
ZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdCkg
V1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2Nv
cGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2Nv
cGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSBXVEZf
SU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCmluZGV4IGMzNTQzZGFlN2QwODJlYmRlYzYxZDBiY2Q1YjhmODc1MjA0MGJlNzQuLmE0
MDgwNTkzNjUwYTZlYzU2OGFhNjEwNjkxN2ZlOTdiMzhmMTMzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yODcsNyArMjg3LDcg
QEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBi
eXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1dEtpbmQp
OworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IGJ5dGVjb2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRl
LWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlv
bmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNp
emUuCkBAIC0zMTEsMTEgKzMxMSwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmFsdWU7CisgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBFQ01BTW9kZTo6
c3RyaWN0KCk7CiAKICAgICBhdXRvIGxvYWQgPSBbJl0oYXV0byBieXRlY29kZSkgewogICAgICAg
ICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1f
cHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKKyAgICAgICAgZWNt
YU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3Qp
CkBAIC0zMzEsNyArMzMzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHByb3BlcnR5LCByZWdUMSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVn
VDIpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIHJlZ1Qy
LCBieVZhbEluZm8pOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6
ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVn
VDEsIHJlZ1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1ZSgpKSk7CiAK
ICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93
UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZh
bEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpAQCAtNDI3LDcgKzQyOSw3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKLSAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOworICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNt
YU1vZGUudmFsdWUoKSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpA
QCAtNDc3LDcgKzQ3OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7CiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIAogICAgIGJveEJvb2xl
YW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC02NTQsNyArNjU2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlk
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWVWUmVnID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICBib29s
IGRpcmVjdCA9ICEhKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpOworICAgIGJv
b2wgZGlyZWN0ID0gYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpOwogICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KSk7CiAKICAgICAvLyBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHBhdGNoIGJvdGggdGhlIFN0
cnVjdHVyZSwgYW5kIHRoZSBvYmplY3Qgb2Zmc2V0LCB3ZSBzdG9yZSBvbmUgcG9pbnRlciwKQEAg
LTY2OCw3ICs2NzAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigK
ICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBtX2NvZGVCbG9jay0+ZWNt
YU1vZGUoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlZ1QyLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksCiAgICAgICAgIGRpcmVjdCA/IERp
cmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKaW5kZXggOGQxODgwMzZhMjM1OWRmMGIxZTFhZjFhYjRkODc3ZmM2YzYwYzlhYS4u
NTM1NDg2Y2Q4ZjE1MzJhZDFiZWI1MTVhODZiOTA4YWJjODM2OTZlMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC00
MjMsNyArNDIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBlbWl0TG9hZChiYXNl
LCByZWdUMiwgcmVnVDEpOwogICAgIGVtaXRMb2FkKHByb3BlcnR5LCByZWdUMywgcmVnVDApOwog
ICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwotICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3Bl
cmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1Zh
bHVlUmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8pOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0
aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVl
UmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8sIGJ5dGVjb2RlLm1faXNTdHJpY3RNb2RlKTsKIAog
ICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQ
YXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCBjM2RmMDc5MmU0ZTcyZDQ5YjRkN2EyMjZjYTEwMTE5NWQ4
ZjRjNjA4Li5kZTdkNjZkMDMxZWNkYjljMzU0YTVhYzk4MWEyNzVjYzQxYTI2NGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTczOCw3ICs3MzgsNyBAQCB2b2lkIHJl
cGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRC
eUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCi1zdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlO
YW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCkKK3N0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kLCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CkBAIC03NzEsNyArNzcxLDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOwogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQobmV3T2Zmc2V0KSk7
CiAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKHZtLCBjb2Rl
QmxvY2ssIHByb3BlcnR5TmFtZSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVy
ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAg
ICAgICAgfSBlbHNlIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgaWYg
KHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNj
ZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSwgcHJvcGVydHlOYW1lLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwg
bnVsbHB0cik7CiAgICAgICAgICAgICBlbHNlCkBAIC03OTIsMTIgKzc5MiwxMiBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvYwogICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBH
aXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lkIHJlcGF0Y2hEZWxldGVC
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQordm9pZCByZXBhdGNoRGVsZXRlQnkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGlmICh0cnlDYWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgeworICAgIGlmICh0cnlDYWNoZURl
bGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1vZGUpID09IEdpdmVVcE9u
Q2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJp
YywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAgIGlmIChraW5k
ID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRHZW5lcmljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggZTVj
ZTQ2ODcxMTQ2MzkyZTRlNzJlNjE0YTJmNWU1OGVhNjc0OTk0NS4uZDg5MGZkNzBhYWNkODJmZmJm
NGRhOGZiMjRlMWYzZGZmNTc0OWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgZW51bSBjbGFzcyBEZWxCeUtpbmQgewogdm9pZCByZXBhdGNoQXJy
YXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNW
YWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xv
YmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29u
c3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCBy
ZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVj
dHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Ci12b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVy
ZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsK
K3ZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVsZXRl
UHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
U3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQsIEVDTUFNb2RlKTsKIHZvaWQgcmVwYXRjaElu
QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1
YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8m
LCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5r
SW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAppbmRleCAyYmZmYzM4MTYzZmUzMWJlOTQxYmVkNmE1ZmI1NmQyOThiZWI2
MjI3Li5mMzlmOGY1YzFhYzA3YmQ5NDAwMGQ4NmRhYTY1NDg5ZmE4OTM1NWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTgzNiwxMCAr
ODM2LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNh
bGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
VmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRl
eHQoKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBieXRlY29kZS5tX2Zs
YWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsK
IAogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2VsbCgpID8gYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKLSAgICBpZiAoYnl0ZWNv
ZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkKKyAgICBpZiAoYnl0ZWNvZGUubV9mbGFncy5p
c0RpcmVjdCgpKQogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2
bSwgZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBpZGVudCwgZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpLCBzbG90KTsKICAgICBlbHNlCiAgICAgICAgIGJh
c2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpZGVudCwgZ2V0T3BlcmFuZChjYWxsRnJh
bWUsIGJ5dGVjb2RlLm1fdmFsdWUpLCBzbG90KTsKQEAgLTg4OCw3ICs4ODgsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3Ry
dWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIShieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCkpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9
IG5ld1N0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNl
Q2VsbCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4pOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUNoYWlu
LnNldCh2bSwgY29kZUJsb2NrLCBjaGFpbik7CkBAIC05MjcsNyArOTI3LDcgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShiYXNl
T2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3By
b3BlcnR5KSk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKCFjb3VsZERl
bGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUg
JiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3Ip
KTsKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CiB9CkBAIC0xMDI1
LDcgKzEwMjUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkK
ICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5t
X2Jhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9l
Y21hTW9kZS5pc1N0cmljdCgpOwogICAgIAogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUlu
dDMyKCkpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKQEAg
LTEwNTgsNyArMTA1OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
dmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgp
KTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIGlmIChM
SUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIC8vIERlc3BpdGUgaXRzIG5h
bWUsIEpTVmFsdWU6OmlzVUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25seSBmb3IgcG9zaXRpdmUg
Ym94ZWQgaW50MzJfdDsgYWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQgYXJyYXkgaW5kaWNlcy4K
ICAgICAgICAgQVNTRVJUKGlzSW5kZXgoc3Vic2NyaXB0LmFzVUludDMyKCkpKTsKQEAgLTExMTIs
NyArMTExMiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQog
ICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIAotICAgIGlmICghY291bGREZWxl
dGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7
CiAgICAgCiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOwpAQCAtMTcz
OCw3ICsxNzM4LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24KICAgICBpZiAoIWlzSG9zdEZ1
bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwgQ29kZUZvckNhbGws
IGNhbGxlZUFzVmFsdWUpKTsKICAgICAKLSAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZh
bChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lKTsKKyAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVl
ID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBieXRlY29kZS5tX2VjbWFNb2RlKTsK
ICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBMTEludDo6
Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0aW9uUHRyVGFnKTsKIH0K
ICAgICAKQEAgLTE4NzQsNyArMTg3NCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfdG9fc2NvcGUpCiAgICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9k
ZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVydHkpCiAgICAgICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2JqZWN0LCBpZGVudCkpOwog
Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24obWV0
YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3Qoc2NvcGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpLmlzU3Ry
aWN0KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24o
bWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgc2NvcGUt
Pm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwg
c2xvdCk7CiAgICAgCiAgICAgQ29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9i
YWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJ5dGVjb2RlLCBzY29wZSwgc2xvdCwgaWRlbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CmluZGV4IDdhNjQyYzAyNmZkYjBkMjA5OWNhZWRlNjZjNzIxNTE3ZTZmNmZlZTEuLmIwNDdmYjU4
MDhjZjBjOGUwMGFjMDEzNWMxMTllMjM1NDFiMjAyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTU5OSw3ICs1OTksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgLy8g
MS4gTGV0IGFycmF5IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBvbiB0aGUgdGhp
cyB2YWx1ZS4KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChn
bG9iYWxPYmplY3QpOwpAQCAtNjgxLDcgKzY4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRo
aXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNzc5LDcgKzc3OSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgLy8gMS4gTGV0IE8gYmUgPyBUb09iamVjdCh0aGlzIHZhbHVlKS4KLSAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9B
U1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC04
NjQsNyArODY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1BvcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpKQogICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcChn
bG9iYWxPYmplY3QpKSk7CkBAIC04OTksNyArODk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2EKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KHRo
aXNWYWx1ZSkgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0gMSkpIHsKICAgICAgICAg
SlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNWYWx1ZSk7CkBAIC05NDAsNyArOTQwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05f
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAt
MTAzNyw3ICsxMDM3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOwor
ICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAg
ICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUo
KTsKQEAgLTEwNjQsNyArMTA2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgLy8g
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNsaWNl
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9i
YWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAh
dGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTExMjQsNyArMTEyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNTcGxpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmop
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNW
YWx1ZSgpOwpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1VuU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTUuNC40LjEz
CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYg
KFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBA
IC0xMzU0LDcgKzEzNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNAotICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTM5Miw3ICsx
MzkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJ
bmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxNS40LjQuMTUKLSAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3Ry
aWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQo
ISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCAyMjZiNDgzNTQ2MmQ4YzQ1ZTYxOWY2Njgw
MGJlOTk3YTkxYWU4OGExLi44MDJmMjAyZjkyOWIwMDgwMzRmYTdkNmViODEwOTBhYjczMzBkMmIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBA
IC0xODE4LDcgKzE4MTgsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJs
ZT4gbWV0YWRhdGEoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5k
ZWNvZGUoZGVjb2Rlcik7IH0KIAogICAgIHVuc2lnbmVkIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1
cm4gbV91c2VzRXZhbDsgfQotICAgIHVuc2lnbmVkIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgdW5zaWduZWQgaXNDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIHVuc2lnbmVkIGhhc0NhcHR1cmVkVmFy
aWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQogICAgIHVu
c2lnbmVkIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5j
dGlvbjsgfQpAQCAtMTg1MSw3ICsxODUwLDYgQEAgcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbV9zY29wZVJlZ2lzdGVyOwogCiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7Ci0gICAg
dW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3Rv
ciA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5z
aWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CkBAIC0yMDQ4LDcgKzIwNDYsNiBAQCBBTFdB
WVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhEZWNvZGVyJiBk
ZWNvZGVyLCBTdHJ1Y3R1cmUqCiAgICAgLCBtX3Njb3BlUmVnaXN0ZXIoY2FjaGVkQ29kZUJsb2Nr
LnNjb3BlUmVnaXN0ZXIoKSkKIAogICAgICwgbV91c2VzRXZhbChjYWNoZWRDb2RlQmxvY2sudXNl
c0V2YWwoKSkKLSAgICAsIG1faXNTdHJpY3RNb2RlKGNhY2hlZENvZGVCbG9jay5pc1N0cmljdE1v
ZGUoKSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihjYWNoZWRDb2RlQmxvY2suaXNDb25zdHJ1Y3Rv
cigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhjYWNoZWRDb2RlQmxvY2suaGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY2FjaGVkQ29kZUJs
b2NrLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCkBAIC0yMjM0LDcgKzIyMzEsNiBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29ucwogICAgIG1fdGhpc1JlZ2lzdGVyID0gY29kZUJsb2NrLm1fdGhpc1JlZ2lz
dGVyOwogICAgIG1fc2NvcGVSZWdpc3RlciA9IGNvZGVCbG9jay5tX3Njb3BlUmVnaXN0ZXI7CiAg
ICAgbV91c2VzRXZhbCA9IGNvZGVCbG9jay5tX3VzZXNFdmFsOwotICAgIG1faXNTdHJpY3RNb2Rl
ID0gY29kZUJsb2NrLm1faXNTdHJpY3RNb2RlOwogICAgIG1faXNDb25zdHJ1Y3RvciA9IGNvZGVC
bG9jay5tX2lzQ29uc3RydWN0b3I7CiAgICAgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA9IGNvZGVC
bG9jay5tX2hhc0NhcHR1cmVkVmFyaWFibGVzOwogICAgIG1faXNCdWlsdGluRnVuY3Rpb24gPSBj
b2RlQmxvY2subV9pc0J1aWx0aW5GdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IDhkZGQ5OGExYmZiMGZlYzE1YTdk
NzMyYWNjM2MyY2VmODVkMDQwYjQuLmJmODU0MTIyNDZiMjljOTk5ZTUyM2E3YTRlY2NjODMxMDcy
NmM3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAK
ICAgICBpZiAoIXRoaXNPYmplY3QtPnNwZWNpYWxzTWF0ZXJpYWxpemVkKCkpIHsKICAgICAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KHRoaXNPYmplY3QtPm1fY2FsbGVlLT5leGVjdXRhYmxlKCkpOwotICAgICAgICBib29sIGlz
U3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpOworICAgICAgICBib29sIGlz
U3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCk7CiAKICAgICAgICAg
aWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSkgewogICAgICAgICAgICAgaWYg
KGlzU3RyaWN0TW9kZSkgewpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgQ2xvbmVkQXJndW1lbnRz
OjptYXRlcmlhbGl6ZVNwZWNpYWxzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIAogICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2NhbGxlZS0+ZXhl
Y3V0YWJsZSgpKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0
TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENv
bnRleHQoKTsKICAgICAKICAgICBpZiAoaXNTdHJpY3RNb2RlKQogICAgICAgICBwdXREaXJlY3RB
Y2Nlc3NvcihnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwgdGhpcy0+Z2xv
YmFsT2JqZWN0KHZtKS0+dGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0
ZXJTZXR0ZXIoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggZmEzY2QzMjZiY2Q1Yjk3
ODlhMjQyN2U2MTNhYzk1NDhiMmZiM2FlMi4uOWUxNzJiNmFlYTc0YjA2MmRlOWZmZWY4ZGE1NmQ0
OTM0Zjk0ZDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCkBAIC05MSwxMSArOTEsMTEgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVu
bGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICAgICAg
ZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCkgfCBhcnJvd0NvbnRl
eHRGZWF0dXJlLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgcm9vdE5vZGUtPmxh
c3RMaW5lKCksIGVuZENvbHVtbik7CiAKICAgICBib29sIHVzZXNFdmFsID0gcm9vdE5vZGUtPmZl
YXR1cmVzKCkgJiBFdmFsRmVhdHVyZTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IHJvb3ROb2Rl
LT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmU7CisgICAgRUNNQU1vZGUgZWNtYU1vZGUg
PSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNNQU1vZGU6OnN0
cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXI6Ok5vOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUs
IERpcmVjdEV2YWxFeGVjdXRhYmxlPikKICAgICAgICAgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgPSBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOwotICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBpc1N0cmljdE1vZGUsIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRl
cml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOworICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5s
aW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZh
bENvbnRleHRUeXBlKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2Rl
QmxvY2sgPSBVbmxpbmtlZENvZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZUluZm8s
IGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNl
KHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwg
bGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7CkBAIC0xMDQsNyArMTA0LDcgQEAgVW5saW5r
ZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHMKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VNYXBw
aW5nVVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLT5z
ZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VNYXBw
aW5nVVJMRGlyZWN0aXZlKCkpOwogCi0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2Rl
R2VuZXJhdGlvbk1vZGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBlcnJvciA9IEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRD
b2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgdmFyaWFibGVzVW5kZXJURFosIGVjbWFNb2Rl
KTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
aW5kZXggNDRkOGZiNGI0MjJhOTJkMDNiODFhYjBhZjE4ZDRmNjViMWU4YzgzNS4uYjU2YTc0OGVk
NDZjNDhhNjNhMGI1NTA3MjMzYTMxNzkyYmRiMmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgLy8gZGlmZmVyZW50IG9iamVj
dCB0aGF0IHN0aWxsIGhhcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgb24gdGhlIGZhc3QgcGF0aCBzaW5j
ZSBpdCdsbCBwcm9kdWNlCiAgICAgLy8gdGhlIHNhbWUgU3BlY3VsYXRlZFR5cGUuIFRoZXJlZm9y
ZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB2YWx1ZSBwcm9maWxpbmcgb24gdGhlCiAg
ICAgLy8gZmFzdCBwYXRoLgotICAgIGF1dG8gdmFsdWUgPSB2MS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUp
OworICAgIGF1dG8gdmFsdWUgPSB2MS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBieXRlY29kZS5tX2Vj
bWFNb2RlKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3Jj
RHN0LCB2YWx1ZSwgUFJPRklMRV9WQUxVRSh2YWx1ZSkpOwogfQogCkBAIC05ODksNyArOTg5LDcg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAgfQogICAgIENIRUNL
X0VYQ0VQVElPTigpOwogICAgIAotICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGJ5dGVjb2RlLm1fZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKICAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CiAgICAgCiAgICAgUkVUVVJOKGpzQm9v
bGVhbihjb3VsZERlbGV0ZSkpOwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBH
RVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHRoaXNWYWwgPSBH
RVRfQyhieXRlY29kZS5tX3RoaXNWYWx1ZSkuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcHV0VmFs
dWUgPSBHRVRfQyhieXRlY29kZS5tX3ZhbHVlKS5qc1ZhbHVlKCk7Ci0gICAgUHV0UHJvcGVydHlT
bG90IHNsb3QodGhpc1ZhbCwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT5w
dXRCeUlkQ29udGV4dCgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBieXRl
Y29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7
CiAgICAgYmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBwdXRWYWx1ZSwg
c2xvdCk7CiAgICAgRU5EKCk7CiB9CkBAIC0xMzIyLDcgKzEzMjIsNyBAQCBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgCiAgICAgYXV0byBwcm9wZXJ0
eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGJ5
dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgYmFzZVZhbHVlLnB1dChnbG9iYWxP
YmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgRU5EKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmgK
aW5kZXggMzdhZmE3NmM0MDU3NTkzNTUwNmU1OWI4NGQyYjVmMWU4MDlhZmZmMy4uYmI1NDc0MDdj
MTc1NzVlYWM0NGRhZWMxZjRiN2UwNzE5OWRjNDY0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaApAQCAtNDcsNyAr
NDcsNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCiAgICAgICAgICAg
ICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJl
c29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2Jh
bFByb3BlcnR5OwogICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8g
QWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
bWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8u
cmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZl
VHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0
YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTYxLDcgKzYxLDcgQEAgaW5saW5lIHZvaWQgdHJ5
Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKAogICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50Lmlt
cGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8g
PSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNv
bHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRh
ZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dh
dGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0
YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMDksNyArMTA5LDcgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVH
ZXRGcm9tU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlw
ZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAgcmVz
b2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5p
c20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29k
ZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0
UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5
cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAg
ICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZv
LmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKQEAg
LTEyMyw3ICsxMjMsNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZUdldEZyb21TY29wZUdsb2JhbCgK
ICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgQVNT
RVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
byA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jl
c29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwor
ICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5t
X2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0
UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFN
b2RlKCkpOwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0
Y2hwb2ludFNldCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChl
bnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCAyMTE3Y2M5ZTk2
ZDlmMDA0ZmExNjM5ZWE5ZmQ4MDZhNDUzOGMwMGVjLi5lYmM2ZjIyZTAwOWQyMzRjODA1MzA0YTdl
MDc2MDc3ZDA2OTk5MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiAK
ICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAg
ICAgICAgdGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0OwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0g
anNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmlj
dE1vZGUpKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNW
YWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlUHJvZ3JhbShzb3VyY2UsIGdsb2Jh
bE9iamVjdCwgdGhpc09iaik7CiAKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmNwcAppbmRleCAxYTcyYmZiNDdlZmVmYTU1MGRlZjk4MzU2NjU0YWY2NDkwNzc5NzM1Li43YzE5
Yjc1YzYyYzgwNDEzNjJkZDllYjEyZWRhNTk3OTI1MTE1ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EaXJlY3RFdmFsRXhlY3V0YWJsZSog
RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENv
bnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikK
K0RpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29u
dGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDUsMTEgKzQ1LDEx
IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RF
dmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVj
dCwgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkp
IERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5pc1N0
cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250
ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVj
dXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQ
YXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmlj
dE1vZGUgPSBlY21hTW9kZS5pc1N0cmljdCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Qg
OiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2Rl
R2VuZXJhdGlvbk1vZGUoKTsKIAogICAgIC8vIFdlIGRvbid0IGJvdGhlciB3aXRoIENvZGVDYWNo
ZSBoZXJlIGJlY2F1c2UgZGlyZWN0IGV2YWwgdXNlcyBhIHNwZWNpYWxpemVkIERpcmVjdEV2YWxD
b2RlQ2FjaGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0
RXZhbEV4ZWN1dGFibGUuaAppbmRleCA0NzgyNmJmMzIwYzFjMTdkNTgzMTM5YzQ2ZTUzZTZkYWVk
YWJiZDQ5Li4yNDA3NWE3ZjVhMzZjNzNmZWJhNDA3ZTcxMDlhNmZjMzNmMjcwZDRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERpcmVjdEV2YWxF
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUs
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNy
ZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiBwcml2YXRlOgogICAgIERpcmVjdEV2
YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5T
dHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDYwNWIyZWZmYjFkN2I4MmU1Y2RiN2M2NDUz
ZGM1ZGU3MWYzMDI2NzYuLjY3ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZiOGU3ZTk5NDgwZWQ3NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApA
QCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCks
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwg
ZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3Np
YywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUs
IGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAg
IHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5k
aWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9p
c3RpbmdDYW5kaWRhdGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggNDQzYmIzOGE2NWNiODA0NzQ1Njg1N2NkOGQy
NzZhZGU5ZjdhNmI1Yy4uYmFkZTk4NzM1Zjk5ZGM0N2U3YTZkYzc4N2M1Nzk3MTFjZTUxNWVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBQZXIg
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZm9yYmlkZGVuLWV4dGVuc2lvbnMs
IG9ubHkgc2xvcHB5LW1vZGUgbm9uLWJ1aWx0aW4gZnVuY3Rpb25zIGluIG9sZC1zdHlsZSAocHJl
LUVTNikgc3ludGFjdGljIGZvcm1zIGNhbiBjb250YWluCiAgICAgICAgIC8vICJjYWxsZXIiIGFu
ZCAiYXJndW1lbnRzIi4KLSAgICAgICAgcmV0dXJuICFpc1N0cmljdE1vZGUoKSAmJiBwYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0Nv
bnN0cnVjdG9yRnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuICFpc0luU3RyaWN0Q29udGV4dCgp
ICYmIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlICYm
ICFpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOwogICAgIH0KICAgICBib29sIGhhc1Byb3Rv
dHlwZVByb3BlcnR5KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXRQdXRJbmZvLmgKaW5kZXggMDZmZmQ0M2EwMjVmMGI1ZWNiNGUwMTBlMjcxOGQwNmMwMWI0
NTlkZS4uOTM0MDgwMWYyMWY2NWQyN2I2YTNmODE2NmFkODQ4NjUyZDFiNjdjZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaApAQCAtMjAyLDE4ICsyMDIsMjAg
QEAgY2xhc3MgR2V0UHV0SW5mbyB7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBPcGVyYW5kOwogcHVi
bGljOgogICAgIC8vIEdpdmUgZWFjaCBmaWVsZCAxMCBiaXRzIGZvciBzaW1wbGljaXR5LgotICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmQpICogOCA+IDMwLCAiTm90IGVub3VnaCBiaXRz
IGZvciBHZXRQdXRJbmZvIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3BlcmFuZCkgKiA4
ID4gMzEsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1dEluZm8iKTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGlzU3RyaWN0U2hpZnQgPSAzMDsKICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1vZGVTaGlmdCA9IDIwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
aW5pdGlhbGl6YXRpb25TaGlmdCA9IDEwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
dHlwZUJpdHMgPSAoMSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSAtIDE7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsaXphdGlvbkJpdHMgPSAoKDEgPDwgbW9kZVNoaWZ0KSAt
IDEpICYgfnR5cGVCaXRzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbW9kZUJpdHMg
PSAoKDEgPDwgMzApIC0gMSkgJiB+aW5pdGlhbGl6YXRpb25CaXRzICYgfnR5cGVCaXRzOwotICAg
IHN0YXRpY19hc3NlcnQoKG1vZGVCaXRzICYgaW5pdGlhbGl6YXRpb25CaXRzICYgdHlwZUJpdHMp
ID09IDB4MCwgIlRoZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNvbHZl
TW9kZSBSZXNvbHZlVHlwZSBhbmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBpc1N0cmljdEJpdCA9IDEgPDwgMzA7CisgICAgc3RhdGljX2Fzc2Vy
dCgobW9kZUJpdHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0cyAmIGlzU3RyaWN0Qml0
KSA9PSAweDAsICJUaGVyZSBzaG91bGQgYmUgbm8gaW50ZXJzZWN0aW9uIGJldHdlZW4gUmVzb2x2
ZU1vZGUgUmVzb2x2ZVR5cGUgYW5kIEluaXRpYWxpemF0aW9uTW9kZSIpOwogCiAgICAgR2V0UHV0
SW5mbygpID0gZGVmYXVsdDsKIAotICAgIEdldFB1dEluZm8oUmVzb2x2ZU1vZGUgcmVzb2x2ZU1v
ZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6
YXRpb25Nb2RlKQotICAgICAgICA6IG1fb3BlcmFuZCgocmVzb2x2ZU1vZGUgPDwgbW9kZVNoaWZ0
KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2RlKSA8PCBpbml0aWFs
aXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQorICAgIEdldFB1dEluZm8oUmVzb2x2ZU1vZGUg
cmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGUg
aW5pdGlhbGl6YXRpb25Nb2RlLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX29wZXJh
bmQoKGVjbWFNb2RlLmlzU3RyaWN0KCkgPDwgaXNTdHJpY3RTaGlmdCkgfCAocmVzb2x2ZU1vZGUg
PDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2Rl
KSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQogICAgIHsKICAgICB9CiAK
QEAgLTIyNSw2ICsyMjcsNyBAQCBwdWJsaWM6CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4obV9vcGVyYW5kICYgdHlw
ZUJpdHMpOyB9CiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEluaXRpYWxpemF0aW9uTW9kZT4oKG1fb3BlcmFuZCAm
IGluaXRpYWxpemF0aW9uQml0cykgPj4gaW5pdGlhbGl6YXRpb25TaGlmdCk7IH0KICAgICBSZXNv
bHZlTW9kZSByZXNvbHZlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc29sdmVN
b2RlPigobV9vcGVyYW5kICYgbW9kZUJpdHMpID4+IG1vZGVTaGlmdCk7IH0KKyAgICBFQ01BTW9k
ZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZCAmIGlzU3RyaWN0Qml0ID8gRUNN
QU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOyB9CiAgICAgdW5zaWduZWQgb3Bl
cmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmNwcAppbmRleCA1ZjlmODVlMWVjZGM4MTM0N2Q4OTc0MDZlNjIxMTRkMDY1NDcyNzkz
Li42NmNjNzUwNzM5MGJhNDFlMDg4OWNkNmI2YzUwMGU3NmIwMjE2MGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTY4LDcgKzY4LDcg
QEAgYm9vbCBjYWxsU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
YmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRl
ck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwogCiAgICAgaWYgKGdl
dHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSwgUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGVjbWFNb2RlLmlzU3RyaWN0KCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
IAogICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwCmluZGV4IDIwMDMxOTI5MGYwYmUwZjk3MzE0MWJmZTk0OTlmM2JhZTg5Nzg4
NjIuLjE0ZjdmYWI1YzNkNGVhYTg3OTQyYmNmMzMyYTQ1ZjFjNTA2ZGFlN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFi
bGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbmRpcmVjdEV2
YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJp
Y3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCitJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTQ1LDE1ICs0NSwxNCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBk
ZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlw
ZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
ZGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKGds
b2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9k
ZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5k
ZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAgICAgCiAgICAgVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVubGlua2VkRXZhbENv
ZGVCbG9jaygKLSAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBz
dHJpY3RNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUpOwor
ICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4
dFR5cGUpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSkKICAgICAgICAg
Z2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBleGVj
dXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2Uo
KSk7CkBAIC02OCw4ICs2NywxMCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVy
biBleGVjdXRhYmxlOwogfQogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291
cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXI6Ok5vKQorY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFsc2U7Citjb25zdGV4
cHIgYm9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CitJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUg
ZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3Vy
Y2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyOjpObykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IGMxOTkyZmRi
MWE0MjUwNTRhZTliYzQ1NzUxMjhlNmY1MDg2Y2E5YmMuLjQ5OGI1Yzg3MDk4YWIzNzQ3OTdhMjVi
ZjQ4MTYzN2NmYmI5MmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMg
RXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29u
dGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsK
IHByaXZhdGU6Ci0gICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBl
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBE
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRl
eHRUeXBlKTsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUpID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJkYjJlNTc3MDJiM2NiYzM2
OTkzNjlkNzdjOTQzMzBkNC4uYjE5MWU4NGZlZTFmYTcxMzMxYTNmMmNjMjM4OGQ1ZjRhNTJkODMw
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAg
LTExMSw3ICsxMTEsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEFTU0VSVCgh
aXNDZWxsKCkpOwogCi0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVj
bWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGlmIChpc0lu
dDMyKCkgfHwgaXNEb3VibGUoKSkKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIEpTVmFsdWU6OnB1
dFRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eQogCiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0
KTsKICAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKQotICAgICAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlz
LCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0
TW9kZSkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNl
dHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkg
PyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIAogICAgICAgICAg
ICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBncywgYXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7
CkBAIC00MzQsNCArNDM0LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVI
ZXJlKEpTVmFsdWUpCiB9CiAjZW5kaWYKIAordm9pZCBFQ01BTW9kZTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1N0cmljdCgpKQorICAgICAgICBvdXQucHJpbnQo
IlN0cmljdE1vZGUiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgiTm90U3RyaWN0TW9k
ZSIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBkZWI2NDAyNTMwZWI1OGJmNTBkMGQ2NzBlZDE2YmM1NDhi
N2Y5MjY5Li45MjY5OTAwMzE3MjMzMzJiMGRkNTFkMmU2OWRkN2UyNDdmNGRiMDIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC04MCw4ICs4MCwzMSBA
QCB1c2luZyBXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlv
bmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtubwogICAgIER1bWJWYWx1ZVRyYWl0czxUPiwgRHVtYlB0
clRyYWl0czxUPgogPjo6dHlwZTsKIAotZW51bSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHsgTm9Q
cmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OwotZW51bSBFQ01BTW9kZSB7
IFN0cmljdE1vZGUsIE5vdFN0cmljdE1vZGUgfTsKK2VudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSA6IHVpbnQ4X3QgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07
CisKK3N0cnVjdCBFQ01BTW9kZSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFN0cmlj
dE1vZGUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTbG9wcHlNb2RlID0gMTsK
KworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgZnJvbUJ5dGUodWludDhf
dCBieXRlKSB7IHJldHVybiBFQ01BTW9kZShieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
RUNNQU1vZGUgc3RyaWN0KCkgeyByZXR1cm4gRUNNQU1vZGUoU3RyaWN0TW9kZSk7IH0KKyAgICBz
dGF0aWMgY29uc3RleHByIEVDTUFNb2RlIHNsb3BweSgpIHsgcmV0dXJuIEVDTUFNb2RlKFNsb3Bw
eU1vZGUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTdHJpY3QoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlID09IFN0cmljdE1vZGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3Qg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgRUNNQU1vZGUodWludDhf
dCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdmFsdWUgPT0gU3RyaWN0TW9kZSB8fCBtX3ZhbHVlID09IFNsb3BweU1vZGUsIG1fdmFsdWUp
OworICAgIH0KKworICAgIHVpbnQ4X3QgbV92YWx1ZTsKK307CiAKIGVudW0gY2xhc3MgQ2FsbFR5
cGUgOiB1bnNpZ25lZDsKIHN0cnVjdCBDYWxsRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCmluZGV4IDU1M2QxNmY1NjkyNTljZjgyM2I5Njg2OGZkMDkwYjdmMmU3
MDhiMjAuLmE0NzRlN2FlNTI3NWFjNzY4NjQ4MjM2ZjY2ZmQ0MjhhZmRlN2UxOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIGJv
b2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1CiAKIEpTVmFsdWUgSlNDZWxsOjp0b1RoaXMoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsK
LSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJp
Y3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIGNlbGwtPnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCmluZGV4IDA5YWJhZTM4YmUwZmUzNDZmZDVkMzhiMjJiZGE0N2JmOWU2NmNhMzUuLjUx
OTAzY2E3ODcxZDM3MmUyNmI4ZWNlMGUzYWUwYTNmMTQ2Yjg1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cnVj
dHVyZSogSlNGdW5jdGlvbjo6c2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0CiAgICAgYm9vbCBpc0J1aWx0aW4gPSBleGVjdXRhYmxlLT5pc0J1
aWx0aW5GdW5jdGlvbigpOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSkK
ICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZShpc0J1
aWx0aW4pOwotICAgIGlmIChleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZXhl
Y3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC0+c3RyaWN0RnVuY3Rpb25TdHJ1Y3R1cmUoaXNCdWlsdGluKTsKICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5zbG9wcHlGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwogfQpAQCAtNDMwLDcg
KzQzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBpZiAoIWZ1bmN0aW9u
LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlmICghZnVuY3Rpb24t
PmpzRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGdW5jdGlvbi5jYWxsZXIgdXNl
ZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIl9zKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
CmluZGV4IDliYThjNzBkNzZhNzQyZWViNTcxNjc4Y2M5M2RiYWNiNDc5Mzk0NGUuLmNhOTQ4OWMw
ZTBlZmRjODZiMGY0MjJmZjI4ODZlZjQ4ZDE5M2E5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAg
LTUwNyw3ICs1MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNF
dmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7CiAKICAgICBTb3VyY2VPcmlnaW4gc291cmNl
T3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwotICAgIEV2YWxFeGVj
dXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVj
dCwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKKyAgICBFdmFsRXhlY3V0YWJs
ZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1h
a2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxz
ZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUu
ZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1ZhbHVlKCk7CkBAIC03MTQsNyArNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CiAKQEAg
LTczNSw3ICs3MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQ
cm90b1NldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBPYmplY3RQcm90b0Nh
bGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKaW5kZXggMjVkZmY1MzMzNzg5MTQyOGU2MmZhOTUxOWRlMTRhNzE5
NDRkNGI3OC4uZGFjNzIzZWMwYzkzYTVkNjYzOThlYzg5ODA0Y2I3ZjE0OTcyM2UwOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtODEwLDcgKzgxMCw3
IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLT5z
dHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICAgICAgc2xvdC5z
ZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZzZXQpOwogCi0gICAgICAgICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFsdWUoKSwgZ3MsIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwor
ICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHNs
b3QudGhpc1ZhbHVlKCksIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IEVDTUFNb2Rl
OjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSk7CiAgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgICAgICB9CkBAIC0xODE4LDcgKzE4MTgsNyBAQCBib29sIEpTT2JqZWN0Ojpz
ZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hv
dWxkVGhyb3dJZkNhbnRTZXQsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJv
dG90eXBlIG9iamVjdCJfcyk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+
dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CisgICAg
QVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnNsb3BweSgpKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDZkNWFiNjgyYzY4MzkxNGY2OWYzZTVj
MjI4Mzg0ZmVmZTQ2NTc3YzguLmIzYzI3MjAyMjgwNmI4MTE0MzU3ZDgxZGU5ZjNiNWZjMTAzNTRk
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTEs
NyArNDExLDcgQEAgU3ltYm9sVGFibGUqIEpTU2NvcGU6OnN5bWJvbFRhYmxlKFZNJiB2bSkKIAog
SlNWYWx1ZSBKU1Njb3BlOjp0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7Ci0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1v
ZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBhYWVlOGVlN2E3N2Vl
YTZkZWZjNzU3YTg3ZDIzYjNlY2JhODZmMjFmLi4wZjIwN2EzYjY4NmFlYTdiNTdkNDk1Y2Q3MDI5
YWQ4YTgzODZkYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCkBAIC00MTcsNyArNDE3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b09iamVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogCiBKU1ZhbHVlIEpTU3RyaW5nOjp0b1Ro
aXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNt
YU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIFN0cmlu
Z09iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBhc1N0cmlu
ZyhjZWxsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
aXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwCmluZGV4IDY5NzZmNzA1ZDM0MDRlMzdhMjFkODkyYjEyM2NiYzM4MDQyMzZkNWIu
LjUzNTIzNzE4ZGM5YjlkMjIxMmI4YjgyMTE3NjM2OGY0ODQyMTgyYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC05MzMsNyArOTMz
LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUg
aW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5Il9zOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVs
bE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpIDogZmFsc2Up
OworICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVs
bE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0lu
U3RyaWN0Q29udGV4dCgpIDogZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3RTdGFj
ay5sYXN0KCkucHV0KG1fZ2xvYmFsT2JqZWN0LCBpZGVudCwgbGFzdFZhbHVlLCBzbG90KTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA0
NjU0NjIwMDRmMzdlMjAxMmQ3MjE2OGM2MjA5ZTUwNTE3YzEyMDU1Li4wOTlkODk5YWQ1ZTYzYTc0
MzM1OGUyYWJiMjBhYjM0ZjU5Yjk2MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFy
c2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFy
c2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2Us
IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVN
b2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUp
OyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bGxTZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dWxsU2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDEwZjg4NzI1YWMwMDJkMjUzYTljODYzNzFkNDUz
OTg1MGRmY2FhMjkuLmVhMjRhOTRjN2I1NmQwMGI5M2Q0YWMzMjAzZjgzYjQ2ZjFhYWFhM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0
aW9uLmNwcApAQCAtNTIsNyArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpDb250aW51ZTsKIAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHZp
c2l0b3ItPmNvZGVCbG9jaygpOwotICAgICAgICBtX2NhbGxlcklzU3RyaWN0ID0gY29kZUJsb2Nr
ICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIC8vIFRoaXMgZG9lcyBub3Qg
dGFrZSBpbnRvIGFjY291bnQgdGhhdCB3ZSBtaWdodCBoYXZlIGFuIHN0cmljdCBvcGNvZGUgaW4g
YSBub24tc3RyaWN0IGNvbnRleHQsIGJ1dCB0aGF0J3MKKyAgICAgICAgLy8gb2sgc2luY2Ugd2Ug
YXNzZXJ0IGJlbG93IHRoYXQgdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGZy
b20gYW55IGtpbmQgc3RyaWN0IGNvbnRleHQuCisgICAgICAgIG1fY2FsbGVySXNTdHJpY3QgPSBj
b2RlQmxvY2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRl
eHQoKTsKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKICAgICB9CiAKQEAgLTcz
LDExICs3NSwxMiBAQCBzdGF0aWMgYm9vbCBjYWxsZXJJc1N0cmljdChWTSYgdm0sIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogbmFtZXNwYWNlIE51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChjYWxsZXJJc1N0cmljdCh2bSwgY2FsbEZyYW1lKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiU2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3Mp
KTsKKyNpZiAhQVNTRVJUX0VOQUJMRUQKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsK
KyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGVySXNT
dHJpY3QpOworI2VuZGlmCisgICAgQVNTRVJUKCFjYWxsZXJJc1N0cmljdChnbG9iYWxPYmplY3Qt
PnZtKCksIGNhbGxGcmFtZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcAppbmRleCBjMDU3MTJiMGE0NWExZTBhMGU2ZWIzNjZmYmY0MzQzZGYyNDg2
Zjk2Li42ZGFhN2I0YzZiYjVhYzI5ODQyOTFlMzhiYjI2OThmYjUwNjJmZmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgT2JqZWN0UHJvdG90eXBlKiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFMKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBKU09iamVjdCogdmFsdWVPYmog
PSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXZh
bHVlT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC05Miw3ICs5Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwK
ICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJp
Y3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBKU09iamVjdCog
dGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzT2JqKSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
TwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OwpAQCAtMTc2LDcgKzE3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICBKU1ZhbHVlIHNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CkBAIC0yMDQsNyAr
MjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29r
dXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2Jh
bE9iamVjdCk7CkBAIC0yMzQsNyArMjM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNjcsNyArMjY3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJs
ZShKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTI4OCw3
ICsyODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Rv
TG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIC8vIDIuIEludm9rZShWLCAi
dG9TdHJpbmciKQogCiAgICAgLy8gTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2Jq
ZWN0IHBhc3NpbmcgdGhlIHRoaXMgdmFsdWUgYXMgdGhlIGFyZ3VtZW50LgotICAgIEpTT2JqZWN0
KiBvYmplY3QgPSB0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIC8vIExldCB0b1N0cmluZyBiZSB0aGUgTy5bW0dldF1dKCJ0b1N0cmluZyIsIFYpCkBA
IC0zMTMsNyArMzEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUuaXNVbmRlZmluZWQoKSA/IHZtLnNtYWxs
U3RyaW5ncy51bmRlZmluZWRPYmplY3RTdHJpbmcoKSA6IHZtLnNtYWxsU3RyaW5ncy5udWxsT2Jq
ZWN0U3RyaW5nKCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKaW5kZXggYThmMGI1Zjg5OTQyYjM3ZGFlOWU3YTMwMjky
ZDQxOGZiODdlODkzMy4uMmIzMmY1YTA0YTIwMTIzNmE5N2JiYWVkYzQzNDYyY2QyODhlMzM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmNwcApAQCAtODIsNyArODIsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6Omlu
aXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgQVNT
RVJUKCZnbG9iYWxPYmplY3QtPnZtKCkgPT0gJnZtKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9y
OwotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gaXNTdHJpY3RNb2RlKCkgPyBK
U1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0
OworICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gaXNJblN0cmljdENvbnRleHQo
KSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RT
dHJpY3Q7CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25N
b2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtLmNvZGVDYWNoZSgp
LT5nZXRVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2soCiAgICAgICAgIHZtLCB0aGlzLCBzb3VyY2Uo
KSwgc3RyaWN0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvcik7CkBAIC0xMzYsNyArMTM2
LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVy
dGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0
eSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBl
bnRyeS5rZXkuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBudWxscHRyKTsKICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgewotICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmdsb2JhbENv
bnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzU3RyaWN0TW9kZSgpKSkgeworICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmds
b2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzSW5TdHJpY3RDb250ZXh0
KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgYWxsb3cgImNvbnN0IiBkdXBs
aWNhdGUgZGVjbGFyYXRpb25zIHVuZGVyIHRoaXMgc2V0dGluZy4KICAgICAgICAgICAgICAgICAg
ICAgLy8gRm9yIGV4YW1wbGUsIHdlIGRvbid0ICJsZXQiIHZhcmlhYmxlcyB0byBiZSBvdmVycmlk
ZGVuIGJ5ICJjb25zdCIgdmFyaWFibGVzLgogICAgICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LT5pc0NvbnN0VmFyaWFibGUoZW50cnkua2V5LmdldCgpKSkKQEAg
LTE4NSw3ICsxODUsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVH
bG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUo
KTsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2Nr
KTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGljYWxEZWNsYXJhdGlvbnMpIHsKLSAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmdsb2Jh
bENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzU3RyaWN0TW9kZSgpKSkgewor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAmJiAhdm0uZ2xv
YmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNJblN0cmljdENvbnRleHQo
KSkpIHsKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwg
ZW50cnkua2V5LmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFt
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1
dGFibGUuaAppbmRleCAyOWNhMDEzMjA1NjFiMTQ2YTYyOWM2ZmI1ZmExODhmZjU4YzNkYjFmLi5i
ODcxNWFhNzJiYmNiNzMzOWQ2ZTM0MTNhYzU5Yzc0NDExN2I4MmE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTcxLDcgKzcx
LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBm
YWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xh
c3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7
IH0KIAogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5k
ZXggYjA3ZTBhMDI5MzMyODI2MTAzNmY0MTEwNmVlZWU5ZTVmOTBjNjY2MC4uNmQxMWI0MWJhNDA2
MTgxNTUyMmRhYjNlYmZlMzFjNzc2ZTdlZTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNTQ3LDcgKzU0Nyw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50
cy5hcHBlbmQodGFyZ2V0KTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OlN0cmljdE1vZGUpKTsKKyAgICBh
cmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChhcmdBcnJheSk7
CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgYXBwbHlN
ZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCmluZGV4IDEw
NmNmMjVmNjMxZjA0MWI5YmM2MzE5NDAwZjQ2NjdiMDdiMzljZmMuLjBkZDQ0ZWNiODQzNzFkNDc3
MzQ2MGNkNGMwYWFlNTVmZTNjZDIzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKQEAgLTYwLDEyICs2MCwxMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBFdmFsRmVhdHVy
ZTsgfQogICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMg
JiBBcmd1bWVudHNGZWF0dXJlOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9Ci0gICAgYm9vbCBpc1N0
cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7
IH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlw
ZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPihtX2V2YWxDb250ZXh0VHlwZSk7IH0KKyAg
ICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0
cmljdE1vZGVGZWF0dXJlOyB9CiAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIGlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7IH0KLSAgICAg
ICAgCiAgICAgdm9pZCBzZXROZXZlcklubGluZShib29sIHZhbHVlKSB7IG1fbmV2ZXJJbmxpbmUg
PSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0TmV2ZXJPcHRpbWl6ZShib29sIHZhbHVlKSB7IG1fbmV2
ZXJPcHRpbWl6ZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXROZXZlckZUTE9wdGltaXplKGJvb2wg
dmFsdWUpIHsgbV9uZXZlckZUTE9wdGltaXplID0gdmFsdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKaW5kZXggODVj
MWNmMzQzMzgxODQ3ODgzODg0NTZlYjM2YWVhMmZmYjYzNDFmYS4uM2ZkNjAwNmUxZTg0NWZhZWVk
MjZkMGU3MjgzYzUzZjZjMTBmMzExNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBi
b29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cgPyBTdHJpY3RNb2RlIDogTm90
U3RyaWN0TW9kZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihn
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyA/
IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogfQogCiBKU1ZhbHVl
IFNwYXJzZUFycmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDFiYjVjZGZm
YTc2YTc3ZGUyMjQzY2I2MjFjMjI0NWJiOGUwNTEyZGMuLjU0ZDFjOWQyNmUwZTk0NTAyN2RhZTQ2
MWQ3YTBhMGM4N2NlNDgzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTYyNiw3ICs2MjYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNl
Qm9keShKUwogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU0RPTVdpbmRvdyogSURMT3BlcmF0aW9uPEpT
RE9NV2luZG93Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lJiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHRvSlNET01XaW5kb3cobGV4aWNhbEds
b2JhbE9iamVjdC52bSgpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgcmV0dXJuIHRvSlNET01XaW5kb3cobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzbG9wcHkoKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRh
YmFzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0
b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaApp
bmRleCAwOTI4NTE3NjNjYTBkMWFjYTFiYzczNDY1MzUwYjZlMmMwZWVlNTA2Li4zNzY4YmYyOTFj
NTlkYWU4OTlkYjBmMTUwYTFiMGNhMDhjN2RjMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIGNhbGxGcmFtZS50
aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Tm90U3RyaWN0TW9k
ZSkpOworICAgICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgY2Fs
bEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01B
TW9kZTo6c2xvcHB5KCkpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAg
ICAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgIkV2ZW50VGFyZ2V0Iiwgb3BlcmF0aW9uTmFtZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggODky
MDNmZGQ5NWNmNzAyYzc2YjAwNTkxZmI3Yjc3NTQ2NmY0NzE2NS4uZTIzYzFlOGZjZGFmMWU3ZWJl
MDJhOTY3MGVkZmY5OTFiYzRiZTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ1OTAsNyArNDU5MCw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChkZWNvZGVkVGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpXG4iKTsK
LSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBOb3RTdHJpY3RNb2RlKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSk7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0
aW9uKHZtLCBkZWNvZGVkVGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDYwNiw3ICs0NjA2LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAjIEZJWE1FOiBNYWtlIGNvbnNp
c3RlbnQgSURMQXR0cmlidXRlPD46OmNhc3QgYW5kIElETE9wZXJhdGlvbjw+OjpjYXN0IGluIGNh
c2Ugb2YgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LgogICAgICAgICBteSAkY2FzdGluZ0Z1bmN0aW9u
ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0
fSA/ICJ0byR7Y2xhc3NOYW1lfSIgOiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50
ZXJmYWNlKTsKLSAgICAgICAgbXkgJHRoaXNWYWx1ZSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgp
LnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkiIDogImNhbGxGcmFt
ZS50aGlzVmFsdWUoKSI7CisgICAgICAgIG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFtZS50aGlz
VmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSki
IDogImNhbGxGcmFtZS50aGlzVmFsdWUoKSI7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
dGVtcGxhdGU8PiBpbmxpbmUgJHtjbGFzc05hbWV9KiBJRExPcGVyYXRpb248JHtjbGFzc05hbWV9
Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBj
YWxsRnJhbWUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVuY3Rpb24oSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICR0aGlzVmFsdWUpO1xuIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2Fm
YzA5YjBhOGViOGVlZWE3YTQzNzM1MjNjMzMxMTgxYjBjZWU5Yy4uODUxZWI5ZGQ1NzE3MGUyOTU0
MDgwZDFmODY5N2M4NTczODc5ZTAzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAzLTMw
ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIE5vdCB1c2lu
ZyBzdHJpY3QgbW9kZSB3aXRoaW4gQ2xhc3NEZWNsYXJhdGlvbiBzdGF0ZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTU3OAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTgxOTQ1ODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4IHRoZSB0ZXN0IHNpbmNlIGl0IGNvbnRhaW5lZCBpbmNvcnJl
Y3QgY29kZS4KKworICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9kLW5h
bWVzLmpzOgorCiAyMDIwLTAzLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIHNjcm9sbEludG9WaWV3KCkgZXJyb25lb3VzbHkgc2Nyb2xscyBub24t
Y29udGFpbmluZyBibG9jayBzY3JvbGxlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Ns
YXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvY2xh
c3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKaW5kZXggN2YxNDkyNGYzZDNhZDc2
OWQ5OTgxYjQ1Y2FiNDZlZWVmOTc2ZDc1Yy4uODg4Y2QyZDIyNTJhOGYzOWNjM2YyZWUzMDE3NDZi
OTA1OGJjYTljOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhv
ZC1uYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1l
dGhvZC1uYW1lcy1leHBlY3RlZC50eHQKQEAgLTU2LDkgKzU2LDkgQEAgUEFTUyBBID0gY3JlYXRl
Q2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNSk7IChuZXcgQSlbJ2ZvbyddKCkgaXMg
MjE1CiBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnZm9vJywgMjE2KTsg
QiA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdiYXInLCAyMTcpOyBbKG5ldyBBKVsn
Zm9vJ10oKSwgKG5ldyBCKVsnYmFyJ10oKV0gaXMgWzIxNiwgMjE3XQogUEFTUyB4ID0gMjE4OyBj
bGFzcyBBIHsgW3grK10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSlbMjE4XSgpIGlzIDIxOQog
UEFTUyB4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgWyh4PTIyMCkgJiYgJ2ZvbyddKCkgeyByZXR1
cm4geDsgfSB9OyAobmV3IEEpLmZvbygpIGlzIDIyMAotUEFTUyB4ID0gMjIxOyBjbGFzcyBBIHsg
Wyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1
cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0oKV0gaXMgWzIyMSwgMjIy
XQorUEFTUyB2YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkg
eyByZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcg
QSlbMjIxXSgpLCAobmV3IEEpWzIyMl0oKV0gaXMgWzIyMSwgMjIyXQogUEFTUyB4ID0gMTsgY2xh
c3MgQSB7IFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjM7IH0gWydmb28nICsgeCsrXSgpIHsg
cmV0dXJuIDIyNDsgfSB9OyBbKG5ldyBBKS5mb28xKCksIChuZXcgQSkuZm9vMigpXSBpcyBbMjIz
LCAyMjRdCi1QQVNTIHggPSAxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIy
NTsgfSBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgs
IChuZXcgQSkuZm9vMigpXSBpcyBbMiwgMywgMjI2XQorUEFTUyB2YXIgeCA9IDEsIHgxOyBjbGFz
cyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsg
eCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSBpcyBbMiwg
MywgMjI2XQogCiBTdGF0aWMgbWV0aG9kcyB3aXRoIGNvbXB1dGVkIG5hbWVzCiBQQVNTIGNsYXNz
IEEgeyBzdGF0aWMgWydhJyArICdiJ10oKSB7IHJldHVybiAzMTE7IH0gfTsgQS5hYigpIGlzIDMx
MQpAQCAtNjksOSArNjksOSBAQCBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2Qo
J2ZvbycsIDMxNSk7IEFbJ2ZvbyddKCkgaXMgMzE1CiBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhT
dGF0aWNNZXRob2QoJ2ZvbycsIDMxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2Qo
J2JhcicsIDMxNyk7IFtBWydmb28nXSgpLCBCWydiYXInXSgpXSBpcyBbMzE2LCAzMTddCiBQQVNT
IHggPSAyMTg7IGNsYXNzIEEgeyBzdGF0aWMgW3grK10oKSB7IHJldHVybiB4OyB9IH07IEFbMjE4
XSgpIGlzIDIxOQogUEFTUyB4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgc3RhdGljIFsoeD0yMjAp
ICYmICdmb28nXSgpIHsgcmV0dXJuIHg7IH0gfTsgQS5mb28oKSBpcyAyMjAKLVBBU1MgeCA9IDIy
MTsgY2xhc3MgQSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0
aWMgWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0o
KV0gaXMgWzIyMSwgMjIyXQorUEFTUyB2YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgc3Rh
dGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRpYyBbKHgyPXgpICYmIHgr
K10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgpXSBpcyBbMjIxLCAyMjJd
CiBQQVNTIHggPSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAy
MjM7IH0gc3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7IH0gfTsgW0EuZm9vMSgp
LCBBLmZvbzIoKV0gaXMgWzIyMywgMjI0XQotUEFTUyB4ID0gMTsgY2xhc3MgQSB7IHN0YXRpYyBb
J2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgpICYmICdmb28nICsg
eCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSBpcyBbMiwgMywgMjI2
XQorUEFTUyB2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7
IHJldHVybiAyMjU7IH0gc3RhdGljIFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4g
MjI2OyB9IH07IFt4MSwgeCwgQS5mb28yKCldIGlzIFsyLCAzLCAyMjZdCiAKIEluc3RhbmNlIG1l
dGhvZHMgd2l0aCBkdXBsaWNhdGVkIG5hbWVzCiBQQVNTIGNsYXNzIEEgeyBhYigpIHsgcmV0dXJu
IDQwMSB9IGFiKCkgeyByZXR1cm4gNDAyOyB9IH07IChuZXcgQSkuYWIoKSBpcyA0MDIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9kLW5h
bWVzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2Qt
bmFtZXMuanMKaW5kZXggMTQyYmIwNWIzYjQwOWQ5MDEyYWE0OWFkNDI1MjNkZTk3MTUzYzZhNi4u
MWJiZTkwMzU4NmU4NTQ3MjI0ZGQzYmJjZjRhOTBlZjgyNDQzYjkwNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMuanMKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMu
anMKQEAgLTU3LDkgKzU3LDkgQEAgc2hvdWxkQmUoIkEgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5j
ZU1ldGhvZCgnZm9vJywgMjE1KTsgKG5ldyBBKVsnZm9vJ10oKSIsICIyMTUKIHNob3VsZEJlKCJB
ID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNik7IEIgPSBjcmVhdGVD
bGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnYmFyJywgMjE3KTsgWyhuZXcgQSlbJ2ZvbyddKCksIChu
ZXcgQilbJ2JhciddKCldIiwgIlsyMTYsIDIxN10iKTsKIHNob3VsZEJlKCJ4ID0gMjE4OyBjbGFz
cyBBIHsgW3grK10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSlbMjE4XSgpIiwgIjIxOSIpOwog
c2hvdWxkQmUoInggPSB1bmRlZmluZWQ7IGNsYXNzIEEgeyBbKHg9MjIwKSAmJiAnZm9vJ10oKSB7
IHJldHVybiB4OyB9IH07IChuZXcgQSkuZm9vKCkiLCAiMjIwIik7Ci1zaG91bGRCZSgieCA9IDIy
MTsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYg
eCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCld
IiwgIlsyMjEsIDIyMl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBB
IHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4KytdKCkgeyBy
ZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0oKV0iLCAiWzIyMSwg
MjIyXSIpOwogc2hvdWxkQmUoInggPSAxOyBjbGFzcyBBIHsgWydmb28nICsgeCsrXSgpIHsgcmV0
dXJuIDIyMzsgfSBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI0OyB9IH07IFsobmV3IEEpLmZv
bzEoKSwgKG5ldyBBKS5mb28yKCldIiwgIlsyMjMsIDIyNF0iKTsKLXNob3VsZEJlKCJ4ID0gMTsg
Y2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAnZm9v
JyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0iLCAi
WzIsIDMsIDIyNl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsgWydmb28n
ICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0
dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSIsICJbMiwgMywgMjI2XSIpOwog
CiBkZWJ1ZygnJyk7CiBkZWJ1ZygnU3RhdGljIG1ldGhvZHMgd2l0aCBjb21wdXRlZCBuYW1lcycp
OwpAQCAtNzIsOSArNzIsOSBAQCBzaG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01l
dGhvZCgnZm9vJywgMzE1KTsgQVsnZm9vJ10oKSIsICIzMTUiKTsKIHNob3VsZEJlKCJBID0gY3Jl
YXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTYpOyBCID0gY3JlYXRlQ2xhc3NXaXRo
U3RhdGljTWV0aG9kKCdiYXInLCAzMTcpOyBbQVsnZm9vJ10oKSwgQlsnYmFyJ10oKV0iLCAiWzMx
NiwgMzE3XSIpOwogc2hvdWxkQmUoInggPSAyMTg7IGNsYXNzIEEgeyBzdGF0aWMgW3grK10oKSB7
IHJldHVybiB4OyB9IH07IEFbMjE4XSgpIiwgIjIxOSIpOwogc2hvdWxkQmUoInggPSB1bmRlZmlu
ZWQ7IGNsYXNzIEEgeyBzdGF0aWMgWyh4PTIyMCkgJiYgJ2ZvbyddKCkgeyByZXR1cm4geDsgfSB9
OyBBLmZvbygpIiwgIjIyMCIpOwotc2hvdWxkQmUoInggPSAyMjE7IGNsYXNzIEEgeyBzdGF0aWMg
Wyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgp
IHsgcmV0dXJuIHgyOyB9IH07IFtBWzIyMV0oKSwgQVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsK
K3Nob3VsZEJlKCJ2YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgc3RhdGljIFsoeDE9eCkg
JiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRpYyBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVy
biB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgpXSIsICJbMjIxLCAyMjJdIik7CiBzaG91bGRC
ZSgieCA9IDE7IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyMzsg
fSBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBbQS5mb28xKCksIEEu
Zm9vMigpXSIsICJbMjIzLCAyMjRdIik7Ci1zaG91bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBzdGF0
aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMgWyh4MT14KSAmJiAnZm9v
JyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCBBLmZvbzIoKV0iLCAiWzIsIDMs
IDIyNl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9v
JyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFsoeDE9eCkgJiYgJ2ZvbycgKyB4Kytd
KCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7
CiAKIGRlYnVnKCcnKTsKIGRlYnVnKCdJbnN0YW5jZSBtZXRob2RzIHdpdGggZHVwbGljYXRlZCBu
YW1lcycpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MjAzZTVjNWVjMzQ3N2RkNTg4NTc1ODkxZmI3ZDQzMDdhZDc1NTYxLi4zMzgxMWI4
OGRiZTE3NDE1ZTAyZDVjZDNhMGZhNmRjYzE0NzkyMzgxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAz
LTMwICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIE5vdCB1
c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4gQ2xhc3NEZWNsYXJhdGlvbiBzdGF0ZW1lbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTU3OAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1ODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmlj
dG5lc3MuanM6IEFkZGVkLgorICAgICAgICAoZi50cnkuYyk6CisgICAgICAgIChmKToKKwogMjAy
MC0wMy0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgUmVnRXhwLnByb3RvdHlwZS5leGVjIG11c3QgYWx3YXlzIGFjY2VzcyBsYXN0SW5kZXgKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhwcmVzc2lvbi1zdHJpY3RuZXNz
LmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDdlYTY4NDc5Yzk3M2YzYzYyMGFjZmJmMWYwMTlhYmVkYTkyYTJlZQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhwcmVzc2lvbi1zdHJp
Y3RuZXNzLmpzCkBAIC0wLDAgKzEsNTkgQEAKK2Z1bmN0aW9uIGYoKSB7CisgICAgeworICAgICAg
ICB2YXIgZXJyb3I7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMo
ZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB7fTsKKyAgICAgICAgICAg
IH0sIGQpIHt9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghZXJyb3IgfHwgZXJyb3IubWVzc2FnZSAhPSAiQ2Fu
J3QgZmluZCB2YXJpYWJsZTogZCIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qg
c2hvdWxkIGhhdmUgdGhyb3duIGEgcmVmZXJlbmNlIGVycm9yIik7CisgICAgfQorCisgICAgewor
ICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHZhciBvYmogPSB7fTsKKyAgICAgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KG9iaiwgJ3gnLCB7IGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVlOiAx
IH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3MgYyBleHRlbmRzKGRlbGV0ZSBv
YmoueCwgKCk9Pnt9KSB7fQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBlcnJv
ciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2Ug
IT0gIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVycm9yIik7CisgICAgfQorCisg
ICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHZhciBvYmogPSB7fTsKKyAgICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ3gnLCB7IGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZh
bHVlOiAxIH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3MgYyBleHRlbmRzKGV2
YWwoJ2RlbGV0ZSBvYmoueCcpLCBjbGFzc3t9KSB7fQorICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8
IGVycm9yLm1lc3NhZ2UgIT0gIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVycm9y
Iik7CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgbyA9IHt9OworICAgICAgICBvLl9fZGVm
aW5lR2V0dGVyX18oIngiLCBmdW5jdGlvbiAoKSB7IHJldHVybiA0MjsgfSk7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMgKG8ueCA9IDEzLCBjbGFzcyB7IH0pIHsg
fQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0gIkF0dGVtcHRlZCB0
byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIikKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVycm9yIik7CisgICAgfQorfQor
CisgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQorICAgIGYoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395054</attachid>
            <date>2020-03-31 09:53:18 -0700</date>
            <delta_ts>2020-03-31 14:21:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200331095316.patch</filename>
            <type>text/plain</type>
            <size>249090</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjZmOGI0YWU1MDEyMzE4NjcyM2QwMmI3OTAyODM4ODk1MjlkNGE2Li5mNGE5MjlmYmZjNDA0Yzlj
ODFiY2QxNzlhYThkOWM3ZDhjNjc2YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODAgQEAKKzIwMjAtMDMtMzEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0
IHN0cmljdCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQg
d2hlbiBlbWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0
IHdlIGNhbiBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0
IG11c3QgYmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUg
YmxvY2sgaXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9u
bHkgdGVuCisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5l
c3MsIHNvIGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVz
LgorICAgICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBi
YXNlbGluZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bjo6cnVuKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQXNz
dW1pbmdKSVRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aXNDb25zdHJ1Y3RvciBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
aXNLbm93bkNlbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjp1c2VzRXZhbCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRml0
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHA6CisgICAgICAgIChK
U0M6OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCBjb25zdCk6CisgICAgICAgICogYnl0
ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6
aXNJblN0cmljdENvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRGbGFn
cy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRGbGFncy5oOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlB1dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZEZsYWdzOjppc0RpcmVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRGbGFn
czo6ZWNtYU1vZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OlB1dEJ5SWRG
bGFncyk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNDb25zdHJ1Y3RvciBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGcm9tU2NvcGUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvU2NvcGUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRl
QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25J
Zk5lZWRlZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVjbWFNb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVNjb3Bl
OjpTdHJpY3RNb2RlU2NvcGUpOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlU2NvcGU6On5TdHJp
Y3RNb2RlU2NvcGUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6RW1wdHlMZXRFeHByZXNzaW9uOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpG
b3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKToKKyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6YmluZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cFRvVGhpcyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R3JhcGg6Omdsb2JhbFRoaXNPYmplY3RGb3IpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRUNNQU1vZGUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6
CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjpyZWFk
VG9wKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0
aFN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbEZvckNlbGxXaXRoU3ltYm9sKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dER5bmFtaWNWYXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb1RoaXMpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZFdpdGhUaGlzKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsV2l0
aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0
QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxC
eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxldGVC
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0
ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNh
bGxFdmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1
dER5bmFtaWNWYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENv
bnN0cnVjdG9yTmFtZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUp
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRo
RnVuY3Rpb24pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAg
ICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmtTbG93Q2Fz
ZUlmTm90SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAg
ICAoSlNDOjp0cnlDYWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbGV0ZUJ5
KToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNvbW1vbkNhbGxFdmFsKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6
CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1Bv
cCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2hpZnQp
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6YXJy
YXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQp
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjph
cnJheVByb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjp1c2VzRXZhbCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAg
ICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFy
Z3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1l
bnRzOjptYXRlcmlhbGl6ZVNwZWNpYWxzKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwpOgor
ICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFs
KToKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpldmFs
dWF0ZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRh
YmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpleGVjdXRhYmxlSW5mbyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0dldFB1dEluZm8uY3BwOgorICAgICAgICAoSlNDOjpHZXRQdXRJbmZvOjpkdW1wIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0dldFB1dEluZm8uaDoKKyAgICAgICAgKEpTQzo6R2V0
UHV0SW5mbzo6R2V0UHV0SW5mbyk6CisgICAgICAgIChKU0M6OkdldFB1dEluZm86OmVjbWFNb2Rl
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxTZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvVGhp
c1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUp
OgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpmcm9tQnl0ZSk6CisgICAg
ICAgIChKU0M6OkVDTUFNb2RlOjpzdHJpY3QpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6c2xv
cHB5KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmlzU3RyaWN0IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RUNNQU1vZGU6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OkVD
TUFNb2RlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpzZWxlY3RTdHJ1Y3R1cmVGb3JOZXdGdW5jRXhwKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwp
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpOgorICAgICAgICAoSlNDOjpn
bG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAgICAgICogcnVudGltZS9K
U1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9UaGlzKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhpcyk6Cisg
ICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJh
bFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpHZXRDYWxsZXJTdHJpY3RuZXNzRnVuY3Rvcjo6b3BlcmF0b3IoKSBj
b25zdCk6CisgICAgICAgIChKU0M6Ok51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsOjpjYWxsUmV0
dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAoSlNDOjpvYmpl
Y3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y0lzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0
ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmpl
Y3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNQ
cm9wZXJ0eUlzRW51bWVyYWJsZSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvTG9j
YWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9n
cmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q2FsbCk6CisgICAgICAgICogcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omlz
QXJyb3dGdW5jdGlvbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VB
cnJheVZhbHVlTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToK
KwogMjAyMC0wMy0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAK
ICAgICAgICAgUmVnRXhwLnByb3RvdHlwZS5leGVjIG11c3QgYWx3YXlzIGFjY2VzcyBsYXN0SW5k
ZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAzMGMxZTQyYzFiNTRlN2U2OGI4MDZmY2U1MmJhOGUyOTJiYmExYTc4
Li5kZDhmZmQ4YWU2ODFkMTdiZGJmMjI5MzUyM2UzOTZkMzQ1YWQ5ZDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMjAtMDMtMzEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xh
cmF0aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBKU1Rlc3Rz
LyBzdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMKKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
TE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0V2
ZW50VGFyZ2V0Pjo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwogMjAyMC0wMy0z
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE92ZXJyaWRlcyBv
ZiBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHNob3VsZCBub3QgbmVlZCB0
byBxdWVyeSB0aGUgYmFzZSBjbGFzcydzIGhhc1BlbmRpbmdBY3Rpdml0eSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IGM5OTEwNTNh
MTkxOWY4ZTFiYTRlYTk4Yjc3ZDhlMWE5ZDFiN2RkZTguLmQ1NjViNDEyODllN2Y2ODYxZjhmOWY5
YjdlYWRiMDkxNjk2ZWE0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQ29u
dGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiBm
dW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RS
ZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICBKU09iamVj
dFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CiAKICAg
ICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkpOwogICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAppbmRleCAwMmNlZGM3OTY2YmVjMGE1M2E5YmMwMmE5ZjM3ODNlNzlmNzMyZTJmLi4wM2ExOGRj
OTAzNmI2Njc4NDE5MmVmNTBjOTIwNDVlZDM1MzhiNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTIzLDcg
KzUyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAKICAgICBKU0NvbnRleHRSZWYgZXhl
Y1JlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYg
PSB0b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpS
ZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09i
alJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogICAgIAogICAgIGZvciAo
SlNDbGFzc1JlZiBqc0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+KHRv
SlMoZnVuY3Rpb25SZWYpKS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3Mt
PnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJh
Y2sgY2FsbEFzRnVuY3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlvbikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDIyMmE0ZWUyMGRjYmFkYjA3
YjdiYzY1NGRjZjhhYTgwY2YyYzEyYmUuLjI0MDE3OTE2ZTc1MTc2YjgzZTM1ZDllZDAyODgyODMy
NTIxNmM3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
QEAgLTE5Myw3ICsxOTMsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3Qo
SlNDb250ZXh0UmVmIGN0eCkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKLSAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpTT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICByZXR1cm4gdG9SZWYoanNDYXN0
PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogfQogCiBKU0NvbnRl
eHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggZDM3
MjM2ZjQwYWE4OTkxMjdjNzQ5ZWJkYjk4Njk2Yzc3ODVkOGNiMy4uZDkxMDYyY2Y3YTM1NGYwNmEy
YzYyZjQ0ZjQxODM0NDk1ZDY4MzE3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
SGVhcElubGluZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRl
ICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgotI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAKaW5kZXggOWYyYWJhMzlmMmNlNzA4ZDMxM2I4ZDk0MGNmOTZmYmE0MmZjYzk0ZS4uZmRhYWE2
OTQ1ZmYwZTlkNTE1MWFhYTg5YTdhOTkyMDdhYzFjMjllZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bjo6cnVuKCkKICAgICAgICAgICAgICAgICAgICAgc2NvcGUsIC8vIHNjb3BlCiAgICAgICAgICAg
ICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCiAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhbmQsIC8vIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgIEdldFB1
dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAg
R2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFN
b2RlKCkpLCAvLyBpbmZvCiAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlT3JTY29wZURl
cHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCB9KSwgLy8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4CiAgICAgICAgICAg
ICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAg
ICAgICAgICAgICAgICAgKTsKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICAgICAgICAgICAgICBvcGVyYW5kLCAvLyBkc3QK
ICAgICAgICAgICAgICAgICAgICAgc2NvcGUsIC8vIHNjb3BlCiAgICAgICAgICAgICAgICAgICAg
IHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCi0gICAgICAgICAgICAgICAg
ICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIC8vIGluZm8KKyAgICAgICAgICAg
ICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFy
LCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBtX2J5dGVjb2RlR2VuZXJh
dG9yLmVjbWFNb2RlKCkpLCAvLyBpbmZvCiAgICAgICAgICAgICAgICAgICAgIDAsIC8vIGxvY2Fs
IHNjb3BlIGRlcHRoCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zm
c2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAgICAgICAgICAgICAgICAgKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjZDc1
NDY4MGMxMjZhMGY3Mjc1MzZmMWJlMzdjNGUuLjFmNTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJh
ODdkMDg4ZjdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgpAQCAtMjcsNiArMjcsNyBAQCB0eXBlcyBbCiAgICAgOkJhc2ljQmxvY2tMb2Nh
dGlvbiwKICAgICA6Qm91bmRMYWJlbCwKICAgICA6RGVidWdIb29rVHlwZSwKKyAgICA6RUNNQU1v
ZGUsCiAgICAgOkVycm9yVHlwZSwKICAgICA6R2V0QnlJZE1vZGUsCiAgICAgOkdldEJ5SWRNb2Rl
TWV0YWRhdGEsCkBAIC0xNzQsNiArMTc1LDcgQEAgb3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRv
X3RoaXMsCiAgICAgYXJnczogewogICAgICAgICBzcmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAg
ICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELApAQCAtNTIyLDYgKzUyNCw3IEBAIG9w
IDpwdXRfYnlfaWRfd2l0aF90aGlzLAogICAgICAgICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3Rl
ciwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6ZGVsX2J5
X2lkLApAQCAtNTI5LDYgKzUzMiw3IEBAIG9wIDpkZWxfYnlfaWQsCiAgICAgICAgIGRzdDogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHBy
b3BlcnR5OiB1bnNpZ25lZCwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAog
b3AgOmdldF9ieV92YWwsCkBAIC01NDgsNiArNTUyLDcgQEAgb3AgOnB1dF9ieV92YWwsCiAgICAg
ICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdp
c3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6
IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUsCkBAIC01NTksNiArNTY0LDcgQEAgb3AgOnB1dF9ieV92YWxfd2l0aF90
aGlzLAogICAgICAgICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOnB1dF9ieV92YWxfZGlyZWN0
LApAQCAtNTY2LDYgKzU3Miw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFz
ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAog
ICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1v
ZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5
UHJvZmlsZSwKQEAgLTU3Niw2ICs1ODMsNyBAQCBvcCA6ZGVsX2J5X3ZhbCwKICAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAg
ICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2Rl
LAogICAgIH0KIAogb3AgOnB1dF9nZXR0ZXJfYnlfaWQsCkBAIC03NzgsNiArNzg2LDcgQEAgb3Ag
OmNhbGxfZXZhbCwKICAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGFy
Z2M6IHVuc2lnbmVkLAogICAgICAgICBhcmd2OiB1bnNpZ25lZCwKKyAgICAgICAgZWNtYU1vZGU6
IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNjU3ZTJiYjNlMjNiYTc1YjQ2NzIwMzBhYWMzOGY2Zjg1M2MyNDlm
NS4uZGFlZGVjYjQ5YTliNzY0ZmFmNGExYzRlNzZhZjg1ZTcxZWY1YjcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIwNSw3ICsyMDUsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZShQcmludFN0cmVhbSYgb3V0LCBK
SVRUeXBlIGppdFR5cGUpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiIChOZXZlckZUTE9wdGlt
aXplKSIpOwogICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgp
KQogICAgICAgICBvdXQucHJpbnQoIiAoRGlkVHJ5VG9FbnRlckluTG9vcCkiKTsKLSAgICBpZiAo
b3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFi
bGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgb3V0LnByaW50KCIgKFN0cmljdE1v
ZGUpIik7CiAgICAgaWYgKG1fZGlkRmFpbEpJVENvbXBpbGF0aW9uKQogICAgICAgICBvdXQucHJp
bnQoIiAoSklURmFpbCkiKTsKQEAgLTYxOSw3ICs2MTksNyBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogCiAgICAgICAgICAgICBBU1NFUlQoIWlzSW5pdGlhbGl6YXRpb24oYnl0ZWNvZGUubV9n
ZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgICAgICAgICBpZiAoYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgPT0gTG9jYWxDbG9zdXJlVmFyKSB7Ci0gICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5t
X2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xvc3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dl
dFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgp
LCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCks
IGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KIApAQCAtNjI3LDkgKzYyNyw5IEBAIGJvb2wgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29s
dmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBzY29w
ZSwgaWRlbnQsIEdldCwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIEluaXRp
YWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKLSAgICAgICAgICAgIG1ldGFkYXRhLm1f
Z2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2Rl
KCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBieXRlY29kZS5tX2dldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgp
KTsKICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikKLSAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5m
by5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlh
bGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9
IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVW
YXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUu
bV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xv
YmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBv
cC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNo
cG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3Auc3Ry
dWN0dXJlKQpAQCAtNjYxLDcgKzY2MSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxP
YmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fc3ltYm9sVGFibGVPclNjb3BlRGVwdGguc2NvcGVEZXB0
aCgpLCBzY29wZSwgaWRlbnQsIFB1dCwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBl
KCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxp
emF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1
dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8
IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09
IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQg
PSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9PSBDbG9z
dXJlVmFyIHx8IG9wLnR5cGUgPT0gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBkM2IwNmE4
OTFhZWZjNmM3OTRkNzVlMWMwZDAwNDZlMTkyMzhlODI2Li5lMTExMzlkNWEzODQzNWEwNmRlMjY3
NzVmZmYzMTAwMTVlY2M0NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCkBAIC0yMjIsOSArMjIyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wTWF0
aElDU3RhdHMoKTsKIAotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZENvZGUtPmlzU3RyaWN0TW9kZSgpOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmlzQ29uc3RydWN0b3IoKTsgfQotICAgIEVD
TUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RN
b2RlIDogTm90U3RyaWN0TW9kZTsgfQogICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvZGVUeXBlKCk7IH0KIAogICAgIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPnNjcmlwdE1v
ZGUoKTsgfQpAQCAtMjMyLDExICsyMzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNJbnN0YWxs
ZWRWTVRyYXBCcmVha3BvaW50cygpIGNvbnN0OwogICAgIGJvb2wgaW5zdGFsbFZNVHJhcEJyZWFr
cG9pbnRzKCk7CiAKLSAgICBpbmxpbmUgYm9vbCBpc0tub3duTm90SW1tZWRpYXRlKFZpcnR1YWxS
ZWdpc3RlciByZWcpCisgICAgaW5saW5lIGJvb2wgaXNLbm93bkNlbGwoVmlydHVhbFJlZ2lzdGVy
IHJlZykKICAgICB7Ci0gICAgICAgIGlmIChyZWcgPT0gdGhpc1JlZ2lzdGVyKCkgJiYgIWlzU3Ry
aWN0TW9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICAgICAgaWYgKHJlZy5p
c0NvbnN0YW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnQocmVnKS5pc0NlbGwo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFi
bGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aAppbmRleCA3N2YxOTI5MDY5MDgzMzZlYmQwMDhkY2YwYzM2ZjRhYzZlOWU3NWQ0Li40OWVkZDUy
ODVkNWMyYzI4YjFjOWE0YmNlZWY0NTE3MTk5MGJlOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzYsOSArMzYsOCBAQCBlbnVt
IGNsYXNzIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsK
IC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhY
WENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAg
ICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5n
IHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBp
c0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCi0g
ICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25z
dHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNC
dWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCkBAIC01Nyw3ICs1Niw2IEBAIHN0cnVjdCBFeGVj
dXRhYmxlSW5mbyB7CiAgICAgfQogCiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlc0V2YWw7IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPiht
X2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTcyLDcgKzcwLDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJ
bmZvIHsKIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNp
Z25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDog
MTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBt
X2NvbnN0cnVjdG9yS2luZCA6IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApp
bmRleCA1Nzc4OWJjMmM2NjlmN2NhZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi5mNDMwOWQxODU4
Y2Q2MmMzMGE5ZWQxMmFhNWU4NWEwNGQwZTYyMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IEZpdHM7CiAKIC8vIEltcGxpY2l0
IGNvbnZlcnNpb24gZm9yIHR5cGVzIG9mIHRoZSBzYW1lIHNpemUKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIE9wY29kZVNpemUgc2l6ZT4KLXN0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lm
X3Q8c2l6ZW9mKFQpID09IHNpemUsIHN0ZDo6dHJ1ZV90eXBlPj4geworc3RydWN0IEZpdHM8VCwg
c2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZSAmJiBzdGQ6OmlzX2NvbnN0
cnVjdGlibGU8VD46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICB1c2luZyBUYXJnZXRU
eXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwogCiAgICAgc3Rh
dGljIGJvb2wgY2hlY2soVCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTc0LDE4ICsxNzQsMjAgQEAg
c3RydWN0IEZpdHM8R2V0UHV0SW5mbywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplICE9IE9w
Y29kZVNpemU6OldpZGUzMiwgc3RkOjoKICAgICAvLyAxMyBSZXNvbHZlIFR5cGVzCiAgICAgLy8g
MyBJbml0aWFsaXphdGlvbiBNb2RlcwogICAgIC8vIDIgUmVzb2x2ZSBNb2RlcworICAgIC8vIDEg
Yml0IGlzU3RyaWN0IGZsYWcKICAgICAvLwogICAgIC8vIFRyeSB0byBlbmNvZGUgZW5jb2RlIGFz
CiAgICAgLy8KLSAgICAvLyAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gbW9kZQotICAgIC8vICAg
ICAgICAgICAgICAgICAgICB2Ci0gICAgLy8gZnJlZSBiaXQtPiAwfDAwMDB8MDB8MAotICAgIC8v
ICAgICAgICAgICAgICAgICBeICAgIF4KLSAgICAvLyAgICByZXNvbHZlICB0eXBlICAgcmVzb2x2
ZSBtb2RlCisgICAgLy8gICAgICAgICAgICBpbml0aWFsaXphdGlvbiBtb2RlCisgICAgLy8gICAg
ICAgICAgICAgICAgICAgICB2CisgICAgLy8gaXNTdHJpY3QgLT4gMHwwMDAwfDAwfDAKKyAgICAv
LyAgICAgICAgICAgICAgICAgIF4gICAgXgorICAgIC8vICAgICAgcmVzb2x2ZSAgdHlwZSAgICBy
ZXNvbHZlIG1vZGUKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3Jlc29sdmVUeXBlTWF4ID0g
MSA8PCA0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlTWF4
ID0gMSA8PCAyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZU1vZGVNYXggPSAx
IDw8IDE7CiAKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMSA8PCA3
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZVR5cGVCaXRzID0gKHNfcmVzb2x2
ZVR5cGVNYXggLSAxKSA8PCAzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6
YXRpb25Nb2RlQml0cyA9IChzX2luaXRpYWxpemF0aW9uTW9kZU1heCAtIDEpIDw8IDE7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgc19yZXNvbHZlTW9kZUJpdHMgPSAoc19yZXNvbHZlTW9kZU1h
eCAtIDEpOwpAQCAtMjA2LDcgKzIwOCw4IEBAIHN0cnVjdCBGaXRzPEdldFB1dEluZm8sIHNpemUs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZSAhPSBPcGNvZGVTaXplOjpXaWRlMzIsIHN0ZDo6CiAgICAg
ICAgIGF1dG8gcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkucmVzb2x2ZVR5
cGUoKSk7CiAgICAgICAgIGF1dG8gaW5pdGlhbGl6YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oZ3BpLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKICAgICAgICAgYXV0byByZXNvbHZlTW9k
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5yZXNvbHZlTW9kZSgpKTsKLSAgICAgICAgcmV0
dXJuIChyZXNvbHZlVHlwZSA8PCAzKSB8IChpbml0aWFsaXphdGlvbk1vZGUgPDwgMSkgfCByZXNv
bHZlTW9kZTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdw
aS5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAgICAgICByZXR1cm4gKGlzU3RyaWN0IDw8IDcp
IHwgKHJlc29sdmVUeXBlIDw8IDMpIHwgKGluaXRpYWxpemF0aW9uTW9kZSA8PCAxKSB8IHJlc29s
dmVNb2RlOwogICAgIH0KIAogICAgIHN0YXRpYyBHZXRQdXRJbmZvIGNvbnZlcnQoVGFyZ2V0VHlw
ZSBncGkpCkBAIC0yMTQsMTAgKzIxNyw0NSBAQCBzdHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBzaXpl
LCBzdGQ6OmVuYWJsZV9pZl90PHNpemUgIT0gT3Bjb2RlU2l6ZTo6V2lkZTMyLCBzdGQ6OgogICAg
ICAgICBhdXRvIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KChncGkgJiBz
X3Jlc29sdmVUeXBlQml0cykgPj4gMyk7CiAgICAgICAgIGF1dG8gaW5pdGlhbGl6YXRpb25Nb2Rl
ID0gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25Nb2RlPigoZ3BpICYgc19pbml0aWFsaXphdGlv
bk1vZGVCaXRzKSA+PiAxKTsKICAgICAgICAgYXV0byByZXNvbHZlTW9kZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVNb2RlPihncGkgJiBzX3Jlc29sdmVNb2RlQml0cyk7Ci0gICAgICAgIHJldHVybiBH
ZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSwgaW5pdGlhbGl6YXRpb25Nb2RlKTsK
KyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJp
Y3RCaXQpOworICAgICAgICByZXR1cm4gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5
cGUsIGluaXRpYWxpemF0aW9uTW9kZSwgaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBF
Q01BTW9kZTo6c2xvcHB5KCkpOwogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6
ZT4KK3N0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4geworICAgIHVzaW5nIFRhcmdldFR5
cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CisKKyAgICAvLyBQ
dXRCeUlkRmxhZ3MgaXMganVzdCB0d28gYm9vbGVhbiB2YWx1ZXMgZW5jb2RlZCBhcworICAgIC8v
CisgICAgLy8gICAgICAgIGlzU3RyaWN0CisgICAgLy8gICAgICAgICAgIHYKKyAgICAvLyAgICAw
MDAwMDB8MHwwCisgICAgLy8gICAgICAgICAgICAgXgorICAgIC8vICAgICAgICAgaXNEaXJlY3QK
KyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsKKworICAgIHN0YXRpYyBib29sIGNoZWNr
KFB1dEJ5SWRGbGFncykKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoUHV0QnlJZEZsYWdzIGZsYWdzKQorICAgIHsKKyAg
ICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0
KCkpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3Mu
ZWNtYU1vZGUoKS5pc1N0cmljdCgpKTsKKyAgICAgICAgcmV0dXJuIChpc1N0cmljdCA8PCAxKSB8
IGlzRGlyZWN0OworICAgIH0KKworICAgIHN0YXRpYyBQdXRCeUlkRmxhZ3MgY29udmVydChUYXJn
ZXRUeXBlIGdwaSkKKyAgICB7CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxi
b29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRp
Y19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOworICAgICAgICBhdXRvIGVjbWFNb2Rl
ID0gaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Cisg
ICAgICAgIHJldHVybiBpc0RpcmVjdCA/IFB1dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFN
b2RlKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKTsKKyAgICB9Cit9OwogdGVtcGxh
dGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3Rk
OjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVl
LCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxF
Piwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8
RT4sIHNpemU+OwpAQCAtMzI3LDQgKzM2NSwyOSBAQCBzdHJ1Y3QgRml0czxHZW5lcmljQm91bmRM
YWJlbDxHZW5lcmF0b3JUcmFpdHM+LCBzaXplPiA6IHB1YmxpYyBGaXRzPGludCwgc2l6ZT4gewog
ICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPEVDTUFN
b2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1c2luZyBCYXNl
ID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIC8vIGEgcGFpciBvZiAoUmVzdWx0VHlwZTo6
VHlwZSwgUmVzdWx0VHlwZTo6VHlwZSkgLSB0cnkgdG8gZml0IGVhY2ggdHlwZSBpbnRvIDQgYml0
cworICAgIC8vIGFkZGl0aW9uYWxseSwgZW5jb2RlIHVua25vd24gdHlwZXMgYXMgMCByYXRoZXIg
dGhhbiB0aGUgfCBvZiBhbGwgdHlwZXMKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHR5
cGVXaWR0aCA9IDQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhUeXBlID0gKDEg
PDwgdHlwZVdpZHRoKSAtIDE7CisKKyAgICBzdGF0aWMgYm9vbCBjaGVjayhFQ01BTW9kZSBlY21h
TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpjaGVjayhlY21hTW9kZS52YWx1ZSgp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBjb252ZXJ0
KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQo
ZWNtYU1vZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIEVDTUFNb2RlIGNvbnZlcnQo
dHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBFQ01BTW9kZTo6ZnJvbUJ5dGUoQmFzZTo6Y29udmVydChlY21hTW9kZSkpOworICAgIH0KK307
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAppbmRleCAzZTNlNjVmNTljNTEzMDFlYjJmNDRiMmQy
MzFlZmNlY2E5MWVjY2YxLi43OTkxYWMyYThlNjdjODgwZWIzOGU3NjQ1ZjQ0YjI5ZGQzN2FjYWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEJyaWVm
RnVuY3Rpb25JbmZvcm1hdGlvbihQcmludFN0cmVhbSYgb3V0KSBjb25zdAogdm9pZCBJbmxpbmVD
YWxsRnJhbWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KGJyaWVmRnVuY3Rpb25JbmZvcm1hdGlvbigp
LCAiOjwiLCBSYXdQb2ludGVyKGJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKSk7Ci0gICAgaWYgKGlz
U3RyaWN0TW9kZSgpKQorICAgIGlmIChpc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICBvdXQu
cHJpbnQoIiAoU3RyaWN0TW9kZSkiKTsKICAgICBvdXQucHJpbnQoIiwgIiwgZGlyZWN0Q2FsbGVy
LmJ5dGVjb2RlSW5kZXgoKSwgIiwgIiwgc3RhdGljX2Nhc3Q8S2luZD4oa2luZCkpOwogICAgIGlm
IChpc0Nsb3N1cmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
bGluZUNhbGxGcmFtZS5oCmluZGV4IGUyOWYzODRkMWQwNjcyZmVlYTA3MTIwNWJjYWEyODFhNjQ5
YjIyMjkuLjc1ZjliYjFhODQ2OGE2MWQ3YmU5NmMzYWM5YjkxZTk1M2VhM2JmNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKQEAgLTIz
MSw3ICsyMzEsNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICBwdHJkaWZmX3QgY2Fs
bGVyRnJhbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdGFja09mZnNldCAqIHNpemVvZihSZWdp
c3RlcikgKyBDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCk7IH0KICAgICBwdHJkaWZmX3Qg
cmV0dXJuUENPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdGFja09mZnNldCAqIHNpemVvZihSZWdp
c3RlcikgKyBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCk7IH0KIAotICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
OyB9CisgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGJhc2VsaW5l
Q29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKTsgfQogCiAg
ICAgdm9pZCBkdW1wQnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKFByaW50U3RyZWFtJikgY29uc3Q7
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCmluZGV4IGM4YTRiNjBmYTU4OGIwMTdk
NzllY2YyNzBkOTdhYmI2OGEyNDgyNDkuLjY2NTAwZTYyNzZiYzQ2OTdiZTBlZWExZDg4MTQ5ZmYx
YTUwMTRkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkRmxhZ3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
RmxhZ3MuY3BwCkBAIC0zNiw4ICszNiwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlJZEZsYWdzIGZsYWdzKSB7CiAg
ICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAgaWYgKGZsYWdzICYgUHV0QnlJZElzRGly
ZWN0KQorICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJJc0RpcmVjdCIpOworICAgIGlmIChmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCisgICAg
ICAgIG91dC5wcmludChjb21tYSwgIlN0cmljdCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAppbmRleCA1
YzA0OTI4MTBlMWM5M2ZmNjE1M2U2NTZlZjQ0Yzc3ZTJmZjk3NDhlLi44ZWMwZGJhNmU0NGU3YTMx
MTY0Y2E5N2EzMzFmNGU3Y2Q1NzQxYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRGbGFncy5oCkBAIC0yOSwxMyArMjksMzIgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWVudW0gUHV0QnlJZEZsYWdzIDogaW50MzJfdCB7Ci0gICAgUHV0QnlJZE5vbmUgPSAw
LAorY2xhc3MgUHV0QnlJZEZsYWdzIHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1
dEJ5SWRGbGFncyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gUHV0QnlJZEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7CisgICAgfQogCi0gICAgLy8gVGhpcyBm
bGFnIGluZGljYXRlcyB0aGF0IHRoZSBwdXRfYnlfaWQgaXMgZGlyZWN0LiBUaGF0IG1lYW5zIHRo
YXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQKLSAgICAvLyBjaGVja2luZyBpZiB0aGUg
cHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KLSAgICBQdXRCeUlkSXNEaXJlY3QgPSAweDEs
Ci0gICAgUHV0QnlJZFBlcnNpc3RlbnRGbGFnc01hc2sgPSAweDEsCisgICAgLy8gQSBkaXJlY3Qg
cHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tp
bmcgaWYgdGhlCisgICAgLy8gcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KKyAgICBjb25z
dGV4cHIgc3RhdGljIFB1dEJ5SWRGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlJZEZsYWdzKHRydWUsIGVjbWFNb2RlKTsKKyAg
ICB9CisKKyAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQor
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQorCitw
cml2YXRlOgorICAgIGNvbnN0ZXhwciBQdXRCeUlkRmxhZ3MoYm9vbCBpc0RpcmVjdCwgRUNNQU1v
ZGUgZWNtYU1vZGUpCisgICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkKKyAgICAgICAgLCBt
X2VjbWFNb2RlKGVjbWFNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1faXNEaXJlY3Q7
CisgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCmluZGV4
IDJjYmNiY2FjOTIwNGQ1ZDMwN2UyY2I0ODNkM2VmMDhhM2E3MWUxNGQuLmYxZWRiMzgwN2ViMDIx
ZTQ0NDljY2Q2MTA2OWFmMmFiODYzOTA3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgUHV0QnlJZFN0
YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgQnl0ZWNvZGUKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
bik7CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0Owot
ICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpKSB7CisgICAgaWYg
KCEoYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpKSkgewogICAgICAgICBjb25kaXRpb25TZXQg
PQogICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzQ29u
Y3VycmVudGx5KAogICAgICAgICAgICAgICAgIHZtLCBwcm9maWxlZEJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSwgc3RydWN0dXJlLCB1aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTg5MWYyYTVjMjU3N2I5OWM1Mjky
MmQzZGZkZjU5NmJhMmZlNTZiZi4uNTRkYTU3ZGFiNjljYTI2MWFlZmRjZWI5MzhmZmEwZjRmZjAz
NzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCkBAIC01Nyw3ICs1Nyw2IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtl
ZENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRDb2RlQmxvY2siLCBudWxscHRyLCBudWxs
CiBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZv
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3VzZXNFdmFsKGluZm8udXNlc0V2YWwoKSkK
LSAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8uaXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2lzQ29u
c3RydWN0b3IoaW5mby5pc0NvbnN0cnVjdG9yKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFi
bGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0
aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCmluZGV4IGRkMjE3YjdmZDRmZWY1NmRmOGQ4MWMzNWMyODEzM2Q1Yzg3YTFhOWMu
LjAwZGM2MTYzMzVmZDMxYjA0MzI1MWUzNDQwMGU1N2RlZjUzMTVkNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0xMjMs
NyArMTIzLDYgQEAgcHVibGljOgogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rp
b24gfTsKIAogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25z
dHJ1Y3RvcjsgfQotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0
cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZh
bDsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlTW9kZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNB
cnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQpAQCAtMzM1LDcgKzMzNCw2IEBA
IHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKIAogICAgIHVu
c2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCAyMTNhM2E4MzJkN2VhYWE5Yjk3MTBmMDFhODY0
ZGE5MzViZGQ3ZWE1Li4yZWI5ODRjMWIwNWE0NWUwYWE1MjBlMWZkMzc4YWQ5ZTJmYzkzMjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBl
ckJpbmRpbmcoKTsgfQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAgIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KLSAgICBib29sIGlz
U3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsg
fQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2
YWwoKTsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggY2Q4YmViZjhkMzY0NTQ1ZDE4MmQ3OWNiZjgwNjgwNjcxZjQxMTk3Zi4u
MGJmMzAyOGQ4MTBjNjE2ZWIwN2FkYTY2YzU3ZGE5Mjk5ZTFiYmNjZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCkBAIC03MSwxMCArNzEsMTEgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKIAogICAgIGJvb2wg
aXNDbGFzc0NvbnRleHQgPSBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRp
bmc6Ok5lZWRlZDsKIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRh
YmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1
dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250
ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxz
ZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCks
IGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVz
dWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUs
IEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJs
ZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGlu
ZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRh
YmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQs
IEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9k
ZSk7CiAKICAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0g
ZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKLSAgICBlcnJvciA9IEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0
LCBjb2RlR2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgRUNN
QU1vZGUgZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1v
ZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOworICAgIGVycm9yID0gQnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgJnBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBlY21hTW9kZSk7CiAK
ICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKaW5kZXggYTAxZDQ3ZDdkYzBiYzFiNDgwMTY1YmJjZDI2NmQxMWE2YzIzMmI0NS4u
NjI4NDFiNTY3ZDBlMWY4ODRlZWFmZTdmNjIwZWMxZTA4OTMxYzc5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKQEAgLTI5NywxNCArMjk3LDIxIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSgpCiAgICAgcmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpFcnJvck5vbmUp
OwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9n
cmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2Nr
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1O
b2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBC
eXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdl
bmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAgLCBtX3Ro
aXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9jb2Rl
VHlwZShHbG9iYWxDb2RlKQogICAgICwgbV92bSh2bSkKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMo
ZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihmYWxzZSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCisgICAg
LCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQorICAgICwgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRl
clREWihmYWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHBy
b2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgp
KQorICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAK
QEAgLTMzOCwxNCArMzQ1LDE3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAgICAgfQogfQog
Ci1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5v
ZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBC
eXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdl
bmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Ob2RlKQogICAgICwgbV9j
b2RlVHlwZShGdW5jdGlvbkNvZGUpCiAgICAgLCBtX3ZtKHZtKQorICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSBhIGZsYWcKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBt
X2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjb2Rl
QmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAs
IG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFlY21hTW9kZS5p
c1N0cmljdCgpKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBoYXZlIHRhaWwg
Y2FsbCBlbGltaW5hdGlvbiB3aXRoIHRoZSBwcm9maWxlcgogICAgIC8vIGVuYWJsZWQuIFRoaXMg
aXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSBiZWNhdXNlIHRoZSBwcm9maWxlciBleHBlY3RzCiAg
ICAgLy8gb3Bfd2lsbF9jYWxsIC8gb3BfZGlkX2NhbGwgcGFpcnMgYmVmb3JlIGFuZCBhZnRlciBh
IGNhbGwsIHdoaWNoIGFyZSBub3QKQEAgLTM1Myw4ICszNjMsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4ODE5CiAgICAgLy8KICAgICAvLyBOb3RlIHRoYXQgd2UgaW50ZW50aW9uYWxseSBlbmFibGUg
dGFpbCBjYWxsIGZvciBuYWtlZCBjb25zdHJ1Y3RvcnMgc2luY2UgaXQgZG9lcyBub3QgaGF2ZSBz
cGVjaWFsIGNvZGUgZm9yICJyZXR1cm4iLgotICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25z
Ojp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSkKKyAgICAsIG1faW5U
YWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAm
JiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgZWNtYU1vZGUu
aXNTdHJpY3QoKSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAg
ICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChmdW5jdGlvbk5vZGUtPnVz
ZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZnVuY3Rpb25Ob2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9l
Y21hTW9kZShlY21hTW9kZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+
ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9s
VGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwpAQCAtNDM3LDcgKzQ0OSw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5j
dGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAg
ICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZSk7CiAgICAgICAgIEFTU0VSVCghaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1v
ZGUpKTsKLSAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNE
eW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7
CisgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1p
Yyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICBi
b29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJlcyhmdW5jdGlvbk5vZGUtPmlkZW50
KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3Bl
IHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAgICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1l
U2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVSZWdpc3RlciwgbWFya0FzQ2Fw
dHVyZWQpOwpAQCAtNDg3LDcgKzQ5OSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
ICAgIG1fYXJndW1lbnRzUmVnaXN0ZXItPnJlZigpOwogICAgIH0KICAgICAKLSAgICBpZiAobmVl
ZHNBcmd1bWVudHMgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgJiYgaXNTaW1wbGVQYXJh
bWV0ZXJMaXN0KSB7CisgICAgaWYgKG5lZWRzQXJndW1lbnRzICYmICFlY21hTW9kZS5pc1N0cmlj
dCgpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewogICAgICAgICAvLyBJZiB3ZSBjYXB0dXJl
ZCBhbnkgZm9ybWFsIHBhcmFtZXRlciBieSBuYW1lLCB0aGVuIHdlIHVzZSBTY29wZWRBcmd1bWVu
dHMuIE90aGVyd2lzZSB3ZQogICAgICAgICAvLyB1c2UgRGlyZWN0QXJndW1lbnRzLiBXaXRoIFNj
b3BlZEFyZ3VtZW50cywgd2UgbGlmdCBhbGwgb2Ygb3VyIGFyZ3VtZW50cyBpbnRvIHRoZQogICAg
ICAgICAvLyBhY3RpdmF0aW9uLgpAQCAtNTE2LDcgKzUyOCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgICAgICAgICAgICAgICAgIGVudHJ5LmRpc2FibGVXYXRjaGluZyhtX3ZtKTsK
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05l
Y2Vzc2FyeSwgbmFtZSwgZW50cnkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlciwg
VUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSks
IEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0
aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3lt
Ym9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBv
ZmZzZXQub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlz
LCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBVSU5UX01BWCwgdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91
bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlv
biwgZWNtYU1vZGUpLCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVh
bFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBvZmZzZXQub2Zmc2V0KCkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBUaGlzIGNyZWF0
ZXMgYSBzY29wZWQgYXJndW1lbnRzIG9iamVjdCBhbmQgY29waWVzIHRoZSBvdmVyZmxvdyBhcmd1
bWVudHMgaW50byB0aGUKQEAgLTU1NCwxMSArNTY2LDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxp
bmtlCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQmluZGluZ05vZGUqPihwYXJh
bWV0ZXJzLmF0KGkpLmZpcnN0KS0+Ym91bmRQcm9wZXJ0eSgpOwogICAgICAgICAgICAgZnVuY3Rp
b25TeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgbmFtZSwgU3ltYm9sVGFibGVF
bnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBPcFB1
dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgYWRkQ29u
c3RhbnQoaWRlbnQpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSAr
IGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6
OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9
KSwgb2Zmc2V0Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlz
LCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBhZGRDb25zdGFudChpZGVudCksIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhy
b3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24sIGVjbWFNb2RlKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRh
YmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0
Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAobmVlZHNBcmd1bWVu
dHMgJiYgKGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgfHwgIWlzU2ltcGxlUGFyYW1ldGVyTGlz
dCkpIHsKKyAgICBpZiAobmVlZHNBcmd1bWVudHMgJiYgKGVjbWFNb2RlLmlzU3RyaWN0KCkgfHwg
IWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkpIHsKICAgICAgICAgLy8gQWxsb2NhdGUgYSBjbG9uZWQg
YXJndW1lbnRzIG9iamVjdC4KICAgICAgICAgT3BDcmVhdGVDbG9uZWRBcmd1bWVudHM6OmVtaXQo
dGhpcywgbV9hcmd1bWVudHNSZWdpc3Rlcik7CiAgICAgfQpAQCAtNzEyLDcgKzcyNCw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dFRvVGhpcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJ
bm5lckFycm93RnVuY3Rpb25zVXNlVGhpcygpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJy
b3dGdW5jdGlvbnNVc2VFdmFsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRFbWl0
VG9UaGlzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKGZ1bmN0aW9uTm9k
ZS0+dXNlc1N1cGVyUHJvcGVydHkoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVu
Y3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpKSAmJiAhY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkg
eworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgoZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQ
cm9wZXJ0eSgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBl
clByb3BlcnR5KCkpICYmICFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBtdXN0IGVtaXQgdG9fdGhpcyB3aGVuIHdlJ3JlIG5vdCBpbiBzdHJpY3Qg
bW9kZSBiZWNhdXNlIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnZlcnQg
fHRoaXN8IHRvIGFuIG9iamVjdCwgYW5kIHRoYXQgb2JqZWN0IG1heSBiZSBwYXNzZWQKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHRvIGEgc3RyaWN0IGZ1bmN0aW9uIGFzIHx0aGlzfC4gVGhp
cyBpcyBvYnNlcnZhYmxlIGJlY2F1c2UgdGhhdApAQCAtODMzLDE1ICs4NDUsMjEgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpD
aGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQs
IG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFs
Tm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9j
ayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5p
cXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2Nr
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAg
LCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3Bl
Tm9kZShldmFsTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKEV2YWxDb2RlKQogICAgICwgbV92bSh2bSkK
LSAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAg
ICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9u
KGZhbHNlKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkg
JiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQor
ICAgICwgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWihmYWxzZSkKICAgICAsIG1fbmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigp
IHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAg
ICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkp
CiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CkBAIC04OTEsMTUgKzkw
OSwyMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFs
Tm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9z
Y29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBl
OjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rp
b25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
TW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29k
ZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2sp
LCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAg
ICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQogICAgICwgbV90aGlzUmVnaXN0ZXIo
Q2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5cGUoTW9kdWxl
Q29kZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAg
ICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24o
ZmFsc2UpCiAgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQorICAgICwgbV9pblRhaWxQ
b3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2Up
CiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChtb2R1bGVQcm9ncmFt
Tm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0V2YWwo
KSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwog
CkBAIC0yMzk1LDcgKzI0MTksNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjbwogICAgICAgICAg
ICAga2lsbChkc3QpLAogICAgICAgICAgICAgc2NvcGUsCiAgICAgICAgICAgICBhZGRDb25zdGFu
dCh2YXJpYWJsZS5pZGVudCgpKSwKLSAgICAgICAgICAgIEdldFB1dEluZm8ocmVzb2x2ZU1vZGUs
IHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExvY2FsQ2xvc3VyZVZhciA6IHJlc29sdmVU
eXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLAorICAgICAgICAg
ICAgR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgdmFyaWFibGUub2Zmc2V0KCkuaXNTY29wZSgpID8g
TG9jYWxDbG9zdXJlVmFyIDogcmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbiwgZWNtYU1vZGUoKSksCiAgICAgICAgICAgICBsb2NhbFNjb3BlRGVwdGgo
KSwKICAgICAgICAgICAgIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IHZhcmlhYmxlLm9m
ZnNldCgpLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgOiAwKTsKICAgICAgICAgcmV0dXJuIGRzdDsK
QEAgLTI0MjIsMTEgKzI0NDYsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJsZSYKICAgICAgICAg
U2NvcGVPZmZzZXQgb2Zmc2V0OwogICAgICAgICBpZiAodmFyaWFibGUub2Zmc2V0KCkuaXNTY29w
ZSgpKSB7CiAgICAgICAgICAgICBvZmZzZXQgPSB2YXJpYWJsZS5vZmZzZXQoKS5zY29wZU9mZnNl
dCgpOwotICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIExv
Y2FsQ2xvc3VyZVZhciwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgICAgIGdldFB1dElu
Zm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBMb2NhbENsb3N1cmVWYXIsIGluaXRpYWxpemF0
aW9uTW9kZSwgZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0
aCA9IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIg
eyB2YXJpYWJsZS5zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoKSB9KTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlVHlwZSgpICE9IExvY2FsQ2xvc3VyZVZhcik7
Ci0gICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2
ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgICAgIGdldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSgpLCBpbml0aWFsaXphdGlvbk1vZGUs
IGVjbWFNb2RlKCkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGVPclNjb3BlRGVwdGggPSBTeW1i
b2xUYWJsZU9yU2NvcGVEZXB0aDo6c2NvcGVEZXB0aChsb2NhbFNjb3BlRGVwdGgoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIHNjb3BlLCBhZGRDb25zdGFu
dCh2YXJpYWJsZS5pZGVudCgpKSwgdmFsdWUsIGdldFB1dEluZm8sIHN5bWJvbFRhYmxlT3JTY29w
ZURlcHRoLCAhIW9mZnNldCA/IG9mZnNldC5vZmZzZXQoKSA6IDApOwpAQCAtMjUwNyw3ICsyNTMx
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVy
SUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHAKIAogICAgIG1fc3RhdGljUHJvcGVydHlBbmFs
eXplci5wdXRCeUlkKGJhc2UsIHByb3BlcnR5SW5kZXgpOwogCi0gICAgT3BQdXRCeUlkOjplbWl0
KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBQdXRCeUlkTm9uZSk7IC8vIGlzIG5v
dCBkaXJlY3QKKyAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHlJbmRleCwg
dmFsdWUsIFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKCkpKTsgLy8gaXMgbm90IGRpcmVj
dAogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjUxNyw3ICsyNTQxLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHRoaXNWYWwKIAogICAgIHVuc2lnbmVkIHByb3BlcnR5SW5kZXggPSBhZGRDb25zdGFu
dChwcm9wZXJ0eSk7CiAKLSAgICBPcFB1dEJ5SWRXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0
aGlzVmFsdWUsIHByb3BlcnR5SW5kZXgsIHZhbHVlKTsKKyAgICBPcFB1dEJ5SWRXaXRoVGhpczo6
ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBlY21hTW9k
ZSgpKTsKIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTI1MzAsNyArMjU1NCw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBi
YXNlLCBjb25zdCBJZGVudGlmCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJ
ZChiYXNlLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIFB1dEJ5SWRGbGFncyB0eXBlID0gKHB1dFR5
cGUgPT0gUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCB8fCBwcm9wZXJ0eSAhPSBtX3ZtLnByb3Bl
cnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgPyBQdXRCeUlkSXNEaXJlY3QgOiBQdXRCeUlkTm9u
ZTsKKyAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBlID09IFByb3BlcnR5Tm9kZTo6S25v
d25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJv
dG8pID8gUHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUoKSkgOiBQdXRCeUlkRmxh
Z3M6OmNyZWF0ZShlY21hTW9kZSgpKTsKICAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwg
cHJvcGVydHlJbmRleCwgdmFsdWUsIHR5cGUpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTI1
OTAsNyArMjYxNCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRBc3luY0dlbmVy
YXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotICAgIE9wRGVsQnlJZDo6ZW1p
dCh0aGlzLCBkc3QsIGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgT3BEZWxCeUlk
OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgYWRkQ29uc3RhbnQocHJvcGVydHkpLCBlY21hTW9kZSgp
KTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0yNjM0LDI1ICsyNjU4LDI1IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0
QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewotICAgIE9wUHV0QnlWYWw6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZh
bHVlKTsKKyAgICBPcFB1dEJ5VmFsOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwg
ZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRo
aXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAg
IE9wUHV0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5
LCB2YWx1ZSk7CisgICAgT3BQdXRCeVZhbFdpdGhUaGlzOjplbWl0KHRoaXMsIGJhc2UsIHRoaXNW
YWx1ZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQog
ewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVl
KTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCiB7Ci0gICAgT3BEZWxCeVZhbDo6ZW1pdCh0
aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBPcERlbEJ5VmFsOjplbWl0KHRoaXMsIGRz
dCwgYmFzZSwgcHJvcGVydHksIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAg
LTMyNDYsNyArMzI3MCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
bGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlYwogICAgIC8vIEVtaXQg
Y2FsbC4KICAgICBBU1NFUlQoZHN0KTsKICAgICBBU1NFUlQoZHN0ICE9IGlnbm9yZWRSZXN1bHQo
KSk7Ci0gICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCkpOwor
ICAgIGlmIGNvbnN0ZXhwciAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKQorICAgICAgICBDYWxs
T3A6OmVtaXQodGhpcywgZHN0LCBmdW5jLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCksIGNhbGxBcmd1bWVudHMuc3RhY2tPZmZzZXQoKSwgZWNtYU1vZGUoKSk7Cisg
ICAgZWxzZQorICAgICAgICBDYWxsT3A6OmVtaXQodGhpcywgZHN0LCBmdW5jLCBjYWxsQXJndW1l
bnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCksIGNhbGxBcmd1bWVudHMuc3RhY2tPZmZz
ZXQoKSk7CiAgICAgCiAgICAgaWYgKGV4cGVjdGVkRnVuY3Rpb24gIT0gTm9FeHBlY3RlZEZ1bmN0
aW9uKQogICAgICAgICBlbWl0TGFiZWwoZG9uZS5nZXQoKSk7CkBAIC0zNzg5LDcgKzM4MTYsNyBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCBSZQogICAgIHVuc2lnbmVkIG51bVZhcnMgPSBtX2NvZGVC
bG9jay0+bnVtVmFycygpOwogICAgIHB1c2hMZXhpY2FsU2NvcGVJbnRlcm5hbChuYW1lU2NvcGVF
bnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5
cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBURFpSZXF1aXJlbWVudDo6Tm90VW5kZXJURFosIFNj
b3BlVHlwZTo6RnVuY3Rpb25OYW1lU2NvcGUsIFNjb3BlUmVnaXN0ZXJUeXBlOjpWYXIpOwogICAg
IEFTU0VSVF9VTlVTRUQobnVtVmFycywgbV9jb2RlQmxvY2stPm51bVZhcnMoKSA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KG51bVZhcnMgKyAxKSk7IC8vIFNob3VsZCBoYXZlIG9ubHkgY3JlYXRlZCBvbmUg
bmV3ICJ2YXIiIGZvciB0aGUgZnVuY3Rpb24gbmFtZSBzY29wZS4KLSAgICBib29sIHNob3VsZFRy
ZWF0QXNMZXhpY2FsVmFyaWFibGUgPSBpc1N0cmljdE1vZGUoKTsKKyAgICBib29sIHNob3VsZFRy
ZWF0QXNMZXhpY2FsVmFyaWFibGUgPSBlY21hTW9kZSgpLmlzU3RyaWN0KCk7CiAgICAgVmFyaWFi
bGUgZnVuY3Rpb25WYXIgPSB2YXJpYWJsZUZvckxvY2FsRW50cnkocHJvcGVydHksIG1fbGV4aWNh
bFNjb3BlU3RhY2subGFzdCgpLm1fc3ltYm9sVGFibGUtPmdldChOb0xvY2tpbmdOZWNlc3Nhcnks
IHByb3BlcnR5LmltcGwoKSksIG1fbGV4aWNhbFNjb3BlU3RhY2subGFzdCgpLm1fc3ltYm9sVGFi
bGVDb25zdGFudEluZGV4LCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlhYmxlKTsKICAgICBlbWl0
UHV0VG9TY29wZShtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3Njb3BlLCBmdW5jdGlvblZh
ciwgY2FsbGVlLCBUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlh
bGl6YXRpb24pOwogfQpAQCAtMzk3Miw3ICszOTk5LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoY29uc3QgVmFyaWFibGUmIHZhcmlhYmxl
KQogewogICAgIC8vIElmIHdlJ3JlIGluIHN0cmljdCBtb2RlLCB3ZSBhbHdheXMgdGhyb3cuCiAg
ICAgLy8gSWYgd2UncmUgbm90IGluIHN0cmljdCBtb2RlLCB3ZSB0aHJvdyBmb3IgImNvbnN0IiB2
YXJpYWJsZXMgYnV0IG5vdCB0aGUgZnVuY3Rpb24gY2FsbGVlLgotICAgIGlmIChpc1N0cmljdE1v
ZGUoKSB8fCB2YXJpYWJsZS5pc0NvbnN0KCkpIHsKKyAgICBpZiAoZWNtYU1vZGUoKS5pc1N0cmlj
dCgpIHx8IHZhcmlhYmxlLmlzQ29uc3QoKSkgewogICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3Io
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3ZtLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01MDU1LDcgKzUwODIsNyBAQCB2b2lk
IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OnJlY29yZCgpCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRUb1RoaXMoKQogewotICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhp
c1JlZ2lzdGVyKSk7CisgICAgT3BUb1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVnaXN0
ZXIpLCBlY21hTW9kZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggMjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJhZTc0YmFmZjU1Yi4uNzA3NTk2YTQ5Nzcy
MDFjZWU3NDFlMzJhMTc4NzM2ZDU0YTE2Mjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzgwLDEzICsz
ODAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBGaW5hbGx5Q29u
dGV4dDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEluZGV4ZWRGb3JJbkNvbnRleHQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBTdHJpY3RNb2RlU2NvcGU7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIERlY2xhcmF0
aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgQnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayos
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwg
RXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwotICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSos
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29k
ZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSos
IFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAg
ICAgICAgIApAQCAtNDA2LDE0ICs0MDcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0K
IAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBVbmxpbmtlZENvZGVC
bG9jaz4KLSAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSog
bm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQorICAgICAg
ICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogZW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lcygpKSkKICAg
ICAgICAgICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAg
ICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdl
bmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtl
ZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCk7CisgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4o
dm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25t
ZW50LCBlY21hTW9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJh
dG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVw
b3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKQEAgLTEwMTksNyArMTAyMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIHNob3VsZEVtaXRUeXBlUHJvZmlsZXJIb29rcygpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUdlbmVyYXRpb25Nb2RlLmNvbnRhaW5zKENvZGVHZW5lcmF0aW9u
TW9kZTo6VHlwZVByb2ZpbGVyKTsgfQogICAgICAgICBib29sIHNob3VsZEVtaXRDb250cm9sRmxv
d1Byb2ZpbGVySG9va3MoKSBjb25zdCB7IHJldHVybiBtX2NvZGVHZW5lcmF0aW9uTW9kZS5jb250
YWlucyhDb2RlR2VuZXJhdGlvbk1vZGU6OkNvbnRyb2xGbG93UHJvZmlsZXIpOyB9CiAgICAgICAg
IAotICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsgfQorICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWNtYU1vZGU7IH0KICAgICAgICAgdm9pZCBzZXRVc2VzQ2hlY2twb2ludHMoKSB7
IG1fY29kZUJsb2NrLT5zZXRIYXNDaGVja3BvaW50cygpOyB9CiAKICAgICAgICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUo
KTsgfQpAQCAtMTI5Nyw4ICsxMjk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
bV9pc0J1aWx0aW5GdW5jdGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV91c2VzTm9uU3Ry
aWN0RXZhbCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9pblRhaWxQb3NpdGlvbiB7IGZhbHNl
IH07Ci0gICAgICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7CiAg
ICAgICAgIGJvb2wgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWiB7IGZhbHNlIH07CisgICAg
ICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAxOworICAgICAg
ICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJp
dmVkQ29udGV4dFR5cGUgeyBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUgfTsKIAogICAgICAgICBD
b21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaOwpAQCAt
MTMxMiw2ICsxMzE0LDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8Q2F0Y2hF
bnRyeT4gbV9leGNlcHRpb25IYW5kbGVyc1RvRW1pdDsKICAgICB9OwogCisgICAgY2xhc3MgU3Ry
aWN0TW9kZVNjb3BlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFN0cmljdE1vZGVTY29wZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQorICAgICAgICAgICAgOiBtX2dlbmVyYXRvcihnZW5l
cmF0b3IpCisgICAgICAgICAgICAsIG1fcHJldmlvdXNFQ01BTW9kZShnZW5lcmF0b3IubV9lY21h
TW9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgbV9nZW5lcmF0b3IubV9lY21hTW9kZSA9IEVD
TUFNb2RlOjpzdHJpY3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIH5TdHJpY3RNb2RlU2NvcGUo
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2dlbmVyYXRvci5tX2VjbWFNb2RlID0gbV9wcmV2
aW91c0VDTUFNb2RlOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBCeXRlY29k
ZUdlbmVyYXRvciYgbV9nZW5lcmF0b3I7CisgICAgICAgIEVDTUFNb2RlIG1fcHJldmlvdXNFQ01B
TW9kZTsKKyAgICB9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggNjQwYjI0OTc1NWUxMGVjZGQ5YTgzYjllMTRiMDk3YWIzOWZkMDk0Zi4uYmQzM2I4
YTBmOWJiMjIyMzY3ZDY5NDdmZjJiYjg0NDE4OTdmNzc2NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjkwMyw3ICsy
OTAzLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChnZW5l
cmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKICAgICBpZiAobV9hc3NpZ25tZW50Q29udGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6
QXNzaWdubWVudEV4cHJlc3Npb24pCkBAIC0yOTIwLDcgKzI5MjAsNyBAQCBSZWdpc3RlcklEKiBB
c3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSBy
ZXN1bHQuZ2V0KCk7CiAgICAgaWYgKCFpc1JlYWRPbmx5KSB7Ci0gICAgICAgIHJldHVyblJlc3Vs
dCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0
KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhy
b3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Fz
c2lnbm1lbnRDb250ZXh0KSk7CisgICAgICAgIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0
UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5lY21h
TW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3Vu
ZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQobV9hc3NpZ25tZW50Q29u
dGV4dCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJlc3VsdC5nZXQoKSwg
dmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KIApAQCAtMzE0MCw3ICszMTQw
LDcgQEAgUmVnaXN0ZXJJRCogRW1wdHlMZXRFeHByZXNzaW9uOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXMKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0
TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxp
emF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRv
U2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5lY21hTW9kZSgp
LmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIHZhciwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1f
aWRlbnQubGVuZ3RoKCkpOyAKICAgICB9CiAKQEAgLTMzNTAsMTMgKzMzNTAsMTMgQEAgdm9pZCBG
b3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIHByb3BlcnQKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5
RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGxvY2Fs
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUo
KS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGlmICh2
YXIuaXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlF
eGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5n
ZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93
SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5v
dEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShz
Y29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6
YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5hbWUsIHZhciwgbV9sZXhwci0+cG9zaXRpb24o
KSwgbV9sZXhwci0+cG9zaXRpb24oKSArIGlkZW50Lmxlbmd0aCgpKTsKICAgICB9OwpAQCAtMzYw
NywxMyArMzYwNywxMyBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLm1vdmUobG9jYWwsIHZhbHVlKTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQog
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVk
ZWQodmFyKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0
KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3Vu
ZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxp
emF0aW9uKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUu
Z2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJv
d0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpO
b3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHIt
PnBvc2l0aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9sZXhw
ci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewpAQCAtNDM5Nyw2ICs0Mzk3LDggQEAgdm9pZCBDbGFz
c0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgU3RyaWN0
TW9kZVNjb3BlIHN0cmljdE1vZGVTY29wZShnZW5lcmF0b3IpOworCiAgICAgaWYgKG1fbmVlZHNM
ZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIEJ5
dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIApAQCAtNDgzMSw3ICs0ODMz
LDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKSBjb24KICAgICAgICAgICAgIGdlbmVyYXRvci5saWZ0
VERaQ2hlY2tJZlBvc3NpYmxlKHZhcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCku
aXNTdHJpY3QoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVu
ZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwpAQCAtNDg0MSw3ICs0ODQzLDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKSBjb24KICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdl
dCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91
bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVu
dENvbnRleHQobV9iaW5kaW5nQ29udGV4dCkpOworICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29w
ZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlv
bk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2JpbmRpbmdDb250ZXh0KSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIGlmIChtX2JpbmRpbmdDb250ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJh
dGlvblN0YXRlbWVudCB8fCBtX2JpbmRpbmdDb250ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpD
b25zdERlY2xhcmF0aW9uU3RhdGVtZW50KQogICAgICAgICBnZW5lcmF0b3IubGlmdFREWkNoZWNr
SWZQb3NzaWJsZSh2YXIpOwpAQCAtNDg3OSw3ICs0ODgxLDcgQEAgdm9pZCBBc3NpZ25tZW50RWxl
bWVudE5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKgogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlmIChnZW5lcmF0b3Iu
ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFy
LCBudWxscHRyLCBzY29wZS5nZXQoKSk7CkBAIC00ODkwLDcgKzQ4OTIsNyBAQCB2b2lkIEFzc2ln
bm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqCiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBpZiAo
IWlzUmVhZE9ubHkpIHsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29w
ZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5v
dEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24pOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3Bl
LmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhy
b3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6
Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlw
ZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChtX2Fzc2lnbm1lbnRUYXJnZXQtPmlzRG90QWNjZXNzb3JOb2RlKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
Y3BwCmluZGV4IDM5Y2JmODJlMjExMzIwNWI1NmYzYTdkNjg3NjM1ZjBjM2U3MGYxN2EuLmY0NWUw
MWQwNjcxOTMwNzYyZmMwNzA4NTUwZjNlNDdiY2EzYzRiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjEyLDkg
KzIxMiw5IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYgdm0pIGNv
bnN0CiAgICAgaWYgKCF0aGlzVmFsdWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBOb3RTdHJpY3RNb2RlOwotICAgIGlmIChjb2RlQmxv
Y2sgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgZWNtYU1vZGUgPSBTdHJp
Y3RNb2RlOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnNsb3BweSgpOworICAg
IGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmlj
dENvbnRleHQoKSkKKyAgICAgICAgZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7CiAgICAg
cmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIApAQCAtMjUzLDcgKzI1Myw4IEBAIEpTVmFsdWUg
RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBKU09iCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclRE
WjsKICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCkt
PmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgYXV0byogZXZhbCA9IERpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwg
Y2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUo
KSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24o
KSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOworICAgIEVDTUFNb2RlIGVj
bWFNb2RlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQo
KSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBhdXRvKiBl
dmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3Vy
Y2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9j
ay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5
cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOwogICAgIGlmIChVTkxJS0VMWShjYXRj
aFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4
Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggOTUzZmJhZWY0OGYzYTU1NGQ0NTliZDlhMmIzZDZlNjNkYWE3Y2FjNy4u
MGRlOGNlZmE3YmNmZmUzNGVhYzQ1Zjk3OTZiZWUzZDc5OTU5MzViNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMTg2LDEwICsxODYsMTAgQEAgZW51bSBjbGFzcyBUb1RoaXNSZXN1bHQgewogICAg
IEdsb2JhbFRoaXMsCiAgICAgRHluYW1pYywKIH07Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9U
aGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJiB2
YWx1ZUZvck5vZGUpCitpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYg
dm0sIEVDTUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCiB7CiAg
ICAgLy8gV2UgbG9vayBhdCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9z
dCBjYXNlcyBhbmQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVz
LgotICAgIGlmIChpc1N0cmljdE1vZGUpIHsKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkg
ewogICAgICAgICBpZiAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5
cGUgJiBTcGVjT2JqZWN0T3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6
SWRlbnRpdHk7CiAgICAgfSBlbHNlIHsKQEAgLTIwMywyMCArMjAzLDIwIEBAIGlubGluZSBUb1Ro
aXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFi
c3RyYWN0VmFsdWUmCiAgICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9kID09ICZKU09iamVjdDo6
dG9UaGlzKQogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5Owog
ICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNTY29wZTo6dG9UaGlzKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgICAgICBpZiAoZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6
VW5kZWZpbmVkOwogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRo
aXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoKGlzU3RyaWN0
TW9kZSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+
U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewor
ICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAh
KHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9z
dHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICBib29sIGFsbFN0cnVjdHVyZXNBcmVKU1Nj
b3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7CiAgICAgICAgIGJvb2wg
b3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVy
ZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAg
ICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKICAgICAgICAgICAgIEFT
U0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBl
LnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOwotICAg
ICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCisgICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlz
U3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAg
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBo
ZXJlIHNpbmNlIGVpdGhlcjoKICAgICAgICAgICAgIC8vIDEpIFdlIGFyZSBpbiBzdHJpY3QgbW9k
ZSBhbmQgc3RyaW5ncy9zeW1ib2xzIGFyZSBub3Qgd3JhcHBlZApAQCAtMjMwLDcgKzIzMCw3IEBA
IGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0
cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGlmICghb3ZlcnJpZGVzVG9UaGlzKQog
ICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgICAgIGlmIChh
bGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkK
KyAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKICAgICAgICAgICAgIHJldHVybiBUb1RoaXNS
ZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgIH0KQEAgLTI3MzAsOSArMjczMCw5IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RW
YWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsKLSAgICAgICAgYm9vbCBzdHJpY3RN
b2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAg
ICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogCi0gICAgICAgIFRv
VGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV92bSwgc3RyaWN0TW9kZSwg
c291cmNlKTsKKyAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0
eShtX3ZtLCBlY21hTW9kZSwgc291cmNlKTsKICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAg
ICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgogICAgICAgICAgICAgbV9zdGF0ZS5z
ZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7CkBAIC0yNzQ2LDcgKzI3NDYsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgZGVzdGluYXRpb24uc2V0VHlwZSht
X2dyYXBoLCBTcGVjT2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRv
VGhpc1Jlc3VsdDo6RHluYW1pYzoKLSAgICAgICAgICAgIGlmIChzdHJpY3RNb2RlKQorICAgICAg
ICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b24ubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGRl
c3RpbmF0aW9uID0gc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAppbmRleCA5OTYxZDkwMzJkNjgwZDg1MzQ2NTk4ZGU2YTJiOGZhY2Q3
MzQyN2JkLi4wMmM5MGQ0MGNmNzFlZGQ2OWQ5YTRiZTIxYTE5NjJjOWZlMTNlZjVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjQ1
LDEwICsyNDUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2Us
IENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3Rh
dHVzLCBBY2Nlc3NUeXBlLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpOwogICAgIHZvaWQgZW1p
dFB1dEJ5SWQoCi0gICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUq
IHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJlY3QpOworICAgICAgICBO
b2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5
SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CiAgICAgdm9pZCBoYW5kbGVQdXRC
eUlkKAogICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCi0gICAg
ICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGludHJ1Y3Rpb25TaXplKTsKKyAgICAgICAgYm9v
bCBpc0RpcmVjdCwgdW5zaWduZWQgaW50cnVjdGlvblNpemUsIEVDTUFNb2RlKTsKICAgICAKICAg
ICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBjaGVjayBmb3IgdGhp
cyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29uZGl0aW9uIG5vIGxv
bmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNrIGNhbiBiZSBlbWl0
dGVkLgpAQCAtODQ2LDE4ICs4NDYsMTggQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9k
ZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3As
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFy
Z0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3Vu
dCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBpZiAo
YWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwg
YXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0Nv
dW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOwogICAgICAgICAgICAgb3AgPSBUYWlsQ2Fs
bElubGluZWRDYWxsZXI7CiAgICAgICAgIH0KIAogCiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRD
YWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgT3BJbmZvKHNpZ25hdHVy
ZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikp
OworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZz
ZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaXNWYWxpZCgpKQog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgY2FsbCk7CiAgICAgICAgIHJldHVybiBjYWxsOwpAQCAt
MTM0NCw3ICsxMzQ0LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDYWxsKAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIE5vZGUqIGNhbGxO
b2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIE5vZGUq
IGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAg
ICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxWYXJhcmdzICYmIGNhbGxOb2RlLT5v
cCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgIHJldHVybiBjYWxsTm9kZS0+b3Ao
KSA9PSBUYWlsQ2FsbCA/IFRlcm1pbmFsIDogTm9uVGVybWluYWw7CiB9CkBAIC0yMTgyLDcgKzIx
ODIsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERp
cmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgewogICAgICAgICBh
ZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0LCBjYWxsT3AsIG51bGxwdHIsIG15Q2FsbFRhcmdl
dE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAgICAgcmVzdWx0LCBj
YWxsT3AsIE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICAgICAg
VkVSQk9TRV9MT0coIldlIGFkZGVkIGEgY2FsbCBpbiB0aGUgc2xvdyBwYXRoXG4iKTsKICAgICB9
IGVsc2UgewpAQCAtMzY1Niw3ICszNjU2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
RE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gSlNDX0RP
TUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUywgIkN1cnJlbnRseSBD
YWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBhcmd1bWVudHMuIik7
CiAKICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICBhZGRDYWxsKHJlc3VsdCwgQ2FsbCwgc2lnbmF0
dXJlLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOworICAgIGFkZENhbGwocmVzdWx0LCBDYWxsLCBPcEluZm8oc2lnbmF0
dXJlKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zm
c2V0LCBwcmVkaWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDYxNSwyMiArNDYx
NSwyMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogfQogCiB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKLSAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRC
eUlkU3RhdHVzLCBib29sIGlzRGlyZWN0KQorICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5
SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIGlmIChp
c0RpcmVjdCkKLSAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkRGlyZWN0LCBPcEluZm8oaWRlbnRp
ZmllciksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkRGlyZWN0LCBP
cEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKICAgICBl
bHNlCi0gICAgICAgIGFkZFRvR3JhcGgocHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkgPyBQdXRC
eUlkRmx1c2ggOiBQdXRCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UsIHZhbHVlKTsKKyAg
ICAgICAgYWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IFB1dEJ5SWRGbHVz
aCA6IFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwg
dmFsdWUpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIE5v
ZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgTm9kZSogdmFsdWUsCi0gICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJ
ZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQorICAgIGNv
bnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVk
IGluc3RydWN0aW9uU2l6ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYgKCFwdXRCeUlk
U3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0
aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMu
aXNTZXQoKSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKLSAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5
SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCkBAIC00NjM4LDcgKzQ2MzgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJZFN0YXR1
cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMo
KSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7Ci0g
ICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0
YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NjQ3LDcgKzQ2NDcsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAgICAgICAgIGlmIChwdXRC
eUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0
aW9uKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAo
IWNoZWNrKHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25kaXRpb25TZXQoKSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1
dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQo
YmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9k
ZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CkBAIC00NjkwLDcgKzQ2OTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeUlkKAogCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyht
X2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwog
ICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAg
ICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNE
aXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUs
IHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNDc1Nyw3ICs0NzU3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKIAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQoU3BlY0Nl
bGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgICAgIGlmICgh
bG9hZGVkVmFsdWUpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFN
b2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ4MDEs
NyArNDgwMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQog
ICAgIAogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQo
YmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9k
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IH0KIH0KQEAgLTQ5NzMsNyArNDk3Myw4IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBn
ZXRUaGlzKCk7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOworICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgICAg
ICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hlZFN0
cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBudWxs
cHRyOwogICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQpAQCAtNDk4NCw3ICs0OTg1
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmNvdWxk
VGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAgICAgICAgIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKQogICAgICAgICAgICAgICAgIHx8IChvcDEtPm9wKCkgPT0gR2V0TG9jYWwgJiYgb3AxLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgpKSkgewot
ICAgICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChUb1RoaXMsIE9wSW5mbygpLCBPcElu
Zm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CisgICAgICAgICAgICAgICAgc2V0VGhpcyhhZGRU
b0dyYXBoKFRvVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBPcEluZm8oZ2V0UHJl
ZGljdGlvbigpKSwgb3AxKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIENoZWNrU3RydWN0dXJlLApAQCAtNTgy
NCw3ICs1ODI1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHRoaXNWYWx1ZSk7CiAgICAgICAgICAg
ICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCh2
YWx1ZSk7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgUHV0QnlWYWxXaXRo
VGhpcywgT3BJbmZvKDApLCBPcEluZm8oMCkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2Rl
OjpWYXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwg
T3BJbmZvKDApKTsKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRo
X3RoaXMpOwogICAgICAgICB9CkBAIC01ODk0LDE0ICs1ODk1LDE0IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUubV9w
cm9wZXJ0eV07CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5p
ZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotICAgICAgICAgICAgYm9vbCBkaXJlY3Qg
PSAhIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KTsKKyAgICAgICAgICAgIGJv
b2wgZGlyZWN0ID0gYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpOwogCiAgICAgICAgICAgICBQ
dXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKICAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0
YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1fZ3JhcGguaWRlbnRp
ZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGhh
bmRsZVB1dEJ5SWQoYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlk
KSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGRpcmVjdCwgY3VycmVu
dEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpLCBpZGVudGlmaWVyTnVtYmVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUo
KSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX3B1dF9ieV9pZCk7CiAgICAgICAgIH0KIApAQCAtNTkxMiw4ICs1OTEzLDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5v
ZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5
dGVjb2RlLm1fcHJvcGVydHldOwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKLQotICAgICAgICAgICAg
YWRkVG9HcmFwaChQdXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCB1aWQpKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAgICAgICAg
ICBhZGRUb0dyYXBoKFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIGJhc2Us
IHRoaXNWYWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X2lk
X3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIApAQCAtNTk0OCw3ICs1OTQ4LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29k
ZS5tX3Byb3BlcnR5XTsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07Ci0gICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBiYXNlKSk7CisgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSks
IGJhc2UpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV9pZCk7CiAgICAgICAg
IH0KIApAQCAtNTk1Niw3ICs1OTU2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0
KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAgICAgICBOb2RlKiBrZXkgPSBnZXQoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgo
RGVsZXRlQnlWYWwsIGJhc2UsIGtleSkpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0
LCBhZGRUb0dyYXBoKERlbGV0ZUJ5VmFsLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIGJh
c2UsIGtleSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X3ZhbCk7CiAgICAg
ICAgIH0KIApAQCAtNjQ3OSw3ICs2NDc5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKICAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2FsbEV2YWw+
KCk7CiAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtYnl0ZWNvZGUubV9hcmd2Owot
ICAgICAgICAgICAgYWRkQ2FsbChieXRlY29kZS5tX2RzdCwgQ2FsbEV2YWwsIG51bGxwdHIsIGdl
dChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQsIGdl
dFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2RlLm1fZHN0LCBDYWxs
RXZhbCwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUp
LCBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC02ODI4LDcgKzY4MjgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgaWYgKG5lZWRzRHluYW1pY0xvb2t1cChyZXNv
bHZlVHlwZSwgb3BfcHV0X3RvX3Njb3BlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpZGVu
dGlmaWVyTnVtYmVyICE9IFVJTlRfTUFYKTsKICAgICAgICAgICAgICAgICB1aW50NjRfdCBvcElu
Zm8xID0gbWFrZUR5bmFtaWNWYXJPcEluZm8oaWRlbnRpZmllck51bWJlciwgZ2V0UHV0SW5mby5v
cGVyYW5kKCkpOwotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0RHluYW1pY1ZhciwgT3BJ
bmZvKG9wSW5mbzEpLCBPcEluZm8oKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNv
ZGUubV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0RHluYW1pY1Zhciwg
T3BJbmZvKG9wSW5mbzEpLCBPcEluZm8oZ2V0UHV0SW5mby5lY21hTW9kZSgpKSwgZ2V0KGJ5dGVj
b2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkpOwogICAgICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3B1dF90b19zY29wZSk7CiAgICAgICAgICAgICB9CiAKQEAgLTY4NTAsNyAr
Njg1MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEKICAgICAgICAg
ICAgICAgICAgICAgfHwgc3RhdHVzWzBdLmtpbmQoKSAhPSBQdXRCeUlkVmFyaWFudDo6UmVwbGFj
ZQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNbMF0uc3RydWN0dXJlKCkuc2l6ZSgpICE9
IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkLCBPcEluZm8oQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSksIGdldChieXRlY29kZS5tX3Nj
b3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQdXRCeUlkLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywg
dWlkKSksIE9wSW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSksIGdldChieXRl
Y29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIE5vZGUqIGJhc2Ug
PSB3ZWFrSlNDb25zdGFudChnbG9iYWxPYmplY3QpOwpAQCAtNzQ5Niw4ICs3NDk2LDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICIgZm9y
IGlubGluaW5nIGF0ICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpERkdKSVQpLAogICAgICAgICAgICAgICAgICIgIiwgaW5saW5lQ2FsbEZyYW1lKCktPmRpcmVj
dENhbGxlcik7CiAgICAgICAgIH0KLSAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICIsIGlz
U3RyaWN0TW9kZSA9ICIsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9k
ZSgpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuKCk7CiAgICAgICAgIGNvZGVCbG9jay0+YmFz
ZWxpbmVWZXJzaW9uKCktPmR1bXBCeXRlY29kZSgpOwogICAgIH0KICAgICAKQEAgLTc2MDQsNyAr
NzYwMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5
dGVjb2RlLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCwgaW5zdHJ1Y3Rpb25TaXplKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRl
bnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
LCBpbnN0cnVjdGlvblNpemUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAgIH0KIAogICAgIGlm
ICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKQEAgLTc2MTUsNyArNzYxNCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCB1bnNpZ25lZCBpbnN0
cnVjdGlvblNpemUpCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRk
VmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAgICAg
IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0
QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oMCkpOworICAgICAgICBh
ZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5
VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpKTsKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0QnlWYWwgYW5kIFB1dEJ5VmFs
RGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2JiZXIgZXhpdCBzdGF0ZSwgc2lu
Y2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApp
bmRleCA2NTA1M2NlYjVlMDg3YTBjZDRhMzE0ODBhZmRlOGQ2NTE4MWVkMTQzLi5lNzgwMWY4MjFj
MTNmNTFkZjg5YmIzZmM1MTZhODNlNTZmNTM2OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNzQ0LDcgKzc0
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNhc2UgVG9UaGlz
OiB7Ci0gICAgICAgICAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVu
dGl0eShtX2dyYXBoLm1fdm0sIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpOworICAgICAgICAgICAg
ICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3Zt
LCBub2RlLT5lY21hTW9kZSgpLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHkpIHsKICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAppbmRleCA3OWE5YzRmYWI1MGU2YzY2NTVhNDZkNGM5YTFmOThiZWYzYzc4
ZjM3Li40ZmNiY2ZjM2RiMTliOTVkMmE4ZDRmMzk5ODRmMWE5M2E4MmMyZWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI4MzEsNyArMjgzMSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpeHVwVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgewot
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpOwogCiAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggOTQ3ZWZhYWJhOWU2NDk2YjNiMDVj
NmY1NTE0MmFiN2M3N2I1YjVhMi4uMTY2NmQ3NTM4N2RiYzU1NDAyYzlmN2JlMDM2MTE3NWJjNzVj
ODIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNDQxLDcgKzQ0MSw3
IEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogZ2xvYmFsVGhpc09iamVjdEZvcihDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogb2JqZWN0ID0gZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwotICAgICAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0
Kj4ob2JqZWN0LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlzKG9iamVjdCwgb2JqZWN0LCBOb3RT
dHJpY3RNb2RlKSk7CisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1l
dGhvZFRhYmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBvYmplY3QsIEVDTUFNb2RlOjpzbG9wcHko
KSkpOwogICAgIH0KICAgICAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQpAQCAtNDY5LDE4ICs0NjksNiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5l
Q29kZUJsb2NrKGNvZGVPcmlnaW4sIG1fcHJvZmlsZWRCbG9jayk7CiAgICAgfQogICAgIAotICAg
IGJvb2wgaXNTdHJpY3RNb2RlRm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAg
ICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVy
biBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgICAgIHJldHVybiBjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSgpLT5pc1N0cmljdE1vZGUoKTsKLSAgICB9Ci0gICAgCi0gICAgRUNN
QU1vZGUgZWNtYU1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGlzU3RyaWN0TW9kZUZvcihjb2RlT3JpZ2luKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJp
Y3RNb2RlOwotICAgIH0KLSAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50SXNTdGlsbFZhbGlkKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgewog
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pLT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5pc1N0aWxsVmFsaWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKaW5kZXggYmM3Y2ZiMTJkMGE4ZTJkMzJlMjcyOTdmNzQ4YTY1NWUzNTE3MjY3
Ni4uMjk1ZmM4Y2I2NjA1OGY4NzkyMTczY2IyOTlkM2I5OWJlYTQ0NWEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTIyMDQsNiArMjIwNCw1MyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fb3BJbmZvID0gYXJyYXlNb2RlLmFzV29yZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CisKKyAgICBib29sIGhhc0VDTUFNb2RlKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
b3AoKSkgeworICAgICAgICBjYXNlIENhbGxFdmFsOgorICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6
CisgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CisgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAg
ICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKKyAgICAg
ICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKKyAgICAg
ICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6Cisg
ICAgICAgIGNhc2UgVG9UaGlzOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBFQ01BTW9kZSBlY21hTW9kZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzRUNNQU1vZGUo
KSk7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIENhbGxFdmFsOgorICAg
ICAgICBjYXNlIERlbGV0ZUJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6Cisg
ICAgICAgIGNhc2UgVG9UaGlzOgorICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0
ZShtX29wSW5mby5hczx1aW50OF90PigpKTsKKyAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAg
ICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAg
Y2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAg
ICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CisgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKKyAgICAgICAg
ICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8yLmFzPHVpbnQ4X3Q+KCkpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CisgICAgICAgIH0KKyAg
ICB9CiAgICAgCiAgICAgYm9vbCBoYXNBcml0aE1vZGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oCmluZGV4IDQ1ZTdhYzNkYjU4ZjY1Yjc4YWI2MDJlNzhlNGEzMWM0
NDU4M2M5YzcuLjBlNGMzMWJmMGQ3ZTU4NThiYmRiNzQ0MjMwYTYzNjdjNGZhMGI2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaApAQCAtNDcsNiArNDcsNyBAQCBzdHJ1Y3Qg
T3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oc3RydWN0dXJlKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhPcGVyYW5kIG9wKSA6IG1f
dmFsdWUob3AuYXNCaXRzKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRp
Zmllci5yYXdCaXRzKCkpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1v
ZGUpIDogbV92YWx1ZShlY21hTW9kZS52YWx1ZSgpKSB7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBmMGFkZDlhZTU2MDBmZWVlYTkwNDYxYmNi
OWYxOGVkNDI2NTVjNzZkLi5jN2UzOWYyNmI0MjdmMzIwZWEzZWVmNDM0NWQyYWIzYzRjZDgzODU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTI5
OCw3ICsyOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhp
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHko
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0
cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3ApCkBAIC0zMDcsNyArMzA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Ub1RoaXNTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpKTsKIH0KIAogSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RL
ZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
YmplY3QpCkBAIC0zNDE0LDcgKzM0MTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmlj
dCgpKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDM2MTgxYTI4
MjEzMzllODhiNjYzYzY1ODcxYzBkYTNjYzQ0ZGU4YTIuLmJhYTIxYzBiYmZhMmFjZmJhNTBkNWE4
Zjk5MzJkMzE0ZGI1NDQ5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0yMzksNyArMjM5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAvLyBBbGwg
b2YgdGhlIG91dGVybW9zdCBhcmd1bWVudHMsIGV4Y2VwdCB0aGlzLCBhcmUgcmVhZCBpbiBzbG9w
cHkgbW9kZS4KLSAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX2NvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX2NvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspCiAg
ICAgICAgICAgICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoaSkpOwogICAgICAgICAgICAgfQpAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVhZCBhbGwgb2YgdGhlIGlubGluZSBhcmd1bWVu
dHMgYW5kIGNhbGwgZnJhbWUgaGVhZGVycyB0aGF0IHdlIGRpZG4ndCBhbHJlYWR5IGNhcHR1cmUu
CiAgICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7IGlubGluZUNhbGxGcmFtZTsg
aW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJJbmxpbmVGcmFtZVNr
aXBwaW5nVGFpbENhbGxzKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFt
ZS0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFt
ZS0+aXNJblN0cmljdENvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7IGktLTsp
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoaSkub2Zmc2V0KCkpKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDI4ODg1OGIzOGMxNmE2NWE4YzhlYmRiOWQ0MzcwMTI4MzQ3MmE1MGEuLmEwN2Ji
ZjQ2NjE3M2EwYzNiMjU5Y2Y1NjRjNzhhMjZjMThjYmMzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCkBAIC01MDYsNyArNTA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIFRvVGhpczogewogICAgICAgICAgICAgLy8gVG9UaGlzIGluIG1ldGhvZHMgZm9yIHByaW1p
dGl2ZSB0eXBlcyBzaG91bGQgc3BlY3VsYXRlIHByaW1pdGl2ZSB0eXBlcyBpbiBzdHJpY3QgbW9k
ZS4KLSAgICAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgICAgICAgICAgaWYgKGlzU3RyaWN0
TW9kZSkgewogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlQm9vbGVhbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNCb29sZWFuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZDM4Y2ZkZjJhZTI4NDllMTM5N2IwZGVjOTFmOWZjMDM5
Y2Y5YzNjYy4uZmE3ZjQ2NGUyYTBmNGMzY2UzZjJhMTYxNzY5NWMyZWFjNDczMDYxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIx
MTksNyArMjExOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZh
bChOb2RlKiBub2RlLCBTcGVjdWxhdGVDZWxsT3BlcmFuZCYgYmFzCiAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
IHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3Ry
aWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKICAg
ICAgICAgICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVy
YXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAg
ICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHBy
b3BlcnR5UmVnLCB2YWx1ZVJlZykpOwpAQCAtMzE1MCwyNCArMzE1MCwyNCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkg
ewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNT
dHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbERp
cmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LAorICAgICAgICAg
ICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsCiAgICAgICAgICAg
ICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBwcm9wZXJ0
eSwgdmFsdWVHUFIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0
aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5v
blN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LAogICAg
ICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZSwg
cHJvcGVydHksIHZhbHVlR1BSKSk7CiAgICAgICAgIH0KICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewogICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2Rl
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxT
dHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3QsCisgICAgICAgICAg
ICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJl
Y3RDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsTm9uU3RyaWN0LAogICAg
ICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZSwg
SlNWYWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5KSwgSlNWYWx1ZVJlZ3ModmFsdWVU
YWdHUFIsIHZhbHVlR1BSKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fz
ZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbENlbGxOb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxDZWxsTm9uU3RyaWN0LAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5
KSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlR1BSKSkpOwogICAgICAgICB9CiAjZW5k
aWYKQEAgLTMyOTksNyArMzI5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbEZvckNlbGxXaXRoU3RyaW5nKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwKICAgICBzcGVj
dWxhdGVTdHJpbmcoY2hpbGQyLCBhcmcyR1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN0cmluZ05vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFH
UFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1N0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0zMzE4LDcgKzMzMTgsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5bWJvbChOb2RlKiBub2Rl
LCBFZGdlJiBjaGlsZDEsCiAgICAgc3BlY3VsYXRlU3ltYm9sKGNoaWxkMiwgYXJnMkdQUik7CiAK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RN
b2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1i
b2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJpY3QsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7CisgICAgY2Fs
bE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZh
bENlbGxTeW1ib2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJpY3Qs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7
CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAt
MTEzMjksNyArMTEzMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1p
Y1ZhcihOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFs
dWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obV9q
aXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRE
eW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQo
bm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFt
aWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2Rl
LT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjIxNSw3ICsxMjIx
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2goTm9kZSogbm9k
ZSkKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
R1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
Tm90RGlyZWN0LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21h
TW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwogCiAgICAgbm9SZXN1
bHQobm9kZSk7CiB9CkBAIC0xMjIzMCw3ICsxMjIzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0g
dmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3By
KCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwg
dmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERp
cmVjdCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3RE
aXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0x
MjI0NSw3ICsxMjI0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGly
ZWN0KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1
ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBj
YWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIERpcmVjdCk7CisgICAgY2Fj
aGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2Ny
YXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBEaXJlY3QsIG5vZGUtPmVjbWFN
b2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjI2MCw3ICsxMjI2MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoTm9kZSogbm9kZSkK
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogCiAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAorICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlJZFdpdGhUaGlzLAogICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZ3MsIHRoaXNSZWdzLCB2YWx1ZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTEyNjI5
LDcgKzEyNjI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvVGhpcyhOb2RlKiBu
b2RlKQogICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3ModGhpc1ZhbHVlUmVncywgdGVtcFJlZ3MpOwog
CiAgICAgSl9KSVRPcGVyYXRpb25fR0ogZnVuY3Rpb247Ci0gICAgaWYgKG1faml0LmlzU3RyaWN0
TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgIGlmIChub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkpCiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0Owog
ICAgIGVsc2UKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7CkBAIC0xMzgyOCw3
ICsxMzgyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2Rl
KiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFs
dWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRh
cmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkK
IHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CkBAIC0xMzg0MCw3ICsxMzg0MCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIG1faml0LmVjbWFNb2RlRm9y
KGNvZGVPcmlnaW4pLCBwdXRLaW5kKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1
dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMjMwNjFlNTNjMTUz
YjBhMTE1ZTdlMTdhMDIzMGZlYjY5OTJmOWVmMy4uMTBlYmI5YmYxYjI5OGIyYTcyYjU1M2Q0ZmQ2
ZjhjN2I4NThkZDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaApAQCAtNzE3LDcgKzcxNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVD
aGVja05ldXRlcmVkKE5vZGUqKTsKIAogICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2lu
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUs
IEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQg
PSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7
CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBK
SVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAg
ICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMTMzMjE1NWUxMjgy
ZTUxM2I3ZTFjYzQzOGEyYmJmODRlNWZjNjVmNi4uYWViZDQ1NWQwNTBlM2Q0MzgwMGUzYzFlODYz
NjVjZWMzYzY4YjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC03NjAsNyArNzYwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAg
ICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJ
bW0zMihyZXF1aXJlZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwp
PihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJ
bmZvOjpyZWdUMCk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVn
VDEpOwogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CiAgICAgICAgIG1faml0LmFw
cGVuZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwpAQCAtMjcyNSw5ICsyNzI2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIGFyZzNHUFIgPSBhcmczLmdwcigpOwogICAg
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0KQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNT
dHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbERp
cmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAgICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5p
c1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAgICAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUp
OwpAQCAtMjgwOSw3ICsyODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc091dE9mQm91bmRzKCkpIHsKICAg
ICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5p
c1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAg
ICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8g
KG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJl
eW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5k
c1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0QnlW
YWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAg
ICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0yODkzLDcgKzI4OTQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBpZiAoIXNs
b3dDYXNlcy5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsCi0gICAg
ICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAg
ICAgICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICAgICAg
OiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5
Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKQEAg
LTM4OTcsNyArMzg5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1
dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwg
dmFsdWVHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwpAQCAtNTQ2NSw3ICs1NDY2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAg
ICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRy
dXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKIAogICAgICAgICBtX2ppdC5h
ZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC01NDg0LDcgKzU0ODUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1v
ZGUoKS52YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVuYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTU1MjMsNyArNTUyNCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKIAogICAgICAgICBtX2ppdC5hZGREZWxCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtNTU0Myw3
ICs1NTQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUq
IG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5UmVncywgVHJ1
c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
MzQ5OGY5MTIxNGFiN2IxNGFhMmUxZTJlOWJlYjhmOTgzZmUyMjgwOC4uMjQ1YjZhMWVmNDQ4ZmVj
ODY2NjRhM2M0YmZlNmY2ZTRlNDgyNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjEyMCw3ICsyMTIwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwog
ICAgICAgICBKX0pJVE9wZXJhdGlvbl9HSiBmdW5jdGlvbjsKLSAgICAgICAgaWYgKG1fZ3JhcGgu
aXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgaWYgKG1f
bm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVy
YXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9uID0g
b3BlcmF0aW9uVG9UaGlzOwpAQCAtMzY4Miw3ICszNjgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
TFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CiAKLSAgICAgICAg
dm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRX
aXRoVGhpcywKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdp
dGhUaGlzLAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhp
c1ZhbHVlLCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpKSk7CiAgICAgfQogCkBAIC0zNjk0LDcgKzM2OTQsNyBAQCBwcml2YXRl
OgogICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAyKSk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsKIAotICAgICAgICB2bUNhbGwoVm9pZCwgbV9ncmFw
aC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0
QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsCisgICAgICAg
IHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1
dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLAogICAgICAg
ICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0
eSwgdmFsdWUpOwogICAgIH0KICAgICAKQEAgLTM5NjcsNyArMzk2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAK
ICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Ci0gICAgICAgIEVDTUFNb2RlIGVj
bWFNb2RlID0gbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmVj
bWFNb2RlKCk7CisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKTsK
ICAgICAgICAgCiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAg
IFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CkBAIC00ODI1LDEyICs0ODI1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgVl9KSVRPcGVyYXRpb25fR0NDSiBvcGVyYXRpb24gPSBudWxscHRyOwogICAgICAgICAgICAg
ICAgIGlmIChjaGlsZDIudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ1N0cmljdDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdENlbGxTdHJpbmdOb25TdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1v
ZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1N0cmljdDsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25TdHJpY3Q7CkBAIC00ODQx
LDEyICs0ODQxLDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQyLnVz
ZUtpbmQoKSA9PSBTeW1ib2xVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+
b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVj
dENlbGxTeW1ib2xTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RD
ZWxsU3ltYm9sTm9uU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24g
PSBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0OwpAQCAtNDg1OCwxMiArNDg1OCwxMiBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICBWX0pJVE9wZXJhdGlvbl9HSkpKIG9wZXJhdGlvbjsKICAg
ICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpKQorICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkK
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RT
dHJpY3Q7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRp
b24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdDsKICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1
dEJ5VmFsU3RyaWN0OwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3Q7CkBAIC00OTA5LDcgKzQ5MDks
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBjb250aWd1b3VzUHV0QnlWYWxPdXRPZkJvdW5kcygKLSAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpCisg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICA/IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0
QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDog
KG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5
Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3RvcmFnZSwgaW5k
ZXgsIHZhbHVlLCBjb250aW51YXRpb24pOwpAQCAtNDkzNSw3ICs0OTM1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29u
dGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
aXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAg
ICAgICBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91Ymxl
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5
VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6ICht
X25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERp
cmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxC
ZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN0
b3JhZ2UsIGluZGV4LCB2YWx1ZSwgY29udGludWF0aW9uKTsKQEAgLTQ5NzUsNyArNDk3NSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kcyA9IG1fb3V0LmFib3Zl
T3JFcXVhbCgKICAgICAgICAgICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUo
c3RvcmFnZSwgbV9oZWFwcy5BcnJheVN0b3JhZ2VfdmVjdG9yTGVuZ3RoKSk7CiAKLSAgICAgICAg
ICAgIGF1dG8gc2xvd1BhdGhGdW5jdGlvbiA9IG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgYXV0byBzbG93UGF0aEZ1bmN0aW9uID0g
bV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICA/IChtX25vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFy
cmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmlj
dCkKICAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCk7CiAgICAgICAgICAgICBpZiAo
IWFycmF5TW9kZS5pc091dE9mQm91bmRzKCkpIHsKQEAgLTUyNDAsNyArNTI0MCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1p
emF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlw
dCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSku
Y2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC01MjY5LDcgKzUyNjksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTM5NwogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1fb3V0Lmlu
dFB0clplcm8sIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLnJhd0JpdHMoKSkpKSk7CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFpl
cm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBtX291dC5jb25zdEludFB0
cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpLCBtX291dC5jb25zdElu
dDMyKG1fbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKQEAgLTUzMTAsNyArNTMxMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0
Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgc3Vic2NyaXB0
KSkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0
LCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IG1fb3V0LmludFB0clplcm8sIGJhc2UsIHN1YnNjcmlwdCwgbV9vdXQuY29uc3RJbnQzMihtX25v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtOTgwNSw3ICs5ODA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1bnNp
Z25lZCByZXF1aXJlZEJ5dGVzID0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgc2l6ZW9mKENh
bGxGcmFtZSopICogMjsKICAgICAgICAgICAgICAgICByZXF1aXJlZEJ5dGVzID0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVxdWlyZWRCeXRlcyk7CiAg
ICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZXF1
aXJlZEJ5dGVzKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAg
ICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4o
Z2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSwgR1BS
SW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9iamVjdCwgR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0
YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25DYWxsRXZhbCkpLCBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApOwogICAgICAgICAgICAgICAgIGppdC5j
YWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKQEAgLTEzMzU1LDcgKzEzMzU2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwotICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9u
UHV0RHluYW1pY1Zhck5vblN0cmljdCwKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoVm9pZCwg
bV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3Ry
aWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwKICAgICAgICAgICAgIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50UHRyKHVpZCksIG1fb3V0LmNvbnN0
SW50MzIobV9ub2RlLT5nZXRQdXRJbmZvKCkpKSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cAppbmRleCAwODBmYWVkZTgxYTIyNjgyMjFkMWM1MDg5NDFkOWVmMjcxMjc5YTIwLi45N2JmYjIw
MmU1Zjc0ODRlNmNhNGI0OWQxNGJhYzdmMzE2M2RjYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAt
MTUwLDcgKzE1MCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29u
c3RydWN0b3JOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvVGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICBKU09i
amVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICBy
ZXR1cm4ganNTdHJpbmcodm0sIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKG9iamVjdCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAppbmRleCA1MTg4YzAyMzlkZjQ2ZTAwMmRjOWUyYTFiMzcyMWI1ZDBiMGMwZjhlLi5j
NGQ5YzcyN2UwNzE4ZWVhZWYwMDY4Mjg0NGM1NDczZGIyMmJiZmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTEwMSw3ICsx
MDEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorSlNWYWx1ZSBldmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIEpTVmFs
dWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIAogICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5k
aXJlY3RFdmFsQ29kZUNhY2hlKCkudHJ5R2V0KHByb2dyYW1Tb3VyY2UsIGNhbGxlckNhbGxTaXRl
SW5kZXgpOwogICAgIGlmICghZXZhbCkgewotICAgICAgICBpZiAoIWNhbGxlckNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAg
ICAgICAgICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pczhCaXQoKSkgewogICAgICAgICAgICAgICAg
IExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihnbG9iYWxPYmplY3QsIHByb2dyYW1Tb3Vy
Y2UuY2hhcmFjdGVyczgoKSwgcHJvZ3JhbVNvdXJjZS5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTiwg
Y2FsbGVyQ29kZUJsb2NrKTsKICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBwYXJzZWRPYmpl
Y3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpCkBAIC0xNjUsNyArMTY1LDcgQEAgSlNW
YWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogICAgICAgICAKICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRl
clREWjsKICAgICAgICAgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihj
YWxsZXJTY29wZUNoYWluLCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgIGV2YWwgPSBEaXJl
Y3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9ncmFt
U291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdp
bigpKSwgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgZGVyaXZlZENvbnRleHRUeXBl
LCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxl
c1VuZGVyVERaKTsKKyAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+
c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUs
IGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVz
VW5kZXJURFosIGVjbWFNb2RlKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICFldmFsKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbAogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzID0gZXZh
bC0+bnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsKIAogICAgIEpTU2NvcGUqIHZhcmlh
YmxlT2JqZWN0OwotICAgIGlmICgobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25E
ZWNscykgJiYgZXZhbC0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICBpZiAoKG51bVZhcmlhYmxlcyB8
fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpICYmIGV2YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkp
IHsKICAgICAgICAgc2NvcGUgPSBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPnN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKCksIHNjb3BlKTsKICAgICAg
ICAgdmFyaWFibGVPYmplY3QgPSBzY29wZTsKICAgICB9IGVsc2UgewpAQCAtMTEwNCw3ICsxMTA0
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtlZEV2YWxDb2RlQmxvY2soKTsK
IAogICAgIC8vIFdlIGNhbid0IGRlY2xhcmUgYSAidmFyIi8iZnVuY3Rpb24iIHRoYXQgb3Zlcndy
aXRlcyBhIGdsb2JhbCAibGV0Ii8iY29uc3QiLyJjbGFzcyIgaW4gYSBzbG9wcHktbW9kZSBldmFs
LgotICAgIGlmICh2YXJpYWJsZU9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSAmJiAhZXZhbC0+aXNT
dHJpY3RNb2RlKCkgJiYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMp
KSB7CisgICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpICYmICFldmFsLT5p
c0luU3RyaWN0Q29udGV4dCgpICYmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlv
bkRlY2xzKSkgewogICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odmFyaWFibGVPYmplY3Qp
LT5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCA9IHVubGlua2VkQ29kZUJsb2NrLT52YXJpYWJsZShpKTsKQEAgLTExMjgsNyArMTEy
OCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAKICAgICBpZiAobnVtVmFyaWFibGVzIHx8
IG51bVRvcExldmVsRnVuY3Rpb25EZWNscyB8fCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRl
cykgewogICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIodm0sIHZh
cmlhYmxlT2JqZWN0KTsKLSAgICAgICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5uZXh0KCkgJiYgIWV2
YWwtPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBpZiAodmFyaWFibGVPYmplY3QtPm5leHQoKSAm
JiAhZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0
LT5nbG9iYWxPYmplY3Qodm0pLT52YXJJbmplY3Rpb25XYXRjaHBvaW50KCktPmZpcmVBbGwodm0s
ICJFeGVjdXRlZCBldmFsLCBmaXJlZCBWYXJJbmplY3Rpb24gd2F0Y2hwb2ludCIpOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkgewpAQCAtMTE0
NCw3ICsxMTQ0LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJs
ZSogZXZhbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGV2YWwtPmlzU3RyaWN0TW9kZSgpKSB7Cisg
ICAgICAgIGlmIChldmFsLT5pc0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzOyArK2kpIHsKICAg
ICAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5m
dW5jdGlvbkRlY2woaSk7CiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodmFy
aWFibGVPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAppbmRleCA5MGE5ZGI1YzVhOWZiMDI1NmM1N2QxZDZjZTQ5OWE3ZmU3MzFlMDg1
Li42NDUzOTEyN2I4Yzc0YzgyMDI5YjJiYjYxODBlNjk2OTcxYTY0YmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMTUwLDcgKzE1
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09Q
Q09ERVMpCiAgICAgfTsKIAotICAgIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworICAgIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVD
TUFNb2RlKTsKIAogICAgIGlubGluZSBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lRm9yVmFyYXJncyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVuc2lnbmVk
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDcwZjVkZDQ4MWYxNmRmMTZhYmRkMzIzYmI0
NjRiNTcwMjY0ZGIzYmMuLmFiYTBlZWI1OTViZDAwNTk3MzM1Y2ZkMzEwODVhNGE3NjYxZTY3Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTQ3
MiwxOSArMTQ3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbik7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTdHJpY3RN
b2RlRm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIGF1dG8qIGlubGlu
ZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKTsKLSAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZS0+aXNTdHJpY3RNb2RlKCk7
Ci0gICAgfQotICAgIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlRm9yKENvZGVPcmlnaW4gY29kZU9y
aWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdE1vZGVGb3IoY29kZU9yaWdpbikg
PyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKLSAgICB9Ci0gICAgCiAgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbik7CiAgICAg
CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggYjJiZmNl
NjMzN2Q5YmUwMmQ2MWYzODk1Y2U1ZWNhM2EwZDc4MzIwNi4uZTFlNTY1ZGM1MjQ5ZjZhY2ZkYWEy
NGJmZmI0NDcxZmZjYjIwYjg2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CkBAIC0xMzgsNyArMTM4LDggQEAgYm9vbCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChjb25zdCBPcENh
bGxFdmFsJiBieXRlY29kZSkKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9m
ZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0
ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVu
dCgpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsRXZhbCwgbV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLCByZWdUMSk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUu
bV9lY21hTW9kZS52YWx1ZSgpKSwgcmVnVDIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Q2FsbEV2YWwsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcmVnVDEsIHJlZ1QyKTsKIAog
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVnVDApKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCA5
OGY5NGEyNjg4MzE2OTFmNjc5NWIyNzlmMWI3MDlkMWFkMTFlNDBmLi4yMjZlNmI3OTg1MWI2MWJj
Y2JkNTEwN2NmYTVmY2MzMDI2MGU3OTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBA
IHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24oKQogewotICAgIGlmIChtX2VjbWFNb2RlID09IFN0cmljdE1vZGUpIHsK
KyAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgIGlmIChtX3B1dEtpbmQg
PT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJp
Y3RPcHRpbWl6ZTsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaAppbmRleCBhNjQ3YzQ1YjNmNGUzYjQzZGI1ZDQ2MDU1ZGY3NThiNmI5MmVmOGVhLi5m
MDNlMDkyNTM4NTQxZmIwMzQwZjEyYzZiYThhNjExMTFmMzM2Nzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xMjgs
NyArMTI4LDkgQEAgcHVibGljOgogCiBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGlj
IEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKSB7
IH0KKyAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkKKyAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFN
b2RlOjpzdHJpY3QoKSkKKyAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNl
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAyM2ZmNWM4MWMxYzAz
MjIyZjkxMmE0OTkzMWYyODM2ZGFkY2ZhY2I3Li43ZGNiZThmYTNhZTU2OGNiYWE2NWNhNDFlNWUx
YmEyNzU2NTUzM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAt
MTY2LDcgKzE2Niw3IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjph
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAKIEFMV0FZU19JTkxJTkUg
dm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIsIFZpcnR1YWxSZWdpc3RlciByZWcpCiB7Ci0gICAgaWYgKCFtX2NvZGVC
bG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShyZWcpKQorICAgIGlmICghbV9jb2RlQmxvY2stPmlz
S25vd25DZWxsKHJlZykpCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIH0KIApAQCAtNDk2
LDcgKzQ5Niw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlKFZpcnR1YWxSZWdpc3RlciBy
ZWcsIGNvbnN0IEpTVmFsdWUgY29uc3RhbnQsIFJlZ2lzdGVyCiAKIGlubGluZSB2b2lkIEpJVDo6
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdpc3RlciByZWcpCiB7Ci0gICAg
aWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShyZWcpKSB7CisgICAgaWYgKCFt
X2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkgewogICAgICAgICBpZiAocmVnLmlzQ29uc3Rh
bnQoKSkKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGVsc2UKQEAg
LTUwNiw3ICs1MDYsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBSZWdpc3RlcklEIHRhZykKIHsK
LSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKHJlZykpIHsKKyAgICBp
ZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcpKSB7CiAgICAgICAgIGlmIChyZWcuaXND
b25zdGFudCgpKQogICAgICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgZWxz
ZQpAQCAtNjAwLDcgKzYwMCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklEIHJlZykKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQgcmVnLCBWaXJ0dWFsUmVn
aXN0ZXIgdlJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRl
KHZSZWcpKQorICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHZSZWcpKQogICAgICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNTc2ZjVmNTRlZTdjOGU3NTI2Njky
YzkwNGQwYmI2NDJlM2JiNTYzOS4uMzIxODM0MDY0MDU5NTRiYmI2MTI1OTViMmU5NWRjZWMzNGVh
YTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC03MDEsNyArNzAxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAgICAgcmVwYXRj
aFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwg
aWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQogCi1zdGF0aWMgdm9pZCBw
dXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKK3N0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNW
YWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC03MTcsMTIgKzcxNywxMiBAQCBzdGF0aWMgdm9pZCBwdXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNWYWx1ZQogCiAgICAgICAgICAgICBieVZhbEluZm8tPmFycmF5UHJvZmlsZS0+c2V0T3V0T2ZC
b3VuZHMoKTsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2
YWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUs
IGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBiYXNlVmFsdWUucHV0QnlJbmRleChn
bG9iYWxPYmplY3QsIGksIHZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAg
ICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgZWNtYU1vZGUu
aXNTdHJpY3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5p
c0ludDMyKCkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwpAQCAt
NzM4LDE1ICs3MzgsMTQgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICAgICAgYnlWYWxJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7
CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgp
KTsKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVl
LCBzbG90KTsKIH0KIAotc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8p
CitzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KTsKIAogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIC8v
IERlc3BpdGUgaXRzIG5hbWUsIEpTVmFsdWU6OmlzVUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25s
eSBmb3IgcG9zaXRpdmUgYm94ZWQgaW50MzJfdDsgYWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQg
YXJyYXkgaW5kaWNlcy4KQEAgLTc2OCw3ICs3NjcsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SgogICAgICAgICB9CiAKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBiYXNlT2Jq
ZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgMCwgaXNTdHJp
Y3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxk
Tm90VGhyb3cpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4LCB2YWx1ZSwgMCwgZWNtYU1vZGUuaXNTdHJpY3QoKSA/IFB1dERpcmVjdEluZGV4
U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzc4LDcgKzc3Nyw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
CiAgICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAmJiBp
c0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewogICAgICAgICAgICAgYnlWYWxJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOwogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJ
bnQzMiwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cg
OiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAgICAgICAgIGJhc2VPYmplY3Qt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAw
LCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERp
cmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtNzkwLDcgKzc4OSw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAg
aWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKSB7CiAg
ICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3Qs
IGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNo
b3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CisgICAgICAgIGJhc2VP
YmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUs
IDAsIGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0
RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTc5OCw3ICs3OTcsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogICAgICAgICBieVZhbElu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICBDb21t
b25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2Jq
ZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQogCkBAIC04ODQsNyArODgzLDcgQEAgc3Rh
dGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICByZXR1cm4gb3B0aW1pemF0aW9uUmVzdWx0OwogfQog
Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNt
YU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTkwMiw3ICs5MDEsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0
aCA9IHRydWU7CiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRy
ZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CiAg
ICAgfQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwogfQogCiBzdGF0
aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU09iamVjdCogb2JqZWN0LCBKU1ZhbHVlIHN1YnNjcmlwdCwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTk3NCw3ICs5NzMs
NyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIHJldHVybiBvcHRpbWl6YXRpb25SZXN1
bHQ7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtOTk1LDEwICs5OTQsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAg
Y3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9B
RERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKICAgICB9CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbykpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBvYmplY3Qs
IHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KIAotdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTAwOCwxMSArMTAwNywxMSBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKIAotICAgIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pOworICAg
IHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZh
bEluZm8sIGVjbWFNb2RlKTsKIH0KIAogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
QnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CkBAIC0xMDIyLDEwICsxMDIxLDEwIEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vi
c2NyaXB0KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwotICAgIGRpcmVj
dFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgYXNPYmplY3Qo
YmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKTsKKyAgICBkaXJlY3RQdXRC
eVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUs
IGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbGVlRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbGVlRnJh
bWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDM1LDcg
KzEwMzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIGlmICghaXNIb3N0RnVuY3Rp
b24oY2FsbGVlRnJhbWUtPmd1YXJhbnRlZWRKU1ZhbHVlQ2FsbGVlKCksIGdsb2JhbEZ1bmNFdmFs
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogCi0gICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBlY21hTW9kZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjE2Myw3ICsyMTYyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKG9iamVjdC0+aGFzUHJvcGVydHlHZW5lcmljKGdsb2JhbE9iamVjdCwgaW5kZXgsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkpKTsKIH0KICAgICAK
LXN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1Zh
bHVlIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorc3RhdGljIGJvb2wgZGVsZXRlQnlJ
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRUNNQU1vZGUg
ZWNtYU1vZGUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CkBAIC0yMTczLDEyICsyMTcyLDEyIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgaWYgKCFjb3Vs
ZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBp
ZiAoIWNvdWxkRGVsZXRlICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7
CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMTkyLDIxICsyMTkxLDIxIEBAIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmll
cik7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50
aWZpZXIudWlkKCkpOwogCi0gICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBpZGVudCk7CisgICAgYm9vbCByZXN1
bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgaWRlbnQs
IGVjbWFNb2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAoIXBh
cnNlSW5kZXgoaWRlbnQpKSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVy
Q2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSwgaWRl
bnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0
dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0
ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVy
ZSwgaWRlbnRpZmllciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbCwgZWNtYU1vZGUpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
dWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCitzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qg
cmF3Q2FjaGVhYmxlSWRlbnRpZmllciwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIyMTQsMTAgKzIyMTMsMTAgQEAgc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3QKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAg
ICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51
aWQoKSk7CiAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5
SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpLCBpZGVudCk7CisgICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCB2
bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgaWRlbnQsIGVjbWFNb2RlKTsK
IH0KIAotc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5KQorc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXksIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjIzNiwxMiArMjIz
NSwxMiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgICAgIGNvdWxkRGVsZXRlID0gYmFz
ZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOwotICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBlY21hTW9kZS5pc1N0
cmljdCgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBVbmFi
bGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQor
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjI1
Myw3ICsyMjUyLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVj
dHVyZU9yTnVsbCgpOwogCi0gICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0KTsKKyAgICBib29s
IHJlc3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwg
c3Vic2NyaXB0LCBlY21hTW9kZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CkBA
IC0yMjY0LDIwICsyMjYzLDIwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CiAgICAgICAgICAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1
cmVPck51bGwoKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwg
aWRlbnRpZmllciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAg
ICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJh
c2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6
Tm9ybWFsQnlWYWwsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
KQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVDTUFNb2Rl
IGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KSk7CisgICAgcmV0dXJuIGRlbGV0ZUJ5VmFs
KGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KSwgZWNtYU1vZGUpOwogfQogCiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVj
dFZhbHVlKQpAQCAtMjU0NCw3ICsyNTQzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dFRvU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5zdHIKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0
LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgZ2V0UHV0SW5mby5lY21hTW9kZSgpLmlzU3Ry
aWN0KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24o
Z2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJs
ZSh2bSktPnB1dChzY29wZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAg
IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdm9pZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggYjUyNDlhZTIxMzhmOTIwZDlh
NWMzNDljNGQ3MmVjZjI2MjIyODU3Mi4uMTIwMjk5YmUxNTBmOGJjNzFkZTBjOTUxNTAzMjI3MDFi
NzVkMWJiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAg
LTY0LDYgKzY0LDcgQEAgY2xhc3MgVk07CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCiBzdHJ1Y3Qg
QnlWYWxJbmZvOworc3RydWN0IEVDTUFNb2RlOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0
cnVjdCBJbnN0cnVjdGlvbjsKIApAQCAtMTg3LDExICsxODgsMTIgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RO
b25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90KSBXVEZfSU5URVJOQUw7CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2
YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVD
TUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpIFdURl9JTlRF
Uk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxs
KENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFM
OwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua1BvbHltb3Jw
aGljQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9J
TlRFUk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1
YWxDYWxsKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lO
VEVSTkFMOwpAQCAtMjUwLDEwICsyNTIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFBy
b3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJ
bmZvKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5m
byopIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Ci1z
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVp
bnRwdHJfdCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QsIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0YXJnZXQsIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRh
cmdldCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBjdXJyZW50U2NvcGVD
ZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNPYmplY3QqIG9iamVjdCkgV1RG
X0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFBOYW1lcyhKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBjMzU0M2RhZTdkMDgyZWJk
ZWM2MWQwYmNkNWI4Zjg3NTIwNDBiZTc0Li5hNDA4MDU5MzY1MGE2ZWM1NjhhYTYxMDY5MTdmZTk3
YjM4ZjEzMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjpl
bWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAog
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIG1fY29k
ZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBieXRlY29kZS5tX2VjbWFNb2RlLCBwdXRLaW5k
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRl
IG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgog
ICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBl
ZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgpAQCAtMzExLDExICszMTEsMTMgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlOworICAgIEVD
TUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwogCiAgICAgYXV0byBsb2FkID0g
WyZdKGF1dG8gYnl0ZWNvZGUpIHsKICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAg
ICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5
dGVjb2RlLm1fdmFsdWU7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsK
ICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzMxLDcgKzMzMyw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QyKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgcmVnVDAsIHJlZ1QxLCByZWdUMiwgYnlWYWxJbmZvKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6
ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCByZWdUMiwgYnlWYWxJbmZvLCBUcnVzdGVk
SW1tMzIoZWNtYU1vZGUudmFsdWUoKSkpOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1tt
X2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBt
X2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRy
ZXNzID0gY2FsbDsKQEAgLTQyNyw3ICs0MjksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAog
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlLCByZWdUMCk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCks
IFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogCiAgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTQ3Nyw3ICs0NzksNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDAsIHJlZ1QxKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1f
ZWNtYU1vZGUudmFsdWUoKSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgY2FsbCk7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkp
OwpAQCAtNjU0LDcgKzY1Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJlZyA9
IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgYm9vbCBkaXJlY3QgPSAhIShieXRlY29kZS5tX2ZsYWdz
ICYgUHV0QnlJZElzRGlyZWN0KTsKKyAgICBib29sIGRpcmVjdCA9IGJ5dGVjb2RlLm1fZmxhZ3Mu
aXNEaXJlY3QoKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgLy8gSW4gb3JkZXIgdG8g
YmUgYWJsZSB0byBwYXRjaCBib3RoIHRoZSBTdHJ1Y3R1cmUsIGFuZCB0aGUgb2JqZWN0IG9mZnNl
dCwgd2Ugc3RvcmUgb25lIHBvaW50ZXIsCkBAIC02NjgsNyArNjcwLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCisgICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUubV9mbGFncy5lY21h
TW9kZSgpLAogICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDhkMTg4MDM2YTIzNTlk
ZjBiMWUxYWYxYWI0ZDg3N2ZjNmM2MGM5YWEuLjUzNTQ4NmNkOGYxNTMyYWQxYmViNTE1YTg2Yjkw
OGFiYzgzNjk2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDIsIHJlZ1QxKTsKICAgICBlbWl0TG9h
ZChwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QwKTsKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDUsIHJl
Z1Q0KTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0ID8gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDIsIHJlZ1QxKSwgSlNWYWx1
ZVJlZ3MocmVnVDMsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KSwgYnlWYWxJbmZv
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDIsIHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KSwgYnlWYWxJbmZvLCBi
eXRlY29kZS5tX2lzU3RyaWN0TW9kZSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21f
YnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJl
c3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggYzNkZjA3
OTJlNGU3MmQ0OWI0ZDdhMjI2Y2ExMDExOTVkOGY0YzYwOC4uZGU3ZDY2ZDAzMWVjZGI5YzM1NGE1
YWM5ODFhMjc1Y2M0MWEyNjRiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsK
IH0KIAotc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBEZWxCeUtpbmQpCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVC
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVz
dWx0OwpAQCAtNzcxLDcgKzc3MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAg
ICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgIEFTU0VS
VChpc1ZhbGlkT2Zmc2V0KG5ld09mZnNldCkpOwogICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vz
c0Nhc2U6OmNyZWF0ZURlbGV0ZSh2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNl
dCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOwotICAgICAgICB9IGVsc2UgaWYgKCFjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWVjbWFNb2RlLmlz
U3RyaWN0KCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzTm9uY29uZmlndXJhYmxlKCkpCiAg
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2Nr
LCBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGUsIHByb3BlcnR5TmFtZSwgaW52YWxp
ZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOwogICAgICAgICAgICAgZWxzZQpA
QCAtNzkyLDEyICs3OTIsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVs
ZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICByZXR1cm4g
cmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRl
cjsKIH0KIAotdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1
ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2lu
ZCkKK3ZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQsIEVD
TUFNb2RlIGVjbWFNb2RlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBpZiAo
dHJ5Q2FjaGVEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVl
LCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9u
Q2FjaGUpIHsKKyAgICBpZiAodHJ5Q2FjaGVEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8s
IGtpbmQsIGVjbWFNb2RlKSA9PSBHaXZlVXBPbkNhY2hlKSB7CiAgICAgICAgIExPR19JQygoSUNF
dmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwo
Z2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1l
LnVpZCgpKSkpOwogICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKICAgICAg
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGU1Y2U0Njg3MTE0NjM5MmU0ZTcyZTYxNGEyZjVlNThl
YTY3NDk5NDUuLmQ4OTBmZDcwYWFjZDgyZmZiZjRkYThmYjI0ZTFmM2RmZjU3NDlkYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00OSw3ICs0OSw3IEBAIGVudW0gY2xhc3Mg
RGVsQnlLaW5kIHsKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CiB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFs
dWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBj
b25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwotdm9p
ZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVj
dHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5k
LCBFQ01BTW9kZSk7CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0
IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5j
ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBw
cm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtG
b3IoVk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCog
Y2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMmJmZmMzODE2
M2ZlMzFiZTk0MWJlZDZhNWZiNTZkMjk4YmViNjIyNy4uZjM5ZjhmNWMxYWMwN2JkOTQwMDBkODZk
YWE2NTQ4OWZhODkzNTVhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCkBAIC04MzYsMTAgKzgzNiwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X2lkKQogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIAogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7Ci0g
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGJhc2VWYWx1ZSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCksIGNv
ZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CiAKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZt
KSA6IG51bGxwdHI7Ci0gICAgaWYgKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3Qp
CisgICAgaWYgKGJ5dGVjb2RlLm1fZmxhZ3MuaXNEaXJlY3QoKSkKICAgICAgICAgQ29tbW9uU2xv
d1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFz
ZVZhbHVlKSwgaWRlbnQsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKSwg
c2xvdCk7CiAgICAgZWxzZQogICAgICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVj
dCwgaWRlbnQsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKSwgc2xvdCk7
CkBAIC04ODgsNyArODg4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQ
dXRCeUlkSXNEaXJlY3QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYnl0
ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXdTdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWlu
KGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZUNlbGwpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVDaGFpbi5zZXQodm0sIGNvZGVCbG9jaywgY2hhaW4pOwpA
QCAtOTI3LDcgKzkyNyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlf
aWQpCiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgYm9vbCBjb3VsZERlbGV0ZSA9
IEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOwotICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJp
Y3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
VW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihjb3VsZERlbGV0ZSkpOwogfQpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwotICAg
IGJvb2wgaXNTdHJpY3RNb2RlID0gY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsKKyAgICBib29s
IGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKICAgICAKICAg
ICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBp
ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CkBAIC0xMDU4LDcgKzEwNTgsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBSRUxFQVNF
X0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3Qg
PSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsKKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNt
YU1vZGUuaXNTdHJpY3QoKTsKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkg
ewogICAgICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3aWxsIHJl
dHVybiB0cnVlIG9ubHkgZm9yIHBvc2l0aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0aG9zZSB2YWx1
ZXMgYXJlIHZhbGlkIGFycmF5IGluZGljZXMuCiAgICAgICAgIEFTU0VSVChpc0luZGV4KHN1YnNj
cmlwdC5hc1VJbnQzMigpKSk7CkBAIC0xMTEyLDcgKzExMTIsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICB9CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0
KCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVu
YWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikpOwogICAgIAogICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oY291bGREZWxldGUpKTsKQEAgLTE3MzgsNyArMTczOCw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElu
c3RydWN0aW9uCiAgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxG
dW5jRXZhbCkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBzZXRVcENh
bGwoY2FsbGVlRnJhbWUsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKSk7CiAgICAgCi0gICAg
dm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSk7
CisgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVG
cmFtZSwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZ2xvYmFs
T2JqZWN0LCBjYWxsZWVGcmFtZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSksIENGdW5jdGlvblB0clRhZyk7CiB9CiAgICAgCkBAIC0xODc0LDcgKzE4NzQsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlKQogICAgIGlmIChtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQgJiYgIWhh
c1Byb3BlcnR5KQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNj
b3BlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25D
b250ZXh0LCBpc0luaXRpYWxpemF0aW9uKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBtZXRhZGF0YS5t
X2dldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25v
d25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFs
aXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJsZSh2bSktPnB1dChzY29wZSwg
Z2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAgIENvbW1vblNsb3dQ
YXRoczo6dHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
eXRlY29kZSwgc2NvcGUsIHNsb3QsIGlkZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA3YTY0MmMwMjZmZGIwZDIwOTljYWVk
ZTY2YzcyMTUxN2U2ZjZmZWUxLi5iMDQ3ZmI1ODA4Y2YwYzhlMDBhYzAxMzVjMTE5ZTIzNTQxYjIw
Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC01OTksNyArNTk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKTsKIAogICAgIC8vIDEuIExldCBhcnJheSBiZSB0aGUgcmVzdWx0IG9m
IGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUuCiAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTY4MSw3ICs2ODEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVT
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAg
LTc3OSw3ICs3NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jSm9pbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIExldCBPIGJlID8gVG9PYmpl
Y3QodGhpcyB2YWx1ZSkuCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtODY0LDcgKzg2NCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhp
c1ZhbHVlKSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoYXNBcnJheSh0aGlzVmFsdWUpLT5wb3AoZ2xvYmFsT2JqZWN0KSkpOwpAQCAtODk5LDcgKzg5
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAK
ICAgICBpZiAoTElLRUxZKGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpID09IDEpKSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlz
VmFsdWUpOwpAQCAtOTQwLDcgKzk0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9i
YWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhpc09i
aiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQwogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2
Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zbGljZQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc09iaikpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMTI0LDcgKzExMjQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJp
Y3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNj
b3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmop
KQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEyMjIsNyArMTIyMiw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIC8vIDE1LjQuNC4xMwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0
aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAg
IHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTM1NCw3ICsxMzU0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyAxNS40LjQuMTQKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVj
dChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTEzOTIsNyArMTM5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8g
MTUuNC40LjE1Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNP
YmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5k
ZXggMjI2YjQ4MzU0NjJkOGM0NWU2MTlmNjY4MDBiZTk5N2E5MWFlODhhMS4uODAyZjIwMmY5Mjli
MDA4MDM0ZmE3ZDZlYjgxMDkwYWI3MzMwZDJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTgxOCw3ICsxODE4LDYgQEAgcHVibGljOgog
ICAgIFJlZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IG1ldGFkYXRhKERlY29kZXImIGRlY29kZXIp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuZGVjb2RlKGRlY29kZXIpOyB9CiAKICAgICB1bnNp
Z25lZCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICB1bnNpZ25l
ZCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIHVu
c2lnbmVkIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0K
ICAgICB1bnNpZ25lZCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Q2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICB1bnNpZ25lZCBpc0J1aWx0aW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KQEAgLTE4NTEsNyArMTg1MCw2IEBA
IHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKIAogICAgIHVu
c2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OwpAQCAtMjA0OCw3ICsyMDQ2LDYgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6
VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJlKgogICAgICwgbV9z
Y29wZVJlZ2lzdGVyKGNhY2hlZENvZGVCbG9jay5zY29wZVJlZ2lzdGVyKCkpCiAKICAgICAsIG1f
dXNlc0V2YWwoY2FjaGVkQ29kZUJsb2NrLnVzZXNFdmFsKCkpCi0gICAgLCBtX2lzU3RyaWN0TW9k
ZShjYWNoZWRDb2RlQmxvY2suaXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2lzQ29uc3RydWN0b3Io
Y2FjaGVkQ29kZUJsb2NrLmlzQ29uc3RydWN0b3IoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoY2FjaGVkQ29kZUJsb2NrLmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpCiAgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGNhY2hlZENvZGVCbG9jay5pc0J1aWx0aW5GdW5jdGlvbigpKQpAQCAt
MjIzNCw3ICsyMjMxLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVCbG9jazxDb2Rl
QmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAgICBtX3RoaXNSZWdp
c3RlciA9IGNvZGVCbG9jay5tX3RoaXNSZWdpc3RlcjsKICAgICBtX3Njb3BlUmVnaXN0ZXIgPSBj
b2RlQmxvY2subV9zY29wZVJlZ2lzdGVyOwogICAgIG1fdXNlc0V2YWwgPSBjb2RlQmxvY2subV91
c2VzRXZhbDsKLSAgICBtX2lzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay5tX2lzU3RyaWN0TW9kZTsK
ICAgICBtX2lzQ29uc3RydWN0b3IgPSBjb2RlQmxvY2subV9pc0NvbnN0cnVjdG9yOwogICAgIG1f
aGFzQ2FwdHVyZWRWYXJpYWJsZXMgPSBjb2RlQmxvY2subV9oYXNDYXB0dXJlZFZhcmlhYmxlczsK
ICAgICBtX2lzQnVpbHRpbkZ1bmN0aW9uID0gY29kZUJsb2NrLm1faXNCdWlsdGluRnVuY3Rpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cAppbmRleCA4ZGRkOThhMWJmYjBmZWMxNWE3ZDczMmFjYzNjMmNlZjg1ZDA0MGI0Li5iZjg1NDEy
MjQ2YjI5Yzk5OWU1MjNhN2E0ZWNjYzgzMTA3MjZjNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTE3OCw3ICsxNzgsNyBA
QCBib29sIENsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5zcGVjaWFs
c01hdGVyaWFsaXplZCgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzT2JqZWN0LT5tX2NhbGxlZS0+ZXhl
Y3V0YWJsZSgpKTsKLSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0
cmljdE1vZGUoKTsKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0lu
U3RyaWN0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5jYWxsZWUpIHsKICAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKQEAgLTI1MCw3ICsy
NTAsNyBAQCB2b2lkIENsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVTcGVjaWFscyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4obV9jYWxsZWUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKTsKKyAgICBib29sIGlzU3RyaWN0TW9k
ZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCk7CiAgICAgCiAgICAgaWYgKGlzU3Ry
aWN0TW9kZSkKICAgICAgICAgcHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jYWxsZWUsIHRoaXMtPmdsb2JhbE9iamVjdCh2bSktPnRocm93VHlwZUVycm9y
QXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCmluZGV4IGZhM2NkMzI2YmNkNWI5Nzg5YTI0MjdlNjEzYWM5NTQ4YjJmYjNhZTIuLjll
MTcyYjZhZWE3NGIwNjJkZTlmZmVmOGRhNTZkNDkzNGY5NGQ1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtOTEsMTEgKzkxLDExIEBAIFVubGlu
a2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzCiAgICAgICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKHJvb3RO
b2RlLT5mZWF0dXJlcygpIHwgYXJyb3dDb250ZXh0RmVhdHVyZSwgcm9vdE5vZGUtPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpLCBlbmRDb2x1bW4pOwogCiAgICAg
Ym9vbCB1c2VzRXZhbCA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgRXZhbEZlYXR1cmU7Ci0gICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0
dXJlOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBTdHJp
Y3RNb2RlRmVhdHVyZSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsK
ICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA9IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfc2FtZV92PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RFdmFsRXhlY3V0YWJsZT4pCiAgICAg
ICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIoKTsKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2Vz
RXZhbCwgaXNTdHJpY3RNb2RlLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
c2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRD
b2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRl
eHRUeXBlKTsKKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9k
ZSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxvY2tUeXBl
OjpjcmVhdGUodm0sIGV4ZWN1dGFibGVJbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgIHVu
bGlua2VkQ29kZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5v
ZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4p
OwpAQCAtMTA0LDcgKzEwNCw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxp
bmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgaWYgKCFz
b3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQog
ICAgICAgICB1bmxpbmtlZENvZGVCbG9jay0+c2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShz
b3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpKTsKIAotICAgIGVy
cm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291
cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCB2YXJpYWJsZXNVbmRl
clREWik7CisgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3RO
b2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUs
IHZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDQ0ZDhmYjRiNDIyYTkyZDAzYjgxYWIw
YWYxOGQ0ZjY1YjFlOGM4MzUuLmI1NmE3NDhlZDQ2YzQ4YTYzYTBiNTUwNzIzM2EzMTc5MmJkYjJh
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190
aGlzKQogICAgIC8vIGRpZmZlcmVudCBvYmplY3QgdGhhdCBzdGlsbCBoYXMgdGhlIHNhbWUgc3Ry
dWN0dXJlIG9uIHRoZSBmYXN0IHBhdGggc2luY2UgaXQnbGwgcHJvZHVjZQogICAgIC8vIHRoZSBz
YW1lIFNwZWN1bGF0ZWRUeXBlLiBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJv
dXQgdmFsdWUgcHJvZmlsaW5nIG9uIHRoZQogICAgIC8vIGZhc3QgcGF0aC4KLSAgICBhdXRvIHZh
bHVlID0gdjEudG9UaGlzKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSA/
IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKKyAgICBhdXRvIHZhbHVlID0gdjEudG9UaGlz
KGdsb2JhbE9iamVjdCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgUkVUVVJOX1dJVEhfUFJP
RklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgdmFsdWUsIFBST0ZJTEVfVkFMVUUodmFs
dWUpKTsKIH0KIApAQCAtOTg5LDcgKzk4OSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWxfYnlfdmFsKQogICAgIH0KICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAKLSAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3Vs
ZERlbGV0ZSAmJiBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIFRIUk9X
KGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJv
cikpOwogICAgIAogICAgIFJFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKQEAgLTEzMDYs
NyArMTMwNiw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlz
KQogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVl
KCk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsID0gR0VUX0MoYnl0ZWNvZGUubV90aGlzVmFsdWUpLmpz
VmFsdWUoKTsKICAgICBKU1ZhbHVlIHB1dFZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV92YWx1ZSku
anNWYWx1ZSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QodGhpc1ZhbCwgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpLCBj
b2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xv
YmFsT2JqZWN0LCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOwogICAgIEVORCgpOwogfQpAQCAtMTMy
Miw3ICsxMzIyLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90
aGlzKQogICAgIAogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXNWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkp
OwogICAgIGJhc2VWYWx1ZS5wdXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OwogICAgIEVORCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oCmluZGV4IDM3YWZhNzZjNDA1NzU5MzU1MDZlNTli
ODRkMmI1ZjFlODA5YWZmZjMuLmJiNTQ3NDA3YzE3NTc1ZWFjNDRkYWVjMWY0YjdlMDcxOTlkYzQ2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHNJbmxpbmVzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVQ
dXRUb1Njb3BlR2xvYmFsKAogICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUg
PSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxQcm9wZXJ0eTsKICAgICAgICAgICAgIHJlc29s
dmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8vIEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNt
IHRvIGtpY2sgaW4uCiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1
dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBl
LCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC02
MSw3ICs2MSw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQt
PnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFl
bnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdl
dFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVU
eXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1
dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5pbml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkp
OwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0Y2hwb2lu
dFNldCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChlbnRyeS5z
Y29wZU9mZnNldCgpKS5zbG90KCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA5LDcgKzEw
OSw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKAogICAgICAgICAg
ICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhy
ZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9i
YWxQcm9wZXJ0eTsKICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8v
IEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCiAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAg
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZv
LnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5p
dGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0g
R2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2
ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRh
dGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC0xMjMsNyArMTIzLDcgQEAgaW5saW5lIHZvaWQg
dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRl
bnQuaW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAg
ICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0
UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0
SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5l
d1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCks
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fd2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKICAgICAgICAgICAgIG1l
dGFkYXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAKaW5kZXggMjExN2NjOWU5NmQ5ZjAwNGZhMTYzOWVhOWZkODA2YTQ1MzhjMDBl
Yy4uZWJjNmYyMmUwMDlkMjM0YzgwNTMwNGE3ZTA3NjA3N2QwNjk5OTBhMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTE0Miw3ICsxNDIsNyBA
QCBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZQogCiAgICAgaWYgKCF0aGlzVmFsdWUgfHwgdGhpc1Zh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHRoaXNWYWx1ZSA9IGdsb2JhbE9iamVj
dDsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmogPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnNsb3BweSgpKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB2bS5pbnRlcnByZXRlci0+
ZXhlY3V0ZVByb2dyYW0oc291cmNlLCBnbG9iYWxPYmplY3QsIHRoaXNPYmopOwogCiAgICAgaWYg
KHNjb3BlLmV4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggMWE3MmJmYjQ3ZWZlZmE1NTBk
ZWY5ODM1NjY1NGFmNjQ5MDc3OTczNS4uN2MxOWI3NWM2MmM4MDQxMzYyZGQ5ZWIxMmVkYTU5Nzky
NTExNWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTQ1LDExICs0NSwxMSBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJl
Y3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQs
IGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBl
KTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGly
ZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhlY3V0YWJsZShnbG9iYWxP
YmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZlZENvbnRleHRUeXBlLCBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOwogICAgIGV4ZWN1dGFibGUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCkgPyBKU1Bh
cnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0Owor
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZWNtYU1vZGUuaXNTdHJpY3QoKSA/
IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3Q7CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2Rl
ID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAKICAgICAvLyBX
ZSBkb24ndCBib3RoZXIgd2l0aCBDb2RlQ2FjaGUgaGVyZSBiZWNhdXNlIGRpcmVjdCBldmFsIHVz
ZXMgYSBzcGVjaWFsaXplZCBEaXJlY3RFdmFsQ29kZUNhY2hlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggNDc4MjZi
ZjMyMGMxYzE3ZDU4MzEzOWM0NmU1M2U2ZGFlZGFiYmQ0OS4uMjQwNzVhN2Y1YTM2YzczZmViYTQw
N2U3MTA5YTZmYzMzZjI3MGQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBEaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFdmFs
RXhlY3V0YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgc3Rh
dGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1v
ZGUpOwogcHJpdmF0ZToKICAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRl
eCA2MDViMmVmZmIxZDdiODJlNWNkYjdjNjQ1M2RjNWRlNzFmMzAyNjc2Li42N2U2OWM4NjI5YmEz
ZmIzODExNDgxMTM2YjhlN2U5OTQ4MGVkNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAg
ICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6
Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigp
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0K
KyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwg
ZXZhbENvbnRleHRUeXBlKCkpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJl
dHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNp
Z25lZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRF
dmFsQ29kZUJsb2NrLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4
IDQ0M2JiMzhhNjVjYjgwNDc0NTY4NTdjZDhkMjc2YWRlOWY3YTZiNWMuLmJhZGU5ODczNWY5OWRj
NDdlN2E2ZGM3ODdjNTc5NzExY2U1MTVlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgLy8gUGVyIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2
Mi8jc2VjLWZvcmJpZGRlbi1leHRlbnNpb25zLCBvbmx5IHNsb3BweS1tb2RlIG5vbi1idWlsdGlu
IGZ1bmN0aW9ucyBpbiBvbGQtc3R5bGUgKHByZS1FUzYpIHN5bnRhY3RpYyBmb3JtcyBjYW4gY29u
dGFpbgogICAgICAgICAvLyAiY2FsbGVyIiBhbmQgImFyZ3VtZW50cyIuCi0gICAgICAgIHJldHVy
biAhaXNTdHJpY3RNb2RlKCkgJiYgcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpOb3Jt
YWxGdW5jdGlvbk1vZGUgJiYgIWlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7CisgICAgICAg
IHJldHVybiAhaXNJblN0cmljdENvbnRleHQoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24o
KTsKICAgICB9CiAgICAgYm9vbCBoYXNQcm90b3R5cGVQcm9wZXJ0eSgpIGNvbnN0CiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmNwcAppbmRleCBkNmU3
MWVkODQ4YTdjNTdiY2U4OWY5MjQ0ODI5MjFlMzk1ODQwYzhjLi4xNTA4YTYwMTdjOWIxYWU1ZTcw
MTg5Mjk3YjI2M2VjMTYyNWY2MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXRQdXRJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXRQdXRJbmZvLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9p
ZCBHZXRQdXRJbmZvOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnBy
aW50KG9wZXJhbmQoKSwgIjwiLCByZXNvbHZlTW9kZSgpLCAifCIsIHJlc29sdmVUeXBlKCksICJ8
IiwgaW5pdGlhbGl6YXRpb25Nb2RlKCksICI+Iik7CisgICAgb3V0LnByaW50KG9wZXJhbmQoKSwg
IjwiLCByZXNvbHZlTW9kZSgpLCAifCIsIHJlc29sdmVUeXBlKCksICJ8IiwgaW5pdGlhbGl6YXRp
b25Nb2RlKCksICJ8IiwgZWNtYU1vZGUoKSwgIj4iKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgKaW5kZXggMDZmZmQ0M2EwMjVmMGI1ZWNiNGUwMTBl
MjcxOGQwNmMwMWI0NTlkZS4uOTM0MDgwMWYyMWY2NWQyN2I2YTNmODE2NmFkODQ4NjUyZDFiNjdj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaApAQCAtMjAy
LDE4ICsyMDIsMjAgQEAgY2xhc3MgR2V0UHV0SW5mbyB7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBP
cGVyYW5kOwogcHVibGljOgogICAgIC8vIEdpdmUgZWFjaCBmaWVsZCAxMCBiaXRzIGZvciBzaW1w
bGljaXR5LgotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmQpICogOCA+IDMwLCAiTm90
IGVub3VnaCBiaXRzIGZvciBHZXRQdXRJbmZvIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
T3BlcmFuZCkgKiA4ID4gMzEsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1dEluZm8iKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGlzU3RyaWN0U2hpZnQgPSAzMDsKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1vZGVTaGlmdCA9IDIwOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgaW5pdGlhbGl6YXRpb25TaGlmdCA9IDEwOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgdHlwZUJpdHMgPSAoMSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSAtIDE7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsaXphdGlvbkJpdHMgPSAoKDEgPDwg
bW9kZVNoaWZ0KSAtIDEpICYgfnR5cGVCaXRzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbW9kZUJpdHMgPSAoKDEgPDwgMzApIC0gMSkgJiB+aW5pdGlhbGl6YXRpb25CaXRzICYgfnR5
cGVCaXRzOwotICAgIHN0YXRpY19hc3NlcnQoKG1vZGVCaXRzICYgaW5pdGlhbGl6YXRpb25CaXRz
ICYgdHlwZUJpdHMpID09IDB4MCwgIlRoZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0
d2VlbiBSZXNvbHZlTW9kZSBSZXNvbHZlVHlwZSBhbmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpc1N0cmljdEJpdCA9IDEgPDwgMzA7CisgICAg
c3RhdGljX2Fzc2VydCgobW9kZUJpdHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0cyAm
IGlzU3RyaWN0Qml0KSA9PSAweDAsICJUaGVyZSBzaG91bGQgYmUgbm8gaW50ZXJzZWN0aW9uIGJl
dHdlZW4gUmVzb2x2ZU1vZGUgUmVzb2x2ZVR5cGUgYW5kIEluaXRpYWxpemF0aW9uTW9kZSIpOwog
CiAgICAgR2V0UHV0SW5mbygpID0gZGVmYXVsdDsKIAotICAgIEdldFB1dEluZm8oUmVzb2x2ZU1v
ZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1v
ZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQotICAgICAgICA6IG1fb3BlcmFuZCgocmVzb2x2ZU1vZGUg
PDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2Rl
KSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQorICAgIEdldFB1dEluZm8o
UmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFs
aXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAg
ICAgOiBtX29wZXJhbmQoKGVjbWFNb2RlLmlzU3RyaWN0KCkgPDwgaXNTdHJpY3RTaGlmdCkgfCAo
cmVzb2x2ZU1vZGUgPDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlh
bGl6YXRpb25Nb2RlKSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQogICAg
IHsKICAgICB9CiAKQEAgLTIyNSw2ICsyMjcsNyBAQCBwdWJsaWM6CiAgICAgUmVzb2x2ZVR5cGUg
cmVzb2x2ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4obV9v
cGVyYW5kICYgdHlwZUJpdHMpOyB9CiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0
aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEluaXRpYWxpemF0aW9uTW9kZT4o
KG1fb3BlcmFuZCAmIGluaXRpYWxpemF0aW9uQml0cykgPj4gaW5pdGlhbGl6YXRpb25TaGlmdCk7
IH0KICAgICBSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFJlc29sdmVNb2RlPigobV9vcGVyYW5kICYgbW9kZUJpdHMpID4+IG1vZGVTaGlmdCk7IH0K
KyAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZCAmIGlzU3Ry
aWN0Qml0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOyB9CiAgICAg
dW5zaWduZWQgb3BlcmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZDsgfQogCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA1ZjlmODVlMWVjZGM4MTM0N2Q4OTc0MDZlNjIx
MTRkMDY1NDcyNzkzLi42NmNjNzUwNzM5MGJhNDFlMDg4OWNkNmI2YzUwMGU3NmIwMjE2MGI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAg
LTY4LDcgKzY4LDcgQEAgYm9vbCBjYWxsU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIKICAgICBHZXR0ZXJTZXR0ZXIq
IGdldHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwog
CiAgICAgaWYgKGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSwg
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsIGVjbWFNb2RlLmlzU3RyaWN0KCksIFJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKIAogICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmotPnNl
dHRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDIwMDMxOTI5MGYwYmUwZjk3MzE0MWJmZTk0
OTlmM2JhZTg5Nzg4NjIuLjE0ZjdmYWI1YzNkNGVhYTg3OTQyYmNmMzMyYTQ1ZjFjNTA2ZGFlN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29u
dGV4dFR5cGUpCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1LDE1ICs0NSwxNCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iagogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVh
cCkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5TdHJp
Y3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2
YWxDb250ZXh0VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEluZGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJT
dHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFy
c2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAg
ICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xv
YmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAgICAgCiAgICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVu
bGlua2VkRXZhbENvZGVCbG9jaygKLSAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUt
PnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29u
dGV4dFR5cGUpOworICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCks
IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9y
LCBldmFsQ29udGV4dFR5cGUpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIo
KSkKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFs
T2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVy
cm9yLm1lc3NhZ2UoKSk7CkBAIC02OCw4ICs2NywxMCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
KiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2Jh
bE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vKQorY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFs
c2U7Citjb25zdGV4cHIgYm9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CitJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFs
T2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmlu
ZGV4IGMxOTkyZmRiMWE0MjUwNTRhZTliYzQ1NzUxMjhlNmY1MDg2Y2E5YmMuLjQ5OGI1Yzg3MDk4
YWIzNzQ3OTdhMjViZjQ4MTYzN2NmYmI5MmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMx
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUm
LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENv
bnRleHRUeXBlKTsKIHByaXZhdGU6Ci0gICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZl
ZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlw
ZSk7CisgICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNv
dXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgRXZhbENvbnRleHRUeXBlKTsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUpID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJkYjJl
NTc3MDJiM2NiYzM2OTkzNjlkNzdjOTQzMzBkNC4uYjE5MWU4NGZlZTFmYTcxMzMxYTNmMmNjMjM4
OGQ1ZjRhNTJkODMwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dD
YXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewog
ICAgIEFTU0VSVCghaXNDZWxsKCkpOwogCi0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUp
CisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAog
ICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKQEAgLTE4OSw3ICsxODksNyBAQCBib29s
IEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eQogCiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXRE
aXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKQotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxP
YmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2Rl
IDogTm90U3RyaWN0TW9kZSkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNT
dHJpY3RNb2RlKCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsK
IAogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBncywgYXR0cmlidXRl
cyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1
ZSgpLCB2YWx1ZSk7CkBAIC00MzQsNCArNDM0LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIGVuc3Vy
ZVN0aWxsQWxpdmVIZXJlKEpTVmFsdWUpCiB9CiAjZW5kaWYKIAordm9pZCBFQ01BTW9kZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1N0cmljdCgpKQorICAgICAg
ICBvdXQucHJpbnQoIlN0cmljdE1vZGUiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgi
Tm90U3RyaWN0TW9kZSIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBkZWI2NDAyNTMwZWI1OGJmNTBkMGQ2
NzBlZDE2YmM1NDhiN2Y5MjY5Li45MjY5OTAwMzE3MjMzMzJiMGRkNTFkMmU2OWRkN2UyNDdmNGRi
MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC04
MCw4ICs4MCwzMSBAQCB1c2luZyBXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3QgPSB0eXBlbmFtZSBz
dGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtubwogICAgIER1bWJWYWx1ZVRyYWl0
czxUPiwgRHVtYlB0clRyYWl0czxUPgogPjo6dHlwZTsKIAotZW51bSBQcmVmZXJyZWRQcmltaXRp
dmVUeXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OwotZW51
bSBFQ01BTW9kZSB7IFN0cmljdE1vZGUsIE5vdFN0cmljdE1vZGUgfTsKK2VudW0gUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSA6IHVpbnQ4X3QgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJl
ZmVyU3RyaW5nIH07CisKK3N0cnVjdCBFQ01BTW9kZSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IFN0cmljdE1vZGUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTbG9w
cHlNb2RlID0gMTsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgZnJv
bUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBFQ01BTW9kZShieXRlKTsgfQorICAgIHN0YXRp
YyBjb25zdGV4cHIgRUNNQU1vZGUgc3RyaWN0KCkgeyByZXR1cm4gRUNNQU1vZGUoU3RyaWN0TW9k
ZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVDTUFNb2RlIHNsb3BweSgpIHsgcmV0dXJuIEVD
TUFNb2RlKFNsb3BweU1vZGUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTdHJpY3Qo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFN0cmljdE1vZGU7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgRUNN
QU1vZGUodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gU3RyaWN0TW9kZSB8fCBtX3ZhbHVlID09IFNsb3BweU1v
ZGUsIG1fdmFsdWUpOworICAgIH0KKworICAgIHVpbnQ4X3QgbV92YWx1ZTsKK307CiAKIGVudW0g
Y2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZDsKIHN0cnVjdCBDYWxsRGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDU1M2QxNmY1NjkyNTljZjgyM2I5Njg2
OGZkMDkwYjdmMmU3MDhiMjAuLmE0NzRlN2FlNTI3NWFjNzY4NjQ4MjM2ZjY2ZmQ0MjhhZmRlN2Ux
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1CiAKIEpTVmFsdWUgSlNDZWxsOjp0b1Ro
aXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNt
YU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIGNlbGwt
PnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDA5YWJhZTM4YmUwZmUzNDZmZDVkMzhiMjJiZGE0N2Jm
OWU2NmNhMzUuLjUxOTAzY2E3ODcxZDM3MmUyNmI4ZWNlMGUzYWUwYTNmMTQ2Yjg1OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03NSw3ICs3
NSw3IEBAIFN0cnVjdHVyZSogSlNGdW5jdGlvbjo6c2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4
cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgYm9vbCBpc0J1aWx0aW4gPSBleGVj
dXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Fycm93
RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZShpc0J1aWx0aW4pOwotICAgIGlmIChleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkK
KyAgICBpZiAoZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+c3RyaWN0RnVuY3Rpb25TdHJ1Y3R1cmUoaXNCdWlsdGluKTsKICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5zbG9wcHlGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwog
fQpAQCAtNDMwLDcgKzQzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdl
dHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBp
ZiAoIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlm
ICghZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGdW5jdGlv
bi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIl9zKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCmluZGV4IDliYThjNzBkNzZhNzQyZWViNTcxNjc4Y2M5M2RiYWNiNDc5Mzk0
NGUuLmNhOTQ4OWMwZTBlZmRjODZiMGY0MjJmZjI4ODZlZjQ4ZDE5M2E5MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKQEAgLTUwNyw3ICs1MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7CiAKICAgICBTb3VyY2VP
cmlnaW4gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwot
ICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKKyAgICBF
dmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC03MTQsNyArNzE0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1v
ZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlKSk7CiAKQEAgLTczNSw3ICs3MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNQcm90b1NldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBP
YmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMjVkZmY1MzMzNzg5MTQyOGU2MmZh
OTUxOWRlMTRhNzE5NDRkNGI3OC4uZGFjNzIzZWMwYzkzYTVkNjYzOThlYzg5ODA0Y2I3ZjE0OTcy
M2UwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAt
ODEwLDcgKzgxMCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5CiAgICAgICAgICAgICAgICAg
aWYgKCF0aGlzLT5zdHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAg
ICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZzZXQpOwogCi0gICAgICAgICAg
ICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFs
dWUoKSwgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0
cmljdE1vZGUpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbFNldHRlcihnbG9i
YWxPYmplY3QsIHNsb3QudGhpc1ZhbHVlKCksIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSk7CiAgICAgICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CkBAIC0xODE4LDcgKzE4MTgsNyBAQCBib29s
IEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBp
bW11dGFibGUgcHJvdG90eXBlIG9iamVjdCJfcyk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1ldGhv
ZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkgPT0g
dGhpcyk7CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDZkNWFiNjgyYzY4
MzkxNGY2OWYzZTVjMjI4Mzg0ZmVmZTQ2NTc3YzguLmIzYzI3MjAyMjgwNmI4MTE0MzU3ZDgxZGU5
ZjNiNWZjMTAzNTRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
Y3BwCkBAIC00MTEsNyArNDExLDcgQEAgU3ltYm9sVGFibGUqIEpTU2NvcGU6OnN5bWJvbFRhYmxl
KFZNJiB2bSkKIAogSlNWYWx1ZSBKU1Njb3BlOjp0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7Ci0gICAgaWYgKGVjbWFNb2Rl
ID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBh
YWVlOGVlN2E3N2VlYTZkZWZjNzU3YTg3ZDIzYjNlY2JhODZmMjFmLi4wZjIwN2EzYjY4NmFlYTdi
NTdkNDk1Y2Q3MDI5YWQ4YTgzODZkYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0
b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogCiBKU1ZhbHVlIEpT
U3RyaW5nOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkK
KyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAg
cmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0LCBhc1N0cmluZyhjZWxsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IDY5NzZmNzA1ZDM0MDRlMzdhMjFkODkyYjEyM2Ni
YzM4MDQyMzZkNWIuLjUzNTIzNzE4ZGM5YjlkMjIxMmI4YjgyMTE3NjM2OGY0ODQyMTgyYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBA
IC05MzMsNyArOTMzLDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2Uo
UGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5
Il9zOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChv
YmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpIDogZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChv
YmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpIDogZmFsc2UpOwogICAgICAgICAgICAgICAgICAg
ICBvYmplY3RTdGFjay5sYXN0KCkucHV0KG1fZ2xvYmFsT2JqZWN0LCBpZGVudCwgbGFzdFZhbHVl
LCBzbG90KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuaAppbmRleCA0NjU0NjIwMDRmMzdlMjAxMmQ3MjE2OGM2MjA5ZTUwNTE3YzEyMDU1Li4wOTlk
ODk5YWQ1ZTYzYTc0MzM1OGUyYWJiMjBhYjM0ZjU5Yjk2MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFs
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1v
ZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9k
dWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4
dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDEwZjg4NzI1YWMwMDJkMjUz
YTljODYzNzFkNDUzOTg1MGRmY2FhMjkuLmVhMjRhOTRjN2I1NmQwMGI5M2Q0YWMzMjAzZjgzYjQ2
ZjFhYWFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxT
ZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVs
bFNldHRlckZ1bmN0aW9uLmNwcApAQCAtNTIsNyArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAogICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IHZpc2l0b3ItPmNvZGVCbG9jaygpOwotICAgICAgICBtX2NhbGxlcklzU3RyaWN0
ID0gY29kZUJsb2NrICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIC8vIFRo
aXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhhdCB3ZSBtaWdodCBoYXZlIGFuIHN0cmlj
dCBvcGNvZGUgaW4gYSBub24tc3RyaWN0IGNvbnRleHQsIGJ1dCB0aGF0J3MKKyAgICAgICAgLy8g
b2sgc2luY2Ugd2UgYXNzZXJ0IGJlbG93IHRoYXQgdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIg
YmUgY2FsbGVkIGZyb20gYW55IGtpbmQgc3RyaWN0IGNvbnRleHQuCisgICAgICAgIG1fY2FsbGVy
SXNTdHJpY3QgPSBjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJ
blN0cmljdENvbnRleHQoKTsKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKICAg
ICB9CiAKQEAgLTczLDExICs3NSwxMiBAQCBzdGF0aWMgYm9vbCBjYWxsZXJJc1N0cmljdChWTSYg
dm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogbmFtZXNwYWNlIE51bGxTZXR0ZXJGdW5jdGlvbklu
dGVybmFsIHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5V
bmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChjYWxsZXJJc1N0cmljdCh2bSwg
Y2FsbEZyYW1lKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkg
YSBnZXR0ZXIiX3MpKTsKKyNpZiAhQVNTRVJUX0VOQUJMRUQKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBVTlVTRURfUEFS
QU0oY2FsbGVySXNTdHJpY3QpOworI2VuZGlmCisgICAgQVNTRVJUKCFjYWxsZXJJc1N0cmljdChn
bG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCBjMDU3MTJiMGE0NWExZTBhMGU2ZWIzNjZm
YmY0MzQzZGYyNDg2Zjk2Li42ZGFhN2I0YzZiYjVhYzI5ODQyOTFlMzhiYjI2OThmYjUwNjJmZmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgT2JqZWN0UHJvdG90eXBlKiBPYmplY3RQcm90b3R5cGU6
OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFMKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBT
dHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBKU09iamVj
dCogdmFsdWVPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAo
VU5MSUtFTFkoIXZhbHVlT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBA
IC05Miw3ICs5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jSGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmlj
dCgpKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVl
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWwKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAg
ICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0
TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVj
dChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHNldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7
CkBAIC0yMDQsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90b0Z1bmNMb29rdXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yMzQsNyArMjM0LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNjcsNyArMjY3
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0
eUlzRW51bWVyYWJsZShKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHNjb3BlLnJlbGVhc2Uo
KTsKQEAgLTI4OCw3ICsyODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIC8vIDIu
IEludm9rZShWLCAidG9TdHJpbmciKQogCiAgICAgLy8gTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBj
YWxsaW5nIFRvT2JqZWN0IHBhc3NpbmcgdGhlIHRoaXMgdmFsdWUgYXMgdGhlIGFyZ3VtZW50Lgot
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgU3Ry
aWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0g
dGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIC8vIExldCB0b1N0cmluZyBiZSB0aGUgTy5bW0dldF1dKCJ0b1N0
cmluZyIsIFYpCkBAIC0zMTMsNyArMzEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUuaXNVbmRlZmluZWQo
KSA/IHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRPYmplY3RTdHJpbmcoKSA6IHZtLnNtYWxsU3Ry
aW5ncy5udWxsT2JqZWN0U3RyaW5nKCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhp
c1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKaW5kZXggYThmMGI1Zjg5OTQyYjM3
ZGFlOWU3YTMwMjkyZDQxOGZiODdlODkzMy4uMmIzMmY1YTA0YTIwMTIzNmE5N2JiYWVkYzQzNDYy
Y2QyODhlMzM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmNwcApAQCAtODIsNyArODIsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqCiAgICAgQVNTRVJUKCZnbG9iYWxPYmplY3QtPnZtKCkgPT0gJnZtKTsKIAogICAgIFBhcnNl
ckVycm9yIGVycm9yOwotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gaXNTdHJp
Y3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0OworICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gaXNJblN0
cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29k
ZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2Rl
KCk7CiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZt
LmNvZGVDYWNoZSgpLT5nZXRVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2soCiAgICAgICAgIHZtLCB0
aGlzLCBzb3VyY2UoKSwgc3RyaWN0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvcik7CkBA
IC0xMzYsNyArMTM2LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXpl
R2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgYm9v
bCBoYXNQcm9wZXJ0eSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+aGFzUHJvcGVydHkoZ2xv
YmFsT2JqZWN0LCBlbnRyeS5rZXkuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eSkg
ewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYg
IXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzU3RyaWN0TW9k
ZSgpKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0
KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzSW5T
dHJpY3RDb250ZXh0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgYWxsb3cg
ImNvbnN0IiBkdXBsaWNhdGUgZGVjbGFyYXRpb25zIHVuZGVyIHRoaXMgc2V0dGluZy4KICAgICAg
ICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIHdlIGRvbid0ICJsZXQiIHZhcmlhYmxlcyB0
byBiZSBvdmVycmlkZGVuIGJ5ICJjb25zdCIgdmFyaWFibGVzLgogICAgICAgICAgICAgICAgICAg
ICBpZiAoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5pc0NvbnN0VmFyaWFibGUoZW50cnkua2V5
LmdldCgpKSkKQEAgLTE4NSw3ICsxODUsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAg
ICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+
c3ltYm9sVGFibGUoKTsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xU
YWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGljYWxEZWNsYXJh
dGlvbnMpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkg
JiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzU3RyaWN0
TW9kZSgpKSkgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3Qo
KSAmJiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNJblN0
cmljdENvbnRleHQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmNvbnRh
aW5zKGxvY2tlciwgZW50cnkua2V5LmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCAyOWNhMDEzMjA1NjFiMTQ2YTYyOWM2ZmI1ZmExODhm
ZjU4YzNkYjFmLi5iODcxNWFhNzJiYmNiNzMzOWQ2ZTM0MTNhYzU5Yzc0NDExN2I4MmE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgK
QEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAK
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRl
eHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNl
c0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSk7IH0KIAogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9i
amVjdE1hcChWTSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAKaW5kZXggYjA3ZTBhMDI5MzMyODI2MTAzNmY0MTEwNmVlZWU5ZTVmOTBjNjY2MC4u
NmQxMWI0MWJhNDA2MTgxNTUyMmRhYjNlYmZlMzFjNzc2ZTdlZTc3MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNTQ3LDcgKzU0Nyw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwog
ICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OlN0cmljdE1v
ZGUpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7CiAgICAgYXJndW1lbnRzLmFwcGVu
ZChhcmdBcnJheSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9i
amVjdCwgYXBwbHlNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRz
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJs
ZS5oCmluZGV4IDEwNmNmMjVmNjMxZjA0MWI5YmM2MzE5NDAwZjQ2NjdiMDdiMzljZmMuLjBkZDQ0
ZWNiODQzNzFkNDc3MzQ2MGNkNGMwYWFlNTVmZTNjZDIzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKQEAgLTYwLDEyICs2MCwxMCBA
QCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMg
JiBFdmFsRmVhdHVyZTsgfQogICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9Ci0g
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0
TW9kZUZlYXR1cmU7IH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2
ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPihtX2V2YWxDb250ZXh0
VHlwZSk7IH0KKyAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9m
ZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1v
ZGU7IH0KLSAgICAgICAgCiAgICAgdm9pZCBzZXROZXZlcklubGluZShib29sIHZhbHVlKSB7IG1f
bmV2ZXJJbmxpbmUgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0TmV2ZXJPcHRpbWl6ZShib29sIHZh
bHVlKSB7IG1fbmV2ZXJPcHRpbWl6ZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXROZXZlckZUTE9w
dGltaXplKGJvb2wgdmFsdWUpIHsgbV9uZXZlckZUTE9wdGltaXplID0gdmFsdWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5j
cHAKaW5kZXggODVjMWNmMzQzMzgxODQ3ODgzODg0NTZlYjM2YWVhMmZmYjYzNDFmYS4uM2ZkNjAw
NmUxZTg0NWZhZWVkMjZkMGU3MjgzYzUzZjZjMTBmMzExNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKQEAgLTIwMyw3
ICsyMDMsNyBAQCBib29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cgPyBTdHJp
Y3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
Y2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVlLCBz
aG91bGRUaHJvdyA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSkpOwog
fQogCiBKU1ZhbHVlIFNwYXJzZUFycmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmlu
ZGV4IDFiYjVjZGZmYTc2YTc3ZGUyMjQzY2I2MjFjMjI0NWJiOGUwNTEyZGMuLjU0ZDFjOWQyNmUw
ZTk0NTAyN2RhZTQ2MWQ3YTBhMGM4N2NlNDgzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTYyNiw3ICs2MjYsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
T3BlbkRhdGFiYXNlQm9keShKUwogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU0RPTVdpbmRvdyogSURM
T3BlcmF0aW9uPEpTRE9NV2luZG93Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiB7Ci0gICAgcmV0dXJuIHRvSlNET01XaW5k
b3cobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlz
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgcmV0dXJuIHRvSlNE
T01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCku
dG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzbG9wcHkoKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRE9NV2luZG93SW5zdGFuY2VGdW5j
dGlvbk9wZW5EYXRhYmFzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXRDdXN0b20uaAppbmRleCAwOTI4NTE3NjNjYTBkMWFjYTFiYzczNDY1MzUwYjZlMmMwZWVlNTA2
Li4zNzY4YmYyOTFjNTlkYWU4OTlkYjBmMTUwYTFiMGNhMDhjN2RjMmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCkBAIC02Myw3ICs2
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0s
IGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
Tm90U3RyaWN0TW9kZSkpOworICAgICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0
Q2FzdCh2bSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlz
T2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIkV2ZW50VGFyZ2V0Iiwgb3BlcmF0aW9uTmFtZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggODkyMDNmZGQ5NWNmNzAyYzc2YjAwNTkxZmI3Yjc3NTQ2NmY0NzE2NS4uZTIzYzFl
OGZjZGFmMWU3ZWJlMDJhOTY3MGVkZmY5OTFiYzRiZTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ1OTAsNyArNDU5
MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTtc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmIChkZWNvZGVkVGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCkudG9UaGlzKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9w
cHkoKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAk
Y2FzdGluZ0Z1bmN0aW9uKHZtLCBkZWNvZGVkVGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDYwNiw3
ICs0NjA2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAjIEZJWE1F
OiBNYWtlIGNvbnNpc3RlbnQgSURMQXR0cmlidXRlPD46OmNhc3QgYW5kIElETE9wZXJhdGlvbjw+
OjpjYXN0IGluIGNhc2Ugb2YgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LgogICAgICAgICBteSAkY2Fz
dGluZ0Z1bmN0aW9uID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJv
eHlUb0pTT2JqZWN0fSA/ICJ0byR7Y2xhc3NOYW1lfSIgOiBHZXRDYXN0aW5nSGVscGVyRm9yVGhp
c09iamVjdCgkaW50ZXJmYWNlKTsKLSAgICAgICAgbXkgJHRoaXNWYWx1ZSA9ICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAiY2FsbEZyYW1l
LnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSki
IDogImNhbGxGcmFtZS50aGlzVmFsdWUoKSI7CisgICAgICAgIG15ICR0aGlzVmFsdWUgPSAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gImNh
bGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzbG9wcHkoKSkiIDogImNhbGxGcmFtZS50aGlzVmFsdWUoKSI7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidGVtcGxhdGU8PiBpbmxpbmUgJHtjbGFzc05hbWV9KiBJRExPcGVyYXRpb248
JHtjbGFzc05hbWV9Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lJiBjYWxsRnJhbWUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVu
Y3Rpb24oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICR0aGlzVmFsdWUpO1xuIik7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggM2FmYzA5YjBhOGViOGVlZWE3YTQzNzM1MjNjMzMxMTgxYjBjZWU5Yy4uODc2Y2M4
Yjg1YzY1MzhmZDA1NjZmYWMxZTk1YmYzYWI2ZGNmMDYyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIwLTAzLTMxICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAg
ICAgIE5vdCB1c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4gQ2xhc3NEZWNsYXJhdGlvbiBzdGF0ZW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTU3
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1ODk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHRoZSB0ZXN0IHNpbmNlIGl0IGNvbnRh
aW5lZCBpbmNvcnJlY3QgY29kZS4KKworICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1tZXRob2Qt
bmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50
YXgtbWV0aG9kLW5hbWVzLmpzOgorCiAyMDIwLTAzLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIHNjcm9sbEludG9WaWV3KCkgZXJyb25lb3VzbHkg
c2Nyb2xscyBub24tY29udGFpbmluZyBibG9jayBzY3JvbGxlcnMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKaW5kZXggN2Yx
NDkyNGYzZDNhZDc2OWQ5OTgxYjQ1Y2FiNDZlZWVmOTc2ZDc1Yy4uODg4Y2QyZDIyNTJhOGYzOWNj
M2YyZWUzMDE3NDZiOTA1OGJjYTljOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvY2xhc3Mt
c3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvY2xh
c3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKQEAgLTU2LDkgKzU2LDkgQEAgUEFT
UyBBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNSk7IChuZXcgQSlb
J2ZvbyddKCkgaXMgMjE1CiBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgn
Zm9vJywgMjE2KTsgQiA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdiYXInLCAyMTcp
OyBbKG5ldyBBKVsnZm9vJ10oKSwgKG5ldyBCKVsnYmFyJ10oKV0gaXMgWzIxNiwgMjE3XQogUEFT
UyB4ID0gMjE4OyBjbGFzcyBBIHsgW3grK10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSlbMjE4
XSgpIGlzIDIxOQogUEFTUyB4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgWyh4PTIyMCkgJiYgJ2Zv
byddKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpLmZvbygpIGlzIDIyMAotUEFTUyB4ID0gMjIx
OyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4
KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0oKV0g
aXMgWzIyMSwgMjIyXQorUEFTUyB2YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgWyh4MT14
KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7
IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0oKV0gaXMgWzIyMSwgMjIyXQogUEFT
UyB4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjM7IH0gWydmb28n
ICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBbKG5ldyBBKS5mb28xKCksIChuZXcgQSkuZm9v
MigpXSBpcyBbMjIzLCAyMjRdCi1QQVNTIHggPSAxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgp
IHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsg
fSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSBpcyBbMiwgMywgMjI2XQorUEFTUyB2YXIgeCA9
IDEsIHgxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgp
ICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9v
MigpXSBpcyBbMiwgMywgMjI2XQogCiBTdGF0aWMgbWV0aG9kcyB3aXRoIGNvbXB1dGVkIG5hbWVz
CiBQQVNTIGNsYXNzIEEgeyBzdGF0aWMgWydhJyArICdiJ10oKSB7IHJldHVybiAzMTE7IH0gfTsg
QS5hYigpIGlzIDMxMQpAQCAtNjksOSArNjksOSBAQCBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhT
dGF0aWNNZXRob2QoJ2ZvbycsIDMxNSk7IEFbJ2ZvbyddKCkgaXMgMzE1CiBQQVNTIEEgPSBjcmVh
dGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhT
dGF0aWNNZXRob2QoJ2JhcicsIDMxNyk7IFtBWydmb28nXSgpLCBCWydiYXInXSgpXSBpcyBbMzE2
LCAzMTddCiBQQVNTIHggPSAyMTg7IGNsYXNzIEEgeyBzdGF0aWMgW3grK10oKSB7IHJldHVybiB4
OyB9IH07IEFbMjE4XSgpIGlzIDIxOQogUEFTUyB4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgc3Rh
dGljIFsoeD0yMjApICYmICdmb28nXSgpIHsgcmV0dXJuIHg7IH0gfTsgQS5mb28oKSBpcyAyMjAK
LVBBU1MgeCA9IDIyMTsgY2xhc3MgQSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVy
biB4MTsgfSBzdGF0aWMgWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIx
XSgpLCBBWzIyMl0oKV0gaXMgWzIyMSwgMjIyXQorUEFTUyB2YXIgeCA9IDIyMSwgeDEsIHgyOyBj
bGFzcyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRpYyBb
KHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgpXSBp
cyBbMjIxLCAyMjJdCiBQQVNTIHggPSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArIHgrK10o
KSB7IHJldHVybiAyMjM7IH0gc3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7IH0g
fTsgW0EuZm9vMSgpLCBBLmZvbzIoKV0gaXMgWzIyMywgMjI0XQotUEFTUyB4ID0gMTsgY2xhc3Mg
QSB7IHN0YXRpYyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgp
ICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSBp
cyBbMiwgMywgMjI2XQorUEFTUyB2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9v
JyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFsoeDE9eCkgJiYgJ2ZvbycgKyB4Kytd
KCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28yKCldIGlzIFsyLCAzLCAyMjZdCiAK
IEluc3RhbmNlIG1ldGhvZHMgd2l0aCBkdXBsaWNhdGVkIG5hbWVzCiBQQVNTIGNsYXNzIEEgeyBh
YigpIHsgcmV0dXJuIDQwMSB9IGFiKCkgeyByZXR1cm4gNDAyOyB9IH07IChuZXcgQSkuYWIoKSBp
cyA0MDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50
YXgtbWV0aG9kLW5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5
bnRheC1tZXRob2QtbmFtZXMuanMKaW5kZXggMTQyYmIwNWIzYjQwOWQ5MDEyYWE0OWFkNDI1MjNk
ZTk3MTUzYzZhNi4uMWJiZTkwMzU4NmU4NTQ3MjI0ZGQzYmJjZjRhOTBlZjgyNDQzYjkwNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2Qt
bmFtZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1t
ZXRob2QtbmFtZXMuanMKQEAgLTU3LDkgKzU3LDkgQEAgc2hvdWxkQmUoIkEgPSBjcmVhdGVDbGFz
c1dpdGhJbnN0YW5jZU1ldGhvZCgnZm9vJywgMjE1KTsgKG5ldyBBKVsnZm9vJ10oKSIsICIyMTUK
IHNob3VsZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNik7
IEIgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnYmFyJywgMjE3KTsgWyhuZXcgQSlb
J2ZvbyddKCksIChuZXcgQilbJ2JhciddKCldIiwgIlsyMTYsIDIxN10iKTsKIHNob3VsZEJlKCJ4
ID0gMjE4OyBjbGFzcyBBIHsgW3grK10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSlbMjE4XSgp
IiwgIjIxOSIpOwogc2hvdWxkQmUoInggPSB1bmRlZmluZWQ7IGNsYXNzIEEgeyBbKHg9MjIwKSAm
JiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSkuZm9vKCkiLCAiMjIwIik7Ci1zaG91
bGRCZSgieCA9IDIyMTsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9
IFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5l
dyBBKVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDIyMSwgeDEs
IHgyOyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAm
JiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0o
KV0iLCAiWzIyMSwgMjIyXSIpOwogc2hvdWxkQmUoInggPSAxOyBjbGFzcyBBIHsgWydmb28nICsg
eCsrXSgpIHsgcmV0dXJuIDIyMzsgfSBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI0OyB9IH07
IFsobmV3IEEpLmZvbzEoKSwgKG5ldyBBKS5mb28yKCldIiwgIlsyMjMsIDIyNF0iKTsKLXNob3Vs
ZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4
MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEp
LmZvbzIoKV0iLCAiWzIsIDMsIDIyNl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDEsIHgxOyBjbGFz
cyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsg
eCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSIsICJbMiwg
MywgMjI2XSIpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnU3RhdGljIG1ldGhvZHMgd2l0aCBjb21w
dXRlZCBuYW1lcycpOwpAQCAtNzIsOSArNzIsOSBAQCBzaG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNz
V2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE1KTsgQVsnZm9vJ10oKSIsICIzMTUiKTsKIHNob3Vs
ZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTYpOyBCID0gY3Jl
YXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdiYXInLCAzMTcpOyBbQVsnZm9vJ10oKSwgQlsnYmFy
J10oKV0iLCAiWzMxNiwgMzE3XSIpOwogc2hvdWxkQmUoInggPSAyMTg7IGNsYXNzIEEgeyBzdGF0
aWMgW3grK10oKSB7IHJldHVybiB4OyB9IH07IEFbMjE4XSgpIiwgIjIxOSIpOwogc2hvdWxkQmUo
InggPSB1bmRlZmluZWQ7IGNsYXNzIEEgeyBzdGF0aWMgWyh4PTIyMCkgJiYgJ2ZvbyddKCkgeyBy
ZXR1cm4geDsgfSB9OyBBLmZvbygpIiwgIjIyMCIpOwotc2hvdWxkQmUoInggPSAyMjE7IGNsYXNz
IEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gc3RhdGljIFsoeDI9
eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFtBWzIyMV0oKSwgQVsyMjJdKCldIiwgIlsy
MjEsIDIyMl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgc3Rh
dGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRpYyBbKHgyPXgpICYmIHgr
K10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgpXSIsICJbMjIxLCAyMjJd
Iik7CiBzaG91bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsg
cmV0dXJuIDIyMzsgfSBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBb
QS5mb28xKCksIEEuZm9vMigpXSIsICJbMjIzLCAyMjRdIik7Ci1zaG91bGRCZSgieCA9IDE7IGNs
YXNzIEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMgWyh4
MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCBBLmZvbzIo
KV0iLCAiWzIsIDMsIDIyNl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsg
c3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFsoeDE9eCkgJiYg
J2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28yKCldIiwgIlsy
LCAzLCAyMjZdIik7CiAKIGRlYnVnKCcnKTsKIGRlYnVnKCdJbnN0YW5jZSBtZXRob2RzIHdpdGgg
ZHVwbGljYXRlZCBuYW1lcycpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCA2MjAzZTVjNWVjMzQ3N2RkNTg4NTc1ODkxZmI3ZDQzMDdhZDc1
NTYxLi44NDQwZWU4YzU0OWQ4Nzk5YjlhY2Q5MGU2NjIxZGIyZTQ1ZjVjMWM5IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTAzLTMxICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisg
ICAgICAgIE5vdCB1c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4gQ2xhc3NEZWNsYXJhdGlvbiBzdGF0
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NTU3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1ODk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc3VwZXJjbGFzcy1leHBy
ZXNzaW9uLXN0cmljdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAoZi50cnkuYyk6CisgICAgICAg
IChmKToKKwogMjAyMC0wMy0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5j
b20+CiAKICAgICAgICAgUmVnRXhwLnByb3RvdHlwZS5leGVjIG11c3QgYWx3YXlzIGFjY2VzcyBs
YXN0SW5kZXgKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhwcmVzc2lv
bi1zdHJpY3RuZXNzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0
cmljdG5lc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdlYTY4NDc5Yzk3M2YzYzYyMGFjZmJmMWYwMTlhYmVk
YTkyYTJlZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhw
cmVzc2lvbi1zdHJpY3RuZXNzLmpzCkBAIC0wLDAgKzEsNTkgQEAKK2Z1bmN0aW9uIGYoKSB7Cisg
ICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFz
cyBjIGV4dGVuZHMoZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB7fTsK
KyAgICAgICAgICAgIH0sIGQpIHt9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
IGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZXJyb3IgfHwgZXJyb3IubWVz
c2FnZSAhPSAiQ2FuJ3QgZmluZCB2YXJpYWJsZTogZCIpCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgcmVmZXJlbmNlIGVycm9yIik7CisgICAg
fQorCisgICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHZhciBvYmogPSB7fTsKKyAg
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ3gnLCB7IGNvbmZpZ3VyYWJsZTogZmFs
c2UsIHZhbHVlOiAxIH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3MgYyBleHRl
bmRzKGRlbGV0ZSBvYmoueCwgKCk9Pnt9KSB7fQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVy
cm9yLm1lc3NhZ2UgIT0gIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVycm9yIik7
CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHZhciBvYmogPSB7
fTsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ3gnLCB7IGNvbmZpZ3VyYWJs
ZTogZmFsc2UsIHZhbHVlOiAxIH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3Mg
YyBleHRlbmRzKGV2YWwoJ2RlbGV0ZSBvYmoueCcpLCBjbGFzc3t9KSB7fQorICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0gIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHku
IikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24g
YSB0eXBlIGVycm9yIik7CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgbyA9IHt9OworICAg
ICAgICBvLl9fZGVmaW5lR2V0dGVyX18oIngiLCBmdW5jdGlvbiAoKSB7IHJldHVybiA0MjsgfSk7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMgKG8ueCA9IDEzLCBj
bGFzcyB7IH0pIHsgfQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBlcnJvciA9
IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0g
IkF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIikKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVycm9yIik7
CisgICAgfQorfQorCisgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQorICAgIGYoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395089</attachid>
            <date>2020-03-31 14:21:43 -0700</date>
            <delta_ts>2020-04-06 12:40:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200331142142.patch</filename>
            <type>text/plain</type>
            <size>249398</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjZmOGI0YWU1MDEyMzE4NjcyM2QwMmI3OTAyODM4ODk1MjlkNGE2Li5mNGE5MjlmYmZjNDA0Yzlj
ODFiY2QxNzlhYThkOWM3ZDhjNjc2YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODAgQEAKKzIwMjAtMDMtMzEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0
IHN0cmljdCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQg
d2hlbiBlbWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0
IHdlIGNhbiBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0
IG11c3QgYmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUg
YmxvY2sgaXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9u
bHkgdGVuCisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5l
c3MsIHNvIGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVz
LgorICAgICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBi
YXNlbGluZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bjo6cnVuKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQXNz
dW1pbmdKSVRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aXNDb25zdHJ1Y3RvciBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
aXNLbm93bkNlbGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjp1c2VzRXZhbCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRml0
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHA6CisgICAgICAgIChK
U0M6OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCBjb25zdCk6CisgICAgICAgICogYnl0
ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6
aXNJblN0cmljdENvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRGbGFn
cy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRGbGFncy5oOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlB1dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6
UHV0QnlJZEZsYWdzOjppc0RpcmVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRGbGFn
czo6ZWNtYU1vZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OlB1dEJ5SWRG
bGFncyk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNDb25zdHJ1Y3RvciBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6Om5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGcm9tU2NvcGUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvU2NvcGUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRl
QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlcHRpb25J
Zk5lZWRlZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVjbWFNb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVNjb3Bl
OjpTdHJpY3RNb2RlU2NvcGUpOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlU2NvcGU6On5TdHJp
Y3RNb2RlU2NvcGUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6RW1wdHlMZXRFeHByZXNzaW9uOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpG
b3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKToKKyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6YmluZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZENhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cFRvVGhpcyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R3JhcGg6Omdsb2JhbFRoaXNPYmplY3RGb3IpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRUNNQU1vZGUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6
CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjpyZWFk
VG9wKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0
aFN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbEZvckNlbGxXaXRoU3ltYm9sKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dER5bmFtaWNWYXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb1RoaXMpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZFdpdGhUaGlzKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsV2l0
aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0
QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxC
eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxldGVC
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0
ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNh
bGxFdmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1
dER5bmFtaWNWYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENv
bnN0cnVjdG9yTmFtZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUp
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRo
RnVuY3Rpb24pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAg
ICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmtTbG93Q2Fz
ZUlmTm90SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAg
ICAoSlNDOjp0cnlDYWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbGV0ZUJ5
KToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNvbW1vbkNhbGxFdmFsKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6
CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1Bv
cCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2hpZnQp
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6YXJy
YXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQp
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjph
cnJheVByb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjp1c2VzRXZhbCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAg
ICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFy
Z3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1l
bnRzOjptYXRlcmlhbGl6ZVNwZWNpYWxzKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwpOgor
ICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFs
KToKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpldmFs
dWF0ZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRh
YmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpleGVjdXRhYmxlSW5mbyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0dldFB1dEluZm8uY3BwOgorICAgICAgICAoSlNDOjpHZXRQdXRJbmZvOjpkdW1wIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0dldFB1dEluZm8uaDoKKyAgICAgICAgKEpTQzo6R2V0
UHV0SW5mbzo6R2V0UHV0SW5mbyk6CisgICAgICAgIChKU0M6OkdldFB1dEluZm86OmVjbWFNb2Rl
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxTZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvVGhp
c1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUp
OgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpmcm9tQnl0ZSk6CisgICAg
ICAgIChKU0M6OkVDTUFNb2RlOjpzdHJpY3QpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6c2xv
cHB5KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmlzU3RyaWN0IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RUNNQU1vZGU6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OkVD
TUFNb2RlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpzZWxlY3RTdHJ1Y3R1cmVGb3JOZXdGdW5jRXhwKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwp
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpOgorICAgICAgICAoSlNDOjpn
bG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAgICAgICogcnVudGltZS9K
U1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9UaGlzKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhpcyk6Cisg
ICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJh
bFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpHZXRDYWxsZXJTdHJpY3RuZXNzRnVuY3Rvcjo6b3BlcmF0b3IoKSBj
b25zdCk6CisgICAgICAgIChKU0M6Ok51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsOjpjYWxsUmV0
dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAoSlNDOjpvYmpl
Y3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y0lzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0
ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmpl
Y3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNQ
cm9wZXJ0eUlzRW51bWVyYWJsZSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvTG9j
YWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9n
cmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q2FsbCk6CisgICAgICAgICogcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omlz
QXJyb3dGdW5jdGlvbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VB
cnJheVZhbHVlTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToK
KwogMjAyMC0wMy0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAK
ICAgICAgICAgUmVnRXhwLnByb3RvdHlwZS5leGVjIG11c3QgYWx3YXlzIGFjY2VzcyBsYXN0SW5k
ZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAzMGMxZTQyYzFiNTRlN2U2OGI4MDZmY2U1MmJhOGUyOTJiYmExYTc4
Li5kZDhmZmQ4YWU2ODFkMTdiZGJmMjI5MzUyM2UzOTZkMzQ1YWQ5ZDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMjAtMDMtMzEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xh
cmF0aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBKU1Rlc3Rz
LyBzdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMKKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
TE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0V2
ZW50VGFyZ2V0Pjo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwogMjAyMC0wMy0z
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE92ZXJyaWRlcyBv
ZiBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHNob3VsZCBub3QgbmVlZCB0
byBxdWVyeSB0aGUgYmFzZSBjbGFzcydzIGhhc1BlbmRpbmdBY3Rpdml0eSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IGM5OTEwNTNh
MTkxOWY4ZTFiYTRlYTk4Yjc3ZDhlMWE5ZDFiN2RkZTguLmQ1NjViNDEyODllN2Y2ODYxZjhmOWY5
YjdlYWRiMDkxNjk2ZWE0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQ29u
dGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiBm
dW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RS
ZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICBKU09iamVj
dFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CiAKICAg
ICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCkpOwogICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAppbmRleCAwMmNlZGM3OTY2YmVjMGE1M2E5YmMwMmE5ZjM3ODNlNzlmNzMyZTJmLi4wM2ExOGRj
OTAzNmI2Njc4NDE5MmVmNTBjOTIwNDVlZDM1MzhiNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTIzLDcg
KzUyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAKICAgICBKU0NvbnRleHRSZWYgZXhl
Y1JlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYg
PSB0b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpS
ZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09i
alJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogICAgIAogICAgIGZvciAo
SlNDbGFzc1JlZiBqc0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+KHRv
SlMoZnVuY3Rpb25SZWYpKS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3Mt
PnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJh
Y2sgY2FsbEFzRnVuY3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlvbikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDIyMmE0ZWUyMGRjYmFkYjA3
YjdiYzY1NGRjZjhhYTgwY2YyYzEyYmUuLjI0MDE3OTE2ZTc1MTc2YjgzZTM1ZDllZDAyODgyODMy
NTIxNmM3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
QEAgLTE5Myw3ICsxOTMsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3Qo
SlNDb250ZXh0UmVmIGN0eCkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKLSAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpTT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICByZXR1cm4gdG9SZWYoanNDYXN0
PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogfQogCiBKU0NvbnRl
eHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggZDM3
MjM2ZjQwYWE4OTkxMjdjNzQ5ZWJkYjk4Njk2Yzc3ODVkOGNiMy4uZDkxMDYyY2Y3YTM1NGYwNmEy
YzYyZjQ0ZjQxODM0NDk1ZDY4MzE3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
SGVhcElubGluZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRl
ICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgotI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAKaW5kZXggOWYyYWJhMzlmMmNlNzA4ZDMxM2I4ZDk0MGNmOTZmYmE0MmZjYzk0ZS4uZmRhYWE2
OTQ1ZmYwZTlkNTE1MWFhYTg5YTdhOTkyMDdhYzFjMjllZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bjo6cnVuKCkKICAgICAgICAgICAgICAgICAgICAgc2NvcGUsIC8vIHNjb3BlCiAgICAgICAgICAg
ICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCiAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhbmQsIC8vIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgIEdldFB1
dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAg
R2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFN
b2RlKCkpLCAvLyBpbmZvCiAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlT3JTY29wZURl
cHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCB9KSwgLy8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4CiAgICAgICAgICAg
ICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAg
ICAgICAgICAgICAgICAgKTsKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICAgICAgICAgICAgICBvcGVyYW5kLCAvLyBkc3QK
ICAgICAgICAgICAgICAgICAgICAgc2NvcGUsIC8vIHNjb3BlCiAgICAgICAgICAgICAgICAgICAg
IHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCi0gICAgICAgICAgICAgICAg
ICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIC8vIGluZm8KKyAgICAgICAgICAg
ICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFy
LCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBtX2J5dGVjb2RlR2VuZXJh
dG9yLmVjbWFNb2RlKCkpLCAvLyBpbmZvCiAgICAgICAgICAgICAgICAgICAgIDAsIC8vIGxvY2Fs
IHNjb3BlIGRlcHRoCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zm
c2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAgICAgICAgICAgICAgICAgKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjZDc1
NDY4MGMxMjZhMGY3Mjc1MzZmMWJlMzdjNGUuLjFmNTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJh
ODdkMDg4ZjdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgpAQCAtMjcsNiArMjcsNyBAQCB0eXBlcyBbCiAgICAgOkJhc2ljQmxvY2tMb2Nh
dGlvbiwKICAgICA6Qm91bmRMYWJlbCwKICAgICA6RGVidWdIb29rVHlwZSwKKyAgICA6RUNNQU1v
ZGUsCiAgICAgOkVycm9yVHlwZSwKICAgICA6R2V0QnlJZE1vZGUsCiAgICAgOkdldEJ5SWRNb2Rl
TWV0YWRhdGEsCkBAIC0xNzQsNiArMTc1LDcgQEAgb3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRv
X3RoaXMsCiAgICAgYXJnczogewogICAgICAgICBzcmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAg
ICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELApAQCAtNTIyLDYgKzUyNCw3IEBAIG9w
IDpwdXRfYnlfaWRfd2l0aF90aGlzLAogICAgICAgICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3Rl
ciwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6ZGVsX2J5
X2lkLApAQCAtNTI5LDYgKzUzMiw3IEBAIG9wIDpkZWxfYnlfaWQsCiAgICAgICAgIGRzdDogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHBy
b3BlcnR5OiB1bnNpZ25lZCwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAog
b3AgOmdldF9ieV92YWwsCkBAIC01NDgsNiArNTUyLDcgQEAgb3AgOnB1dF9ieV92YWwsCiAgICAg
ICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdp
c3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6
IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUsCkBAIC01NTksNiArNTY0LDcgQEAgb3AgOnB1dF9ieV92YWxfd2l0aF90
aGlzLAogICAgICAgICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOnB1dF9ieV92YWxfZGlyZWN0
LApAQCAtNTY2LDYgKzU3Miw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFz
ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAog
ICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1v
ZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5
UHJvZmlsZSwKQEAgLTU3Niw2ICs1ODMsNyBAQCBvcCA6ZGVsX2J5X3ZhbCwKICAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAg
ICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2Rl
LAogICAgIH0KIAogb3AgOnB1dF9nZXR0ZXJfYnlfaWQsCkBAIC03NzgsNiArNzg2LDcgQEAgb3Ag
OmNhbGxfZXZhbCwKICAgICAgICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGFy
Z2M6IHVuc2lnbmVkLAogICAgICAgICBhcmd2OiB1bnNpZ25lZCwKKyAgICAgICAgZWNtYU1vZGU6
IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNjU3ZTJiYjNlMjNiYTc1YjQ2NzIwMzBhYWMzOGY2Zjg1M2MyNDlm
NS4uZGFlZGVjYjQ5YTliNzY0ZmFmNGExYzRlNzZhZjg1ZTcxZWY1YjcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIwNSw3ICsyMDUsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZShQcmludFN0cmVhbSYgb3V0LCBK
SVRUeXBlIGppdFR5cGUpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiIChOZXZlckZUTE9wdGlt
aXplKSIpOwogICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgp
KQogICAgICAgICBvdXQucHJpbnQoIiAoRGlkVHJ5VG9FbnRlckluTG9vcCkiKTsKLSAgICBpZiAo
b3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFi
bGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgb3V0LnByaW50KCIgKFN0cmljdE1v
ZGUpIik7CiAgICAgaWYgKG1fZGlkRmFpbEpJVENvbXBpbGF0aW9uKQogICAgICAgICBvdXQucHJp
bnQoIiAoSklURmFpbCkiKTsKQEAgLTYxOSw3ICs2MTksNyBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogCiAgICAgICAgICAgICBBU1NFUlQoIWlzSW5pdGlhbGl6YXRpb24oYnl0ZWNvZGUubV9n
ZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgICAgICAgICBpZiAoYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgPT0gTG9jYWxDbG9zdXJlVmFyKSB7Ci0gICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5t
X2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xvc3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dl
dFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgp
LCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCks
IGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KIApAQCAtNjI3LDkgKzYyNyw5IEBAIGJvb2wgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29s
dmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBzY29w
ZSwgaWRlbnQsIEdldCwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIEluaXRp
YWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKLSAgICAgICAgICAgIG1ldGFkYXRhLm1f
Z2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2Rl
KCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBieXRlY29kZS5tX2dldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgp
KTsKICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikKLSAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5m
by5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlh
bGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9
IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVW
YXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUu
bV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xv
YmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBv
cC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNo
cG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3Auc3Ry
dWN0dXJlKQpAQCAtNjYxLDcgKzY2MSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxP
YmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fc3ltYm9sVGFibGVPclNjb3BlRGVwdGguc2NvcGVEZXB0
aCgpLCBzY29wZSwgaWRlbnQsIFB1dCwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBl
KCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxp
emF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1
dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8
IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09
IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQg
PSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9PSBDbG9z
dXJlVmFyIHx8IG9wLnR5cGUgPT0gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBkM2IwNmE4
OTFhZWZjNmM3OTRkNzVlMWMwZDAwNDZlMTkyMzhlODI2Li5lMTExMzlkNWEzODQzNWEwNmRlMjY3
NzVmZmYzMTAwMTVlY2M0NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCkBAIC0yMjIsOSArMjIyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wTWF0
aElDU3RhdHMoKTsKIAotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZENvZGUtPmlzU3RyaWN0TW9kZSgpOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmlzQ29uc3RydWN0b3IoKTsgfQotICAgIEVD
TUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RN
b2RlIDogTm90U3RyaWN0TW9kZTsgfQogICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvZGVUeXBlKCk7IH0KIAogICAgIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPnNjcmlwdE1v
ZGUoKTsgfQpAQCAtMjMyLDExICsyMzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNJbnN0YWxs
ZWRWTVRyYXBCcmVha3BvaW50cygpIGNvbnN0OwogICAgIGJvb2wgaW5zdGFsbFZNVHJhcEJyZWFr
cG9pbnRzKCk7CiAKLSAgICBpbmxpbmUgYm9vbCBpc0tub3duTm90SW1tZWRpYXRlKFZpcnR1YWxS
ZWdpc3RlciByZWcpCisgICAgaW5saW5lIGJvb2wgaXNLbm93bkNlbGwoVmlydHVhbFJlZ2lzdGVy
IHJlZykKICAgICB7Ci0gICAgICAgIGlmIChyZWcgPT0gdGhpc1JlZ2lzdGVyKCkgJiYgIWlzU3Ry
aWN0TW9kZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICAgICAgaWYgKHJlZy5p
c0NvbnN0YW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnQocmVnKS5pc0NlbGwo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFi
bGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aAppbmRleCA3N2YxOTI5MDY5MDgzMzZlYmQwMDhkY2YwYzM2ZjRhYzZlOWU3NWQ0Li40OWVkZDUy
ODVkNWMyYzI4YjFjOWE0YmNlZWY0NTE3MTk5MGJlOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzYsOSArMzYsOCBAQCBlbnVt
IGNsYXNzIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsK
IC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhY
WENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAg
ICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBp
c0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5n
IHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBp
c0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCi0g
ICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25z
dHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNC
dWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCkBAIC01Nyw3ICs1Niw2IEBAIHN0cnVjdCBFeGVj
dXRhYmxlSW5mbyB7CiAgICAgfQogCiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlc0V2YWw7IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPiht
X2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTcyLDcgKzcwLDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJ
bmZvIHsKIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNp
Z25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDog
MTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBt
X2NvbnN0cnVjdG9yS2luZCA6IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApp
bmRleCA1Nzc4OWJjMmM2NjlmN2NhZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi5mNDMwOWQxODU4
Y2Q2MmMzMGE5ZWQxMmFhNWU4NWEwNGQwZTYyMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IEZpdHM7CiAKIC8vIEltcGxpY2l0
IGNvbnZlcnNpb24gZm9yIHR5cGVzIG9mIHRoZSBzYW1lIHNpemUKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIE9wY29kZVNpemUgc2l6ZT4KLXN0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lm
X3Q8c2l6ZW9mKFQpID09IHNpemUsIHN0ZDo6dHJ1ZV90eXBlPj4geworc3RydWN0IEZpdHM8VCwg
c2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZSAmJiBzdGQ6OmlzX2NvbnN0
cnVjdGlibGU8VD46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICB1c2luZyBUYXJnZXRU
eXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwogCiAgICAgc3Rh
dGljIGJvb2wgY2hlY2soVCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTc0LDE4ICsxNzQsMjAgQEAg
c3RydWN0IEZpdHM8R2V0UHV0SW5mbywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplICE9IE9w
Y29kZVNpemU6OldpZGUzMiwgc3RkOjoKICAgICAvLyAxMyBSZXNvbHZlIFR5cGVzCiAgICAgLy8g
MyBJbml0aWFsaXphdGlvbiBNb2RlcwogICAgIC8vIDIgUmVzb2x2ZSBNb2RlcworICAgIC8vIDEg
Yml0IGlzU3RyaWN0IGZsYWcKICAgICAvLwogICAgIC8vIFRyeSB0byBlbmNvZGUgZW5jb2RlIGFz
CiAgICAgLy8KLSAgICAvLyAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gbW9kZQotICAgIC8vICAg
ICAgICAgICAgICAgICAgICB2Ci0gICAgLy8gZnJlZSBiaXQtPiAwfDAwMDB8MDB8MAotICAgIC8v
ICAgICAgICAgICAgICAgICBeICAgIF4KLSAgICAvLyAgICByZXNvbHZlICB0eXBlICAgcmVzb2x2
ZSBtb2RlCisgICAgLy8gICAgICAgICAgICBpbml0aWFsaXphdGlvbiBtb2RlCisgICAgLy8gICAg
ICAgICAgICAgICAgICAgICB2CisgICAgLy8gaXNTdHJpY3QgLT4gMHwwMDAwfDAwfDAKKyAgICAv
LyAgICAgICAgICAgICAgICAgIF4gICAgXgorICAgIC8vICAgICAgcmVzb2x2ZSAgdHlwZSAgICBy
ZXNvbHZlIG1vZGUKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3Jlc29sdmVUeXBlTWF4ID0g
MSA8PCA0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlTWF4
ID0gMSA8PCAyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZU1vZGVNYXggPSAx
IDw8IDE7CiAKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMSA8PCA3
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZVR5cGVCaXRzID0gKHNfcmVzb2x2
ZVR5cGVNYXggLSAxKSA8PCAzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6
YXRpb25Nb2RlQml0cyA9IChzX2luaXRpYWxpemF0aW9uTW9kZU1heCAtIDEpIDw8IDE7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgc19yZXNvbHZlTW9kZUJpdHMgPSAoc19yZXNvbHZlTW9kZU1h
eCAtIDEpOwpAQCAtMjA2LDcgKzIwOCw4IEBAIHN0cnVjdCBGaXRzPEdldFB1dEluZm8sIHNpemUs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZSAhPSBPcGNvZGVTaXplOjpXaWRlMzIsIHN0ZDo6CiAgICAg
ICAgIGF1dG8gcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkucmVzb2x2ZVR5
cGUoKSk7CiAgICAgICAgIGF1dG8gaW5pdGlhbGl6YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oZ3BpLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKICAgICAgICAgYXV0byByZXNvbHZlTW9k
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5yZXNvbHZlTW9kZSgpKTsKLSAgICAgICAgcmV0
dXJuIChyZXNvbHZlVHlwZSA8PCAzKSB8IChpbml0aWFsaXphdGlvbk1vZGUgPDwgMSkgfCByZXNv
bHZlTW9kZTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdw
aS5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAgICAgICByZXR1cm4gKGlzU3RyaWN0IDw8IDcp
IHwgKHJlc29sdmVUeXBlIDw8IDMpIHwgKGluaXRpYWxpemF0aW9uTW9kZSA8PCAxKSB8IHJlc29s
dmVNb2RlOwogICAgIH0KIAogICAgIHN0YXRpYyBHZXRQdXRJbmZvIGNvbnZlcnQoVGFyZ2V0VHlw
ZSBncGkpCkBAIC0yMTQsMTAgKzIxNyw0NSBAQCBzdHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBzaXpl
LCBzdGQ6OmVuYWJsZV9pZl90PHNpemUgIT0gT3Bjb2RlU2l6ZTo6V2lkZTMyLCBzdGQ6OgogICAg
ICAgICBhdXRvIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KChncGkgJiBz
X3Jlc29sdmVUeXBlQml0cykgPj4gMyk7CiAgICAgICAgIGF1dG8gaW5pdGlhbGl6YXRpb25Nb2Rl
ID0gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25Nb2RlPigoZ3BpICYgc19pbml0aWFsaXphdGlv
bk1vZGVCaXRzKSA+PiAxKTsKICAgICAgICAgYXV0byByZXNvbHZlTW9kZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVNb2RlPihncGkgJiBzX3Jlc29sdmVNb2RlQml0cyk7Ci0gICAgICAgIHJldHVybiBH
ZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSwgaW5pdGlhbGl6YXRpb25Nb2RlKTsK
KyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJp
Y3RCaXQpOworICAgICAgICByZXR1cm4gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5
cGUsIGluaXRpYWxpemF0aW9uTW9kZSwgaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBF
Q01BTW9kZTo6c2xvcHB5KCkpOwogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6
ZT4KK3N0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4geworICAgIHVzaW5nIFRhcmdldFR5
cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CisKKyAgICAvLyBQ
dXRCeUlkRmxhZ3MgaXMganVzdCB0d28gYm9vbGVhbiB2YWx1ZXMgZW5jb2RlZCBhcworICAgIC8v
CisgICAgLy8gICAgICAgIGlzU3RyaWN0CisgICAgLy8gICAgICAgICAgIHYKKyAgICAvLyAgICAw
MDAwMDB8MHwwCisgICAgLy8gICAgICAgICAgICAgXgorICAgIC8vICAgICAgICAgaXNEaXJlY3QK
KyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsKKworICAgIHN0YXRpYyBib29sIGNoZWNr
KFB1dEJ5SWRGbGFncykKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoUHV0QnlJZEZsYWdzIGZsYWdzKQorICAgIHsKKyAg
ICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0
KCkpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3Mu
ZWNtYU1vZGUoKS5pc1N0cmljdCgpKTsKKyAgICAgICAgcmV0dXJuIChpc1N0cmljdCA8PCAxKSB8
IGlzRGlyZWN0OworICAgIH0KKworICAgIHN0YXRpYyBQdXRCeUlkRmxhZ3MgY29udmVydChUYXJn
ZXRUeXBlIGdwaSkKKyAgICB7CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxi
b29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRp
Y19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOworICAgICAgICBhdXRvIGVjbWFNb2Rl
ID0gaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Cisg
ICAgICAgIHJldHVybiBpc0RpcmVjdCA/IFB1dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFN
b2RlKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKTsKKyAgICB9Cit9OwogdGVtcGxh
dGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3Rk
OjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVl
LCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxF
Piwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8
RT4sIHNpemU+OwpAQCAtMzI3LDQgKzM2NSwyOSBAQCBzdHJ1Y3QgRml0czxHZW5lcmljQm91bmRM
YWJlbDxHZW5lcmF0b3JUcmFpdHM+LCBzaXplPiA6IHB1YmxpYyBGaXRzPGludCwgc2l6ZT4gewog
ICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPEVDTUFN
b2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1c2luZyBCYXNl
ID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAgIC8vIGEgcGFpciBvZiAoUmVzdWx0VHlwZTo6
VHlwZSwgUmVzdWx0VHlwZTo6VHlwZSkgLSB0cnkgdG8gZml0IGVhY2ggdHlwZSBpbnRvIDQgYml0
cworICAgIC8vIGFkZGl0aW9uYWxseSwgZW5jb2RlIHVua25vd24gdHlwZXMgYXMgMCByYXRoZXIg
dGhhbiB0aGUgfCBvZiBhbGwgdHlwZXMKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHR5
cGVXaWR0aCA9IDQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhUeXBlID0gKDEg
PDwgdHlwZVdpZHRoKSAtIDE7CisKKyAgICBzdGF0aWMgYm9vbCBjaGVjayhFQ01BTW9kZSBlY21h
TW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpjaGVjayhlY21hTW9kZS52YWx1ZSgp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBjb252ZXJ0
KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNvbnZlcnQo
ZWNtYU1vZGUudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIEVDTUFNb2RlIGNvbnZlcnQo
dHlwZW5hbWUgQmFzZTo6VGFyZ2V0VHlwZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBFQ01BTW9kZTo6ZnJvbUJ5dGUoQmFzZTo6Y29udmVydChlY21hTW9kZSkpOworICAgIH0KK307
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcAppbmRleCAzZTNlNjVmNTljNTEzMDFlYjJmNDRiMmQy
MzFlZmNlY2E5MWVjY2YxLi43OTkxYWMyYThlNjdjODgwZWIzOGU3NjQ1ZjQ0YjI5ZGQzN2FjYWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEJyaWVm
RnVuY3Rpb25JbmZvcm1hdGlvbihQcmludFN0cmVhbSYgb3V0KSBjb25zdAogdm9pZCBJbmxpbmVD
YWxsRnJhbWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KGJyaWVmRnVuY3Rpb25JbmZvcm1hdGlvbigp
LCAiOjwiLCBSYXdQb2ludGVyKGJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKSk7Ci0gICAgaWYgKGlz
U3RyaWN0TW9kZSgpKQorICAgIGlmIChpc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICBvdXQu
cHJpbnQoIiAoU3RyaWN0TW9kZSkiKTsKICAgICBvdXQucHJpbnQoIiwgIiwgZGlyZWN0Q2FsbGVy
LmJ5dGVjb2RlSW5kZXgoKSwgIiwgIiwgc3RhdGljX2Nhc3Q8S2luZD4oa2luZCkpOwogICAgIGlm
IChpc0Nsb3N1cmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
bGluZUNhbGxGcmFtZS5oCmluZGV4IGUyOWYzODRkMWQwNjcyZmVlYTA3MTIwNWJjYWEyODFhNjQ5
YjIyMjkuLjc1ZjliYjFhODQ2OGE2MWQ3YmU5NmMzYWM5YjkxZTk1M2VhM2JmNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKQEAgLTIz
MSw3ICsyMzEsNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICBwdHJkaWZmX3QgY2Fs
bGVyRnJhbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdGFja09mZnNldCAqIHNpemVvZihSZWdp
c3RlcikgKyBDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCk7IH0KICAgICBwdHJkaWZmX3Qg
cmV0dXJuUENPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdGFja09mZnNldCAqIHNpemVvZihSZWdp
c3RlcikgKyBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCk7IH0KIAotICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
OyB9CisgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGJhc2VsaW5l
Q29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKTsgfQogCiAg
ICAgdm9pZCBkdW1wQnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKFByaW50U3RyZWFtJikgY29uc3Q7
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCmluZGV4IGM4YTRiNjBmYTU4OGIwMTdk
NzllY2YyNzBkOTdhYmI2OGEyNDgyNDkuLjY2NTAwZTYyNzZiYzQ2OTdiZTBlZWExZDg4MTQ5ZmYx
YTUwMTRkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkRmxhZ3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
RmxhZ3MuY3BwCkBAIC0zNiw4ICszNiwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlJZEZsYWdzIGZsYWdzKSB7CiAg
ICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Ci0gICAgaWYgKGZsYWdzICYgUHV0QnlJZElzRGly
ZWN0KQorICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJJc0RpcmVjdCIpOworICAgIGlmIChmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCisgICAg
ICAgIG91dC5wcmludChjb21tYSwgIlN0cmljdCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAppbmRleCA1
YzA0OTI4MTBlMWM5M2ZmNjE1M2U2NTZlZjQ0Yzc3ZTJmZjk3NDhlLi44ZWMwZGJhNmU0NGU3YTMx
MTY0Y2E5N2EzMzFmNGU3Y2Q1NzQxYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRGbGFncy5oCkBAIC0yOSwxMyArMjksMzIgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWVudW0gUHV0QnlJZEZsYWdzIDogaW50MzJfdCB7Ci0gICAgUHV0QnlJZE5vbmUgPSAw
LAorY2xhc3MgUHV0QnlJZEZsYWdzIHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1
dEJ5SWRGbGFncyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gUHV0QnlJZEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7CisgICAgfQogCi0gICAgLy8gVGhpcyBm
bGFnIGluZGljYXRlcyB0aGF0IHRoZSBwdXRfYnlfaWQgaXMgZGlyZWN0LiBUaGF0IG1lYW5zIHRo
YXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQKLSAgICAvLyBjaGVja2luZyBpZiB0aGUg
cHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KLSAgICBQdXRCeUlkSXNEaXJlY3QgPSAweDEs
Ci0gICAgUHV0QnlJZFBlcnNpc3RlbnRGbGFnc01hc2sgPSAweDEsCisgICAgLy8gQSBkaXJlY3Qg
cHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tp
bmcgaWYgdGhlCisgICAgLy8gcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KKyAgICBjb25z
dGV4cHIgc3RhdGljIFB1dEJ5SWRGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlJZEZsYWdzKHRydWUsIGVjbWFNb2RlKTsKKyAg
ICB9CisKKyAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQor
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQorCitw
cml2YXRlOgorICAgIGNvbnN0ZXhwciBQdXRCeUlkRmxhZ3MoYm9vbCBpc0RpcmVjdCwgRUNNQU1v
ZGUgZWNtYU1vZGUpCisgICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkKKyAgICAgICAgLCBt
X2VjbWFNb2RlKGVjbWFNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1faXNEaXJlY3Q7
CisgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCmluZGV4
IDJjYmNiY2FjOTIwNGQ1ZDMwN2UyY2I0ODNkM2VmMDhhM2E3MWUxNGQuLmYxZWRiMzgwN2ViMDIx
ZTQ0NDljY2Q2MTA2OWFmMmFiODYzOTA3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgUHV0QnlJZFN0
YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgQnl0ZWNvZGUKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
bik7CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0Owot
ICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpKSB7CisgICAgaWYg
KCEoYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpKSkgewogICAgICAgICBjb25kaXRpb25TZXQg
PQogICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzQ29u
Y3VycmVudGx5KAogICAgICAgICAgICAgICAgIHZtLCBwcm9maWxlZEJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSwgc3RydWN0dXJlLCB1aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTg5MWYyYTVjMjU3N2I5OWM1Mjky
MmQzZGZkZjU5NmJhMmZlNTZiZi4uNTRkYTU3ZGFiNjljYTI2MWFlZmRjZWI5MzhmZmEwZjRmZjAz
NzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCkBAIC01Nyw3ICs1Nyw2IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtl
ZENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRDb2RlQmxvY2siLCBudWxscHRyLCBudWxs
CiBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZv
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3VzZXNFdmFsKGluZm8udXNlc0V2YWwoKSkK
LSAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8uaXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2lzQ29u
c3RydWN0b3IoaW5mby5pc0NvbnN0cnVjdG9yKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFi
bGVzKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLmlzQnVpbHRpbkZ1bmN0
aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCmluZGV4IGRkMjE3YjdmZDRmZWY1NmRmOGQ4MWMzNWMyODEzM2Q1Yzg3YTFhOWMu
LjAwZGM2MTYzMzVmZDMxYjA0MzI1MWUzNDQwMGU1N2RlZjUzMTVkNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0xMjMs
NyArMTIzLDYgQEAgcHVibGljOgogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rp
b24gfTsKIAogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25z
dHJ1Y3RvcjsgfQotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0
cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZh
bDsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlTW9kZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNB
cnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQpAQCAtMzM1LDcgKzMzNCw2IEBA
IHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKIAogICAgIHVu
c2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCAyMTNhM2E4MzJkN2VhYWE5Yjk3MTBmMDFhODY0
ZGE5MzViZGQ3ZWE1Li4yZWI5ODRjMWIwNWE0NWUwYWE1MjBlMWZkMzc4YWQ5ZTJmYzkzMjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBl
ckJpbmRpbmcoKTsgfQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAgIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KLSAgICBib29sIGlz
U3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsg
fQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2
YWwoKTsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggY2Q4YmViZjhkMzY0NTQ1ZDE4MmQ3OWNiZjgwNjgwNjcxZjQxMTk3Zi4u
MGJmMzAyOGQ4MTBjNjE2ZWIwN2FkYTY2YzU3ZGE5Mjk5ZTFiYmNjZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCkBAIC03MSwxMCArNzEsMTEgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKIAogICAgIGJvb2wg
aXNDbGFzc0NvbnRleHQgPSBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRp
bmc6Ok5lZWRlZDsKIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRh
YmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1
dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250
ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxz
ZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCks
IGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVz
dWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUs
IEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJs
ZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGlu
ZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRh
YmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQs
IEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9k
ZSk7CiAKICAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0g
ZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKLSAgICBlcnJvciA9IEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0
LCBjb2RlR2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgRUNN
QU1vZGUgZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1v
ZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOworICAgIGVycm9yID0gQnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgJnBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBlY21hTW9kZSk7CiAK
ICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKaW5kZXggYTAxZDQ3ZDdkYzBiYzFiNDgwMTY1YmJjZDI2NmQxMWE2YzIzMmI0NS4u
NjI4NDFiNTY3ZDBlMWY4ODRlZWFmZTdmNjIwZWMxZTA4OTMxYzc5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKQEAgLTI5NywxNCArMjk3LDIxIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSgpCiAgICAgcmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpFcnJvck5vbmUp
OwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9n
cmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2Nr
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1O
b2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBC
eXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdl
bmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAgLCBtX3Ro
aXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9jb2Rl
VHlwZShHbG9iYWxDb2RlKQogICAgICwgbV92bSh2bSkKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMo
ZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihmYWxzZSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCisgICAg
LCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQorICAgICwgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRl
clREWihmYWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHBy
b2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgp
KQorICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAK
QEAgLTMzOCwxNCArMzQ1LDE3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAgICAgfQogfQog
Ci1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5v
ZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBC
eXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdl
bmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Ob2RlKQogICAgICwgbV9j
b2RlVHlwZShGdW5jdGlvbkNvZGUpCiAgICAgLCBtX3ZtKHZtKQorICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSBhIGZsYWcKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBt
X2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjb2Rl
QmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAs
IG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFlY21hTW9kZS5p
c1N0cmljdCgpKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBoYXZlIHRhaWwg
Y2FsbCBlbGltaW5hdGlvbiB3aXRoIHRoZSBwcm9maWxlcgogICAgIC8vIGVuYWJsZWQuIFRoaXMg
aXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSBiZWNhdXNlIHRoZSBwcm9maWxlciBleHBlY3RzCiAg
ICAgLy8gb3Bfd2lsbF9jYWxsIC8gb3BfZGlkX2NhbGwgcGFpcnMgYmVmb3JlIGFuZCBhZnRlciBh
IGNhbGwsIHdoaWNoIGFyZSBub3QKQEAgLTM1Myw4ICszNjMsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4ODE5CiAgICAgLy8KICAgICAvLyBOb3RlIHRoYXQgd2UgaW50ZW50aW9uYWxseSBlbmFibGUg
dGFpbCBjYWxsIGZvciBuYWtlZCBjb25zdHJ1Y3RvcnMgc2luY2UgaXQgZG9lcyBub3QgaGF2ZSBz
cGVjaWFsIGNvZGUgZm9yICJyZXR1cm4iLgotICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25z
Ojp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSkKKyAgICAsIG1faW5U
YWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAm
JiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgZWNtYU1vZGUu
aXNTdHJpY3QoKSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAg
ICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChmdW5jdGlvbk5vZGUtPnVz
ZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZnVuY3Rpb25Ob2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9l
Y21hTW9kZShlY21hTW9kZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+
ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9s
VGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwpAQCAtNDM3LDcgKzQ0OSw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5j
dGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAg
ICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZSk7CiAgICAgICAgIEFTU0VSVCghaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1v
ZGUpKTsKLSAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNE
eW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7
CisgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1p
Yyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICBi
b29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQgPSBjYXB0dXJlcyhmdW5jdGlvbk5vZGUtPmlkZW50
KCkuaW1wbCgpKTsKICAgICAgICAgYm9vbCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3Bl
IHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVyZWQ7CiAgICAgICAgIGVtaXRQdXNoRnVuY3Rpb25OYW1l
U2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCAmbV9jYWxsZWVSZWdpc3RlciwgbWFya0FzQ2Fw
dHVyZWQpOwpAQCAtNDg3LDcgKzQ5OSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
ICAgIG1fYXJndW1lbnRzUmVnaXN0ZXItPnJlZigpOwogICAgIH0KICAgICAKLSAgICBpZiAobmVl
ZHNBcmd1bWVudHMgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgJiYgaXNTaW1wbGVQYXJh
bWV0ZXJMaXN0KSB7CisgICAgaWYgKG5lZWRzQXJndW1lbnRzICYmICFlY21hTW9kZS5pc1N0cmlj
dCgpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewogICAgICAgICAvLyBJZiB3ZSBjYXB0dXJl
ZCBhbnkgZm9ybWFsIHBhcmFtZXRlciBieSBuYW1lLCB0aGVuIHdlIHVzZSBTY29wZWRBcmd1bWVu
dHMuIE90aGVyd2lzZSB3ZQogICAgICAgICAvLyB1c2UgRGlyZWN0QXJndW1lbnRzLiBXaXRoIFNj
b3BlZEFyZ3VtZW50cywgd2UgbGlmdCBhbGwgb2Ygb3VyIGFyZ3VtZW50cyBpbnRvIHRoZQogICAg
ICAgICAvLyBhY3RpdmF0aW9uLgpAQCAtNTE2LDcgKzUyOCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgICAgICAgICAgICAgICAgIGVudHJ5LmRpc2FibGVXYXRjaGluZyhtX3ZtKTsK
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05l
Y2Vzc2FyeSwgbmFtZSwgZW50cnkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlciwg
VUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSks
IEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0
aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3lt
Ym9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBv
ZmZzZXQub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlz
LCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBVSU5UX01BWCwgdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91
bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlv
biwgZWNtYU1vZGUpLCBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVh
bFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0pLCBvZmZzZXQub2Zmc2V0KCkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBUaGlzIGNyZWF0
ZXMgYSBzY29wZWQgYXJndW1lbnRzIG9iamVjdCBhbmQgY29waWVzIHRoZSBvdmVyZmxvdyBhcmd1
bWVudHMgaW50byB0aGUKQEAgLTU1NCwxMSArNTY2LDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxp
bmtlCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQmluZGluZ05vZGUqPihwYXJh
bWV0ZXJzLmF0KGkpLmZpcnN0KS0+Ym91bmRQcm9wZXJ0eSgpOwogICAgICAgICAgICAgZnVuY3Rp
b25TeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgbmFtZSwgU3ltYm9sVGFibGVF
bnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBPcFB1
dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgYWRkQ29u
c3RhbnQoaWRlbnQpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSAr
IGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6
OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9
KSwgb2Zmc2V0Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlz
LCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBhZGRDb25zdGFudChpZGVudCksIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhy
b3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24sIGVjbWFNb2RlKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRh
YmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0
Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAobmVlZHNBcmd1bWVu
dHMgJiYgKGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgfHwgIWlzU2ltcGxlUGFyYW1ldGVyTGlz
dCkpIHsKKyAgICBpZiAobmVlZHNBcmd1bWVudHMgJiYgKGVjbWFNb2RlLmlzU3RyaWN0KCkgfHwg
IWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkpIHsKICAgICAgICAgLy8gQWxsb2NhdGUgYSBjbG9uZWQg
YXJndW1lbnRzIG9iamVjdC4KICAgICAgICAgT3BDcmVhdGVDbG9uZWRBcmd1bWVudHM6OmVtaXQo
dGhpcywgbV9hcmd1bWVudHNSZWdpc3Rlcik7CiAgICAgfQpAQCAtNzEyLDcgKzcyNCw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dFRvVGhpcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJ
bm5lckFycm93RnVuY3Rpb25zVXNlVGhpcygpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJy
b3dGdW5jdGlvbnNVc2VFdmFsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRFbWl0
VG9UaGlzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKGZ1bmN0aW9uTm9k
ZS0+dXNlc1N1cGVyUHJvcGVydHkoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVu
Y3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpKSAmJiAhY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkg
eworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgoZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQ
cm9wZXJ0eSgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBl
clByb3BlcnR5KCkpICYmICFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBtdXN0IGVtaXQgdG9fdGhpcyB3aGVuIHdlJ3JlIG5vdCBpbiBzdHJpY3Qg
bW9kZSBiZWNhdXNlIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnZlcnQg
fHRoaXN8IHRvIGFuIG9iamVjdCwgYW5kIHRoYXQgb2JqZWN0IG1heSBiZSBwYXNzZWQKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHRvIGEgc3RyaWN0IGZ1bmN0aW9uIGFzIHx0aGlzfC4gVGhp
cyBpcyBvYnNlcnZhYmxlIGJlY2F1c2UgdGhhdApAQCAtODMzLDE1ICs4NDUsMjEgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpD
aGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQs
IG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFs
Tm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9j
ayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5p
cXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2Nr
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAg
LCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3Bl
Tm9kZShldmFsTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKEV2YWxDb2RlKQogICAgICwgbV92bSh2bSkK
LSAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAg
ICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9u
KGZhbHNlKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkg
JiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQor
ICAgICwgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWihmYWxzZSkKICAgICAsIG1fbmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigp
IHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAg
ICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkp
CiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CkBAIC04OTEsMTUgKzkw
OSwyMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFs
Tm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9z
Y29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBl
OjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rp
b25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
TW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29k
ZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2sp
LCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAg
ICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQogICAgICwgbV90aGlzUmVnaXN0ZXIo
Q2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5cGUoTW9kdWxl
Q29kZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAg
ICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24o
ZmFsc2UpCiAgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQorICAgICwgbV9pblRhaWxQ
b3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2Up
CiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChtb2R1bGVQcm9ncmFt
Tm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0V2YWwo
KSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwog
CkBAIC0yMzk1LDcgKzI0MTksNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjbwogICAgICAgICAg
ICAga2lsbChkc3QpLAogICAgICAgICAgICAgc2NvcGUsCiAgICAgICAgICAgICBhZGRDb25zdGFu
dCh2YXJpYWJsZS5pZGVudCgpKSwKLSAgICAgICAgICAgIEdldFB1dEluZm8ocmVzb2x2ZU1vZGUs
IHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExvY2FsQ2xvc3VyZVZhciA6IHJlc29sdmVU
eXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLAorICAgICAgICAg
ICAgR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgdmFyaWFibGUub2Zmc2V0KCkuaXNTY29wZSgpID8g
TG9jYWxDbG9zdXJlVmFyIDogcmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbiwgZWNtYU1vZGUoKSksCiAgICAgICAgICAgICBsb2NhbFNjb3BlRGVwdGgo
KSwKICAgICAgICAgICAgIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IHZhcmlhYmxlLm9m
ZnNldCgpLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgOiAwKTsKICAgICAgICAgcmV0dXJuIGRzdDsK
QEAgLTI0MjIsMTEgKzI0NDYsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJsZSYKICAgICAgICAg
U2NvcGVPZmZzZXQgb2Zmc2V0OwogICAgICAgICBpZiAodmFyaWFibGUub2Zmc2V0KCkuaXNTY29w
ZSgpKSB7CiAgICAgICAgICAgICBvZmZzZXQgPSB2YXJpYWJsZS5vZmZzZXQoKS5zY29wZU9mZnNl
dCgpOwotICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIExv
Y2FsQ2xvc3VyZVZhciwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgICAgIGdldFB1dElu
Zm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBMb2NhbENsb3N1cmVWYXIsIGluaXRpYWxpemF0
aW9uTW9kZSwgZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0
aCA9IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIg
eyB2YXJpYWJsZS5zeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgoKSB9KTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlVHlwZSgpICE9IExvY2FsQ2xvc3VyZVZhcik7
Ci0gICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2
ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgICAgIGdldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSgpLCBpbml0aWFsaXphdGlvbk1vZGUs
IGVjbWFNb2RlKCkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGVPclNjb3BlRGVwdGggPSBTeW1i
b2xUYWJsZU9yU2NvcGVEZXB0aDo6c2NvcGVEZXB0aChsb2NhbFNjb3BlRGVwdGgoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIHNjb3BlLCBhZGRDb25zdGFu
dCh2YXJpYWJsZS5pZGVudCgpKSwgdmFsdWUsIGdldFB1dEluZm8sIHN5bWJvbFRhYmxlT3JTY29w
ZURlcHRoLCAhIW9mZnNldCA/IG9mZnNldC5vZmZzZXQoKSA6IDApOwpAQCAtMjUwNyw3ICsyNTMx
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVy
SUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHAKIAogICAgIG1fc3RhdGljUHJvcGVydHlBbmFs
eXplci5wdXRCeUlkKGJhc2UsIHByb3BlcnR5SW5kZXgpOwogCi0gICAgT3BQdXRCeUlkOjplbWl0
KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBQdXRCeUlkTm9uZSk7IC8vIGlzIG5v
dCBkaXJlY3QKKyAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHlJbmRleCwg
dmFsdWUsIFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKCkpKTsgLy8gaXMgbm90IGRpcmVj
dAogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjUxNyw3ICsyNTQxLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHRoaXNWYWwKIAogICAgIHVuc2lnbmVkIHByb3BlcnR5SW5kZXggPSBhZGRDb25zdGFu
dChwcm9wZXJ0eSk7CiAKLSAgICBPcFB1dEJ5SWRXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0
aGlzVmFsdWUsIHByb3BlcnR5SW5kZXgsIHZhbHVlKTsKKyAgICBPcFB1dEJ5SWRXaXRoVGhpczo6
ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBlY21hTW9k
ZSgpKTsKIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTI1MzAsNyArMjU1NCw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBi
YXNlLCBjb25zdCBJZGVudGlmCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJ
ZChiYXNlLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIFB1dEJ5SWRGbGFncyB0eXBlID0gKHB1dFR5
cGUgPT0gUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCB8fCBwcm9wZXJ0eSAhPSBtX3ZtLnByb3Bl
cnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgPyBQdXRCeUlkSXNEaXJlY3QgOiBQdXRCeUlkTm9u
ZTsKKyAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBlID09IFByb3BlcnR5Tm9kZTo6S25v
d25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJv
dG8pID8gUHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUoKSkgOiBQdXRCeUlkRmxh
Z3M6OmNyZWF0ZShlY21hTW9kZSgpKTsKICAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwg
cHJvcGVydHlJbmRleCwgdmFsdWUsIHR5cGUpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTI1
OTAsNyArMjYxNCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRBc3luY0dlbmVy
YXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotICAgIE9wRGVsQnlJZDo6ZW1p
dCh0aGlzLCBkc3QsIGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgT3BEZWxCeUlk
OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgYWRkQ29uc3RhbnQocHJvcGVydHkpLCBlY21hTW9kZSgp
KTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0yNjM0LDI1ICsyNjU4LDI1IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0
QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewotICAgIE9wUHV0QnlWYWw6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZh
bHVlKTsKKyAgICBPcFB1dEJ5VmFsOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwg
ZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRo
aXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAg
IE9wUHV0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5
LCB2YWx1ZSk7CisgICAgT3BQdXRCeVZhbFdpdGhUaGlzOjplbWl0KHRoaXMsIGJhc2UsIHRoaXNW
YWx1ZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQog
ewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVl
KTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCiB7Ci0gICAgT3BEZWxCeVZhbDo6ZW1pdCh0
aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAgICBPcERlbEJ5VmFsOjplbWl0KHRoaXMsIGRz
dCwgYmFzZSwgcHJvcGVydHksIGVjbWFNb2RlKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAg
LTMyNDYsNyArMzI3MCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
bGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlYwogICAgIC8vIEVtaXQg
Y2FsbC4KICAgICBBU1NFUlQoZHN0KTsKICAgICBBU1NFUlQoZHN0ICE9IGlnbm9yZWRSZXN1bHQo
KSk7Ci0gICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCkpOwor
ICAgIGlmIGNvbnN0ZXhwciAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKQorICAgICAgICBDYWxs
T3A6OmVtaXQodGhpcywgZHN0LCBmdW5jLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCksIGNhbGxBcmd1bWVudHMuc3RhY2tPZmZzZXQoKSwgZWNtYU1vZGUoKSk7Cisg
ICAgZWxzZQorICAgICAgICBDYWxsT3A6OmVtaXQodGhpcywgZHN0LCBmdW5jLCBjYWxsQXJndW1l
bnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCksIGNhbGxBcmd1bWVudHMuc3RhY2tPZmZz
ZXQoKSk7CiAgICAgCiAgICAgaWYgKGV4cGVjdGVkRnVuY3Rpb24gIT0gTm9FeHBlY3RlZEZ1bmN0
aW9uKQogICAgICAgICBlbWl0TGFiZWwoZG9uZS5nZXQoKSk7CkBAIC0zNzg5LDcgKzM4MTYsNyBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCBSZQogICAgIHVuc2lnbmVkIG51bVZhcnMgPSBtX2NvZGVC
bG9jay0+bnVtVmFycygpOwogICAgIHB1c2hMZXhpY2FsU2NvcGVJbnRlcm5hbChuYW1lU2NvcGVF
bnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5
cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBURFpSZXF1aXJlbWVudDo6Tm90VW5kZXJURFosIFNj
b3BlVHlwZTo6RnVuY3Rpb25OYW1lU2NvcGUsIFNjb3BlUmVnaXN0ZXJUeXBlOjpWYXIpOwogICAg
IEFTU0VSVF9VTlVTRUQobnVtVmFycywgbV9jb2RlQmxvY2stPm51bVZhcnMoKSA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KG51bVZhcnMgKyAxKSk7IC8vIFNob3VsZCBoYXZlIG9ubHkgY3JlYXRlZCBvbmUg
bmV3ICJ2YXIiIGZvciB0aGUgZnVuY3Rpb24gbmFtZSBzY29wZS4KLSAgICBib29sIHNob3VsZFRy
ZWF0QXNMZXhpY2FsVmFyaWFibGUgPSBpc1N0cmljdE1vZGUoKTsKKyAgICBib29sIHNob3VsZFRy
ZWF0QXNMZXhpY2FsVmFyaWFibGUgPSBlY21hTW9kZSgpLmlzU3RyaWN0KCk7CiAgICAgVmFyaWFi
bGUgZnVuY3Rpb25WYXIgPSB2YXJpYWJsZUZvckxvY2FsRW50cnkocHJvcGVydHksIG1fbGV4aWNh
bFNjb3BlU3RhY2subGFzdCgpLm1fc3ltYm9sVGFibGUtPmdldChOb0xvY2tpbmdOZWNlc3Nhcnks
IHByb3BlcnR5LmltcGwoKSksIG1fbGV4aWNhbFNjb3BlU3RhY2subGFzdCgpLm1fc3ltYm9sVGFi
bGVDb25zdGFudEluZGV4LCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlhYmxlKTsKICAgICBlbWl0
UHV0VG9TY29wZShtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3Njb3BlLCBmdW5jdGlvblZh
ciwgY2FsbGVlLCBUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlh
bGl6YXRpb24pOwogfQpAQCAtMzk3Miw3ICszOTk5LDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoY29uc3QgVmFyaWFibGUmIHZhcmlhYmxl
KQogewogICAgIC8vIElmIHdlJ3JlIGluIHN0cmljdCBtb2RlLCB3ZSBhbHdheXMgdGhyb3cuCiAg
ICAgLy8gSWYgd2UncmUgbm90IGluIHN0cmljdCBtb2RlLCB3ZSB0aHJvdyBmb3IgImNvbnN0IiB2
YXJpYWJsZXMgYnV0IG5vdCB0aGUgZnVuY3Rpb24gY2FsbGVlLgotICAgIGlmIChpc1N0cmljdE1v
ZGUoKSB8fCB2YXJpYWJsZS5pc0NvbnN0KCkpIHsKKyAgICBpZiAoZWNtYU1vZGUoKS5pc1N0cmlj
dCgpIHx8IHZhcmlhYmxlLmlzQ29uc3QoKSkgewogICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3Io
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3ZtLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01MDU1LDcgKzUwODIsNyBAQCB2b2lk
IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OnJlY29yZCgpCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRUb1RoaXMoKQogewotICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhp
c1JlZ2lzdGVyKSk7CisgICAgT3BUb1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVnaXN0
ZXIpLCBlY21hTW9kZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggMjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJhZTc0YmFmZjU1Yi4uNzA3NTk2YTQ5Nzcy
MDFjZWU3NDFlMzJhMTc4NzM2ZDU0YTE2Mjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzgwLDEzICsz
ODAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBGaW5hbGx5Q29u
dGV4dDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEluZGV4ZWRGb3JJbkNvbnRleHQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQ7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBTdHJpY3RNb2RlU2NvcGU7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIERlY2xhcmF0
aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgQnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayos
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50Kik7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwg
RXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwotICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSos
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29k
ZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSos
IFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAg
ICAgICAgIApAQCAtNDA2LDE0ICs0MDcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0K
IAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBVbmxpbmtlZENvZGVC
bG9jaz4KLSAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSog
bm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQorICAgICAg
ICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogZW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lcygpKSkKICAg
ICAgICAgICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAg
ICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdl
bmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtl
ZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCk7CisgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4o
dm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25t
ZW50LCBlY21hTW9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJh
dG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVw
b3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKQEAgLTEwMTksNyArMTAyMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIHNob3VsZEVtaXRUeXBlUHJvZmlsZXJIb29rcygpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUdlbmVyYXRpb25Nb2RlLmNvbnRhaW5zKENvZGVHZW5lcmF0aW9u
TW9kZTo6VHlwZVByb2ZpbGVyKTsgfQogICAgICAgICBib29sIHNob3VsZEVtaXRDb250cm9sRmxv
d1Byb2ZpbGVySG9va3MoKSBjb25zdCB7IHJldHVybiBtX2NvZGVHZW5lcmF0aW9uTW9kZS5jb250
YWlucyhDb2RlR2VuZXJhdGlvbk1vZGU6OkNvbnRyb2xGbG93UHJvZmlsZXIpOyB9CiAgICAgICAg
IAotICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsgfQorICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWNtYU1vZGU7IH0KICAgICAgICAgdm9pZCBzZXRVc2VzQ2hlY2twb2ludHMoKSB7
IG1fY29kZUJsb2NrLT5zZXRIYXNDaGVja3BvaW50cygpOyB9CiAKICAgICAgICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUo
KTsgfQpAQCAtMTI5Nyw4ICsxMjk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
bV9pc0J1aWx0aW5GdW5jdGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV91c2VzTm9uU3Ry
aWN0RXZhbCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9pblRhaWxQb3NpdGlvbiB7IGZhbHNl
IH07Ci0gICAgICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7CiAg
ICAgICAgIGJvb2wgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWiB7IGZhbHNlIH07CisgICAg
ICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAxOworICAgICAg
ICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJp
dmVkQ29udGV4dFR5cGUgeyBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUgfTsKIAogICAgICAgICBD
b21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaOwpAQCAt
MTMxMiw2ICsxMzE0LDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8Q2F0Y2hF
bnRyeT4gbV9leGNlcHRpb25IYW5kbGVyc1RvRW1pdDsKICAgICB9OwogCisgICAgY2xhc3MgU3Ry
aWN0TW9kZVNjb3BlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFN0cmljdE1vZGVTY29wZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQorICAgICAgICAgICAgOiBtX2dlbmVyYXRvcihnZW5l
cmF0b3IpCisgICAgICAgICAgICAsIG1fcHJldmlvdXNFQ01BTW9kZShnZW5lcmF0b3IubV9lY21h
TW9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgbV9nZW5lcmF0b3IubV9lY21hTW9kZSA9IEVD
TUFNb2RlOjpzdHJpY3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIH5TdHJpY3RNb2RlU2NvcGUo
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2dlbmVyYXRvci5tX2VjbWFNb2RlID0gbV9wcmV2
aW91c0VDTUFNb2RlOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBCeXRlY29k
ZUdlbmVyYXRvciYgbV9nZW5lcmF0b3I7CisgICAgICAgIEVDTUFNb2RlIG1fcHJldmlvdXNFQ01B
TW9kZTsKKyAgICB9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggNjQwYjI0OTc1NWUxMGVjZGQ5YTgzYjllMTRiMDk3YWIzOWZkMDk0Zi4uYmQzM2I4
YTBmOWJiMjIyMzY3ZDY5NDdmZjJiYjg0NDE4OTdmNzc2NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjkwMyw3ICsy
OTAzLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChnZW5l
cmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKICAgICBpZiAobV9hc3NpZ25tZW50Q29udGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6
QXNzaWdubWVudEV4cHJlc3Npb24pCkBAIC0yOTIwLDcgKzI5MjAsNyBAQCBSZWdpc3RlcklEKiBB
c3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSBy
ZXN1bHQuZ2V0KCk7CiAgICAgaWYgKCFpc1JlYWRPbmx5KSB7Ci0gICAgICAgIHJldHVyblJlc3Vs
dCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0
KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhy
b3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Fz
c2lnbm1lbnRDb250ZXh0KSk7CisgICAgICAgIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0
UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5lY21h
TW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3Vu
ZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQobV9hc3NpZ25tZW50Q29u
dGV4dCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJlc3VsdC5nZXQoKSwg
dmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KIApAQCAtMzE0MCw3ICszMTQw
LDcgQEAgUmVnaXN0ZXJJRCogRW1wdHlMZXRFeHByZXNzaW9uOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXMKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0
TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxp
emF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRv
U2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5lY21hTW9kZSgp
LmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIHZhciwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1f
aWRlbnQubGVuZ3RoKCkpOyAKICAgICB9CiAKQEAgLTMzNTAsMTMgKzMzNTAsMTMgQEAgdm9pZCBG
b3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIHByb3BlcnQKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5
RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGxvY2Fs
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUo
KS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGlmICh2
YXIuaXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlF
eGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5n
ZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93
SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5v
dEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShz
Y29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6
YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5hbWUsIHZhciwgbV9sZXhwci0+cG9zaXRpb24o
KSwgbV9sZXhwci0+cG9zaXRpb24oKSArIGlkZW50Lmxlbmd0aCgpKTsKICAgICB9OwpAQCAtMzYw
NywxMyArMzYwNywxMyBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLm1vdmUobG9jYWwsIHZhbHVlKTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQog
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVk
ZWQodmFyKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0
KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3Vu
ZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxp
emF0aW9uKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUu
Z2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJv
d0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpO
b3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHIt
PnBvc2l0aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9sZXhw
ci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewpAQCAtNDM5Nyw2ICs0Mzk3LDggQEAgdm9pZCBDbGFz
c0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgU3RyaWN0
TW9kZVNjb3BlIHN0cmljdE1vZGVTY29wZShnZW5lcmF0b3IpOworCiAgICAgaWYgKG1fbmVlZHNM
ZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIEJ5
dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIApAQCAtNDgzMSw3ICs0ODMz
LDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKSBjb24KICAgICAgICAgICAgIGdlbmVyYXRvci5saWZ0
VERaQ2hlY2tJZlBvc3NpYmxlKHZhcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCku
aXNTdHJpY3QoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVu
ZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwpAQCAtNDg0MSw3ICs0ODQzLDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKSBjb24KICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdl
dCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91
bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVu
dENvbnRleHQobV9iaW5kaW5nQ29udGV4dCkpOworICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29w
ZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlv
bk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2JpbmRpbmdDb250ZXh0KSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIGlmIChtX2JpbmRpbmdDb250ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJh
dGlvblN0YXRlbWVudCB8fCBtX2JpbmRpbmdDb250ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpD
b25zdERlY2xhcmF0aW9uU3RhdGVtZW50KQogICAgICAgICBnZW5lcmF0b3IubGlmdFREWkNoZWNr
SWZQb3NzaWJsZSh2YXIpOwpAQCAtNDg3OSw3ICs0ODgxLDcgQEAgdm9pZCBBc3NpZ25tZW50RWxl
bWVudE5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKgogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlmIChnZW5lcmF0b3Iu
ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFy
LCBudWxscHRyLCBzY29wZS5nZXQoKSk7CkBAIC00ODkwLDcgKzQ4OTIsNyBAQCB2b2lkIEFzc2ln
bm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqCiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBpZiAo
IWlzUmVhZE9ubHkpIHsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29w
ZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5v
dEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24pOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3Bl
LmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhy
b3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6
Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlw
ZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChtX2Fzc2lnbm1lbnRUYXJnZXQtPmlzRG90QWNjZXNzb3JOb2RlKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
Y3BwCmluZGV4IDM5Y2JmODJlMjExMzIwNWI1NmYzYTdkNjg3NjM1ZjBjM2U3MGYxN2EuLmY0NWUw
MWQwNjcxOTMwNzYyZmMwNzA4NTUwZjNlNDdiY2EzYzRiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjEyLDkg
KzIxMiw5IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYgdm0pIGNv
bnN0CiAgICAgaWYgKCF0aGlzVmFsdWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBOb3RTdHJpY3RNb2RlOwotICAgIGlmIChjb2RlQmxv
Y2sgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgZWNtYU1vZGUgPSBTdHJp
Y3RNb2RlOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnNsb3BweSgpOworICAg
IGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmlj
dENvbnRleHQoKSkKKyAgICAgICAgZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7CiAgICAg
cmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIApAQCAtMjUzLDcgKzI1Myw4IEBAIEpTVmFsdWUg
RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBKU09iCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclRE
WjsKICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCkt
PmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgYXV0byogZXZhbCA9IERpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwg
Y2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUo
KSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24o
KSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOworICAgIEVDTUFNb2RlIGVj
bWFNb2RlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQo
KSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBhdXRvKiBl
dmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3Vy
Y2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9j
ay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5
cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOwogICAgIGlmIChVTkxJS0VMWShjYXRj
aFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4
Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggOTUzZmJhZWY0OGYzYTU1NGQ0NTliZDlhMmIzZDZlNjNkYWE3Y2FjNy4u
MGRlOGNlZmE3YmNmZmUzNGVhYzQ1Zjk3OTZiZWUzZDc5OTU5MzViNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMTg2LDEwICsxODYsMTAgQEAgZW51bSBjbGFzcyBUb1RoaXNSZXN1bHQgewogICAg
IEdsb2JhbFRoaXMsCiAgICAgRHluYW1pYywKIH07Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9U
aGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJiB2
YWx1ZUZvck5vZGUpCitpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYg
dm0sIEVDTUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCiB7CiAg
ICAgLy8gV2UgbG9vayBhdCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9z
dCBjYXNlcyBhbmQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVz
LgotICAgIGlmIChpc1N0cmljdE1vZGUpIHsKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkg
ewogICAgICAgICBpZiAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5
cGUgJiBTcGVjT2JqZWN0T3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6
SWRlbnRpdHk7CiAgICAgfSBlbHNlIHsKQEAgLTIwMywyMCArMjAzLDIwIEBAIGlubGluZSBUb1Ro
aXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFi
c3RyYWN0VmFsdWUmCiAgICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9kID09ICZKU09iamVjdDo6
dG9UaGlzKQogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5Owog
ICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNTY29wZTo6dG9UaGlzKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgICAgICBpZiAoZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6
VW5kZWZpbmVkOwogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRo
aXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoKGlzU3RyaWN0
TW9kZSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+
U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewor
ICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAh
KHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9z
dHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICBib29sIGFsbFN0cnVjdHVyZXNBcmVKU1Nj
b3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7CiAgICAgICAgIGJvb2wg
b3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVy
ZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAg
ICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKICAgICAgICAgICAgIEFT
U0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBl
LnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOwotICAg
ICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCisgICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlz
U3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAg
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBo
ZXJlIHNpbmNlIGVpdGhlcjoKICAgICAgICAgICAgIC8vIDEpIFdlIGFyZSBpbiBzdHJpY3QgbW9k
ZSBhbmQgc3RyaW5ncy9zeW1ib2xzIGFyZSBub3Qgd3JhcHBlZApAQCAtMjMwLDcgKzIzMCw3IEBA
IGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0
cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGlmICghb3ZlcnJpZGVzVG9UaGlzKQog
ICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgICAgIGlmIChh
bGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkK
KyAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKICAgICAgICAgICAgIHJldHVybiBUb1RoaXNS
ZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgIH0KQEAgLTI3MzAsOSArMjczMCw5IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RW
YWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsKLSAgICAgICAgYm9vbCBzdHJpY3RN
b2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAg
ICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogCi0gICAgICAgIFRv
VGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV92bSwgc3RyaWN0TW9kZSwg
c291cmNlKTsKKyAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0
eShtX3ZtLCBlY21hTW9kZSwgc291cmNlKTsKICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAg
ICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgogICAgICAgICAgICAgbV9zdGF0ZS5z
ZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7CkBAIC0yNzQ2LDcgKzI3NDYsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgZGVzdGluYXRpb24uc2V0VHlwZSht
X2dyYXBoLCBTcGVjT2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRv
VGhpc1Jlc3VsdDo6RHluYW1pYzoKLSAgICAgICAgICAgIGlmIChzdHJpY3RNb2RlKQorICAgICAg
ICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b24ubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGRl
c3RpbmF0aW9uID0gc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAppbmRleCA5OTYxZDkwMzJkNjgwZDg1MzQ2NTk4ZGU2YTJiOGZhY2Q3
MzQyN2JkLi4wMmM5MGQ0MGNmNzFlZGQ2OWQ5YTRiZTIxYTE5NjJjOWZlMTNlZjVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjQ1
LDEwICsyNDUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2Us
IENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3Rh
dHVzLCBBY2Nlc3NUeXBlLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpOwogICAgIHZvaWQgZW1p
dFB1dEJ5SWQoCi0gICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUq
IHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJlY3QpOworICAgICAgICBO
b2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5
SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CiAgICAgdm9pZCBoYW5kbGVQdXRC
eUlkKAogICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCi0gICAg
ICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGludHJ1Y3Rpb25TaXplKTsKKyAgICAgICAgYm9v
bCBpc0RpcmVjdCwgdW5zaWduZWQgaW50cnVjdGlvblNpemUsIEVDTUFNb2RlKTsKICAgICAKICAg
ICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBjaGVjayBmb3IgdGhp
cyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29uZGl0aW9uIG5vIGxv
bmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNrIGNhbiBiZSBlbWl0
dGVkLgpAQCAtODQ2LDE4ICs4NDYsMTggQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9k
ZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3As
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFy
Z0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3Vu
dCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBpZiAo
YWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwg
YXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0Nv
dW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOwogICAgICAgICAgICAgb3AgPSBUYWlsQ2Fs
bElubGluZWRDYWxsZXI7CiAgICAgICAgIH0KIAogCiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRD
YWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgT3BJbmZvKHNpZ25hdHVy
ZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikp
OworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZz
ZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaXNWYWxpZCgpKQog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgY2FsbCk7CiAgICAgICAgIHJldHVybiBjYWxsOwpAQCAt
MTM0NCw3ICsxMzQ0LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDYWxsKAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIE5vZGUqIGNhbGxO
b2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIE5vZGUq
IGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAg
ICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxWYXJhcmdzICYmIGNhbGxOb2RlLT5v
cCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgIHJldHVybiBjYWxsTm9kZS0+b3Ao
KSA9PSBUYWlsQ2FsbCA/IFRlcm1pbmFsIDogTm9uVGVybWluYWw7CiB9CkBAIC0yMTgyLDcgKzIx
ODIsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERp
cmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgewogICAgICAgICBh
ZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0LCBjYWxsT3AsIG51bGxwdHIsIG15Q2FsbFRhcmdl
dE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAgICAgcmVzdWx0LCBj
YWxsT3AsIE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICAgICAg
VkVSQk9TRV9MT0coIldlIGFkZGVkIGEgY2FsbCBpbiB0aGUgc2xvdyBwYXRoXG4iKTsKICAgICB9
IGVsc2UgewpAQCAtMzY1Niw3ICszNjU2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
RE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gSlNDX0RP
TUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUywgIkN1cnJlbnRseSBD
YWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBhcmd1bWVudHMuIik7
CiAKICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICBhZGRDYWxsKHJlc3VsdCwgQ2FsbCwgc2lnbmF0
dXJlLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOworICAgIGFkZENhbGwocmVzdWx0LCBDYWxsLCBPcEluZm8oc2lnbmF0
dXJlKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zm
c2V0LCBwcmVkaWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDYxNSwyMiArNDYx
NSwyMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogfQogCiB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKLSAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRC
eUlkU3RhdHVzLCBib29sIGlzRGlyZWN0KQorICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5
SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIGlmIChp
c0RpcmVjdCkKLSAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkRGlyZWN0LCBPcEluZm8oaWRlbnRp
ZmllciksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkRGlyZWN0LCBP
cEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKICAgICBl
bHNlCi0gICAgICAgIGFkZFRvR3JhcGgocHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkgPyBQdXRC
eUlkRmx1c2ggOiBQdXRCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UsIHZhbHVlKTsKKyAg
ICAgICAgYWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IFB1dEJ5SWRGbHVz
aCA6IFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwg
dmFsdWUpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIE5v
ZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgTm9kZSogdmFsdWUsCi0gICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJ
ZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQorICAgIGNv
bnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVk
IGluc3RydWN0aW9uU2l6ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYgKCFwdXRCeUlk
U3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0
aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMu
aXNTZXQoKSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKLSAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5
SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCkBAIC00NjM4LDcgKzQ2MzgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwgcHV0QnlJZFN0YXR1
cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMo
KSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7Ci0g
ICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0
YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NjQ3LDcgKzQ2NDcsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAgICAgICAgIGlmIChwdXRC
eUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0
aW9uKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAo
IWNoZWNrKHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25kaXRpb25TZXQoKSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1
dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQo
YmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9k
ZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CkBAIC00NjkwLDcgKzQ2OTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeUlkKAogCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyht
X2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwog
ICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAg
ICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNE
aXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUs
IHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNDc1Nyw3ICs0NzU3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKIAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQoU3BlY0Nl
bGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgICAgIGlmICgh
bG9hZGVkVmFsdWUpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFN
b2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ4MDEs
NyArNDgwMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQog
ICAgIAogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQo
YmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9k
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IH0KIH0KQEAgLTQ5NzMsNyArNDk3Myw4IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBn
ZXRUaGlzKCk7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOworICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgICAg
ICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hlZFN0
cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBudWxs
cHRyOwogICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQpAQCAtNDk4NCw3ICs0OTg1
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmNvdWxk
VGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAgICAgICAgIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKQogICAgICAgICAgICAgICAgIHx8IChvcDEtPm9wKCkgPT0gR2V0TG9jYWwgJiYgb3AxLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgpKSkgewot
ICAgICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChUb1RoaXMsIE9wSW5mbygpLCBPcElu
Zm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CisgICAgICAgICAgICAgICAgc2V0VGhpcyhhZGRU
b0dyYXBoKFRvVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBPcEluZm8oZ2V0UHJl
ZGljdGlvbigpKSwgb3AxKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIENoZWNrU3RydWN0dXJlLApAQCAtNTgy
NCw3ICs1ODI1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHRoaXNWYWx1ZSk7CiAgICAgICAgICAg
ICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCh2
YWx1ZSk7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgUHV0QnlWYWxXaXRo
VGhpcywgT3BJbmZvKDApLCBPcEluZm8oMCkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2Rl
OjpWYXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwg
T3BJbmZvKDApKTsKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRo
X3RoaXMpOwogICAgICAgICB9CkBAIC01ODk0LDE0ICs1ODk1LDE0IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUubV9w
cm9wZXJ0eV07CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5p
ZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotICAgICAgICAgICAgYm9vbCBkaXJlY3Qg
PSAhIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KTsKKyAgICAgICAgICAgIGJv
b2wgZGlyZWN0ID0gYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpOwogCiAgICAgICAgICAgICBQ
dXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKICAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0
YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1fZ3JhcGguaWRlbnRp
ZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGhh
bmRsZVB1dEJ5SWQoYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlk
KSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGRpcmVjdCwgY3VycmVu
dEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpLCBpZGVudGlmaWVyTnVtYmVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUo
KSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX3B1dF9ieV9pZCk7CiAgICAgICAgIH0KIApAQCAtNTkxMiw4ICs1OTEzLDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5v
ZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5
dGVjb2RlLm1fcHJvcGVydHldOwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKLQotICAgICAgICAgICAg
YWRkVG9HcmFwaChQdXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCB1aWQpKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAgICAgICAg
ICBhZGRUb0dyYXBoKFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIGJhc2Us
IHRoaXNWYWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X2lk
X3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIApAQCAtNTk0OCw3ICs1OTQ4LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29k
ZS5tX3Byb3BlcnR5XTsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07Ci0gICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBiYXNlKSk7CisgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSks
IGJhc2UpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV9pZCk7CiAgICAgICAg
IH0KIApAQCAtNTk1Niw3ICs1OTU2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0
KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAgICAgICBOb2RlKiBrZXkgPSBnZXQoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgo
RGVsZXRlQnlWYWwsIGJhc2UsIGtleSkpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0
LCBhZGRUb0dyYXBoKERlbGV0ZUJ5VmFsLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIGJh
c2UsIGtleSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X3ZhbCk7CiAgICAg
ICAgIH0KIApAQCAtNjQ3OSw3ICs2NDc5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKICAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2FsbEV2YWw+
KCk7CiAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtYnl0ZWNvZGUubV9hcmd2Owot
ICAgICAgICAgICAgYWRkQ2FsbChieXRlY29kZS5tX2RzdCwgQ2FsbEV2YWwsIG51bGxwdHIsIGdl
dChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJnYywgcmVnaXN0ZXJPZmZzZXQsIGdl
dFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBhZGRDYWxsKGJ5dGVjb2RlLm1fZHN0LCBDYWxs
RXZhbCwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUp
LCBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC02ODI4LDcgKzY4MjgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgaWYgKG5lZWRzRHluYW1pY0xvb2t1cChyZXNv
bHZlVHlwZSwgb3BfcHV0X3RvX3Njb3BlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpZGVu
dGlmaWVyTnVtYmVyICE9IFVJTlRfTUFYKTsKICAgICAgICAgICAgICAgICB1aW50NjRfdCBvcElu
Zm8xID0gbWFrZUR5bmFtaWNWYXJPcEluZm8oaWRlbnRpZmllck51bWJlciwgZ2V0UHV0SW5mby5v
cGVyYW5kKCkpOwotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0RHluYW1pY1ZhciwgT3BJ
bmZvKG9wSW5mbzEpLCBPcEluZm8oKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNv
ZGUubV92YWx1ZSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0RHluYW1pY1Zhciwg
T3BJbmZvKG9wSW5mbzEpLCBPcEluZm8oZ2V0UHV0SW5mby5lY21hTW9kZSgpKSwgZ2V0KGJ5dGVj
b2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkpOwogICAgICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3B1dF90b19zY29wZSk7CiAgICAgICAgICAgICB9CiAKQEAgLTY4NTAsNyAr
Njg1MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEKICAgICAgICAg
ICAgICAgICAgICAgfHwgc3RhdHVzWzBdLmtpbmQoKSAhPSBQdXRCeUlkVmFyaWFudDo6UmVwbGFj
ZQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNbMF0uc3RydWN0dXJlKCkuc2l6ZSgpICE9
IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkLCBPcEluZm8oQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSksIGdldChieXRlY29kZS5tX3Nj
b3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQdXRCeUlkLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywg
dWlkKSksIE9wSW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSksIGdldChieXRl
Y29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIE5vZGUqIGJhc2Ug
PSB3ZWFrSlNDb25zdGFudChnbG9iYWxPYmplY3QpOwpAQCAtNzQ5Niw4ICs3NDk2LDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICIgZm9y
IGlubGluaW5nIGF0ICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpERkdKSVQpLAogICAgICAgICAgICAgICAgICIgIiwgaW5saW5lQ2FsbEZyYW1lKCktPmRpcmVj
dENhbGxlcik7CiAgICAgICAgIH0KLSAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICIsIGlz
U3RyaWN0TW9kZSA9ICIsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9k
ZSgpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuKCk7CiAgICAgICAgIGNvZGVCbG9jay0+YmFz
ZWxpbmVWZXJzaW9uKCktPmR1bXBCeXRlY29kZSgpOwogICAgIH0KICAgICAKQEAgLTc2MDQsNyAr
NzYwMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5
dGVjb2RlLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCwgaW5zdHJ1Y3Rpb25TaXplKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRl
bnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
LCBpbnN0cnVjdGlvblNpemUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAgIH0KIAogICAgIGlm
ICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKQEAgLTc2MTUsNyArNzYxNCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCB1bnNpZ25lZCBpbnN0
cnVjdGlvblNpemUpCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRk
VmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAgICAg
IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0
QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oMCkpOworICAgICAgICBh
ZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5
VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpKTsKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0QnlWYWwgYW5kIFB1dEJ5VmFs
RGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2JiZXIgZXhpdCBzdGF0ZSwgc2lu
Y2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApp
bmRleCA2NTA1M2NlYjVlMDg3YTBjZDRhMzE0ODBhZmRlOGQ2NTE4MWVkMTQzLi5lNzgwMWY4MjFj
MTNmNTFkZjg5YmIzZmM1MTZhODNlNTZmNTM2OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNzQ0LDcgKzc0
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNhc2UgVG9UaGlz
OiB7Ci0gICAgICAgICAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVu
dGl0eShtX2dyYXBoLm1fdm0sIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpOworICAgICAgICAgICAg
ICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3Zt
LCBub2RlLT5lY21hTW9kZSgpLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHkpIHsKICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAppbmRleCA3OWE5YzRmYWI1MGU2YzY2NTVhNDZkNGM5YTFmOThiZWYzYzc4
ZjM3Li40ZmNiY2ZjM2RiMTliOTVkMmE4ZDRmMzk5ODRmMWE5M2E4MmMyZWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI4MzEsNyArMjgzMSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpeHVwVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgewot
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpOwogCiAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggOTQ3ZWZhYWJhOWU2NDk2YjNiMDVj
NmY1NTE0MmFiN2M3N2I1YjVhMi4uMTY2NmQ3NTM4N2RiYzU1NDAyYzlmN2JlMDM2MTE3NWJjNzVj
ODIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNDQxLDcgKzQ0MSw3
IEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogZ2xvYmFsVGhpc09iamVjdEZvcihDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogb2JqZWN0ID0gZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwotICAgICAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0
Kj4ob2JqZWN0LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlzKG9iamVjdCwgb2JqZWN0LCBOb3RT
dHJpY3RNb2RlKSk7CisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1l
dGhvZFRhYmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBvYmplY3QsIEVDTUFNb2RlOjpzbG9wcHko
KSkpOwogICAgIH0KICAgICAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQpAQCAtNDY5LDE4ICs0NjksNiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5l
Q29kZUJsb2NrKGNvZGVPcmlnaW4sIG1fcHJvZmlsZWRCbG9jayk7CiAgICAgfQogICAgIAotICAg
IGJvb2wgaXNTdHJpY3RNb2RlRm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAg
ICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVy
biBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgICAgIHJldHVybiBjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSgpLT5pc1N0cmljdE1vZGUoKTsKLSAgICB9Ci0gICAgCi0gICAgRUNN
QU1vZGUgZWNtYU1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGlzU3RyaWN0TW9kZUZvcihjb2RlT3JpZ2luKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJp
Y3RNb2RlOwotICAgIH0KLSAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50SXNTdGlsbFZhbGlkKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgewog
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pLT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5pc1N0aWxsVmFsaWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKaW5kZXggYmM3Y2ZiMTJkMGE4ZTJkMzJlMjcyOTdmNzQ4YTY1NWUzNTE3MjY3
Ni4uMjk1ZmM4Y2I2NjA1OGY4NzkyMTczY2IyOTlkM2I5OWJlYTQ0NWEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTIyMDQsNiArMjIwNCw1MyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fb3BJbmZvID0gYXJyYXlNb2RlLmFzV29yZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CisKKyAgICBib29sIGhhc0VDTUFNb2RlKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
b3AoKSkgeworICAgICAgICBjYXNlIENhbGxFdmFsOgorICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6
CisgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CisgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAg
ICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKKyAgICAg
ICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKKyAgICAg
ICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6Cisg
ICAgICAgIGNhc2UgVG9UaGlzOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBFQ01BTW9kZSBlY21hTW9kZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzRUNNQU1vZGUo
KSk7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIENhbGxFdmFsOgorICAg
ICAgICBjYXNlIERlbGV0ZUJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6Cisg
ICAgICAgIGNhc2UgVG9UaGlzOgorICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0
ZShtX29wSW5mby5hczx1aW50OF90PigpKTsKKyAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAg
ICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAg
Y2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAg
ICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CisgICAgICAgIGNh
c2UgUHV0QnlWYWxEaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKKyAgICAgICAg
ICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8yLmFzPHVpbnQ4X3Q+KCkpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6c3RyaWN0KCk7CisgICAgICAgIH0KKyAg
ICB9CiAgICAgCiAgICAgYm9vbCBoYXNBcml0aE1vZGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oCmluZGV4IDQ1ZTdhYzNkYjU4ZjY1Yjc4YWI2MDJlNzhlNGEzMWM0
NDU4M2M5YzcuLjBlNGMzMWJmMGQ3ZTU4NThiYmRiNzQ0MjMwYTYzNjdjNGZhMGI2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaApAQCAtNDcsNiArNDcsNyBAQCBzdHJ1Y3Qg
T3BJbmZvIHsKICAgICBleHBsaWNpdCBPcEluZm8oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oc3RydWN0dXJlKSkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhPcGVyYW5kIG9wKSA6IG1f
dmFsdWUob3AuYXNCaXRzKCkpIHsgfQogICAgIGV4cGxpY2l0IE9wSW5mbyhDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oaWRlbnRp
Zmllci5yYXdCaXRzKCkpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oRUNNQU1vZGUgZWNtYU1v
ZGUpIDogbV92YWx1ZShlY21hTW9kZS52YWx1ZSgpKSB7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICAgIGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBmMGFkZDlhZTU2MDBmZWVlYTkwNDYxYmNi
OWYxOGVkNDI2NTVjNzZkLi5jN2UzOWYyNmI0MjdmMzIwZWEzZWVmNDM0NWQyYWIzYzRjZDgzODU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTI5
OCw3ICsyOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhp
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHko
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0
cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3ApCkBAIC0zMDcsNyArMzA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Ub1RoaXNTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpKTsKIH0KIAogSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RL
ZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
YmplY3QpCkBAIC0zNDE0LDcgKzM0MTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmlj
dCgpKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDM2MTgxYTI4
MjEzMzllODhiNjYzYzY1ODcxYzBkYTNjYzQ0ZGU4YTIuLmJhYTIxYzBiYmZhMmFjZmJhNTBkNWE4
Zjk5MzJkMzE0ZGI1NDQ5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0yMzksNyArMjM5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAvLyBBbGwg
b2YgdGhlIG91dGVybW9zdCBhcmd1bWVudHMsIGV4Y2VwdCB0aGlzLCBhcmUgcmVhZCBpbiBzbG9w
cHkgbW9kZS4KLSAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX2NvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX2NvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspCiAg
ICAgICAgICAgICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoaSkpOwogICAgICAgICAgICAgfQpAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVhZCBhbGwgb2YgdGhlIGlubGluZSBhcmd1bWVu
dHMgYW5kIGNhbGwgZnJhbWUgaGVhZGVycyB0aGF0IHdlIGRpZG4ndCBhbHJlYWR5IGNhcHR1cmUu
CiAgICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7IGlubGluZUNhbGxGcmFtZTsg
aW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJJbmxpbmVGcmFtZVNr
aXBwaW5nVGFpbENhbGxzKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFt
ZS0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFt
ZS0+aXNJblN0cmljdENvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCk7IGktLTsp
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoaSkub2Zmc2V0KCkpKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDI4ODg1OGIzOGMxNmE2NWE4YzhlYmRiOWQ0MzcwMTI4MzQ3MmE1MGEuLmEwN2Ji
ZjQ2NjE3M2EwYzNiMjU5Y2Y1NjRjNzhhMjZjMThjYmMzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCkBAIC01MDYsNyArNTA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIFRvVGhpczogewogICAgICAgICAgICAgLy8gVG9UaGlzIGluIG1ldGhvZHMgZm9yIHByaW1p
dGl2ZSB0eXBlcyBzaG91bGQgc3BlY3VsYXRlIHByaW1pdGl2ZSB0eXBlcyBpbiBzdHJpY3QgbW9k
ZS4KLSAgICAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgICAgICAgICAgaWYgKGlzU3RyaWN0
TW9kZSkgewogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlQm9vbGVhbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNCb29sZWFuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZDM4Y2ZkZjJhZTI4NDllMTM5N2IwZGVjOTFmOWZjMDM5
Y2Y5YzNjYy4uZmE3ZjQ2NGUyYTBmNGMzY2UzZjJhMTYxNzY5NWMyZWFjNDczMDYxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIx
MTksNyArMjExOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZh
bChOb2RlKiBub2RlLCBTcGVjdWxhdGVDZWxsT3BlcmFuZCYgYmFzCiAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
IHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3Ry
aWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKICAg
ICAgICAgICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVy
YXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAg
ICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHBy
b3BlcnR5UmVnLCB2YWx1ZVJlZykpOwpAQCAtMzE1MCwyNCArMzE1MCwyNCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydAogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkg
ewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNT
dHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbERp
cmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LAorICAgICAgICAg
ICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsCiAgICAgICAgICAg
ICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBwcm9wZXJ0
eSwgdmFsdWVHUFIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0
aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5v
blN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LAogICAg
ICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZSwg
cHJvcGVydHksIHZhbHVlR1BSKSk7CiAgICAgICAgIH0KICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewogICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2Rl
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxT
dHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3QsCisgICAgICAgICAg
ICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJl
Y3RDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsTm9uU3RyaWN0LAogICAg
ICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZSwg
SlNWYWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5KSwgSlNWYWx1ZVJlZ3ModmFsdWVU
YWdHUFIsIHZhbHVlR1BSKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fz
ZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbENlbGxOb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxDZWxsTm9uU3RyaWN0LAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5
KSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlR1BSKSkpOwogICAgICAgICB9CiAjZW5k
aWYKQEAgLTMyOTksNyArMzI5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbEZvckNlbGxXaXRoU3RyaW5nKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwKICAgICBzcGVj
dWxhdGVTdHJpbmcoY2hpbGQyLCBhcmcyR1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN0cmluZ05vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFH
UFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1N0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0zMzE4LDcgKzMzMTgsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5bWJvbChOb2RlKiBub2Rl
LCBFZGdlJiBjaGlsZDEsCiAgICAgc3BlY3VsYXRlU3ltYm9sKGNoaWxkMiwgYXJnMkdQUik7CiAK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RN
b2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1i
b2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJpY3QsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7CisgICAgY2Fs
bE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZh
bENlbGxTeW1ib2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJpY3Qs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7
CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAt
MTEzMjksNyArMTEzMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1p
Y1ZhcihOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFs
dWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obV9q
aXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRE
eW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQo
bm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFt
aWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2Rl
LT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjIxNSw3ICsxMjIx
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2goTm9kZSogbm9k
ZSkKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
R1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
Tm90RGlyZWN0LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21h
TW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwogCiAgICAgbm9SZXN1
bHQobm9kZSk7CiB9CkBAIC0xMjIzMCw3ICsxMjIzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0g
dmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3By
KCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwg
dmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERp
cmVjdCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3RE
aXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0x
MjI0NSw3ICsxMjI0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGly
ZWN0KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1
ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBj
YWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIERpcmVjdCk7CisgICAgY2Fj
aGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2Ny
YXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBEaXJlY3QsIG5vZGUtPmVjbWFN
b2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMjI2MCw3ICsxMjI2MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoTm9kZSogbm9kZSkK
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogCiAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAorICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlJZFdpdGhUaGlzLAogICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZ3MsIHRoaXNSZWdzLCB2YWx1ZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTEyNjI5
LDcgKzEyNjI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvVGhpcyhOb2RlKiBu
b2RlKQogICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3ModGhpc1ZhbHVlUmVncywgdGVtcFJlZ3MpOwog
CiAgICAgSl9KSVRPcGVyYXRpb25fR0ogZnVuY3Rpb247Ci0gICAgaWYgKG1faml0LmlzU3RyaWN0
TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgIGlmIChub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkpCiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0Owog
ICAgIGVsc2UKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7CkBAIC0xMzgyOCw3
ICsxMzgyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2Rl
KiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFs
dWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRh
cmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkK
IHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CkBAIC0xMzg0MCw3ICsxMzg0MCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIG1faml0LmVjbWFNb2RlRm9y
KGNvZGVPcmlnaW4pLCBwdXRLaW5kKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1
dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMjMwNjFlNTNjMTUz
YjBhMTE1ZTdlMTdhMDIzMGZlYjY5OTJmOWVmMy4uMTBlYmI5YmYxYjI5OGIyYTcyYjU1M2Q0ZmQ2
ZjhjN2I4NThkZDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaApAQCAtNzE3LDcgKzcxNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVD
aGVja05ldXRlcmVkKE5vZGUqKTsKIAogICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2lu
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUs
IEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQg
PSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7
CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBK
SVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAg
ICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMTMzMjE1NWUxMjgy
ZTUxM2I3ZTFjYzQzOGEyYmJmODRlNWZjNjVmNi4uYWViZDQ1NWQwNTBlM2Q0MzgwMGUzYzFlODYz
NjVjZWMzYzY4YjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC03NjAsNyArNzYwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAg
ICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJ
bW0zMihyZXF1aXJlZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwp
PihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJ
bmZvOjpyZWdUMCk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVn
VDEpOwogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CiAgICAgICAgIG1faml0LmFw
cGVuZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwpAQCAtMjcyNSw5ICsyNzI2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIGFyZzNHUFIgPSBhcmczLmdwcigpOwogICAg
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0KQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNT
dHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbERp
cmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAgICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5p
c1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAgICAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUp
OwpAQCAtMjgwOSw3ICsyODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc091dE9mQm91bmRzKCkpIHsKICAg
ICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5p
c1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAg
ICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8g
KG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJl
eW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5k
c1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0QnlW
YWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAg
ICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0yODkzLDcgKzI4OTQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBpZiAoIXNs
b3dDYXNlcy5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsCi0gICAg
ICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAg
ICAgICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICAgICAg
OiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5
Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKQEAg
LTM4OTcsNyArMzg5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1
dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwg
dmFsdWVHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwpAQCAtNTQ2NSw3ICs1NDY2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAg
ICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRy
dXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKIAogICAgICAgICBtX2ppdC5h
ZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC01NDg0LDcgKzU0ODUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1v
ZGUoKS52YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVuYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTU1MjMsNyArNTUyNCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKIAogICAgICAgICBtX2ppdC5hZGREZWxCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtNTU0Myw3
ICs1NTQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUq
IG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5UmVncywgVHJ1
c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
MzQ5OGY5MTIxNGFiN2IxNGFhMmUxZTJlOWJlYjhmOTgzZmUyMjgwOC4uMjQ1YjZhMWVmNDQ4ZmVj
ODY2NjRhM2M0YmZlNmY2ZTRlNDgyNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjEyMCw3ICsyMTIwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwog
ICAgICAgICBKX0pJVE9wZXJhdGlvbl9HSiBmdW5jdGlvbjsKLSAgICAgICAgaWYgKG1fZ3JhcGgu
aXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgaWYgKG1f
bm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVy
YXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9uID0g
b3BlcmF0aW9uVG9UaGlzOwpAQCAtMzY4Miw3ICszNjgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
TFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CiAKLSAgICAgICAg
dm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRX
aXRoVGhpcywKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdp
dGhUaGlzLAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhp
c1ZhbHVlLCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpKSk7CiAgICAgfQogCkBAIC0zNjk0LDcgKzM2OTQsNyBAQCBwcml2YXRl
OgogICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAyKSk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsKIAotICAgICAgICB2bUNhbGwoVm9pZCwgbV9ncmFw
aC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0
QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsCisgICAgICAg
IHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1
dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLAogICAgICAg
ICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0
eSwgdmFsdWUpOwogICAgIH0KICAgICAKQEAgLTM5NjcsNyArMzk2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAK
ICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Ci0gICAgICAgIEVDTUFNb2RlIGVj
bWFNb2RlID0gbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmVj
bWFNb2RlKCk7CisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKTsK
ICAgICAgICAgCiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAg
IFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CkBAIC00ODI1LDEyICs0ODI1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgVl9KSVRPcGVyYXRpb25fR0NDSiBvcGVyYXRpb24gPSBudWxscHRyOwogICAgICAgICAgICAg
ICAgIGlmIChjaGlsZDIudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ1N0cmljdDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdENlbGxTdHJpbmdOb25TdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1v
ZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1N0cmljdDsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25TdHJpY3Q7CkBAIC00ODQx
LDEyICs0ODQxLDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQyLnVz
ZUtpbmQoKSA9PSBTeW1ib2xVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+
b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVj
dENlbGxTeW1ib2xTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RD
ZWxsU3ltYm9sTm9uU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24g
PSBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0OwpAQCAtNDg1OCwxMiArNDg1OCwxMiBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICBWX0pJVE9wZXJhdGlvbl9HSkpKIG9wZXJhdGlvbjsKICAg
ICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpKQorICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkK
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RT
dHJpY3Q7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRp
b24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdDsKICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1
dEJ5VmFsU3RyaWN0OwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3Q7CkBAIC00OTA5LDcgKzQ5MDks
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBjb250aWd1b3VzUHV0QnlWYWxPdXRPZkJvdW5kcygKLSAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpCisg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICA/IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0
QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDog
KG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5
Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3RvcmFnZSwgaW5k
ZXgsIHZhbHVlLCBjb250aW51YXRpb24pOwpAQCAtNDkzNSw3ICs0OTM1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29u
dGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
aXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAg
ICAgICBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91Ymxl
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5
VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6ICht
X25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERp
cmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxC
ZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN0
b3JhZ2UsIGluZGV4LCB2YWx1ZSwgY29udGludWF0aW9uKTsKQEAgLTQ5NzUsNyArNDk3NSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kcyA9IG1fb3V0LmFib3Zl
T3JFcXVhbCgKICAgICAgICAgICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUo
c3RvcmFnZSwgbV9oZWFwcy5BcnJheVN0b3JhZ2VfdmVjdG9yTGVuZ3RoKSk7CiAKLSAgICAgICAg
ICAgIGF1dG8gc2xvd1BhdGhGdW5jdGlvbiA9IG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgYXV0byBzbG93UGF0aEZ1bmN0aW9uID0g
bV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICA/IChtX25vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFy
cmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmlj
dCkKICAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCk7CiAgICAgICAgICAgICBpZiAo
IWFycmF5TW9kZS5pc091dE9mQm91bmRzKCkpIHsKQEAgLTUyNDAsNyArNTI0MCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1p
emF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlw
dCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSku
Y2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC01MjY5LDcgKzUyNjksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTM5NwogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1fb3V0Lmlu
dFB0clplcm8sIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLnJhd0JpdHMoKSkpKSk7CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFpl
cm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBtX291dC5jb25zdEludFB0
cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpLCBtX291dC5jb25zdElu
dDMyKG1fbm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKQEAgLTUzMTAsNyArNTMxMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0
Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgc3Vic2NyaXB0
KSkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0
LCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IG1fb3V0LmludFB0clplcm8sIGJhc2UsIHN1YnNjcmlwdCwgbV9vdXQuY29uc3RJbnQzMihtX25v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtOTgwNSw3ICs5ODA1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1bnNp
Z25lZCByZXF1aXJlZEJ5dGVzID0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgc2l6ZW9mKENh
bGxGcmFtZSopICogMjsKICAgICAgICAgICAgICAgICByZXF1aXJlZEJ5dGVzID0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVxdWlyZWRCeXRlcyk7CiAg
ICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZXF1
aXJlZEJ5dGVzKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAg
ICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4o
Z2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSwgR1BS
SW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9iamVjdCwgR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0
YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25DYWxsRXZhbCkpLCBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApOwogICAgICAgICAgICAgICAgIGppdC5j
YWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKQEAgLTEzMzU1LDcgKzEzMzU2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwotICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9u
UHV0RHluYW1pY1Zhck5vblN0cmljdCwKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoVm9pZCwg
bV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3Ry
aWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwKICAgICAgICAgICAgIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50UHRyKHVpZCksIG1fb3V0LmNvbnN0
SW50MzIobV9ub2RlLT5nZXRQdXRJbmZvKCkpKSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cAppbmRleCAwODBmYWVkZTgxYTIyNjgyMjFkMWM1MDg5NDFkOWVmMjcxMjc5YTIwLi45N2JmYjIw
MmU1Zjc0ODRlNmNhNGI0OWQxNGJhYzdmMzE2M2RjYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAt
MTUwLDcgKzE1MCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29u
c3RydWN0b3JOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvVGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICBKU09i
amVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICBy
ZXR1cm4ganNTdHJpbmcodm0sIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKG9iamVjdCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAppbmRleCA1MTg4YzAyMzlkZjQ2ZTAwMmRjOWUyYTFiMzcyMWI1ZDBiMGMwZjhlLi5j
NGQ5YzcyN2UwNzE4ZWVhZWYwMDY4Mjg0NGM1NDczZGIyMmJiZmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTEwMSw3ICsx
MDEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorSlNWYWx1ZSBldmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIEpTVmFs
dWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIAogICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5k
aXJlY3RFdmFsQ29kZUNhY2hlKCkudHJ5R2V0KHByb2dyYW1Tb3VyY2UsIGNhbGxlckNhbGxTaXRl
SW5kZXgpOwogICAgIGlmICghZXZhbCkgewotICAgICAgICBpZiAoIWNhbGxlckNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAg
ICAgICAgICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pczhCaXQoKSkgewogICAgICAgICAgICAgICAg
IExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihnbG9iYWxPYmplY3QsIHByb2dyYW1Tb3Vy
Y2UuY2hhcmFjdGVyczgoKSwgcHJvZ3JhbVNvdXJjZS5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTiwg
Y2FsbGVyQ29kZUJsb2NrKTsKICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBwYXJzZWRPYmpl
Y3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpCkBAIC0xNjUsNyArMTY1LDcgQEAgSlNW
YWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogICAgICAgICAKICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRl
clREWjsKICAgICAgICAgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihj
YWxsZXJTY29wZUNoYWluLCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgIGV2YWwgPSBEaXJl
Y3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9ncmFt
U291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdp
bigpKSwgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgZGVyaXZlZENvbnRleHRUeXBl
LCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxl
c1VuZGVyVERaKTsKKyAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+
c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUs
IGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVz
VW5kZXJURFosIGVjbWFNb2RlKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICFldmFsKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbAogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzID0gZXZh
bC0+bnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsKIAogICAgIEpTU2NvcGUqIHZhcmlh
YmxlT2JqZWN0OwotICAgIGlmICgobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25E
ZWNscykgJiYgZXZhbC0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICBpZiAoKG51bVZhcmlhYmxlcyB8
fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpICYmIGV2YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkp
IHsKICAgICAgICAgc2NvcGUgPSBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPnN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKCksIHNjb3BlKTsKICAgICAg
ICAgdmFyaWFibGVPYmplY3QgPSBzY29wZTsKICAgICB9IGVsc2UgewpAQCAtMTEwNCw3ICsxMTA0
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtlZEV2YWxDb2RlQmxvY2soKTsK
IAogICAgIC8vIFdlIGNhbid0IGRlY2xhcmUgYSAidmFyIi8iZnVuY3Rpb24iIHRoYXQgb3Zlcndy
aXRlcyBhIGdsb2JhbCAibGV0Ii8iY29uc3QiLyJjbGFzcyIgaW4gYSBzbG9wcHktbW9kZSBldmFs
LgotICAgIGlmICh2YXJpYWJsZU9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSAmJiAhZXZhbC0+aXNT
dHJpY3RNb2RlKCkgJiYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMp
KSB7CisgICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpICYmICFldmFsLT5p
c0luU3RyaWN0Q29udGV4dCgpICYmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlv
bkRlY2xzKSkgewogICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odmFyaWFibGVPYmplY3Qp
LT5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCA9IHVubGlua2VkQ29kZUJsb2NrLT52YXJpYWJsZShpKTsKQEAgLTExMjgsNyArMTEy
OCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAKICAgICBpZiAobnVtVmFyaWFibGVzIHx8
IG51bVRvcExldmVsRnVuY3Rpb25EZWNscyB8fCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRl
cykgewogICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIodm0sIHZh
cmlhYmxlT2JqZWN0KTsKLSAgICAgICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5uZXh0KCkgJiYgIWV2
YWwtPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBpZiAodmFyaWFibGVPYmplY3QtPm5leHQoKSAm
JiAhZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0
LT5nbG9iYWxPYmplY3Qodm0pLT52YXJJbmplY3Rpb25XYXRjaHBvaW50KCktPmZpcmVBbGwodm0s
ICJFeGVjdXRlZCBldmFsLCBmaXJlZCBWYXJJbmplY3Rpb24gd2F0Y2hwb2ludCIpOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkgewpAQCAtMTE0
NCw3ICsxMTQ0LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJs
ZSogZXZhbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGV2YWwtPmlzU3RyaWN0TW9kZSgpKSB7Cisg
ICAgICAgIGlmIChldmFsLT5pc0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzOyArK2kpIHsKICAg
ICAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5m
dW5jdGlvbkRlY2woaSk7CiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodmFy
aWFibGVPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAppbmRleCA5MGE5ZGI1YzVhOWZiMDI1NmM1N2QxZDZjZTQ5OWE3ZmU3MzFlMDg1
Li42NDUzOTEyN2I4Yzc0YzgyMDI5YjJiYjYxODBlNjk2OTcxYTY0YmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMTUwLDcgKzE1
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09Q
Q09ERVMpCiAgICAgfTsKIAotICAgIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworICAgIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVD
TUFNb2RlKTsKIAogICAgIGlubGluZSBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lRm9yVmFyYXJncyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVuc2lnbmVk
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDcwZjVkZDQ4MWYxNmRmMTZhYmRkMzIzYmI0
NjRiNTcwMjY0ZGIzYmMuLmFiYTBlZWI1OTViZDAwNTk3MzM1Y2ZkMzEwODVhNGE3NjYxZTY3Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTQ3
MiwxOSArMTQ3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbik7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTdHJpY3RN
b2RlRm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIGF1dG8qIGlubGlu
ZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKTsKLSAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZS0+aXNTdHJpY3RNb2RlKCk7
Ci0gICAgfQotICAgIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlRm9yKENvZGVPcmlnaW4gY29kZU9y
aWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdE1vZGVGb3IoY29kZU9yaWdpbikg
PyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKLSAgICB9Ci0gICAgCiAgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbik7CiAgICAg
CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggYjJiZmNl
NjMzN2Q5YmUwMmQ2MWYzODk1Y2U1ZWNhM2EwZDc4MzIwNi4uZTFlNTY1ZGM1MjQ5ZjZhY2ZkYWEy
NGJmZmI0NDcxZmZjYjIwYjg2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CkBAIC0xMzgsNyArMTM4LDggQEAgYm9vbCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChjb25zdCBPcENh
bGxFdmFsJiBieXRlY29kZSkKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9m
ZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0
ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVu
dCgpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsRXZhbCwgbV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLCByZWdUMSk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUu
bV9lY21hTW9kZS52YWx1ZSgpKSwgcmVnVDIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Q2FsbEV2YWwsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcmVnVDEsIHJlZ1QyKTsKIAog
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVnVDApKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCA5
OGY5NGEyNjg4MzE2OTFmNjc5NWIyNzlmMWI3MDlkMWFkMTFlNDBmLi4yMjZlNmI3OTg1MWI2MWJj
Y2JkNTEwN2NmYTVmY2MzMDI2MGU3OTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBA
IHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24oKQogewotICAgIGlmIChtX2VjbWFNb2RlID09IFN0cmljdE1vZGUpIHsK
KyAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgIGlmIChtX3B1dEtpbmQg
PT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJp
Y3RPcHRpbWl6ZTsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaAppbmRleCBhNjQ3YzQ1YjNmNGUzYjQzZGI1ZDQ2MDU1ZGY3NThiNmI5MmVmOGVhLi5m
MDNlMDkyNTM4NTQxZmIwMzQwZjEyYzZiYThhNjExMTFmMzM2Nzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xMjgs
NyArMTI4LDkgQEAgcHVibGljOgogCiBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGlj
IEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKSB7
IH0KKyAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkKKyAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFN
b2RlOjpzdHJpY3QoKSkKKyAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNl
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAyM2ZmNWM4MWMxYzAz
MjIyZjkxMmE0OTkzMWYyODM2ZGFkY2ZhY2I3Li43ZGNiZThmYTNhZTU2OGNiYWE2NWNhNDFlNWUx
YmEyNzU2NTUzM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAt
MTY2LDcgKzE2Niw3IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjph
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAKIEFMV0FZU19JTkxJTkUg
dm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIsIFZpcnR1YWxSZWdpc3RlciByZWcpCiB7Ci0gICAgaWYgKCFtX2NvZGVC
bG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShyZWcpKQorICAgIGlmICghbV9jb2RlQmxvY2stPmlz
S25vd25DZWxsKHJlZykpCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIH0KIApAQCAtNDk2
LDcgKzQ5Niw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlKFZpcnR1YWxSZWdpc3RlciBy
ZWcsIGNvbnN0IEpTVmFsdWUgY29uc3RhbnQsIFJlZ2lzdGVyCiAKIGlubGluZSB2b2lkIEpJVDo6
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdpc3RlciByZWcpCiB7Ci0gICAg
aWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShyZWcpKSB7CisgICAgaWYgKCFt
X2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkgewogICAgICAgICBpZiAocmVnLmlzQ29uc3Rh
bnQoKSkKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGVsc2UKQEAg
LTUwNiw3ICs1MDYsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBSZWdpc3RlcklEIHRhZykKIHsK
LSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKHJlZykpIHsKKyAgICBp
ZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcpKSB7CiAgICAgICAgIGlmIChyZWcuaXND
b25zdGFudCgpKQogICAgICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgZWxz
ZQpAQCAtNjAwLDcgKzYwMCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklEIHJlZykKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQgcmVnLCBWaXJ0dWFsUmVn
aXN0ZXIgdlJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRl
KHZSZWcpKQorICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHZSZWcpKQogICAgICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNTc2ZjVmNTRlZTdjOGU3NTI2Njky
YzkwNGQwYmI2NDJlM2JiNTYzOS4uMzIxODM0MDY0MDU5NTRiYmI2MTI1OTViMmU5NWRjZWMzNGVh
YTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC03MDEsNyArNzAxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAgICAgcmVwYXRj
aFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwg
aWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQogCi1zdGF0aWMgdm9pZCBw
dXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKK3N0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNW
YWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC03MTcsMTIgKzcxNywxMiBAQCBzdGF0aWMgdm9pZCBwdXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNWYWx1ZQogCiAgICAgICAgICAgICBieVZhbEluZm8tPmFycmF5UHJvZmlsZS0+c2V0T3V0T2ZC
b3VuZHMoKTsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2
YWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUs
IGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBiYXNlVmFsdWUucHV0QnlJbmRleChn
bG9iYWxPYmplY3QsIGksIHZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAg
ICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgZWNtYU1vZGUu
aXNTdHJpY3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKHN1YnNjcmlwdC5p
c0ludDMyKCkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwpAQCAt
NzM4LDE1ICs3MzgsMTQgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICAgICAgYnlWYWxJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7
CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgp
KTsKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVl
LCBzbG90KTsKIH0KIAotc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8p
CitzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KTsKIAogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIC8v
IERlc3BpdGUgaXRzIG5hbWUsIEpTVmFsdWU6OmlzVUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25s
eSBmb3IgcG9zaXRpdmUgYm94ZWQgaW50MzJfdDsgYWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQg
YXJyYXkgaW5kaWNlcy4KQEAgLTc2OCw3ICs3NjcsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SgogICAgICAgICB9CiAKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBiYXNlT2Jq
ZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgMCwgaXNTdHJp
Y3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxk
Tm90VGhyb3cpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4LCB2YWx1ZSwgMCwgZWNtYU1vZGUuaXNTdHJpY3QoKSA/IFB1dERpcmVjdEluZGV4
U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzc4LDcgKzc3Nyw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
CiAgICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAmJiBp
c0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewogICAgICAgICAgICAgYnlWYWxJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOwogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJ
bnQzMiwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cg
OiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAgICAgICAgIGJhc2VPYmplY3Qt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAw
LCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERp
cmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtNzkwLDcgKzc4OSw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAg
aWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKSB7CiAg
ICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3Qs
IGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNo
b3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CisgICAgICAgIGJhc2VP
YmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUs
IDAsIGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0
RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTc5OCw3ICs3OTcsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogICAgICAgICBieVZhbElu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICBDb21t
b25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2Jq
ZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQogCkBAIC04ODQsNyArODgzLDcgQEAgc3Rh
dGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICByZXR1cm4gb3B0aW1pemF0aW9uUmVzdWx0OwogfQog
Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNt
YU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTkwMiw3ICs5MDEsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0
aCA9IHRydWU7CiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRy
ZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CiAg
ICAgfQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwogfQogCiBzdGF0
aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU09iamVjdCogb2JqZWN0LCBKU1ZhbHVlIHN1YnNjcmlwdCwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKQEAgLTk3NCw3ICs5NzMs
NyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIHJldHVybiBvcHRpbWl6YXRpb25SZXN1
bHQ7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtOTk1LDEwICs5OTQsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAg
Y3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9B
RERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKICAgICB9CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbykpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBvYmplY3Qs
IHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KIAotdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTAwOCwxMSArMTAwNywxMSBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKIAotICAgIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pOworICAg
IHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZh
bEluZm8sIGVjbWFNb2RlKTsKIH0KIAogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
QnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CkBAIC0xMDIyLDEwICsxMDIxLDEwIEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vi
c2NyaXB0KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwotICAgIGRpcmVj
dFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgYXNPYmplY3Qo
YmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKTsKKyAgICBkaXJlY3RQdXRC
eVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUs
IGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbGVlRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbGVlRnJh
bWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDM1LDcg
KzEwMzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIGlmICghaXNIb3N0RnVuY3Rp
b24oY2FsbGVlRnJhbWUtPmd1YXJhbnRlZWRKU1ZhbHVlQ2FsbGVlKCksIGdsb2JhbEZ1bmNFdmFs
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogCi0gICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBlY21hTW9kZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjE2Myw3ICsyMTYyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKG9iamVjdC0+aGFzUHJvcGVydHlHZW5lcmljKGdsb2JhbE9iamVjdCwgaW5kZXgsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkpKTsKIH0KICAgICAK
LXN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1Zh
bHVlIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorc3RhdGljIGJvb2wgZGVsZXRlQnlJ
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRUNNQU1vZGUg
ZWNtYU1vZGUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CkBAIC0yMTczLDEyICsyMTcyLDEyIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgaWYgKCFjb3Vs
ZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBp
ZiAoIWNvdWxkRGVsZXRlICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7
CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMTkyLDIxICsyMTkxLDIxIEBAIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmll
cik7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50
aWZpZXIudWlkKCkpOwogCi0gICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBpZGVudCk7CisgICAgYm9vbCByZXN1
bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgaWRlbnQs
IGVjbWFNb2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAoIXBh
cnNlSW5kZXgoaWRlbnQpKSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVy
Q2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSwgaWRl
bnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0
dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0
ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVy
ZSwgaWRlbnRpZmllciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbCwgZWNtYU1vZGUpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
dWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCitzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qg
cmF3Q2FjaGVhYmxlSWRlbnRpZmllciwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIyMTQsMTAgKzIyMTMsMTAgQEAgc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3QKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAg
ICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51
aWQoKSk7CiAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5
SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpLCBpZGVudCk7CisgICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCB2
bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgaWRlbnQsIGVjbWFNb2RlKTsK
IH0KIAotc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5KQorc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXksIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjIzNiwxMiArMjIz
NSwxMiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgICAgIGNvdWxkRGVsZXRlID0gYmFz
ZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOwotICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBlY21hTW9kZS5pc1N0
cmljdCgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBVbmFi
bGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQor
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjI1
Myw3ICsyMjUyLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVj
dHVyZU9yTnVsbCgpOwogCi0gICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0KTsKKyAgICBib29s
IHJlc3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwg
c3Vic2NyaXB0LCBlY21hTW9kZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CkBA
IC0yMjY0LDIwICsyMjYzLDIwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CiAgICAgICAgICAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1
cmVPck51bGwoKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwg
aWRlbnRpZmllciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAg
ICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJh
c2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6
Tm9ybWFsQnlWYWwsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
KQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVDTUFNb2Rl
IGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KSk7CisgICAgcmV0dXJuIGRlbGV0ZUJ5VmFs
KGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KSwgZWNtYU1vZGUpOwogfQogCiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVj
dFZhbHVlKQpAQCAtMjU0NCw3ICsyNTQzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dFRvU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5zdHIKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0
LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgZ2V0UHV0SW5mby5lY21hTW9kZSgpLmlzU3Ry
aWN0KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24o
Z2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJs
ZSh2bSktPnB1dChzY29wZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAg
IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdm9pZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggYjUyNDlhZTIxMzhmOTIwZDlh
NWMzNDljNGQ3MmVjZjI2MjIyODU3Mi4uMTIwMjk5YmUxNTBmOGJjNzFkZTBjOTUxNTAzMjI3MDFi
NzVkMWJiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAg
LTY0LDYgKzY0LDcgQEAgY2xhc3MgVk07CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCiBzdHJ1Y3Qg
QnlWYWxJbmZvOworc3RydWN0IEVDTUFNb2RlOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0
cnVjdCBJbnN0cnVjdGlvbjsKIApAQCAtMTg3LDExICsxODgsMTIgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RO
b25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90KSBXVEZfSU5URVJOQUw7CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2
YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVD
TUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOworCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpIFdURl9JTlRF
Uk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxs
KENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFM
OwogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua1BvbHltb3Jw
aGljQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9J
TlRFUk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1
YWxDYWxsKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lO
VEVSTkFMOwpAQCAtMjUwLDEwICsyNTIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFBy
b3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJ
bmZvKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5m
byopIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Ci1z
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVp
bnRwdHJfdCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QsIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0YXJnZXQsIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRh
cmdldCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBjdXJyZW50U2NvcGVD
ZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNPYmplY3QqIG9iamVjdCkgV1RG
X0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFBOYW1lcyhKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBjMzU0M2RhZTdkMDgyZWJk
ZWM2MWQwYmNkNWI4Zjg3NTIwNDBiZTc0Li5hNDA4MDU5MzY1MGE2ZWM1NjhhYTYxMDY5MTdmZTk3
YjM4ZjEzMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjpl
bWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAog
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIG1fY29k
ZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBieXRlY29kZS5tX2VjbWFNb2RlLCBwdXRLaW5k
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRl
IG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgog
ICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBl
ZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgpAQCAtMzExLDExICszMTEsMTMgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlOworICAgIEVD
TUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwogCiAgICAgYXV0byBsb2FkID0g
WyZdKGF1dG8gYnl0ZWNvZGUpIHsKICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAg
ICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5
dGVjb2RlLm1fdmFsdWU7CisgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsK
ICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMzMxLDcgKzMzMyw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QyKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgcmVnVDAsIHJlZ1QxLCByZWdUMiwgYnlWYWxJbmZvKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6
ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCByZWdUMiwgYnlWYWxJbmZvLCBUcnVzdGVk
SW1tMzIoZWNtYU1vZGUudmFsdWUoKSkpOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1tt
X2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBt
X2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRy
ZXNzID0gY2FsbDsKQEAgLTQyNyw3ICs0MjksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAog
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlLCByZWdUMCk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCks
IFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogCiAgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTQ3Nyw3ICs0NzksNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDAsIHJlZ1QxKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1f
ZWNtYU1vZGUudmFsdWUoKSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgY2FsbCk7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkp
OwpAQCAtNjU0LDcgKzY1Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJlZyA9
IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgYm9vbCBkaXJlY3QgPSAhIShieXRlY29kZS5tX2ZsYWdz
ICYgUHV0QnlJZElzRGlyZWN0KTsKKyAgICBib29sIGRpcmVjdCA9IGJ5dGVjb2RlLm1fZmxhZ3Mu
aXNEaXJlY3QoKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgLy8gSW4gb3JkZXIgdG8g
YmUgYWJsZSB0byBwYXRjaCBib3RoIHRoZSBTdHJ1Y3R1cmUsIGFuZCB0aGUgb2JqZWN0IG9mZnNl
dCwgd2Ugc3RvcmUgb25lIHBvaW50ZXIsCkBAIC02NjgsNyArNjcwLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCisgICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUubV9mbGFncy5lY21h
TW9kZSgpLAogICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDhkMTg4MDM2YTIzNTlk
ZjBiMWUxYWYxYWI0ZDg3N2ZjNmM2MGM5YWEuLjUzNTQ4NmNkOGYxNTMyYWQxYmViNTE1YTg2Yjkw
OGFiYzgzNjk2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDIsIHJlZ1QxKTsKICAgICBlbWl0TG9h
ZChwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QwKTsKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDUsIHJl
Z1Q0KTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0ID8gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDIsIHJlZ1QxKSwgSlNWYWx1
ZVJlZ3MocmVnVDMsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KSwgYnlWYWxJbmZv
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDIsIHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KSwgYnlWYWxJbmZvLCBi
eXRlY29kZS5tX2lzU3RyaWN0TW9kZSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21f
YnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJl
c3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggYzNkZjA3
OTJlNGU3MmQ0OWI0ZDdhMjI2Y2ExMDExOTVkOGY0YzYwOC4uZGU3ZDY2ZDAzMWVjZGI5YzM1NGE1
YWM5ODFhMjc1Y2M0MWEyNjRiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsK
IH0KIAotc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBEZWxCeUtpbmQpCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVC
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVz
dWx0OwpAQCAtNzcxLDcgKzc3MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAg
ICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgIEFTU0VS
VChpc1ZhbGlkT2Zmc2V0KG5ld09mZnNldCkpOwogICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vz
c0Nhc2U6OmNyZWF0ZURlbGV0ZSh2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNl
dCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOwotICAgICAgICB9IGVsc2UgaWYgKCFjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWVjbWFNb2RlLmlz
U3RyaWN0KCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzTm9uY29uZmlndXJhYmxlKCkpCiAg
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2Nr
LCBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGUsIHByb3BlcnR5TmFtZSwgaW52YWxp
ZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOwogICAgICAgICAgICAgZWxzZQpA
QCAtNzkyLDEyICs3OTIsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVs
ZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICByZXR1cm4g
cmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRl
cjsKIH0KIAotdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1
ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2lu
ZCkKK3ZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQsIEVD
TUFNb2RlIGVjbWFNb2RlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBpZiAo
dHJ5Q2FjaGVEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVl
LCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9u
Q2FjaGUpIHsKKyAgICBpZiAodHJ5Q2FjaGVEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8s
IGtpbmQsIGVjbWFNb2RlKSA9PSBHaXZlVXBPbkNhY2hlKSB7CiAgICAgICAgIExPR19JQygoSUNF
dmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwo
Z2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1l
LnVpZCgpKSkpOwogICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKICAgICAg
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGU1Y2U0Njg3MTE0NjM5MmU0ZTcyZTYxNGEyZjVlNThl
YTY3NDk5NDUuLmQ4OTBmZDcwYWFjZDgyZmZiZjRkYThmYjI0ZTFmM2RmZjU3NDlkYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00OSw3ICs0OSw3IEBAIGVudW0gY2xhc3Mg
RGVsQnlLaW5kIHsKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CiB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFs
dWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBj
b25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwotdm9p
ZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVj
dHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5k
LCBFQ01BTW9kZSk7CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0
IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5j
ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBw
cm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtG
b3IoVk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCog
Y2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMmJmZmMzODE2
M2ZlMzFiZTk0MWJlZDZhNWZiNTZkMjk4YmViNjIyNy4uZjM5ZjhmNWMxYWMwN2JkOTQwMDBkODZk
YWE2NTQ4OWZhODkzNTVhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCkBAIC04MzYsMTAgKzgzNiwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X2lkKQogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIAogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7Ci0g
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGJhc2VWYWx1ZSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCksIGNv
ZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CiAKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSA9IGJhc2VWYWx1ZS5pc0NlbGwoKSA/IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZt
KSA6IG51bGxwdHI7Ci0gICAgaWYgKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3Qp
CisgICAgaWYgKGJ5dGVjb2RlLm1fZmxhZ3MuaXNEaXJlY3QoKSkKICAgICAgICAgQ29tbW9uU2xv
d1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFz
ZVZhbHVlKSwgaWRlbnQsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKSwg
c2xvdCk7CiAgICAgZWxzZQogICAgICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVj
dCwgaWRlbnQsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKSwgc2xvdCk7
CkBAIC04ODgsNyArODg4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQ
dXRCeUlkSXNEaXJlY3QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYnl0
ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXdTdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWlu
KGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZUNlbGwpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVDaGFpbi5zZXQodm0sIGNvZGVCbG9jaywgY2hhaW4pOwpA
QCAtOTI3LDcgKzkyNyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlf
aWQpCiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgYm9vbCBjb3VsZERlbGV0ZSA9
IEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOwotICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJp
Y3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
VW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihjb3VsZERlbGV0ZSkpOwogfQpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwotICAg
IGJvb2wgaXNTdHJpY3RNb2RlID0gY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsKKyAgICBib29s
IGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKICAgICAKICAg
ICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBp
ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CkBAIC0xMDU4LDcgKzEwNTgsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBSRUxFQVNF
X0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3Qg
PSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsKKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNt
YU1vZGUuaXNTdHJpY3QoKTsKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkg
ewogICAgICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3aWxsIHJl
dHVybiB0cnVlIG9ubHkgZm9yIHBvc2l0aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0aG9zZSB2YWx1
ZXMgYXJlIHZhbGlkIGFycmF5IGluZGljZXMuCiAgICAgICAgIEFTU0VSVChpc0luZGV4KHN1YnNj
cmlwdC5hc1VJbnQzMigpKSk7CkBAIC0xMTEyLDcgKzExMTIsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICB9CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0
KCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVu
YWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikpOwogICAgIAogICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oY291bGREZWxldGUpKTsKQEAgLTE3MzgsNyArMTczOCw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElu
c3RydWN0aW9uCiAgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxG
dW5jRXZhbCkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBzZXRVcENh
bGwoY2FsbGVlRnJhbWUsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKSk7CiAgICAgCi0gICAg
dm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSk7
CisgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVG
cmFtZSwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZ2xvYmFs
T2JqZWN0LCBjYWxsZWVGcmFtZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSksIENGdW5jdGlvblB0clRhZyk7CiB9CiAgICAgCkBAIC0xODc0LDcgKzE4NzQsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlKQogICAgIGlmIChtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQgJiYgIWhh
c1Byb3BlcnR5KQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNj
b3BlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25D
b250ZXh0LCBpc0luaXRpYWxpemF0aW9uKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBtZXRhZGF0YS5t
X2dldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25v
d25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFs
aXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJsZSh2bSktPnB1dChzY29wZSwg
Z2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAgIENvbW1vblNsb3dQ
YXRoczo6dHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
eXRlY29kZSwgc2NvcGUsIHNsb3QsIGlkZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA3YTY0MmMwMjZmZGIwZDIwOTljYWVk
ZTY2YzcyMTUxN2U2ZjZmZWUxLi5iMDQ3ZmI1ODA4Y2YwYzhlMDBhYzAxMzVjMTE5ZTIzNTQxYjIw
Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC01OTksNyArNTk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKTsKIAogICAgIC8vIDEuIExldCBhcnJheSBiZSB0aGUgcmVzdWx0IG9m
IGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUuCiAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTY4MSw3ICs2ODEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVT
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAg
LTc3OSw3ICs3NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jSm9pbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIExldCBPIGJlID8gVG9PYmpl
Y3QodGhpcyB2YWx1ZSkuCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtODY0LDcgKzg2NCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhp
c1ZhbHVlKSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoYXNBcnJheSh0aGlzVmFsdWUpLT5wb3AoZ2xvYmFsT2JqZWN0KSkpOwpAQCAtODk5LDcgKzg5
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAK
ICAgICBpZiAoTElLRUxZKGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpID09IDEpKSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlz
VmFsdWUpOwpAQCAtOTQwLDcgKzk0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9i
YWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhpc09i
aiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAg
ICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQwogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2
Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zbGljZQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc09iaikpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMTI0LDcgKzExMjQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJp
Y3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNj
b3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmop
KQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEyMjIsNyArMTIyMiw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIC8vIDE1LjQuNC4xMwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0
aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAg
IHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTM1NCw3ICsxMzU0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyAxNS40LjQuMTQKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVj
dChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTEzOTIsNyArMTM5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8g
MTUuNC40LjE1Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNP
YmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5k
ZXggMjI2YjQ4MzU0NjJkOGM0NWU2MTlmNjY4MDBiZTk5N2E5MWFlODhhMS4uODAyZjIwMmY5Mjli
MDA4MDM0ZmE3ZDZlYjgxMDkwYWI3MzMwZDJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTgxOCw3ICsxODE4LDYgQEAgcHVibGljOgog
ICAgIFJlZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IG1ldGFkYXRhKERlY29kZXImIGRlY29kZXIp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuZGVjb2RlKGRlY29kZXIpOyB9CiAKICAgICB1bnNp
Z25lZCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICB1bnNpZ25l
ZCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIHVu
c2lnbmVkIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0K
ICAgICB1bnNpZ25lZCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Q2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICB1bnNpZ25lZCBpc0J1aWx0aW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KQEAgLTE4NTEsNyArMTg1MCw2IEBA
IHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKIAogICAgIHVu
c2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OwpAQCAtMjA0OCw3ICsyMDQ2LDYgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6
VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJlKgogICAgICwgbV9z
Y29wZVJlZ2lzdGVyKGNhY2hlZENvZGVCbG9jay5zY29wZVJlZ2lzdGVyKCkpCiAKICAgICAsIG1f
dXNlc0V2YWwoY2FjaGVkQ29kZUJsb2NrLnVzZXNFdmFsKCkpCi0gICAgLCBtX2lzU3RyaWN0TW9k
ZShjYWNoZWRDb2RlQmxvY2suaXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2lzQ29uc3RydWN0b3Io
Y2FjaGVkQ29kZUJsb2NrLmlzQ29uc3RydWN0b3IoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoY2FjaGVkQ29kZUJsb2NrLmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpCiAgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGNhY2hlZENvZGVCbG9jay5pc0J1aWx0aW5GdW5jdGlvbigpKQpAQCAt
MjIzNCw3ICsyMjMxLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVCbG9jazxDb2Rl
QmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAgICBtX3RoaXNSZWdp
c3RlciA9IGNvZGVCbG9jay5tX3RoaXNSZWdpc3RlcjsKICAgICBtX3Njb3BlUmVnaXN0ZXIgPSBj
b2RlQmxvY2subV9zY29wZVJlZ2lzdGVyOwogICAgIG1fdXNlc0V2YWwgPSBjb2RlQmxvY2subV91
c2VzRXZhbDsKLSAgICBtX2lzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay5tX2lzU3RyaWN0TW9kZTsK
ICAgICBtX2lzQ29uc3RydWN0b3IgPSBjb2RlQmxvY2subV9pc0NvbnN0cnVjdG9yOwogICAgIG1f
aGFzQ2FwdHVyZWRWYXJpYWJsZXMgPSBjb2RlQmxvY2subV9oYXNDYXB0dXJlZFZhcmlhYmxlczsK
ICAgICBtX2lzQnVpbHRpbkZ1bmN0aW9uID0gY29kZUJsb2NrLm1faXNCdWlsdGluRnVuY3Rpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cAppbmRleCA4ZGRkOThhMWJmYjBmZWMxNWE3ZDczMmFjYzNjMmNlZjg1ZDA0MGI0Li5iZjg1NDEy
MjQ2YjI5Yzk5OWU1MjNhN2E0ZWNjYzgzMTA3MjZjNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTE3OCw3ICsxNzgsNyBA
QCBib29sIENsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5zcGVjaWFs
c01hdGVyaWFsaXplZCgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzT2JqZWN0LT5tX2NhbGxlZS0+ZXhl
Y3V0YWJsZSgpKTsKLSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0
cmljdE1vZGUoKTsKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0lu
U3RyaWN0Q29udGV4dCgpOwogCiAgICAgICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5jYWxsZWUpIHsKICAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKQEAgLTI1MCw3ICsy
NTAsNyBAQCB2b2lkIENsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVTcGVjaWFscyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4obV9jYWxsZWUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKTsKKyAgICBib29sIGlzU3RyaWN0TW9k
ZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCk7CiAgICAgCiAgICAgaWYgKGlzU3Ry
aWN0TW9kZSkKICAgICAgICAgcHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jYWxsZWUsIHRoaXMtPmdsb2JhbE9iamVjdCh2bSktPnRocm93VHlwZUVycm9y
QXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCmluZGV4IGZhM2NkMzI2YmNkNWI5Nzg5YTI0MjdlNjEzYWM5NTQ4YjJmYjNhZTIuLjll
MTcyYjZhZWE3NGIwNjJkZTlmZmVmOGRhNTZkNDkzNGY5NGQ1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtOTEsMTEgKzkxLDExIEBAIFVubGlu
a2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzCiAgICAgICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKHJvb3RO
b2RlLT5mZWF0dXJlcygpIHwgYXJyb3dDb250ZXh0RmVhdHVyZSwgcm9vdE5vZGUtPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpLCBlbmRDb2x1bW4pOwogCiAgICAg
Ym9vbCB1c2VzRXZhbCA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgRXZhbEZlYXR1cmU7Ci0gICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0
dXJlOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBTdHJp
Y3RNb2RlRmVhdHVyZSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsK
ICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA9IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfc2FtZV92PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RFdmFsRXhlY3V0YWJsZT4pCiAgICAg
ICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIoKTsKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2Vz
RXZhbCwgaXNTdHJpY3RNb2RlLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
c2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRD
b2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRl
eHRUeXBlKTsKKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9k
ZSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxvY2tUeXBl
OjpjcmVhdGUodm0sIGV4ZWN1dGFibGVJbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgIHVu
bGlua2VkQ29kZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5v
ZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4p
OwpAQCAtMTA0LDcgKzEwNCw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxp
bmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgaWYgKCFz
b3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQog
ICAgICAgICB1bmxpbmtlZENvZGVCbG9jay0+c2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShz
b3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpKTsKIAotICAgIGVy
cm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291
cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCB2YXJpYWJsZXNVbmRl
clREWik7CisgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3RO
b2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUs
IHZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDQ0ZDhmYjRiNDIyYTkyZDAzYjgxYWIw
YWYxOGQ0ZjY1YjFlOGM4MzUuLmI1NmE3NDhlZDQ2YzQ4YTYzYTBiNTUwNzIzM2EzMTc5MmJkYjJh
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190
aGlzKQogICAgIC8vIGRpZmZlcmVudCBvYmplY3QgdGhhdCBzdGlsbCBoYXMgdGhlIHNhbWUgc3Ry
dWN0dXJlIG9uIHRoZSBmYXN0IHBhdGggc2luY2UgaXQnbGwgcHJvZHVjZQogICAgIC8vIHRoZSBz
YW1lIFNwZWN1bGF0ZWRUeXBlLiBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJv
dXQgdmFsdWUgcHJvZmlsaW5nIG9uIHRoZQogICAgIC8vIGZhc3QgcGF0aC4KLSAgICBhdXRvIHZh
bHVlID0gdjEudG9UaGlzKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSA/
IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKKyAgICBhdXRvIHZhbHVlID0gdjEudG9UaGlz
KGdsb2JhbE9iamVjdCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgUkVUVVJOX1dJVEhfUFJP
RklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgdmFsdWUsIFBST0ZJTEVfVkFMVUUodmFs
dWUpKTsKIH0KIApAQCAtOTg5LDcgKzk4OSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWxfYnlfdmFsKQogICAgIH0KICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAKLSAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3Vs
ZERlbGV0ZSAmJiBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIFRIUk9X
KGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJv
cikpOwogICAgIAogICAgIFJFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKQEAgLTEzMDYs
NyArMTMwNiw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlz
KQogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVl
KCk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsID0gR0VUX0MoYnl0ZWNvZGUubV90aGlzVmFsdWUpLmpz
VmFsdWUoKTsKICAgICBKU1ZhbHVlIHB1dFZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV92YWx1ZSku
anNWYWx1ZSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QodGhpc1ZhbCwgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpLCBj
b2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOwogICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xv
YmFsT2JqZWN0LCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOwogICAgIEVORCgpOwogfQpAQCAtMTMy
Miw3ICsxMzIyLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90
aGlzKQogICAgIAogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXNWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkp
OwogICAgIGJhc2VWYWx1ZS5wdXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OwogICAgIEVORCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oCmluZGV4IDM3YWZhNzZjNDA1NzU5MzU1MDZlNTli
ODRkMmI1ZjFlODA5YWZmZjMuLmJiNTQ3NDA3YzE3NTc1ZWFjNDRkYWVjMWY0YjdlMDcxOTlkYzQ2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHNJbmxpbmVzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVQ
dXRUb1Njb3BlR2xvYmFsKAogICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUg
PSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxQcm9wZXJ0eTsKICAgICAgICAgICAgIHJlc29s
dmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8vIEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNt
IHRvIGtpY2sgaW4uCiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1
dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBl
LCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC02
MSw3ICs2MSw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQt
PnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFl
bnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdl
dFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVU
eXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1
dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5pbml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkp
OwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0Y2hwb2lu
dFNldCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChlbnRyeS5z
Y29wZU9mZnNldCgpKS5zbG90KCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA5LDcgKzEw
OSw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKAogICAgICAgICAg
ICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhy
ZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9i
YWxQcm9wZXJ0eTsKICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8v
IEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCiAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAg
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZv
LnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5p
dGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0g
R2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2
ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRh
dGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC0xMjMsNyArMTIzLDcgQEAgaW5saW5lIHZvaWQg
dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRl
bnQuaW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAg
ICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0
UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0
SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5l
d1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCks
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fd2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKICAgICAgICAgICAgIG1l
dGFkYXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAKaW5kZXggMjExN2NjOWU5NmQ5ZjAwNGZhMTYzOWVhOWZkODA2YTQ1MzhjMDBl
Yy4uZWJjNmYyMmUwMDlkMjM0YzgwNTMwNGE3ZTA3NjA3N2QwNjk5OTBhMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTE0Miw3ICsxNDIsNyBA
QCBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZQogCiAgICAgaWYgKCF0aGlzVmFsdWUgfHwgdGhpc1Zh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHRoaXNWYWx1ZSA9IGdsb2JhbE9iamVj
dDsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmogPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnNsb3BweSgpKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB2bS5pbnRlcnByZXRlci0+
ZXhlY3V0ZVByb2dyYW0oc291cmNlLCBnbG9iYWxPYmplY3QsIHRoaXNPYmopOwogCiAgICAgaWYg
KHNjb3BlLmV4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggMWE3MmJmYjQ3ZWZlZmE1NTBk
ZWY5ODM1NjY1NGFmNjQ5MDc3OTczNS4uN2MxOWI3NWM2MmM4MDQxMzYyZGQ5ZWIxMmVkYTU5Nzky
NTExNWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTQ1LDExICs0NSwxMSBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJl
Y3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQs
IGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBl
KTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGly
ZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhlY3V0YWJsZShnbG9iYWxP
YmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZlZENvbnRleHRUeXBlLCBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOwogICAgIGV4ZWN1dGFibGUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCkgPyBKU1Bh
cnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0Owor
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZWNtYU1vZGUuaXNTdHJpY3QoKSA/
IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3Q7CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2Rl
ID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAKICAgICAvLyBX
ZSBkb24ndCBib3RoZXIgd2l0aCBDb2RlQ2FjaGUgaGVyZSBiZWNhdXNlIGRpcmVjdCBldmFsIHVz
ZXMgYSBzcGVjaWFsaXplZCBEaXJlY3RFdmFsQ29kZUNhY2hlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggNDc4MjZi
ZjMyMGMxYzE3ZDU4MzEzOWM0NmU1M2U2ZGFlZGFiYmQ0OS4uMjQwNzVhN2Y1YTM2YzczZmViYTQw
N2U3MTA5YTZmYzMzZjI3MGQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBEaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFdmFs
RXhlY3V0YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgc3Rh
dGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1v
ZGUpOwogcHJpdmF0ZToKICAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRl
eCA2MDViMmVmZmIxZDdiODJlNWNkYjdjNjQ1M2RjNWRlNzFmMzAyNjc2Li42N2U2OWM4NjI5YmEz
ZmIzODExNDgxMTM2YjhlN2U5OTQ4MGVkNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAg
ICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6
Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigp
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0K
KyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwg
ZXZhbENvbnRleHRUeXBlKCkpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJl
dHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNp
Z25lZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRF
dmFsQ29kZUJsb2NrLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4
IDQ0M2JiMzhhNjVjYjgwNDc0NTY4NTdjZDhkMjc2YWRlOWY3YTZiNWMuLmJhZGU5ODczNWY5OWRj
NDdlN2E2ZGM3ODdjNTc5NzExY2U1MTVlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgLy8gUGVyIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2
Mi8jc2VjLWZvcmJpZGRlbi1leHRlbnNpb25zLCBvbmx5IHNsb3BweS1tb2RlIG5vbi1idWlsdGlu
IGZ1bmN0aW9ucyBpbiBvbGQtc3R5bGUgKHByZS1FUzYpIHN5bnRhY3RpYyBmb3JtcyBjYW4gY29u
dGFpbgogICAgICAgICAvLyAiY2FsbGVyIiBhbmQgImFyZ3VtZW50cyIuCi0gICAgICAgIHJldHVy
biAhaXNTdHJpY3RNb2RlKCkgJiYgcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpOb3Jt
YWxGdW5jdGlvbk1vZGUgJiYgIWlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7CisgICAgICAg
IHJldHVybiAhaXNJblN0cmljdENvbnRleHQoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJz
ZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24o
KTsKICAgICB9CiAgICAgYm9vbCBoYXNQcm90b3R5cGVQcm9wZXJ0eSgpIGNvbnN0CiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmNwcAppbmRleCBkNmU3
MWVkODQ4YTdjNTdiY2U4OWY5MjQ0ODI5MjFlMzk1ODQwYzhjLi4xNTA4YTYwMTdjOWIxYWU1ZTcw
MTg5Mjk3YjI2M2VjMTYyNWY2MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXRQdXRJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXRQdXRJbmZvLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9p
ZCBHZXRQdXRJbmZvOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnBy
aW50KG9wZXJhbmQoKSwgIjwiLCByZXNvbHZlTW9kZSgpLCAifCIsIHJlc29sdmVUeXBlKCksICJ8
IiwgaW5pdGlhbGl6YXRpb25Nb2RlKCksICI+Iik7CisgICAgb3V0LnByaW50KG9wZXJhbmQoKSwg
IjwiLCByZXNvbHZlTW9kZSgpLCAifCIsIHJlc29sdmVUeXBlKCksICJ8IiwgaW5pdGlhbGl6YXRp
b25Nb2RlKCksICJ8IiwgZWNtYU1vZGUoKSwgIj4iKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgKaW5kZXggMDZmZmQ0M2EwMjVmMGI1ZWNiNGUwMTBl
MjcxOGQwNmMwMWI0NTlkZS4uOTM0MDgwMWYyMWY2NWQyN2I2YTNmODE2NmFkODQ4NjUyZDFiNjdj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaApAQCAtMjAy
LDE4ICsyMDIsMjAgQEAgY2xhc3MgR2V0UHV0SW5mbyB7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBP
cGVyYW5kOwogcHVibGljOgogICAgIC8vIEdpdmUgZWFjaCBmaWVsZCAxMCBiaXRzIGZvciBzaW1w
bGljaXR5LgotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmQpICogOCA+IDMwLCAiTm90
IGVub3VnaCBiaXRzIGZvciBHZXRQdXRJbmZvIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
T3BlcmFuZCkgKiA4ID4gMzEsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1dEluZm8iKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGlzU3RyaWN0U2hpZnQgPSAzMDsKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1vZGVTaGlmdCA9IDIwOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgaW5pdGlhbGl6YXRpb25TaGlmdCA9IDEwOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgdHlwZUJpdHMgPSAoMSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSAtIDE7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsaXphdGlvbkJpdHMgPSAoKDEgPDwg
bW9kZVNoaWZ0KSAtIDEpICYgfnR5cGVCaXRzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbW9kZUJpdHMgPSAoKDEgPDwgMzApIC0gMSkgJiB+aW5pdGlhbGl6YXRpb25CaXRzICYgfnR5
cGVCaXRzOwotICAgIHN0YXRpY19hc3NlcnQoKG1vZGVCaXRzICYgaW5pdGlhbGl6YXRpb25CaXRz
ICYgdHlwZUJpdHMpID09IDB4MCwgIlRoZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0
d2VlbiBSZXNvbHZlTW9kZSBSZXNvbHZlVHlwZSBhbmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpc1N0cmljdEJpdCA9IDEgPDwgMzA7CisgICAg
c3RhdGljX2Fzc2VydCgobW9kZUJpdHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0cyAm
IGlzU3RyaWN0Qml0KSA9PSAweDAsICJUaGVyZSBzaG91bGQgYmUgbm8gaW50ZXJzZWN0aW9uIGJl
dHdlZW4gUmVzb2x2ZU1vZGUgUmVzb2x2ZVR5cGUgYW5kIEluaXRpYWxpemF0aW9uTW9kZSIpOwog
CiAgICAgR2V0UHV0SW5mbygpID0gZGVmYXVsdDsKIAotICAgIEdldFB1dEluZm8oUmVzb2x2ZU1v
ZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1v
ZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQotICAgICAgICA6IG1fb3BlcmFuZCgocmVzb2x2ZU1vZGUg
PDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2Rl
KSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQorICAgIEdldFB1dEluZm8o
UmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFs
aXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAg
ICAgOiBtX29wZXJhbmQoKGVjbWFNb2RlLmlzU3RyaWN0KCkgPDwgaXNTdHJpY3RTaGlmdCkgfCAo
cmVzb2x2ZU1vZGUgPDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlh
bGl6YXRpb25Nb2RlKSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQogICAg
IHsKICAgICB9CiAKQEAgLTIyNSw2ICsyMjcsNyBAQCBwdWJsaWM6CiAgICAgUmVzb2x2ZVR5cGUg
cmVzb2x2ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4obV9v
cGVyYW5kICYgdHlwZUJpdHMpOyB9CiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0
aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEluaXRpYWxpemF0aW9uTW9kZT4o
KG1fb3BlcmFuZCAmIGluaXRpYWxpemF0aW9uQml0cykgPj4gaW5pdGlhbGl6YXRpb25TaGlmdCk7
IH0KICAgICBSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFJlc29sdmVNb2RlPigobV9vcGVyYW5kICYgbW9kZUJpdHMpID4+IG1vZGVTaGlmdCk7IH0K
KyAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZCAmIGlzU3Ry
aWN0Qml0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOyB9CiAgICAg
dW5zaWduZWQgb3BlcmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZDsgfQogCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCA1ZjlmODVlMWVjZGM4MTM0N2Q4OTc0MDZlNjIx
MTRkMDY1NDcyNzkzLi42NmNjNzUwNzM5MGJhNDFlMDg4OWNkNmI2YzUwMGU3NmIwMjE2MGI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAg
LTY4LDcgKzY4LDcgQEAgYm9vbCBjYWxsU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIKICAgICBHZXR0ZXJTZXR0ZXIq
IGdldHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwog
CiAgICAgaWYgKGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSwg
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsIGVjbWFNb2RlLmlzU3RyaWN0KCksIFJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKIAogICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmotPnNl
dHRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDIwMDMxOTI5MGYwYmUwZjk3MzE0MWJmZTk0
OTlmM2JhZTg5Nzg4NjIuLjE0ZjdmYWI1YzNkNGVhYTg3OTQyYmNmMzMyYTQ1ZjFjNTA2ZGFlN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29u
dGV4dFR5cGUpCitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1LDE1ICs0NSwxNCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iagogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVh
cCkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5TdHJp
Y3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2
YWxDb250ZXh0VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEluZGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+Zmlu
aXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJT
dHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFy
c2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAg
ICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xv
YmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAgICAgCiAgICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVu
bGlua2VkRXZhbENvZGVCbG9jaygKLSAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUt
PnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29u
dGV4dFR5cGUpOworICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCks
IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9y
LCBldmFsQ29udGV4dFR5cGUpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIo
KSkKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFs
T2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVy
cm9yLm1lc3NhZ2UoKSk7CkBAIC02OCw4ICs2NywxMCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
KiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2Jh
bE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vKQorY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFs
c2U7Citjb25zdGV4cHIgYm9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CitJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFs
T2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmlu
ZGV4IGMxOTkyZmRiMWE0MjUwNTRhZTliYzQ1NzUxMjhlNmY1MDg2Y2E5YmMuLjQ5OGI1Yzg3MDk4
YWIzNzQ3OTdhMjViZjQ4MTYzN2NmYmI5MmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMx
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUm
LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENv
bnRleHRUeXBlKTsKIHByaXZhdGU6Ci0gICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZl
ZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlw
ZSk7CisgICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNv
dXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgRXZhbENvbnRleHRUeXBlKTsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUpID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJkYjJl
NTc3MDJiM2NiYzM2OTkzNjlkNzdjOTQzMzBkNC4uYjE5MWU4NGZlZTFmYTcxMzMxYTNmMmNjMjM4
OGQ1ZjRhNTJkODMwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dD
YXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewog
ICAgIEFTU0VSVCghaXNDZWxsKCkpOwogCi0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUp
CisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAog
ICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKQEAgLTE4OSw3ICsxODksNyBAQCBib29s
IEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eQogCiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXRE
aXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKQotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxP
YmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2Rl
IDogTm90U3RyaWN0TW9kZSkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNT
dHJpY3RNb2RlKCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsK
IAogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBncywgYXR0cmlidXRl
cyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1
ZSgpLCB2YWx1ZSk7CkBAIC00MzQsNCArNDM0LDEyIEBAIE5FVkVSX0lOTElORSB2b2lkIGVuc3Vy
ZVN0aWxsQWxpdmVIZXJlKEpTVmFsdWUpCiB9CiAjZW5kaWYKIAordm9pZCBFQ01BTW9kZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1N0cmljdCgpKQorICAgICAg
ICBvdXQucHJpbnQoIlN0cmljdE1vZGUiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgi
Tm90U3RyaWN0TW9kZSIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBkZWI2NDAyNTMwZWI1OGJmNTBkMGQ2
NzBlZDE2YmM1NDhiN2Y5MjY5Li45MjY5OTAwMzE3MjMzMzJiMGRkNTFkMmU2OWRkN2UyNDdmNGRi
MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC04
MCw4ICs4MCwzMSBAQCB1c2luZyBXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3QgPSB0eXBlbmFtZSBz
dGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtubwogICAgIER1bWJWYWx1ZVRyYWl0
czxUPiwgRHVtYlB0clRyYWl0czxUPgogPjo6dHlwZTsKIAotZW51bSBQcmVmZXJyZWRQcmltaXRp
dmVUeXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OwotZW51
bSBFQ01BTW9kZSB7IFN0cmljdE1vZGUsIE5vdFN0cmljdE1vZGUgfTsKK2VudW0gUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSA6IHVpbnQ4X3QgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJl
ZmVyU3RyaW5nIH07CisKK3N0cnVjdCBFQ01BTW9kZSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IFN0cmljdE1vZGUgPSAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTbG9w
cHlNb2RlID0gMTsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgZnJv
bUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBFQ01BTW9kZShieXRlKTsgfQorICAgIHN0YXRp
YyBjb25zdGV4cHIgRUNNQU1vZGUgc3RyaWN0KCkgeyByZXR1cm4gRUNNQU1vZGUoU3RyaWN0TW9k
ZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVDTUFNb2RlIHNsb3BweSgpIHsgcmV0dXJuIEVD
TUFNb2RlKFNsb3BweU1vZGUpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTdHJpY3Qo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFN0cmljdE1vZGU7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgRUNN
QU1vZGUodWludDhfdCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdmFsdWUgPT0gU3RyaWN0TW9kZSB8fCBtX3ZhbHVlID09IFNsb3BweU1v
ZGUsIG1fdmFsdWUpOworICAgIH0KKworICAgIHVpbnQ4X3QgbV92YWx1ZTsKK307CiAKIGVudW0g
Y2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZDsKIHN0cnVjdCBDYWxsRGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDU1M2QxNmY1NjkyNTljZjgyM2I5Njg2
OGZkMDkwYjdmMmU3MDhiMjAuLmE0NzRlN2FlNTI3NWFjNzY4NjQ4MjM2ZjY2ZmQ0MjhhZmRlN2Ux
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1CiAKIEpTVmFsdWUgSlNDZWxsOjp0b1Ro
aXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNt
YU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIGNlbGwt
PnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDA5YWJhZTM4YmUwZmUzNDZmZDVkMzhiMjJiZGE0N2Jm
OWU2NmNhMzUuLjUxOTAzY2E3ODcxZDM3MmUyNmI4ZWNlMGUzYWUwYTNmMTQ2Yjg1OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03NSw3ICs3
NSw3IEBAIFN0cnVjdHVyZSogSlNGdW5jdGlvbjo6c2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4
cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgYm9vbCBpc0J1aWx0aW4gPSBleGVj
dXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Fycm93
RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YXJyb3dGdW5jdGlvblN0
cnVjdHVyZShpc0J1aWx0aW4pOwotICAgIGlmIChleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkK
KyAgICBpZiAoZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+c3RyaWN0RnVuY3Rpb25TdHJ1Y3R1cmUoaXNCdWlsdGluKTsKICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5zbG9wcHlGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwog
fQpAQCAtNDMwLDcgKzQzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdl
dHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBp
ZiAoIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlm
ICghZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGdW5jdGlv
bi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIl9zKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCmluZGV4IDliYThjNzBkNzZhNzQyZWViNTcxNjc4Y2M5M2RiYWNiNDc5Mzk0
NGUuLmNhOTQ4OWMwZTBlZmRjODZiMGY0MjJmZjI4ODZlZjQ4ZDE5M2E5MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKQEAgLTUwNyw3ICs1MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7CiAKICAgICBTb3VyY2VP
cmlnaW4gc291cmNlT3JpZ2luID0gY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwot
ICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKKyAgICBF
dmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC03MTQsNyArNzE0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1v
ZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlKSk7CiAKQEAgLTczNSw3ICs3MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNQcm90b1NldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBP
YmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMjVkZmY1MzMzNzg5MTQyOGU2MmZh
OTUxOWRlMTRhNzE5NDRkNGI3OC4uZGFjNzIzZWMwYzkzYTVkNjYzOThlYzg5ODA0Y2I3ZjE0OTcy
M2UwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAt
ODEwLDcgKzgxMCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5CiAgICAgICAgICAgICAgICAg
aWYgKCF0aGlzLT5zdHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAg
ICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZzZXQpOwogCi0gICAgICAgICAg
ICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFs
dWUoKSwgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0
cmljdE1vZGUpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbFNldHRlcihnbG9i
YWxPYmplY3QsIHNsb3QudGhpc1ZhbHVlKCksIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSk7CiAgICAgICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CkBAIC0xODE4LDcgKzE4MTgsNyBAQCBib29s
IEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBp
bW11dGFibGUgcHJvdG90eXBlIG9iamVjdCJfcyk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1ldGhv
ZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkgPT0g
dGhpcyk7CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDZkNWFiNjgyYzY4
MzkxNGY2OWYzZTVjMjI4Mzg0ZmVmZTQ2NTc3YzguLmIzYzI3MjAyMjgwNmI4MTE0MzU3ZDgxZGU5
ZjNiNWZjMTAzNTRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
Y3BwCkBAIC00MTEsNyArNDExLDcgQEAgU3ltYm9sVGFibGUqIEpTU2NvcGU6OnN5bWJvbFRhYmxl
KFZNJiB2bSkKIAogSlNWYWx1ZSBKU1Njb3BlOjp0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7Ci0gICAgaWYgKGVjbWFNb2Rl
ID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBh
YWVlOGVlN2E3N2VlYTZkZWZjNzU3YTg3ZDIzYjNlY2JhODZmMjFmLi4wZjIwN2EzYjY4NmFlYTdi
NTdkNDk1Y2Q3MDI5YWQ4YTgzODZkYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0
b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogCiBKU1ZhbHVlIEpT
U3RyaW5nOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkK
KyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAg
cmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0LCBhc1N0cmluZyhjZWxsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IDY5NzZmNzA1ZDM0MDRlMzdhMjFkODkyYjEyM2Ni
YzM4MDQyMzZkNWIuLjUzNTIzNzE4ZGM5YjlkMjIxMmI4YjgyMTE3NjM2OGY0ODQyMTgyYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBA
IC05MzMsNyArOTMzLDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2Uo
UGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5
Il9zOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChv
YmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpIDogZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChv
YmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpIDogZmFsc2UpOwogICAgICAgICAgICAgICAgICAg
ICBvYmplY3RTdGFjay5sYXN0KCkucHV0KG1fZ2xvYmFsT2JqZWN0LCBpZGVudCwgbGFzdFZhbHVl
LCBzbG90KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuaAppbmRleCA0NjU0NjIwMDRmMzdlMjAxMmQ3MjE2OGM2MjA5ZTUwNTE3YzEyMDU1Li4wOTlk
ODk5YWQ1ZTYzYTc0MzM1OGUyYWJiMjBhYjM0ZjU5Yjk2MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFs
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1v
ZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9k
dWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4
dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDEwZjg4NzI1YWMwMDJkMjUz
YTljODYzNzFkNDUzOTg1MGRmY2FhMjkuLjQxNGNiOGNlZmRmZjgzMGY1N2JmZmQ4MjY5NDQ1MGEy
ZjM5Mzg5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxT
ZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVs
bFNldHRlckZ1bmN0aW9uLmNwcApAQCAtMzcsNiArMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNv
bnN0IENsYXNzSW5mbyBOdWxsU2V0dGVyRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShOdWxs
U2V0dGVyRnVuY3Rpb24pIH07CiAKIAorI2lmIEFTU0VSVF9FTkFCTEVECisKIGNsYXNzIEdldENh
bGxlclN0cmljdG5lc3NGdW5jdG9yIHsKIHB1YmxpYzoKICAgICBHZXRDYWxsZXJTdHJpY3RuZXNz
RnVuY3RvcigpCkBAIC01Miw3ICs1NCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
dmlzaXRvci0+Y29kZUJsb2NrKCk7Ci0gICAgICAgIG1fY2FsbGVySXNTdHJpY3QgPSBjb2RlQmxv
Y2sgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsKKyAgICAgICAgLy8gVGhpcyBkb2VzIG5v
dCB0YWtlIGludG8gYWNjb3VudCB0aGF0IHdlIG1pZ2h0IGhhdmUgYW4gc3RyaWN0IG9wY29kZSBp
biBhIG5vbi1zdHJpY3QgY29udGV4dCwgYnV0IHRoYXQncworICAgICAgICAvLyBvayBzaW5jZSB3
ZSBhc3NlcnQgYmVsb3cgdGhhdCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBuZXZlciBiZSBjYWxsZWQg
ZnJvbSBhbnkga2luZCBzdHJpY3QgY29udGV4dC4KKyAgICAgICAgbV9jYWxsZXJJc1N0cmljdCA9
IGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29u
dGV4dCgpOwogICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogICAgIH0KIApAQCAt
NzAsMTQgKzc0LDE2IEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KFZNJiB2bSwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIGl0ZXIuY2FsbGVySXNTdHJpY3QoKTsKIH0KIAor
I2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECisKIG5hbWVzcGFjZSBOdWxsU2V0dGVyRnVuY3Rpb25J
bnRlcm5hbCB7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJu
VW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBpZiAoY2FsbGVySXNTdHJpY3Qodm0s
IGNhbGxGcmFtZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5
IGEgZ2V0dGVyIl9zKSk7CisjaWYgIUFTU0VSVF9FTkFCTEVECisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisjZW5kaWYKKyAgICBB
U1NFUlQoIWNhbGxlcklzU3RyaWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4IGMw
NTcxMmIwYTQ1YTFlMGEwZTZlYjM2NmZiZjQzNDNkZjI0ODZmOTYuLjZkYWE3YjRjNmJiNWFjMjk4
NDI5MWUzOGJiMjY5OGZiNTA2MmZmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtODAsNyArODAsNyBAQCBPYmplY3RQcm90
b3R5cGUqIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpOwogICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChn
bG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTkyLDcgKzkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmEKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTEyNCw3
ICsxMjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lz
UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIGlmICghY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmYWxzZSkpOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2Vw
dGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQpAQCAtMTQ4
LDcgKzE0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5j
RGVmaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBK
U1ZhbHVlIGdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CkBAIC0xNzYsNyArMTc2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgc2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmlj
dCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTIzNCw3ICsy
MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1
cFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKQEAgLTI2Nyw3ICsyNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xvYmFsT2JqZWN0KgogICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhCiAgICAgLy8gMi4gSW52b2tlKFYsICJ0b1N0cmluZyIpCiAKICAgICAvLyBM
ZXQgTyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3QgcGFzc2luZyB0aGUgdGhpcyB2
YWx1ZSBhcyB0aGUgYXJndW1lbnQuCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOwor
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gTGV0IHRvU3RyaW5n
IGJlIHRoZSBPLltbR2V0XV0oInRvU3RyaW5nIiwgVikKQEAgLTMxMyw3ICszMTMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3Ry
aWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNWYWx1ZS5pc1VuZGVmaW5lZCgpID8gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVj
dFN0cmluZygpIDogdm0uc21hbGxTdHJpbmdzLm51bGxPYmplY3RTdHJpbmcoKSk7CiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cAppbmRleCBhOGYwYjVmODk5NDJiMzdkYWU5ZTdhMzAyOTJkNDE4ZmI4N2U4OTMzLi4yYjMyZjVh
MDRhMjAxMjM2YTk3YmJhZWRjNDM0NjJjZDI4OGUzMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRp
ZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICBBU1NFUlQoJmdsb2JhbE9iamVjdC0+dm0o
KSA9PSAmdm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RN
b2RlIHN0cmljdE1vZGUgPSBpc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3Ry
aWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CisgICAgSlNQYXJzZXJTdHJpY3RN
b2RlIHN0cmljdE1vZGUgPSBpc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2Rl
OjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRl
ZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrID0gdm0uY29kZUNhY2hlKCktPmdldFVubGlua2VkUHJvZ3JhbUNv
ZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSgpLCBzdHJpY3RNb2RlLCBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIGVycm9yKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBKU09iamVjdCogUHJvZ3Jh
bUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqCiAgICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50LT5oYXNQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGVudHJ5LmtleS5nZXQoKSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgICAg
ICAgICAgaWYgKGhhc1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVu
dHJ5LnZhbHVlLmlzQ29uc3QoKSAmJiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxk
VGhyb3coKSAmJiAhaXNTdHJpY3RNb2RlKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAmJiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9u
U2hvdWxkVGhyb3coKSAmJiAhaXNJblN0cmljdENvbnRleHQoKSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gV2Ugb25seSBhbGxvdyAiY29uc3QiIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbnMgdW5k
ZXIgdGhpcyBzZXR0aW5nLgogICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgd2Ug
ZG9uJ3QgImxldCIgdmFyaWFibGVzIHRvIGJlIG92ZXJyaWRkZW4gYnkgImNvbnN0IiB2YXJpYWJs
ZXMuCiAgICAgICAgICAgICAgICAgICAgIGlmIChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmlz
Q29uc3RWYXJpYWJsZShlbnRyeS5rZXkuZ2V0KCkpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIEpTT2Jq
ZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogbGV4aWNhbERlY2xhcmF0aW9ucykgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAmJiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hv
dWxkVGhyb3coKSAmJiAhaXNTdHJpY3RNb2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9iYWxDb25zdFJlZGVjbGFyYXRpb25T
aG91bGRUaHJvdygpICYmICFpc0luU3RyaWN0Q29udGV4dCgpKSkgewogICAgICAgICAgICAgICAg
IGlmIChzeW1ib2xUYWJsZS0+Y29udGFpbnMobG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCkpKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDI5Y2EwMTMy
MDU2MWIxNDZhNjI5YzZmYjVmYTE4OGZmNThjM2RiMWYuLmI4NzE1YWE3MmJiY2I3MzM5ZDZlMzQx
M2FjNTljNzQ0MTE3YjgyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1v
ZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlBy
b2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6
Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJl
dHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBl
KCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQogCiAgICAgVGVtcGxhdGVPYmpl
Y3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBiMDdlMGEwMjkzMzI4MjYxMDM2
ZjQxMTA2ZWVlZTllNWY5MGM2NjYwLi42ZDExYjQxYmE0MDYxODE1NTIyZGFiM2ViZmUzMWM3NzZl
N2VlNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3Qu
Y3BwCkBAIC01NDcsNyArNTQ3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcGVyZm9ybVByb3h5Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwotICAg
IGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZTo6U3RyaWN0TW9kZSkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkp
KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGFyZ0FycmF5KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50
cy5oYXNPdmVyZmxvd2VkKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCBhcHBseU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKaW5kZXggMTA2Y2YyNWY2MzFmMDQxYjliYzYzMTk0
MDBmNDY2N2IwN2IzOWNmYy4uMGRkNDRlY2I4NDM3MWQ0NzczNDYwY2Q0YzBhYWU1NWZlM2NkMjMy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFi
bGUuaApAQCAtNjAsMTIgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNFdmFsKCkgY29u
c3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEV2YWxGZWF0dXJlOyB9CiAgICAgYm9vbCB1c2VzQXJn
dW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0K
ICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJy
b3dGdW5jdGlvbkNvbnRleHQ7IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RNb2RlRmVhdHVyZTsgfQogICAgIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJp
dmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsgfQogICAgIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFdmFsQ29u
dGV4dFR5cGU+KG1fZXZhbENvbnRleHRUeXBlKTsgfQorICAgIGJvb2wgaXNJblN0cmljdENvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KIAot
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBT
dHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsgfQotICAgICAgICAKICAgICB2b2lkIHNldE5ldmVy
SW5saW5lKGJvb2wgdmFsdWUpIHsgbV9uZXZlcklubGluZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBz
ZXROZXZlck9wdGltaXplKGJvb2wgdmFsdWUpIHsgbV9uZXZlck9wdGltaXplID0gdmFsdWU7IH0K
ICAgICB2b2lkIHNldE5ldmVyRlRMT3B0aW1pemUoYm9vbCB2YWx1ZSkgeyBtX25ldmVyRlRMT3B0
aW1pemUgPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAppbmRleCA4NWMxY2YzNDMzODE4NDc4ODM4ODQ1NmVi
MzZhZWEyZmZiNjM0MWZhLi4zZmQ2MDA2ZTFlODQ1ZmFlZWQyNmQwZTcyODNjNTNmNmMxMGYzMTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZh
bHVlTWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIGJvb2wgU3BhcnNlQXJyYXlFbnRyeTo6
cHV0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFy
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZh
bHVlLCBzaG91bGRUaHJvdyA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gRUNNQU1vZGU6OnN0cmljdCgpIDog
RUNNQU1vZGU6OnNsb3BweSgpKSk7CiB9CiAKIEpTVmFsdWUgU3BhcnNlQXJyYXlFbnRyeTo6Z2V0
Tm9uU3BhcnNlTW9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMWJiNWNkZmZhNzZhNzdkZTIyNDNjYjYyMWMyMjQ1
YmI4ZTA1MTJkYy4uNTRkMWM5ZDI2ZTBlOTQ1MDI3ZGFlNDYxZDdhMGEwYzg3Y2U0ODNiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApA
QCAtNjI2LDcgKzYyNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RP
TVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2VCb2R5KEpTCiAKIHRlbXBsYXRlPD4g
aW5saW5lIEpTRE9NV2luZG93KiBJRExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKIHsK
LSAgICByZXR1cm4gdG9KU0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNhbGxG
cmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1v
ZGUpKTsKKyAgICByZXR1cm4gdG9KU0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCks
IGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
RUNNQU1vZGU6OnNsb3BweSgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCmluZGV4IDA5Mjg1MTc2M2NhMGQxYWNh
MWJjNzM0NjUzNTBiNmUyYzBlZWU1MDYuLjM3NjhiZjI5MWM1OWRhZTg5OWRiMGYxNTBhMWIwY2Ew
OGM3ZGMyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRU
YXJnZXRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0Q3VzdG9tLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgICAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBhdXRvIHRoaXNPYmplY3Qg
PSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpOb3RTdHJpY3RNb2RlKSk7CisgICAgICAgIGF1dG8gdGhp
c09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9U
aGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiRXZlbnRUYXJn
ZXQiLCBvcGVyYXRpb25OYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4OTIwM2ZkZDk1Y2Y3MDJjNzZiMDA1OTFm
YjdiNzc1NDY2ZjQ3MTY1Li5lMjNjMWU4ZmNkYWYxZTdlYmUwMmE5NjcwZWRmZjk5MWJjNGJlNmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtNDU5MCw3ICs0NTkwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGRlY29kZWRU
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVuY3Rpb24odm0sIGRlY29kZWRUaGlzVmFs
dWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC00NjA2LDcgKzQ2MDYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogCiAgICAgICAgICMgRklYTUU6IE1ha2UgY29uc2lzdGVudCBJRExBdHRyaWJ1dGU8Pjo6
Y2FzdCBhbmQgSURMT3BlcmF0aW9uPD46OmNhc3QgaW4gY2FzZSBvZiBDdXN0b21Qcm94eVRvSlNP
YmplY3QuCiAgICAgICAgIG15ICRjYXN0aW5nRnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gInRvJHtjbGFzc05hbWV9IiA6
IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOwotICAgICAgICBteSAk
dGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlU
b0pTT2JqZWN0fSA/ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBOb3RTdHJpY3RNb2RlKSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKKyAgICAg
ICAgbXkgJHRoaXNWYWx1ZSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3Rv
bVByb3h5VG9KU09iamVjdH0gPyAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNh
bEdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1
ZSgpIjsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAke2Ns
YXNzTmFtZX0qIElETE9wZXJhdGlvbjwke2NsYXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSlcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlvbihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgJHRoaXNWYWx1ZSk7XG4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYWZjMDliMGE4ZWI4ZWVlYTdhNDM3MzUy
M2MzMzExODFiMGNlZTljLi44NzZjYzhiODVjNjUzOGZkMDU2NmZhYzFlOTViZjNhYjZkY2YwNjI3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDMtMzEgIFRhZGV1IFphZ2FsbG8gIDx0emFn
YWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBD
bGFzc0RlY2xhcmF0aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
dGhlIHRlc3Qgc2luY2UgaXQgY29udGFpbmVkIGluY29ycmVjdCBjb2RlLgorCisgICAgICAgICog
anMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMv
c2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMuanM6CisKIDIwMjAtMDMtMzAg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgc2Nyb2xs
SW50b1ZpZXcoKSBlcnJvbmVvdXNseSBzY3JvbGxzIG5vbi1jb250YWluaW5nIGJsb2NrIHNjcm9s
bGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1l
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVz
LWV4cGVjdGVkLnR4dAppbmRleCA3ZjE0OTI0ZjNkM2FkNzY5ZDk5ODFiNDVjYWI0NmVlZWY5NzZk
NzVjLi44ODhjZDJkMjI1MmE4ZjM5Y2MzZjJlZTMwMTc0NmI5MDU4YmNhOWM4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLWV4cGVjdGVkLnR4
dApAQCAtNTYsOSArNTYsOSBAQCBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhv
ZCgnZm9vJywgMjE1KTsgKG5ldyBBKVsnZm9vJ10oKSBpcyAyMTUKIFBBU1MgQSA9IGNyZWF0ZUNs
YXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28nLCAyMTYpOyBCID0gY3JlYXRlQ2xhc3NXaXRoSW5z
dGFuY2VNZXRob2QoJ2JhcicsIDIxNyk7IFsobmV3IEEpWydmb28nXSgpLCAobmV3IEIpWydiYXIn
XSgpXSBpcyBbMjE2LCAyMTddCiBQQVNTIHggPSAyMTg7IGNsYXNzIEEgeyBbeCsrXSgpIHsgcmV0
dXJuIHg7IH0gfTsgKG5ldyBBKVsyMThdKCkgaXMgMjE5CiBQQVNTIHggPSB1bmRlZmluZWQ7IGNs
YXNzIEEgeyBbKHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSkuZm9v
KCkgaXMgMjIwCi1QQVNTIHggPSAyMjE7IGNsYXNzIEEgeyBbKHgxPXgpICYmIHgrK10oKSB7IHJl
dHVybiB4MTsgfSBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbKG5ldyBBKVsy
MjFdKCksIChuZXcgQSlbMjIyXSgpXSBpcyBbMjIxLCAyMjJdCitQQVNTIHZhciB4ID0gMjIxLCB4
MSwgeDI7IGNsYXNzIEEgeyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBbKHgyPXgp
ICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbKG5ldyBBKVsyMjFdKCksIChuZXcgQSlbMjIy
XSgpXSBpcyBbMjIxLCAyMjJdCiBQQVNTIHggPSAxOyBjbGFzcyBBIHsgWydmb28nICsgeCsrXSgp
IHsgcmV0dXJuIDIyMzsgfSBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI0OyB9IH07IFsobmV3
IEEpLmZvbzEoKSwgKG5ldyBBKS5mb28yKCldIGlzIFsyMjMsIDIyNF0KLVBBU1MgeCA9IDE7IGNs
YXNzIEEgeyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IFsoeDE9eCkgJiYgJ2Zvbycg
KyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgKG5ldyBBKS5mb28yKCldIGlzIFsy
LCAzLCAyMjZdCitQQVNTIHZhciB4ID0gMSwgeDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyArK3hdKCkg
eyByZXR1cm4gMjI1OyB9IFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9
IH07IFt4MSwgeCwgKG5ldyBBKS5mb28yKCldIGlzIFsyLCAzLCAyMjZdCiAKIFN0YXRpYyBtZXRo
b2RzIHdpdGggY29tcHV0ZWQgbmFtZXMKIFBBU1MgY2xhc3MgQSB7IHN0YXRpYyBbJ2EnICsgJ2In
XSgpIHsgcmV0dXJuIDMxMTsgfSB9OyBBLmFiKCkgaXMgMzExCkBAIC02OSw5ICs2OSw5IEBAIFBB
U1MgQSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE1KTsgQVsnZm9vJ10o
KSBpcyAzMTUKIFBBU1MgQSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE2
KTsgQiA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnYmFyJywgMzE3KTsgW0FbJ2Zvbydd
KCksIEJbJ2JhciddKCldIGlzIFszMTYsIDMxN10KIFBBU1MgeCA9IDIxODsgY2xhc3MgQSB7IHN0
YXRpYyBbeCsrXSgpIHsgcmV0dXJuIHg7IH0gfTsgQVsyMThdKCkgaXMgMjE5CiBQQVNTIHggPSB1
bmRlZmluZWQ7IGNsYXNzIEEgeyBzdGF0aWMgWyh4PTIyMCkgJiYgJ2ZvbyddKCkgeyByZXR1cm4g
eDsgfSB9OyBBLmZvbygpIGlzIDIyMAotUEFTUyB4ID0gMjIxOyBjbGFzcyBBIHsgc3RhdGljIFso
eDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRpYyBbKHgyPXgpICYmIHgrK10oKSB7
IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgpXSBpcyBbMjIxLCAyMjJdCitQQVNT
IHZhciB4ID0gMjIxLCB4MSwgeDI7IGNsYXNzIEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkg
eyByZXR1cm4geDE7IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07
IFtBWzIyMV0oKSwgQVsyMjJdKCldIGlzIFsyMjEsIDIyMl0KIFBBU1MgeCA9IDE7IGNsYXNzIEEg
eyBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyMzsgfSBzdGF0aWMgWydmb28nICsg
eCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBbQS5mb28xKCksIEEuZm9vMigpXSBpcyBbMjIzLCAy
MjRdCi1QQVNTIHggPSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVy
biAyMjU7IH0gc3RhdGljIFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9
IH07IFt4MSwgeCwgQS5mb28yKCldIGlzIFsyLCAzLCAyMjZdCitQQVNTIHZhciB4ID0gMSwgeDE7
IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMg
Wyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCBBLmZv
bzIoKV0gaXMgWzIsIDMsIDIyNl0KIAogSW5zdGFuY2UgbWV0aG9kcyB3aXRoIGR1cGxpY2F0ZWQg
bmFtZXMKIFBBU1MgY2xhc3MgQSB7IGFiKCkgeyByZXR1cm4gNDAxIH0gYWIoKSB7IHJldHVybiA0
MDI7IH0gfTsgKG5ldyBBKS5hYigpIGlzIDQwMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMuanMgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy5qcwppbmRleCAxNDJiYjA1
YjNiNDA5ZDkwMTJhYTQ5YWQ0MjUyM2RlOTcxNTNjNmE2Li4xYmJlOTAzNTg2ZTg1NDcyMjRkZDNi
YmNmNGE5MGVmODI0NDNiOTA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy5qcwpAQCAtNTcsOSArNTcsOSBAQCBz
aG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28nLCAyMTUpOyAo
bmV3IEEpWydmb28nXSgpIiwgIjIxNQogc2hvdWxkQmUoIkEgPSBjcmVhdGVDbGFzc1dpdGhJbnN0
YW5jZU1ldGhvZCgnZm9vJywgMjE2KTsgQiA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9k
KCdiYXInLCAyMTcpOyBbKG5ldyBBKVsnZm9vJ10oKSwgKG5ldyBCKVsnYmFyJ10oKV0iLCAiWzIx
NiwgMjE3XSIpOwogc2hvdWxkQmUoInggPSAyMTg7IGNsYXNzIEEgeyBbeCsrXSgpIHsgcmV0dXJu
IHg7IH0gfTsgKG5ldyBBKVsyMThdKCkiLCAiMjE5Iik7CiBzaG91bGRCZSgieCA9IHVuZGVmaW5l
ZDsgY2xhc3MgQSB7IFsoeD0yMjApICYmICdmb28nXSgpIHsgcmV0dXJuIHg7IH0gfTsgKG5ldyBB
KS5mb28oKSIsICIyMjAiKTsKLXNob3VsZEJlKCJ4ID0gMjIxOyBjbGFzcyBBIHsgWyh4MT14KSAm
JiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0g
fTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0oKV0iLCAiWzIyMSwgMjIyXSIpOworc2hv
dWxkQmUoInZhciB4ID0gMjIxLCB4MSwgeDI7IGNsYXNzIEEgeyBbKHgxPXgpICYmIHgrK10oKSB7
IHJldHVybiB4MTsgfSBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbKG5ldyBB
KVsyMjFdKCksIChuZXcgQSlbMjIyXSgpXSIsICJbMjIxLCAyMjJdIik7CiBzaG91bGRCZSgieCA9
IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjIzOyB9IFsnZm9vJyArIHgr
K10oKSB7IHJldHVybiAyMjQ7IH0gfTsgWyhuZXcgQSkuZm9vMSgpLCAobmV3IEEpLmZvbzIoKV0i
LCAiWzIyMywgMjI0XSIpOwotc2hvdWxkQmUoInggPSAxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4
XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIy
NjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSIsICJbMiwgMywgMjI2XSIpOworc2hvdWxk
QmUoInZhciB4ID0gMSwgeDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1
OyB9IFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwg
KG5ldyBBKS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7CiAKIGRlYnVnKCcnKTsKIGRlYnVnKCdT
dGF0aWMgbWV0aG9kcyB3aXRoIGNvbXB1dGVkIG5hbWVzJyk7CkBAIC03Miw5ICs3Miw5IEBAIHNo
b3VsZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTUpOyBBWydm
b28nXSgpIiwgIjMxNSIpOwogc2hvdWxkQmUoIkEgPSBjcmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRo
b2QoJ2ZvbycsIDMxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2JhcicsIDMx
Nyk7IFtBWydmb28nXSgpLCBCWydiYXInXSgpXSIsICJbMzE2LCAzMTddIik7CiBzaG91bGRCZSgi
eCA9IDIxODsgY2xhc3MgQSB7IHN0YXRpYyBbeCsrXSgpIHsgcmV0dXJuIHg7IH0gfTsgQVsyMThd
KCkiLCAiMjE5Iik7CiBzaG91bGRCZSgieCA9IHVuZGVmaW5lZDsgY2xhc3MgQSB7IHN0YXRpYyBb
KHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IEEuZm9vKCkiLCAiMjIwIik7Ci1z
aG91bGRCZSgieCA9IDIyMTsgY2xhc3MgQSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJl
dHVybiB4MTsgfSBzdGF0aWMgWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0Fb
MjIxXSgpLCBBWzIyMl0oKV0iLCAiWzIyMSwgMjIyXSIpOworc2hvdWxkQmUoInZhciB4ID0gMjIx
LCB4MSwgeDI7IGNsYXNzIEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7
IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFtBWzIyMV0oKSwg
QVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKIHNob3VsZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IHN0
YXRpYyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjIzOyB9IHN0YXRpYyBbJ2ZvbycgKyB4Kytd
KCkgeyByZXR1cm4gMjI0OyB9IH07IFtBLmZvbzEoKSwgQS5mb28yKCldIiwgIlsyMjMsIDIyNF0i
KTsKLXNob3VsZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2ZvbycgKyArK3hdKCkgeyBy
ZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIy
NjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSIsICJbMiwgMywgMjI2XSIpOworc2hvdWxkQmUoInZh
ciB4ID0gMSwgeDE7IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIy
NTsgfSBzdGF0aWMgWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsg
W3gxLCB4LCBBLmZvbzIoKV0iLCAiWzIsIDMsIDIyNl0iKTsKIAogZGVidWcoJycpOwogZGVidWco
J0luc3RhbmNlIG1ldGhvZHMgd2l0aCBkdXBsaWNhdGVkIG5hbWVzJyk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYyMDNlNWM1ZWMzNDc3
ZGQ1ODg1NzU4OTFmYjdkNDMwN2FkNzU1NjEuLjg0NDBlZThjNTQ5ZDg3OTliOWFjZDkwZTY2MjFk
YjJlNDVmNWMxYzkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDMtMzEgIFRhZGV1IFphZ2FsbG8gIDx0
emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhp
biBDbGFzc0RlY2xhcmF0aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5
NDU4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qczogQWRkZWQuCisgICAg
ICAgIChmLnRyeS5jKToKKyAgICAgICAgKGYpOgorCiAyMDIwLTAzLTMwICBSb3NzIEtpcnNsaW5n
ICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBSZWdFeHAucHJvdG90eXBlLmV4
ZWMgbXVzdCBhbHdheXMgYWNjZXNzIGxhc3RJbmRleApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9z
dXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2VhNjg0Nzlj
OTczZjNjNjIwYWNmYmYxZjAxOWFiZWRhOTJhMmVlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMKQEAgLTAsMCArMSw1
OSBAQAorZnVuY3Rpb24gZigpIHsKKyAgICB7CisgICAgICAgIHZhciBlcnJvcjsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGNsYXNzIGMgZXh0ZW5kcyhkID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHt9OworICAgICAgICAgICAgfSwgZCkge30KKyAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJDYW4ndCBmaW5kIHZhcmlhYmxlOiBkIikK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSBy
ZWZlcmVuY2UgZXJyb3IiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIHZhciBlcnJvcjsKKyAg
ICAgICAgdmFyIG9iaiA9IHt9OworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAn
eCcsIHsgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6IDEgfSk7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMoZGVsZXRlIG9iai54LCAoKT0+e30pIHt9CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghZXJyb3IgfHwgZXJyb3IubWVzc2FnZSAhPSAiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IHNob3VsZCBoYXZl
IHRocm93biBhIHR5cGUgZXJyb3IiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIHZhciBlcnJv
cjsKKyAgICAgICAgdmFyIG9iaiA9IHt9OworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
b2JqLCAneCcsIHsgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6IDEgfSk7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMoZXZhbCgnZGVsZXRlIG9iai54JyksIGNs
YXNze30pIHt9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghZXJyb3IgfHwgZXJyb3IubWVzc2FnZSAhPSAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJU
ZXN0IHNob3VsZCBoYXZlIHRocm93biBhIHR5cGUgZXJyb3IiKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIHZhciBvID0ge307CisgICAgICAgIG8uX19kZWZpbmVHZXR0ZXJfXygieCIsIGZ1bmN0
aW9uICgpIHsgcmV0dXJuIDQyOyB9KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsYXNz
IGMgZXh0ZW5kcyAoby54ID0gMTMsIGNsYXNzIHsgfSkgeyB9CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZXJy
b3IgfHwgZXJyb3IubWVzc2FnZSAhPSAiQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IHNob3VsZCBoYXZl
IHRocm93biBhIHR5cGUgZXJyb3IiKTsKKyAgICB9Cit9CisKKyBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspCisgICAgZigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395601</attachid>
            <date>2020-04-06 12:40:11 -0700</date>
            <delta_ts>2020-04-06 13:09:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200406124011.patch</filename>
            <type>text/plain</type>
            <size>259009</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjZmOGI0YWU1MDEyMzE4NjcyM2QwMmI3OTAyODM4ODk1MjlkNGE2Li4xZmNjOTVmOTM0MjBlZjdk
ZWU5M2Y3MDAyNDg1MTljYzU1MmQwYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODQgQEAKKzIwMjAtMDQtMDYgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0
IHN0cmljdCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQg
d2hlbiBlbWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0
IHdlIGNhbiBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0
IG11c3QgYmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUg
YmxvY2sgaXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9u
bHkgdGVuCisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5l
c3MsIHNvIGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVz
LgorICAgICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBi
YXNlbGluZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjppc0tub3duQ2VsbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhl
Y3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnVzZXNFdmFsIGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKEpT
Qzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5
SWRGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJl
Y3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmlzRGlyZWN0IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZEZsYWdzOjplY21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRGbGFnczo6UHV0QnlJZEZsYWdzKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
Ojppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZy
b21TY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29w
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVz
aEZ1bmN0aW9uTmFtZVNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRUb1RoaXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZWNtYU1vZGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJpY3RNb2RlU2NvcGU6OlN0cmljdE1vZGVTY29wZSk6CisgICAgICAgIChKU0M6OlN0
cmljdE1vZGVTY29wZTo6flN0cmljdE1vZGVTY29wZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAo
SlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBj
b25zdCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZv
cik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNFQ01BTW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdPcEluZm8uaDoKKyAgICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVj
aXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
SW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2wpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgICogaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgICogaml0L0pJVENh
bGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJ
ZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1
dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQv
UmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlRGVsZXRlQnkpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQdXNo
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSW5kZXhP
Zik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6
OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5
cGU+OjplbmNvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Om1hdGVyaWFsaXplU3BlY2lhbHMpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hl
UHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2Fj
aGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvRUNNQU1vZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcC4KKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmR1bXAg
Y29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQU1vZGUuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oLgorICAgICAgICAoSlNDOjpF
Q01BTW9kZTo6ZnJvbUJ5dGUpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6c3RyaWN0KToKKyAg
ICAgICAgKEpTQzo6RUNNQU1vZGU6OnNsb3BweSk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpp
c1N0cmljdCBjb25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjp2YWx1ZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkVDTUFNb2RlOjpFQ01BTW9kZSk6CisgICAgICAgICogcnVudGltZS9FdmFs
RXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUlu
Zm8gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogcnVudGltZS9HZXRQdXRJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0UHV0SW5mbzo6
ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9HZXRQdXRJbmZvLmg6CisgICAgICAgIChK
U0M6OkdldFB1dEluZm86OkdldFB1dEluZm8pOgorICAgICAgICAoSlNDOjpHZXRQdXRJbmZvOjpl
Y21hTW9kZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b1RoaXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJp
bWl0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9UaGlzKToKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpzZWxl
Y3RTdHJ1Y3R1cmVGb3JOZXdGdW5jRXhwKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2Fs
bGVyR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAoSlNDOjpnbG9iYWxG
dW5jUHJvdG9HZXR0ZXIpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRo
Q3ljbGVDaGVjayk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNTY29wZTo6dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFs
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNl
KToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAg
ICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpHZXRDYWxs
ZXJTdHJpY3RuZXNzRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6Ok51
bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsOjpjYWxsUmV0dXJuVW5kZWZpbmVkKToKKyAgICAgICAg
KiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3Rv
RnVuY1ZhbHVlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAg
ICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmpl
Y3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNM
b29rdXBHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIp
OgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk6Cisg
ICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6
ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cGVy
Zm9ybVByb3h5Q2FsbCk6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmg6Cisg
ICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmlzQXJyb3dGdW5jdGlvbkNvbnRleHQgY29u
c3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc0luU3RyaWN0Q29udGV4dCBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKwogMjAyMC0wMy0zMCAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgUmVnRXhwLnByb3RvdHlw
ZS5leGVjIG11c3QgYWx3YXlzIGFjY2VzcyBsYXN0SW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMGMxZTQy
YzFiNTRlN2U2OGI4MDZmY2U1MmJhOGUyOTJiYmExYTc4Li4xMTczYjlhYWI1Y2U3YjgxNjQzYWJk
MmE3M2ZjZDdiNmEyYmE1ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDQt
MDYgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTm90IHVz
aW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0aW9uIHN0YXRlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTc4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBKU1Rlc3RzLyBzdHJlc3Mvc3VwZXJjbGFzcy1leHBy
ZXNzaW9uLXN0cmljdG5lc3MuanMKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46
OmNhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0V2ZW50VGFyZ2V0Pjo6Y2FsbCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKToKKwogMjAyMC0wMy0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIE92ZXJyaWRlcyBvZiBBY3RpdmVET01PYmplY3Q6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIHNob3VsZCBub3QgbmVlZCB0byBxdWVyeSB0aGUgYmFzZSBjbGFzcydz
IGhhc1BlbmRpbmdBY3Rpdml0eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IGM5OTEwNTNhMTkxOWY4ZTFiYTRlYTk4Yjc3ZDhlMWE5
ZDFiN2RkZTguLmQ1NjViNDEyODllN2Y2ODYxZjhmOWY5YjdlYWRiMDkxNjk2ZWE0NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCkBAIC00
OCw3ICs0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5j
dGlvbjo6Y2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYo
Z2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxG
cmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpz
Q2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYo
anNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CiAKICAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0
YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpOwogICAgIFZlY3RvcjxK
U1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAwMmNlZGM3OTY2YmVjMGE1
M2E5YmMwMmE5ZjM3ODNlNzlmNzMyZTJmLi4wM2ExOGRjOTAzNmI2Njc4NDE5MmVmNTBjOTIwNDVl
ZDM1MzhiNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTIzLDcgKzUyMyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsCiAKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9iamVj
dCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmpl
Y3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmlj
dE1vZGUpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09i
amVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnNsb3BweSgpKSkpOwogICAgIAogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0ganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+KHRvSlMoZnVuY3Rpb25SZWYpKS0+Y2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
IGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBqc0Ns
YXNzLT5jYWxsQXNGdW5jdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHRSZWYuY3BwCmluZGV4IDIyMmE0ZWUyMGRjYmFkYjA3YjdiYzY1NGRjZjhhYTgwY2YyYzEyYmUu
LjI0MDE3OTE2ZTc1MTc2YjgzZTM1ZDllZDAyODgyODMyNTIxNmM3NWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBKU09i
amVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoSlNDb250ZXh0UmVmIGN0eCkKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CiAKLSAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0
TW9kZSkpKTsKKyAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnNsb3BweSgpKSkpOwogfQogCiBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRH
cm91cChKU0NvbnRleHRSZWYgY3R4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5
ZTBlZTFkZTllMzQ3OGMwZGEzMjg1M2NmMTZiZDIyNTcyYWMyYzJiLi4xZjk1Mjk2MmU3MzU2YmVh
YTg1NDdiMjcwMjgxNDhiOThjMmY3NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNzk4LDYgKzc5OCw3IEBACiAJCTE0NTBGQTFDMjM1N0JEQkUwMDkzQ0Q0RCAvKiBXYXNtRnVu
Y3Rpb25Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0QzVBRDZCMjJGMzNGQzAwMEYxRkI4MyAvKiBXYXNtRnVuY3Rpb25Db2RlQmxvY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDUw
RkExRjIzNTdCRUM5MDA5M0NENEQgLyogV2FzbUxMSW50VGllclVwQ291bnRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ1MEZBMUUyMzU3QkVDNDAw
OTNDRDREIC8qIFdhc21MTEludFRpZXJVcENvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDU3MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyog
U3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQ1NzIyODUxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDVGRjJDODI0M0JC
OUQ2MDA1NjlFNzEgLyogRUNNQU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0NUZGMkM3MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0NkMzODRC
MjE3N0FDREYwMDc5RjZEOSAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkQ1MkJFMjE3NjI5NTgwMDJEQjA4
NiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDcxNDgzMDIwRDMyM0QzMDA5MEU2MzAgLyogSlNXcmFw
cGVyTWFwVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDcxNDgyRjIwRDMyMzY1MDA5MEU2MzAgLyogSlNXcmFwcGVyTWFwVGVzdHMubW0gKi87
IH07CiAJCTE0NzM0MUNDMURDMDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3MzQxQ0IxREMwMkQ3
MjAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzMzYsNiArMzMzNyw4IEBACiAJCTE0NTM0ODU3MjI5
MTczN0YwMEIxQzJFQiAvKiB0ZXN0YXBpLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxp
c3QuZW50aXRsZW1lbnRzOyBwYXRoID0gdGVzdGFwaS5lbnRpdGxlbWVudHM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0NTcyMjg1MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cm9uZ0lubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ1QzUwN0YwRDlERjYzQjAwODhGNkI5IC8q
IENhbGxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxEYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NUZGMkM2MjQzQkI5OUEwMDU2OUU3MSAv
KiBFQ01BTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFQ01BTW9kZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NUZGMkM3MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFQ01BTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdSZWZDRi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNDZBQUIzNzBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZD
Ri5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdSZWZD
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NkIxNERCMTJFQjVCMTIwMDFC
RUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb25zZXJ2YXRpdmVSb290cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03MTA5LDYgKzcxMTIsOCBAQAogCQkJCUUzRkMyNTExMjI1NkVDRjQwMDU4MzUxOCAv
KiBEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLywKIAkJCQlBNzA0NDdFQjE3QTBCRDcw
MDBGNTg5OEUgLyogRHVtcENvbnRleHQuY3BwICovLAogCQkJCUE3MDQ0N0VDMTdBMEJENzAwMEY1
ODk4RSAvKiBEdW1wQ29udGV4dC5oICovLAorCQkJCTE0NUZGMkM2MjQzQkI5OUEwMDU2OUU3MSAv
KiBFQ01BTW9kZS5jcHAgKi8sCisJCQkJMTQ1RkYyQzcyNDNCQjk5QTAwNTY5RTcxIC8qIEVDTUFN
b2RlLmggKi8sCiAJCQkJRkUzMThGREQxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVj
SW50ZXJuYWxGdW5jdGlvbnMuY3BwICovLAogCQkJCUZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAv
KiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi8sCiAJCQkJMkFEMkVERkExOTc5
OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovLApAQCAtOTQyMCw2ICs5NDI1LDcg
QEAKIAkJCQlFMzVDQTE1NDFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0
dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0NDdFRTE3QTBCRDcwMDBGNTg5OEUgLyogRHVt
cENvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NUZGMkM4MjQzQkI5RDYwMDU2OUU3MSAv
KiBFQ01BTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0
IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJBODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTA4NkJDQTIxMjNERUZCMDAzRjI5MjkgLyogRW50cnlGcmFtZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzdiNjM4YmM0
MDExYzljZDQ0ZTE2Mjk5N2UwOTNjOGUwNGU0MjBhMi4uYzAwZTc4ODllODdiZDM0OTY4Y2FjMjZk
ZDFmOGJkMTQ5MzQwZmI2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNzYzLDYg
Kzc2Myw3IEBAIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCiBydW50aW1lL0Rpc2Fs
bG93Vk1SZWVudHJ5LmNwcAogcnVudGltZS9Eb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3Bw
CiBydW50aW1lL0R1bXBDb250ZXh0LmNwcAorcnVudGltZS9FQ01BTW9kZS5jcHAKIHJ1bnRpbWUv
RUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAKIHJ1bnRpbWUvRXJyb3IuY3BwCiBy
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCBkMzcyMzZmNDBhYTg5OTEyN2M3NDll
YmRiOTg2OTZjNzc4NWQ4Y2IzLi5kOTEwNjJjZjdhMzU0ZjA2YTJjNjJmNDRmNDE4MzQ0OTVkNjgz
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1
bXBlci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNz
LmgiCi0jaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA5ZjJhYmEzOWYy
Y2U3MDhkMzEzYjhkOTQwY2Y5NmZiYTQyZmNjOTRlLi5mZGFhYTY5NDVmZjBlOWQ1MTUxYWFhODlh
N2E5OTIwN2FjMWMyOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTI0OSw3ICsy
NDksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICAg
ICAgICAgICAgICBzY29wZSwgLy8gc2NvcGUKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5p
ZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKICAgICAgICAgICAgICAgICAgICAgb3BlcmFu
ZCwgLy8gdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZO
b3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxp
emF0aW9uKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhy
b3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24sIG1fYnl0ZWNvZGVHZW5lcmF0b3IuZWNtYU1vZGUoKSksIC8vIGluZm8KICAg
ICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZp
cnR1YWxSZWdpc3RlciB7IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4IH0pLCAvLyBz
eW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5z
Y29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKICAgICAgICAgICAgICAgICApOwpA
QCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigp
CiAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQsIC8vIGRzdAogICAgICAgICAgICAgICAgICAg
ICBzY29wZSwgLy8gc2NvcGUKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVy
SW5kZXgsIC8vIGlkZW50aWZpZXIKLSAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05v
dFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5v
dEluaXRpYWxpemF0aW9uKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZv
KERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9k
ZTo6Tm90SW5pdGlhbGl6YXRpb24sIG1fYnl0ZWNvZGVHZW5lcmF0b3IuZWNtYU1vZGUoKSksIC8v
IGluZm8KICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKICAgICAg
ICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZz
ZXQKICAgICAgICAgICAgICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0NjgwYzEyNmEwZjcyNzUzNmYx
YmUzN2M0ZS4uMWY1NjY5NGNlNzAwZmRlYmUxZmRjYmQwNDRmMmE4N2QwODhmN2VhMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0yNyw2
ICsyNyw3IEBAIHR5cGVzIFsKICAgICA6QmFzaWNCbG9ja0xvY2F0aW9uLAogICAgIDpCb3VuZExh
YmVsLAogICAgIDpEZWJ1Z0hvb2tUeXBlLAorICAgIDpFQ01BTW9kZSwKICAgICA6RXJyb3JUeXBl
LAogICAgIDpHZXRCeUlkTW9kZSwKICAgICA6R2V0QnlJZE1vZGVNZXRhZGF0YSwKQEAgLTE3NCw2
ICsxNzUsNyBAQCBvcCA6YXJndW1lbnRfY291bnQsCiBvcCA6dG9fdGhpcywKICAgICBhcmdzOiB7
CiAgICAgICAgIHNyY0RzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNN
QU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJ
RDogU3RydWN0dXJlSUQsCkBAIC01MjIsNiArNTI0LDcgQEAgb3AgOnB1dF9ieV9pZF93aXRoX3Ro
aXMsCiAgICAgICAgIHRoaXNWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0
eTogdW5zaWduZWQsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVj
bWFNb2RlOiBFQ01BTW9kZSwKICAgICB9CiAKIG9wIDpkZWxfYnlfaWQsCkBAIC01MjksNiArNTMy
LDcgQEAgb3AgOmRlbF9ieV9pZCwKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAg
ICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAor
ICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6Z2V0X2J5X3ZhbCwKQEAg
LTU0OCw2ICs1NTIsNyBAQCBvcCA6cHV0X2J5X3ZhbCwKICAgICAgICAgYmFzZTogVmlydHVhbFJl
Z2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1
ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKQEAg
LTU1OSw2ICs1NjQsNyBAQCBvcCA6cHV0X2J5X3ZhbF93aXRoX3RoaXMsCiAgICAgICAgIHRoaXNW
YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNN
QU1vZGUsCiAgICAgfQogCiBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCkBAIC01NjYsNiArNTcyLDcg
QEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIs
CiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0
dWFsUmVnaXN0ZXIsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLApAQCAtNTc2LDYg
KzU4Myw3IEBAIG9wIDpkZWxfYnlfdmFsLAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6cHV0
X2dldHRlcl9ieV9pZCwKQEAgLTc3OCw2ICs3ODYsNyBAQCBvcCA6Y2FsbF9ldmFsLAogICAgICAg
ICBjYWxsZWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgYXJnYzogdW5zaWduZWQsCiAgICAg
ICAgIGFyZ3Y6IHVuc2lnbmVkLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZv
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2
NTdlMmJiM2UyM2JhNzViNDY3MjAzMGFhYzM4ZjZmODUzYzI0OWY1Li5kYWVkZWNiNDlhOWI3NjRm
YWY0YTFjNGU3NmFmODVlNzFlZjViNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wQXNzdW1pbmdKSVRUeXBlKFByaW50U3RyZWFtJiBvdXQsIEpJVFR5cGUgaml0VHlwZSkgY29u
c3QKICAgICAgICAgb3V0LnByaW50KCIgKE5ldmVyRlRMT3B0aW1pemUpIik7CiAgICAgaWYgKG93
bmVyRXhlY3V0YWJsZSgpLT5kaWRUcnlUb0VudGVySW5Mb29wKCkpCiAgICAgICAgIG91dC5wcmlu
dCgiIChEaWRUcnlUb0VudGVySW5Mb29wKSIpOwotICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+
aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29u
dGV4dCgpKQogICAgICAgICBvdXQucHJpbnQoIiAoU3RyaWN0TW9kZSkiKTsKICAgICBpZiAobV9k
aWRGYWlsSklUQ29tcGlsYXRpb24pCiAgICAgICAgIG91dC5wcmludCgiIChKSVRGYWlsKSIpOwpA
QCAtNjE5LDcgKzYxOSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICAgICAgICAg
IEFTU0VSVCghaXNJbml0aWFsaXphdGlvbihieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6
YXRpb25Nb2RlKCkpKTsKICAgICAgICAgICAgIGlmIChieXRlY29kZS5tX2dldFB1dEluZm8ucmVz
b2x2ZVR5cGUoKSA9PSBMb2NhbENsb3N1cmVWYXIpIHsKLSAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZl
TW9kZSgpLCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25N
b2RlKCkpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
CkBAIC02MjcsOSArNjI3LDkgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAg
IFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5n
ZXQoKSwgYnl0ZWNvZGUubV9sb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRl
Y29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKIAotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0
SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1v
ZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYg
KG9wLnR5cGUgPT0gTW9kdWxlVmFyKQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0
SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENs
b3N1cmVWYXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7Cisg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29k
ZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xvc3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQ
dXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1v
ZGUoKSk7CiAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9
PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4
aWNhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKQogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNo
cG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCkBAIC02NjEsNyAr
NjYxLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIFJlc29sdmVPcCBv
cCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNv
ZGUubV9zeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5zY29wZURlcHRoKCksIHNjb3BlLCBpZGVudCwg
UHV0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgYnl0ZWNvZGUubV9nZXRQ
dXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1
dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBv
cC50eXBlLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAg
ICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dl
dFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpLCBieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAg
ICAgICAgICAgICBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8
fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7
CiAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9
PSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGQzYjA2YTg5MWFlZmM2Yzc5NGQ3NWUxYzBk
MDA0NmUxOTIzOGU4MjYuLmUxMTEzOWQ1YTM4NDM1YTA2ZGUyNjc3NWZmZjMxMDAxNWVjYzQ0Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIyMiw5
ICsyMjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBNYXRoSUNTdGF0cygpOwogCi0gICAg
Ym9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aXNTdHJp
Y3RNb2RlKCk7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Vu
bGlua2VkQ29kZS0+aXNDb25zdHJ1Y3RvcigpOyB9Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBj
b25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2Rl
OyB9CiAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29k
ZS0+Y29kZVR5cGUoKTsgfQogCiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+c2NyaXB0TW9kZSgpOyB9CkBAIC0yMzIsMTEg
KzIzMCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0luc3RhbGxlZFZNVHJhcEJyZWFrcG9pbnRz
KCkgY29uc3Q7CiAgICAgYm9vbCBpbnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoKTsKIAotICAgIGlu
bGluZSBib29sIGlzS25vd25Ob3RJbW1lZGlhdGUoVmlydHVhbFJlZ2lzdGVyIHJlZykKKyAgICBp
bmxpbmUgYm9vbCBpc0tub3duQ2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgIHsKLSAgICAg
ICAgaWYgKHJlZyA9PSB0aGlzUmVnaXN0ZXIoKSAmJiAhaXNTdHJpY3RNb2RlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQogICAgICAgICBpZiAocmVnLmlzQ29uc3RhbnQoKSkKICAgICAg
ICAgICAgIHJldHVybiBnZXRDb25zdGFudChyZWcpLmlzQ2VsbCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDc3ZjE5MjkwNjkw
ODMzNmViZDAwOGRjZjBjMzZmNGFjNmU5ZTc1ZDQuLjQ5ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2Vl
ZjQ1MTcxOTkwYmU5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRhYmxlSW5mby5oCkBAIC0zNiw5ICszNiw4IEBAIGVudW0gY2xhc3MgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgOiB1aW50OF90IHsgTm8sIFllcyB9OwogLy8gRklYTUU6IFRoZXNlIGZs
YWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQg
YmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJv
b2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFy
c2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNl
c0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUs
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUpCiAgICAgICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkKLSAgICAgICAgLCBtX2lzU3RyaWN0
TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0
b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAg
ICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0
b3JLaW5kKSkKQEAgLTU3LDcgKzU2LDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB9
CiAKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAg
ICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0K
ICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5G
dW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsg
fQpAQCAtNzIsNyArNzAsNiBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogCiBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2Rl
IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1f
aXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDog
MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDU3Nzg5YmMyYzY2OWY3
Y2FkODg4M2RlY2YzNTEzMjc4NDQ5YzgyNGYuLmY0MzA5ZDE4NThjZDYyYzMwYTllZDEyYWE1ZTg1
YTA0ZDBlNjIwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9G
aXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtNDks
NyArNDksNyBAQCBzdHJ1Y3QgRml0czsKIAogLy8gSW1wbGljaXQgY29udmVyc2lvbiBmb3IgdHlw
ZXMgb2YgdGhlIHNhbWUgc2l6ZQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgT3Bjb2RlU2l6ZSBzaXpl
Pgotc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6
ZSwgc3RkOjp0cnVlX3R5cGU+PiB7CitzdHJ1Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJsZV9p
Zl90PHNpemVvZihUKSA9PSBzaXplICYmIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUs
IHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBl
QnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CiAKICAgICBzdGF0aWMgYm9vbCBjaGVjayhUKSB7
IHJldHVybiB0cnVlOyB9CkBAIC0xNzQsMTggKzE3NCwyMCBAQCBzdHJ1Y3QgRml0czxHZXRQdXRJ
bmZvLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemUgIT0gT3Bjb2RlU2l6ZTo6V2lkZTMyLCBz
dGQ6OgogICAgIC8vIDEzIFJlc29sdmUgVHlwZXMKICAgICAvLyAzIEluaXRpYWxpemF0aW9uIE1v
ZGVzCiAgICAgLy8gMiBSZXNvbHZlIE1vZGVzCisgICAgLy8gMSBiaXQgaXNTdHJpY3QgZmxhZwog
ICAgIC8vCiAgICAgLy8gVHJ5IHRvIGVuY29kZSBlbmNvZGUgYXMKICAgICAvLwotICAgIC8vICAg
ICAgICAgICBpbml0aWFsaXphdGlvbiBtb2RlCi0gICAgLy8gICAgICAgICAgICAgICAgICAgIHYK
LSAgICAvLyBmcmVlIGJpdC0+IDB8MDAwMHwwMHwwCi0gICAgLy8gICAgICAgICAgICAgICAgIF4g
ICAgXgotICAgIC8vICAgIHJlc29sdmUgIHR5cGUgICByZXNvbHZlIG1vZGUKKyAgICAvLyAgICAg
ICAgICAgIGluaXRpYWxpemF0aW9uIG1vZGUKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgIHYK
KyAgICAvLyBpc1N0cmljdCAtPiAwfDAwMDB8MDB8MAorICAgIC8vICAgICAgICAgICAgICAgICAg
XiAgICBeCisgICAgLy8gICAgICByZXNvbHZlICB0eXBlICAgIHJlc29sdmUgbW9kZQogICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZVR5cGVNYXggPSAxIDw8IDQ7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgc19pbml0aWFsaXphdGlvbk1vZGVNYXggPSAxIDw8IDI7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgc19yZXNvbHZlTW9kZU1heCA9IDEgPDwgMTsKIAorICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAxIDw8IDc7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgc19yZXNvbHZlVHlwZUJpdHMgPSAoc19yZXNvbHZlVHlwZU1heCAtIDEpIDw8IDM7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pbml0aWFsaXphdGlvbk1vZGVCaXRzID0gKHNf
aW5pdGlhbGl6YXRpb25Nb2RlTWF4IC0gMSkgPDwgMTsKICAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBzX3Jlc29sdmVNb2RlQml0cyA9IChzX3Jlc29sdmVNb2RlTWF4IC0gMSk7CkBAIC0yMDYsNyAr
MjA4LDggQEAgc3RydWN0IEZpdHM8R2V0UHV0SW5mbywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxz
aXplICE9IE9wY29kZVNpemU6OldpZGUzMiwgc3RkOjoKICAgICAgICAgYXV0byByZXNvbHZlVHlw
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5yZXNvbHZlVHlwZSgpKTsKICAgICAgICAgYXV0
byBpbml0aWFsaXphdGlvbk1vZGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkuaW5pdGlhbGl6
YXRpb25Nb2RlKCkpOwogICAgICAgICBhdXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oZ3BpLnJlc29sdmVNb2RlKCkpOwotICAgICAgICByZXR1cm4gKHJlc29sdmVUeXBlIDw8
IDMpIHwgKGluaXRpYWxpemF0aW9uTW9kZSA8PCAxKSB8IHJlc29sdmVNb2RlOworICAgICAgICBh
dXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSk7CisgICAgICAgIHJldHVybiAoaXNTdHJpY3QgPDwgNykgfCAocmVzb2x2ZVR5cGUgPDwg
MykgfCAoaW5pdGlhbGl6YXRpb25Nb2RlIDw8IDEpIHwgcmVzb2x2ZU1vZGU7CiAgICAgfQogCiAg
ICAgc3RhdGljIEdldFB1dEluZm8gY29udmVydChUYXJnZXRUeXBlIGdwaSkKQEAgLTIxNCwxMCAr
MjE3LDQ1IEBAIHN0cnVjdCBGaXRzPEdldFB1dEluZm8sIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c2l6ZSAhPSBPcGNvZGVTaXplOjpXaWRlMzIsIHN0ZDo6CiAgICAgICAgIGF1dG8gcmVzb2x2ZVR5
cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oKGdwaSAmIHNfcmVzb2x2ZVR5cGVCaXRzKSA+
PiAzKTsKICAgICAgICAgYXV0byBpbml0aWFsaXphdGlvbk1vZGUgPSBzdGF0aWNfY2FzdDxJbml0
aWFsaXphdGlvbk1vZGU+KChncGkgJiBzX2luaXRpYWxpemF0aW9uTW9kZUJpdHMpID4+IDEpOwog
ICAgICAgICBhdXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU1vZGU+KGdwaSAm
IHNfcmVzb2x2ZU1vZGVCaXRzKTsKLSAgICAgICAgcmV0dXJuIEdldFB1dEluZm8ocmVzb2x2ZU1v
ZGUsIHJlc29sdmVUeXBlLCBpbml0aWFsaXphdGlvbk1vZGUpOworICAgICAgICBhdXRvIGlzU3Ry
aWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7CisgICAgICAgIHJl
dHVybiBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSwgaW5pdGlhbGl6YXRpb25N
b2RlLCBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSk7
CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UHV0
QnlJZEZsYWdzLCBzaXplPiB7CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVC
eVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKKworICAgIC8vIFB1dEJ5SWRGbGFncyBpcyBqdXN0
IHR3byBib29sZWFuIHZhbHVlcyBlbmNvZGVkIGFzCisgICAgLy8KKyAgICAvLyAgICAgICAgaXNT
dHJpY3QKKyAgICAvLyAgICAgICAgICAgdgorICAgIC8vICAgIDAwMDAwMHwwfDAKKyAgICAvLyAg
ICAgICAgICAgICBeCisgICAgLy8gICAgICAgICBpc0RpcmVjdAorICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IHNfaXNEaXJlY3RCaXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNT
dHJpY3RCaXQgPSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlJZEZsYWdzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIFRhcmdldFR5cGUg
Y29udmVydChQdXRCeUlkRmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBhdXRvIGlzRGlyZWN0
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7CisgICAgICAgIGF1dG8g
aXNTdHJpY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0
KCkpOworICAgICAgICByZXR1cm4gKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7CisgICAgfQor
CisgICAgc3RhdGljIFB1dEJ5SWRGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsK
KyAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJl
Y3RCaXQpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYg
c19pc1N0cmljdEJpdCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFN
b2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICAgICAgcmV0dXJuIGlzRGly
ZWN0ID8gUHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlJZEZsYWdz
OjpjcmVhdGUoZWNtYU1vZGUpOworICAgIH0KK307CiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNv
ZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVv
ZihFKSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4g
OiBwdWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNp
bmcgQmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC0zMjcs
NCArMzY1LDI5IEBAIHN0cnVjdCBGaXRzPEdlbmVyaWNCb3VuZExhYmVsPEdlbmVyYXRvclRyYWl0
cz4sIHNpemU+IDogcHVibGljIEZpdHM8aW50LCBzaXplPiB7CiAgICAgfQogfTsKIAordGVtcGxh
dGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8RUNNQU1vZGUsIHNpemU+IDogcHVibGlj
IEZpdHM8dWludDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNp
emU+OworCisgICAgLy8gYSBwYWlyIG9mIChSZXN1bHRUeXBlOjpUeXBlLCBSZXN1bHRUeXBlOjpU
eXBlKSAtIHRyeSB0byBmaXQgZWFjaCB0eXBlIGludG8gNCBiaXRzCisgICAgLy8gYWRkaXRpb25h
bGx5LCBlbmNvZGUgdW5rbm93biB0eXBlcyBhcyAwIHJhdGhlciB0aGFuIHRoZSB8IG9mIGFsbCB0
eXBlcworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdHlwZVdpZHRoID0gNDsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFR5cGUgPSAoMSA8PCB0eXBlV2lkdGgpIC0gMTsK
KworICAgIHN0YXRpYyBib29sIGNoZWNrKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEJhc2U6OmNoZWNrKGVjbWFNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0
YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoRUNNQU1vZGUgZWNtYU1vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChlY21hTW9kZS52YWx1ZSgpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgRUNNQU1vZGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJn
ZXRUeXBlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0
ZShCYXNlOjpjb252ZXJ0KGVjbWFNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJh
bWUuY3BwCmluZGV4IDNlM2U2NWY1OWM1MTMwMWViMmY0NGIyZDIzMWVmY2VjYTkxZWNjZjEuLjc5
OTFhYzJhOGU2N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC02Nyw3ICs2
Nyw3IEBAIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wQnJpZWZGdW5jdGlvbkluZm9ybWF0aW9u
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29u
dGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAg
ICBvdXQucHJpbnQoYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCksICI6PCIsIFJhd1BvaW50ZXIo
YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpKTsKLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkpCisgICAg
aWYgKGlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2Rl
KSIpOwogICAgIG91dC5wcmludCgiLCAiLCBkaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRleCgpLCAi
LCAiLCBzdGF0aWNfY2FzdDxLaW5kPihraW5kKSk7CiAgICAgaWYgKGlzQ2xvc3VyZUNhbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1l
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKaW5k
ZXggZTI5ZjM4NGQxZDA2NzJmZWVhMDcxMjA1YmNhYTI4MWE2NDliMjIyOS4uNzVmOWJiMWE4NDY4
YTYxZDdiZTk2YzNhYzliOTFlOTUzZWEzYmY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0cnVj
dCBJbmxpbmVDYWxsRnJhbWUgewogICAgIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6
Y2FsbGVyRnJhbWVPZmZzZXQoKTsgfQogICAgIHB0cmRpZmZfdCByZXR1cm5QQ09mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6
cmV0dXJuUENPZmZzZXQoKTsgfQogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBiYXNlbGluZUNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAgICBib29sIGlzSW5T
dHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpOyB9CiAKICAgICB2b2lkIGR1bXBCcmllZkZ1
bmN0aW9uSW5mb3JtYXRpb24oUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRGbGFncy5jcHAKaW5kZXggYzhhNGI2MGZhNTg4YjAxN2Q3OWVjZjI3MGQ5N2FiYjY4YTI0
ODI0OS4uNjY1MDBlNjI3NmJjNDY5N2JlMGVlYTFkODgxNDlmZjFhNTAxNGQ0NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKQEAgLTM2LDgg
KzM2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBQdXRCeUlkRmxhZ3MgZmxhZ3MpIHsKICAgICBDb21tYVByaW50ZXIgY29t
bWEoInwiKTsKLSAgICBpZiAoZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpCisgICAgaWYgKGZsYWdz
LmlzRGlyZWN0KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklzRGlyZWN0Iik7CisgICAg
aWYgKGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAiU3RyaWN0Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCmluZGV4IDVjMDQ5MjgxMGUxYzkzZmY2MTUz
ZTY1NmVmNDRjNzdlMmZmOTc0OGUuLjgxZDQ2NzE4YTVmNzU5OTlhY2NlOWMxMGZmNDcxNzU2MjY2
ODNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
RmxhZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdz
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsMTcgKzI1LDM3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRUNNQU1vZGUu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1l
bnVtIFB1dEJ5SWRGbGFncyA6IGludDMyX3QgewotICAgIFB1dEJ5SWROb25lID0gMCwKK2NsYXNz
IFB1dEJ5SWRGbGFncyB7CitwdWJsaWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeUlkRmxh
Z3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5
SWRGbGFncyhmYWxzZSwgZWNtYU1vZGUpOworICAgIH0KIAotICAgIC8vIFRoaXMgZmxhZyBpbmRp
Y2F0ZXMgdGhhdCB0aGUgcHV0X2J5X2lkIGlzIGRpcmVjdC4gVGhhdCBtZWFucyB0aGF0IHdlIHN0
b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0Ci0gICAgLy8gY2hlY2tpbmcgaWYgdGhlIHByb3RvdHlw
ZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgUHV0QnlJZElzRGlyZWN0ID0gMHgxLAotICAgIFB1
dEJ5SWRQZXJzaXN0ZW50RmxhZ3NNYXNrID0gMHgxLAorICAgIC8vIEEgZGlyZWN0IHB1dF9ieV9p
ZCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlmIHRo
ZQorICAgIC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCisgICAgY29uc3RleHByIHN0
YXRpYyBQdXRCeUlkRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFB1dEJ5SWRGbGFncyh0cnVlLCBlY21hTW9kZSk7CisgICAgfQorCisg
ICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAgICBFQ01B
TW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KKworcHJpdmF0ZToK
KyAgICBjb25zdGV4cHIgUHV0QnlJZEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFN
b2RlKQorICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisgICAgICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2lzRGlyZWN0OworICAgIEVD
TUFNb2RlIG1fZWNtYU1vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCAyY2JjYmNh
YzkyMDRkNWQzMDdlMmNiNDgzZDNlZjA4YTNhNzFlMTRkLi5mMWVkYjM4MDdlYjAyMWU0NDQ5Y2Nk
NjEwNjlhZjJhYjg2MzkwN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5
dGVjb2RlCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24pOwogICAg
IAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKLSAgICBpZiAo
IShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgIGlmICghKGJ5dGVj
b2RlLm1fZmxhZ3MuaXNEaXJlY3QoKSkpIHsKICAgICAgICAgY29uZGl0aW9uU2V0ID0KICAgICAg
ICAgICAgIGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRs
eSgKICAgICAgICAgICAgICAgICB2bSwgcHJvZmlsZWRCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHN0
cnVjdHVyZSwgdWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDU4OTFmMmE1YzI1NzdiOTljNTI5MjJkM2RmZGY1
OTZiYTJmZTU2YmYuLjU0ZGE1N2RhYjY5Y2EyNjFhZWZkY2ViOTM4ZmZhMGY0ZmYwMzc5MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcApAQCAtNTcsNyArNTcsNiBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRDb2RlQmxv
Y2s6OnNfaW5mbyA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwgbnVsbHB0ciwgbnVsbAogVW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENvZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQogICAgICwgbV91c2VzRXZhbChpbmZvLnVzZXNFdmFsKCkpCi0gICAgLCBt
X2lzU3RyaWN0TW9kZShpbmZvLmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9pc0NvbnN0cnVjdG9y
KGluZm8uaXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxz
ZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAppbmRleCBkZDIxN2I3ZmQ0ZmVmNTZkZjhkODFjMzVjMjgxMzNkNWM4N2ExYTljLi4wMGRjNjE2
MzM1ZmQzMWIwNDMyNTFlMzQ0MDBlNTdkZWY1MzE1ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIzLDcgKzEyMyw2
IEBAIHB1YmxpYzoKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAK
ICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7
IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2Rl
OyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7
IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5j
dGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KQEAgLTMzNSw3ICszMzQsNiBAQCBwcml2YXRl
OgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKICAgICB1bnNpZ25lZCBt
X3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5z
aWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFy
aWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmgKaW5kZXggMjEzYTNhODMyZDdlYWFhOWI5NzEwZjAxYTg2NGRhOTM1YmRk
N2VhNS4uMmViOTg0YzFiMDVhNDVlMGFhNTIwZTFmZDM3OGFkOWUyZmM5MzIyMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5n
KCk7IH0KICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9Ci0gICAgYm9vbCBpc1N0cmljdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KICAgICBi
b29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0K
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPnBhcnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJldHVybiBt
X2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CmluZGV4IGNkOGJlYmY4ZDM2NDU0NWQxODJkNzljYmY4MDY4MDY3MWY0MTE5N2YuLjBiZjMwMjhk
ODEwYzYxNmViMDdhZGE2NmM1N2RhOTI5OWUxYmJjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcApAQCAtNzEsMTAgKzcxLDExIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlzQ2xhc3ND
b250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVk
ZWQ7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8o
ZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24s
IGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5z
dXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUo
KSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xh
c3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2Vu
ZXJhdGlvbk1vZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRh
YmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBm
dW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0
cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFy
c2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29u
dGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogCiAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IGV4ZWN1dGFi
bGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdl
bmVyYXRpb25Nb2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIEVDTUFNb2RlIGVj
bWFNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJp
Y3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJh
dGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOwogCiAgICAgaWYg
KGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGEwMWQ0N2Q3ZGMwYmMxYjQ4MDE2NWJiY2QyNjZkMTFhNmMyMzJiNDUuLjYyODQxYjU2
N2QwZTFmODg0ZWVhZmU3ZjYyMGVjMWUwODkzMWM3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0y
OTcsMTQgKzI5NywyMSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAot
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUq
IHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBj
b2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9u
TW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQogICAgICwgbV90aGlzUmVnaXN0
ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5cGUoR2xv
YmFsQ29kZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQor
ICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rp
b24oZmFsc2UpCisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQorICAgICwgbV9pblRh
aWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFs
c2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9ncmFtTm9k
ZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAs
IG1fZWNtYU1vZGUoZWNtYU1vZGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCkBAIC0zMzgs
MTQgKzM0NSwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIH0KIH0KIAotQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBj
b2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9u
TW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKICAgICAsIG1fY29kZVR5cGUo
RnVuY3Rpb25Db2RlKQogICAgICwgbV92bSh2bSkKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgYSBmbGFnCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9leHByZXNz
aW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2NrLT5p
c0J1aWx0aW5GdW5jdGlvbigpKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2st
PnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX3VzZXNO
b25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3Qo
KSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSB0YWlsIGNhbGwgZWxp
bWluYXRpb24gd2l0aCB0aGUgcHJvZmlsZXIKICAgICAvLyBlbmFibGVkLiBUaGlzIGlzIGN1cnJl
bnRseSBub3QgcG9zc2libGUgYmVjYXVzZSB0aGUgcHJvZmlsZXIgZXhwZWN0cwogICAgIC8vIG9w
X3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3
aGljaCBhcmUgbm90CkBAIC0zNTMsOCArMzYzLDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQog
ICAgIC8vCiAgICAgLy8gTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZW5hYmxlIHRhaWwgY2Fs
bCBmb3IgbmFrZWQgY29uc3RydWN0b3JzIHNpbmNlIGl0IGRvZXMgbm90IGhhdmUgc3BlY2lhbCBj
b2RlIGZvciAicmV0dXJuIi4KLSAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFp
bENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX2luVGFpbFBvc2l0
aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGVjbWFNb2RlLmlzU3RyaWN0
KCkpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9u
ZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dG
dW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUo
ZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRD
b250ZXh0VHlwZSgpKQogewogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0g
U3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKQEAgLTQzNyw3ICs0NDksNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2Rl
LT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAgICBBU1NF
UlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOwogICAg
ICAgICBBU1NFUlQoIWlzQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSk7Ci0g
ICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhj
b2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAg
ICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJs
b2NrLT51c2VzRXZhbCgpLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICAgICAgYm9vbCBpc0Z1
bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwo
KSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1
bmN0aW9uTmFtZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1
bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsK
QEAgLTQ4Nyw3ICs0OTksNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICBtX2Fy
Z3VtZW50c1JlZ2lzdGVyLT5yZWYoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1l
bnRzICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlz
dCkgeworICAgIGlmIChuZWVkc0FyZ3VtZW50cyAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSAmJiBp
c1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKICAgICAgICAgLy8gSWYgd2UgY2FwdHVyZWQgYW55IGZv
cm1hbCBwYXJhbWV0ZXIgYnkgbmFtZSwgdGhlbiB3ZSB1c2UgU2NvcGVkQXJndW1lbnRzLiBPdGhl
cndpc2Ugd2UKICAgICAgICAgLy8gdXNlIERpcmVjdEFyZ3VtZW50cy4gV2l0aCBTY29wZWRBcmd1
bWVudHMsIHdlIGxpZnQgYWxsIG9mIG91ciBhcmd1bWVudHMgaW50byB0aGUKICAgICAgICAgLy8g
YWN0aXZhdGlvbi4KQEAgLTUxNiw3ICs1MjgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgICAgICAgICAgICAgICAgICBlbnRyeS5kaXNhYmxlV2F0Y2hpbmcobV92bSk7CiAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3Nhcnks
IG5hbWUsIGVudHJ5KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgT3BQdXRU
b1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIFVJTlRfTUFY
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJ
bmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6
Ok5vdEluaXRpYWxpemF0aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxl
KFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3RlciwgVUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50SW5jbHVkaW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2Nh
bENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIGVjbWFN
b2RlKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3Rl
ciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhpcyBjcmVhdGVzIGEgc2Nv
cGVkIGFyZ3VtZW50cyBvYmplY3QgYW5kIGNvcGllcyB0aGUgb3ZlcmZsb3cgYXJndW1lbnRzIGlu
dG8gdGhlCkBAIC01NTQsMTEgKzU2NiwxMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEJpbmRpbmdOb2RlKj4ocGFyYW1ldGVycy5h
dChpKS5maXJzdCktPmJvdW5kUHJvcGVydHkoKTsKICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9s
VGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIFN5bWJvbFRhYmxlRW50cnkoVmFy
T2Zmc2V0KG9mZnNldCkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgT3BQdXRUb1Njb3Bl
OjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIGFkZENvbnN0YW50KGlk
ZW50KSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0
UHV0SW5mbyhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25N
b2RlOjpOb3RJbml0aWFsaXphdGlvbiksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xU
YWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNl
dC5vZmZzZXQoKSk7CisgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3RlciwgYWRkQ29uc3RhbnQoaWRlbnQpLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RG
b3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0
aW9uLCBlY21hTW9kZSksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0
dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQo
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRzICYmIChj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpIHx8ICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpKSB7Cisg
ICAgaWYgKG5lZWRzQXJndW1lbnRzICYmIChlY21hTW9kZS5pc1N0cmljdCgpIHx8ICFpc1NpbXBs
ZVBhcmFtZXRlckxpc3QpKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgY2xvbmVkIGFyZ3VtZW50
cyBvYmplY3QuCiAgICAgICAgIE9wQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOjplbWl0KHRoaXMsIG1f
YXJndW1lbnRzUmVnaXN0ZXIpOwogICAgIH0KQEAgLTcxMiw3ICs3MjQsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRUb1RoaXMg
PSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMo
KSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJv
d0Z1bmN0aW9uc1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rp
b25zVXNlRXZhbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRW1pdFRvVGhpcyA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChmdW5jdGlvbk5vZGUtPnVzZXNT
dXBlclByb3BlcnR5KCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1Vz
ZVN1cGVyUHJvcGVydHkoKSkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoKGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVydHko
KSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0
eSgpKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gV2UgbXVzdCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0IG1vZGUgYmVj
YXVzZSB3ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb252ZXJ0IHx0aGlzfCB0
byBhbiBvYmplY3QsIGFuZCB0aGF0IG9iamVjdCBtYXkgYmUgcGFzc2VkCiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB0byBhIHN0cmljdCBmdW5jdGlvbiBhcyB8dGhpc3wuIFRoaXMgaXMgb2Jz
ZXJ2YWJsZSBiZWNhdXNlIHRoYXQKQEAgLTgzMywxNSArODQ1LDIxIEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRp
bWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRy
LCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVu
bGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVC
bG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1v
ZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRC
YXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2Rl
R2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZh
bE5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpKQogICAgICwgbV9jb2RlVHlwZShFdmFsQ29kZSkKICAgICAsIG1fdm0odm0pCi0gICAgLCBt
X3VzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBtX2V4
cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkK
KyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFlY21h
TW9kZS5pc1N0cmljdCgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1f
aGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVB
cnJvd0Z1bmN0aW9uQ29udGV4dChldmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBldmFs
Tm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rl
cml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAg
IG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwpAQCAtODkxLDE1ICs5MDksMjEgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2Rl
LCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3RO
ZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9
CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVBy
b2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0
aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQ
cm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtl
VW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJs
b2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAg
ICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Nj
b3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFt
ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUpCiAg
ICAgLCBtX3ZtKHZtKQorICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhw
cmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQog
ICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24o
ZmFsc2UpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwg
bV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVz
ZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCisgICAg
LCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIApAQCAtMjM5
NSw3ICsyNDE5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGcm9t
U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY28KICAgICAgICAgICAgIGtpbGwo
ZHN0KSwKICAgICAgICAgICAgIHNjb3BlLAogICAgICAgICAgICAgYWRkQ29uc3RhbnQodmFyaWFi
bGUuaWRlbnQoKSksCi0gICAgICAgICAgICBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCB2YXJpYWJs
ZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyBMb2NhbENsb3N1cmVWYXIgOiByZXNvbHZlVHlwZSgpLCBJ
bml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwKKyAgICAgICAgICAgIEdldFB1
dEluZm8ocmVzb2x2ZU1vZGUsIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExvY2FsQ2xv
c3VyZVZhciA6IHJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6
YXRpb24sIGVjbWFNb2RlKCkpLAogICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoKCksCiAgICAg
ICAgICAgICB2YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyB2YXJpYWJsZS5vZmZzZXQoKS5z
Y29wZU9mZnNldCgpLm9mZnNldCgpIDogMCk7CiAgICAgICAgIHJldHVybiBkc3Q7CkBAIC0yNDIy
LDExICsyNDQ2LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9T
Y29wZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmCiAgICAgICAgIFNjb3BlT2Zm
c2V0IG9mZnNldDsKICAgICAgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSkgewog
ICAgICAgICAgICAgb2Zmc2V0ID0gdmFyaWFibGUub2Zmc2V0KCkuc2NvcGVPZmZzZXQoKTsKLSAg
ICAgICAgICAgIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBMb2NhbENsb3N1
cmVWYXIsIGluaXRpYWxpemF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0
UHV0SW5mbyhyZXNvbHZlTW9kZSwgTG9jYWxDbG9zdXJlVmFyLCBpbml0aWFsaXphdGlvbk1vZGUs
IGVjbWFNb2RlKCkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGVPclNjb3BlRGVwdGggPSBTeW1i
b2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgdmFyaWFi
bGUuc3ltYm9sVGFibGVDb25zdGFudEluZGV4KCkgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQocmVzb2x2ZVR5cGUoKSAhPSBMb2NhbENsb3N1cmVWYXIpOwotICAgICAg
ICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBlKCks
IGluaXRpYWxpemF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5m
byhyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlLCBlY21hTW9k
ZSgpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gU3ltYm9sVGFibGVP
clNjb3BlRGVwdGg6OnNjb3BlRGVwdGgobG9jYWxTY29wZURlcHRoKCkpOwogICAgICAgICB9CiAg
ICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBzY29wZSwgYWRkQ29uc3RhbnQodmFyaWFi
bGUuaWRlbnQoKSksIHZhbHVlLCBnZXRQdXRJbmZvLCBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwg
ISFvZmZzZXQgPyBvZmZzZXQub2Zmc2V0KCkgOiAwKTsKQEAgLTI1MDcsNyArMjUzMSw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0
QnlJZChiYXNlLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0QnlJZDo6ZW1pdCh0aGlzLCBi
YXNlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgUHV0QnlJZE5vbmUpOyAvLyBpcyBub3QgZGlyZWN0
CisgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBQ
dXRCeUlkRmxhZ3M6OmNyZWF0ZShlY21hTW9kZSgpKSk7IC8vIGlzIG5vdCBkaXJlY3QKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI1MTcsNyArMjU0MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0
aGlzVmFsCiAKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQocHJvcGVy
dHkpOwogCi0gICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVl
LCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSk7CisgICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhp
cywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAK
ICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTMwLDcgKzI1NTQsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29u
c3QgSWRlbnRpZgogCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZSwg
cHJvcGVydHlJbmRleCk7CiAKLSAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBlID09IFBy
b3BlcnR5Tm9kZTo6S25vd25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT51bmRlcnNjb3JlUHJvdG8pID8gUHV0QnlJZElzRGlyZWN0IDogUHV0QnlJZE5vbmU7CisgICAg
UHV0QnlJZEZsYWdzIHR5cGUgPSAocHV0VHlwZSA9PSBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0
IHx8IHByb3BlcnR5ICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSA/IFB1
dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpIDogUHV0QnlJZEZsYWdzOjpjcmVh
dGUoZWNtYU1vZGUoKSk7CiAgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5
SW5kZXgsIHZhbHVlLCB0eXBlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTkwLDcgKzI2
MTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JGaWVs
ZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERlbGV0ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBPcERlbEJ5SWQ6OmVtaXQodGhpcywg
ZHN0LCBiYXNlLCBhZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAgIE9wRGVsQnlJZDo6ZW1pdCh0
aGlzLCBkc3QsIGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSwgZWNtYU1vZGUoKSk7CiAgICAg
cmV0dXJuIGRzdDsKIH0KIApAQCAtMjYzNCwyNSArMjY1OCwyNSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgUgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkK
IHsKLSAgICBPcFB1dEJ5VmFsOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7Cisg
ICAgT3BQdXRCeVZhbDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2Rl
KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUs
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5
VmFsV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUp
OworICAgIE9wUHV0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHBy
b3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAg
T3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFN
b2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5KQogewotICAgIE9wRGVsQnlWYWw6OmVtaXQodGhpcywgZHN0
LCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgT3BEZWxCeVZhbDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2Us
IHByb3BlcnR5LCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0zMjQ2LDcg
KzMyNzAsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWMKICAgICAvLyBFbWl0IGNhbGwuCiAg
ICAgQVNTRVJUKGRzdCk7CiAgICAgQVNTRVJUKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpOwotICAg
IENhbGxPcDo6ZW1pdCh0aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpKTsKKyAgICBpZiBj
b25zdGV4cHIgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkKKyAgICAgICAgQ2FsbE9wOjplbWl0
KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCksIGVjbWFNb2RlKCkpOworICAgIGVsc2UK
KyAgICAgICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCkpOwog
ICAgIAogICAgIGlmIChleHBlY3RlZEZ1bmN0aW9uICE9IE5vRXhwZWN0ZWRGdW5jdGlvbikKICAg
ICAgICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwpAQCAtMzc4OSw3ICszODE2LDcgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSwgUmUKICAgICB1bnNpZ25lZCBudW1WYXJzID0gbV9jb2RlQmxvY2stPm51
bVZhcnMoKTsKICAgICBwdXNoTGV4aWNhbFNjb3BlSW50ZXJuYWwobmFtZVNjb3BlRW52aXJvbm1l
bnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05v
dE5lc3RlZCwgbnVsbHB0ciwgVERaUmVxdWlyZW1lbnQ6Ok5vdFVuZGVyVERaLCBTY29wZVR5cGU6
OkZ1bmN0aW9uTmFtZVNjb3BlLCBTY29wZVJlZ2lzdGVyVHlwZTo6VmFyKTsKICAgICBBU1NFUlRf
VU5VU0VEKG51bVZhcnMsIG1fY29kZUJsb2NrLT5udW1WYXJzKCkgPT0gc3RhdGljX2Nhc3Q8aW50
PihudW1WYXJzICsgMSkpOyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNyZWF0ZWQgb25lIG5ldyAidmFy
IiBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUuCi0gICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4
aWNhbFZhcmlhYmxlID0gaXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4
aWNhbFZhcmlhYmxlID0gZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgIFZhcmlhYmxlIGZ1bmN0
aW9uVmFyID0gdmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBtX2xleGljYWxTY29wZVN0
YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBwcm9wZXJ0
eS5pbXBsKCkpLCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlQ29uc3Rh
bnRJbmRleCwgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSk7CiAgICAgZW1pdFB1dFRvU2Nv
cGUobV9sZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSwgZnVuY3Rpb25WYXIsIGNhbGxl
ZSwgVGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
KTsKIH0KQEAgLTM5NzIsNyArMzk5OSw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKIHsKICAg
ICAvLyBJZiB3ZSdyZSBpbiBzdHJpY3QgbW9kZSwgd2UgYWx3YXlzIHRocm93LgogICAgIC8vIElm
IHdlJ3JlIG5vdCBpbiBzdHJpY3QgbW9kZSwgd2UgdGhyb3cgZm9yICJjb25zdCIgdmFyaWFibGVz
IGJ1dCBub3QgdGhlIGZ1bmN0aW9uIGNhbGxlZS4KLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkgfHwg
dmFyaWFibGUuaXNDb25zdCgpKSB7CisgICAgaWYgKGVjbWFNb2RlKCkuaXNTdHJpY3QoKSB8fCB2
YXJpYWJsZS5pc0NvbnN0KCkpIHsKICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcobV92bSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNTA1NSw3ICs1MDgyLDcgQEAgdm9pZCBTdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzOjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
VG9UaGlzKCkKIHsKLSAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3Rl
cikpOworICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSwgZWNt
YU1vZGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDI5ODkz
NzQwYTg1YTU4NDllMzk3Mjg4NTY1MDMyYWU3NGJhZmY1NWIuLjcwNzU5NmE0OTc3MjAxY2VlNzQx
ZTMyYTE3ODczNmQ1NGExNjI3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM4MCwxMyArMzgwLDE0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgRmluYWxseUNvbnRleHQ7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQg
Y2xhc3MgU3RydWN0dXJlRm9ySW5Db250ZXh0OworICAgICAgICBmcmllbmQgY2xhc3MgU3RyaWN0
TW9kZVNjb3BlOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNr
czo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwotICAg
ICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCopOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2Rl
KiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4s
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayos
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0
b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01B
TW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtl
ZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayos
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiwgRUNNQU1vZGUpOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigpOwogICAgICAgICAK
QEAgLTQwNiwxNCArNDA3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9CiAKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgVW5saW5rZWRDb2RlQmxvY2s+Ci0g
ICAgICAgIHN0YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2Rl
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCkKKyAgICAgICAgc3RhdGlj
IFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQqIGVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAg
ewogICAgICAgICAgICAgTW9ub3RvbmljVGltZSBiZWZvcmU7CiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAgICAgICAg
ICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3Ig
PSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxv
Y2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAgICAgYXV0byBi
eXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2Rl
LCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCwgZWNt
YU1vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2Vu
ZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVj
b2RlQ29tcGlsZVRpbWVzKCkpKSB7CkBAIC0xMDE5LDcgKzEwMjAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVHZW5lcmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2VuZXJhdGlvbk1vZGU6OlR5
cGVQcm9maWxlcik7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0Q29udHJvbEZsb3dQcm9maWxl
ckhvb2tzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlR2VuZXJhdGlvbk1vZGUuY29udGFpbnMoQ29k
ZUdlbmVyYXRpb25Nb2RlOjpDb250cm9sRmxvd1Byb2ZpbGVyKTsgfQogICAgICAgICAKLSAgICAg
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCk7IH0KKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2VjbWFNb2RlOyB9CiAgICAgICAgIHZvaWQgc2V0VXNlc0NoZWNrcG9pbnRzKCkgeyBtX2NvZGVC
bG9jay0+c2V0SGFzQ2hlY2twb2ludHMoKTsgfQogCiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KQEAg
LTEyOTcsOCArMTI5OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1faXNCdWls
dGluRnVuY3Rpb24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWwg
eyBmYWxzZSB9OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBmYWxzZSB9OwotICAg
ICAgICBib29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwogICAgICAgICBi
b29sIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFogeyBmYWxzZSB9OworICAgICAgICBib29s
IG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0IDogMTsKKyAgICAgICAgRUNNQU1v
ZGUgbV9lY21hTW9kZTsKICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRl
eHRUeXBlIHsgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lIH07CiAKICAgICAgICAgQ29tcGFjdFZh
cmlhYmxlTWFwOjpIYW5kbGUgbV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWjsKQEAgLTEzMTIsNiAr
MTMxNCwyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhdGNoRW50cnk+IG1f
ZXhjZXB0aW9uSGFuZGxlcnNUb0VtaXQ7CiAgICAgfTsKIAorICAgIGNsYXNzIFN0cmljdE1vZGVT
Y29wZSB7CisgICAgcHVibGljOgorICAgICAgICBTdHJpY3RNb2RlU2NvcGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvcikKKyAgICAgICAgICAgIDogbV9nZW5lcmF0b3IoZ2VuZXJhdG9yKQor
ICAgICAgICAgICAgLCBtX3ByZXZpb3VzRUNNQU1vZGUoZ2VuZXJhdG9yLm1fZWNtYU1vZGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fZ2VuZXJhdG9yLm1fZWNtYU1vZGUgPSBFQ01BTW9kZTo6
c3RyaWN0KCk7CisgICAgICAgIH0KKworICAgICAgICB+U3RyaWN0TW9kZVNjb3BlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9nZW5lcmF0b3IubV9lY21hTW9kZSA9IG1fcHJldmlvdXNFQ01B
TW9kZTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0
b3ImIG1fZ2VuZXJhdG9yOworICAgICAgICBFQ01BTW9kZSBtX3ByZXZpb3VzRUNNQU1vZGU7Cisg
ICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4
IDY0MGIyNDk3NTVlMTBlY2RkOWE4M2I5ZTE0YjA5N2FiMzlmZDA5NGYuLmJkMzNiOGEwZjliYjIy
MjM2N2Q2OTQ3ZmYyYmI4NDQxODk3Zjc3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI5MDMsNyArMjkwMyw3IEBA
IFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
Ci0gICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZ2VuZXJhdG9yLmVj
bWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAg
ICAgaWYgKG1fYXNzaWdubWVudENvbnRleHQgPT0gQXNzaWdubWVudENvbnRleHQ6OkFzc2lnbm1l
bnRFeHByZXNzaW9uKQpAQCAtMjkyMCw3ICsyOTIwLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3QKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogcmV0dXJuUmVzdWx0ID0gcmVzdWx0Lmdl
dCgpOwogICAgIGlmICghaXNSZWFkT25seSkgewotICAgICAgICByZXR1cm5SZXN1bHQgPSBnZW5l
cmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcmVzdWx0LmdldCgpLCBnZW5l
cmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RG
b3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQobV9hc3NpZ25tZW50
Q29udGV4dCkpOworICAgICAgICByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFB1dFRvU2Nv
cGUoc2NvcGUuZ2V0KCksIHZhciwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5p
c1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIGluaXRp
YWxpemF0aW9uTW9kZUZvckFzc2lnbm1lbnRDb250ZXh0KG1fYXNzaWdubWVudENvbnRleHQpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXN1bHQuZ2V0KCksIHZhciwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAKQEAgLTMxNDAsNyArMzE0MCw3IEBAIFJl
Z2lzdGVySUQqIEVtcHR5TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzCiAgICAgfSBlbHNlIHsKICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsK
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51
bGxwdHIsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUo
c2NvcGUuZ2V0KCksIHZhciwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/
IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1v
ZGU6OkluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNj
b3BlLmdldCgpLCB2YXIsIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmlj
dCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0
aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlKHZhbHVlLmdldCgpLCB2YXIsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50Lmxl
bmd0aCgpKTsgCiAgICAgfQogCkBAIC0zMzUwLDEzICszMzUwLDEzIEBAIHZvaWQgRm9ySW5Ob2Rl
OjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlv
bklmTmVlZGVkKHZhcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShsb2NhbCwgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNT
dHJpY3RNb2RlKCkpCisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBpZiAodmFyLmlzUmVh
ZE9ubHkoKSkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9u
SWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdl
bmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZh
ciwgcHJvcGVydHlOYW1lLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91
bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFs
aXphdGlvbik7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0
KCksIHZhciwgcHJvcGVydHlOYW1lLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8g
VGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9k
ZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUocHJvcGVydHlOYW1lLCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4
cHItPnBvc2l0aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7CiAgICAgfTsKQEAgLTM2MDcsMTMgKzM2
MDcsMTMgQEAgdm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5tb3ZlKGxvY2FsLCB2YWx1ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAg
aWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICAgICAgICAgICAgICBpZiAodmFyLmlzUmVhZE9ubHkoKSkKICAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7
CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0g
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIs
IHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05v
dFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2
YXIsIHZhbHVlLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5vdEZv
dW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlh
bGl6YXRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZSh2YWx1ZSwgdmFyLCBtX2xleHByLT5wb3NpdGlvbigpLCBtX2xleHByLT5wb3NpdGlv
bigpICsgaWRlbnQubGVuZ3RoKCkpOwogICAgICAgICB9IGVsc2UgaWYgKG1fbGV4cHItPmlzRG90
QWNjZXNzb3JOb2RlKCkpIHsKQEAgLTQzOTcsNiArNDM5Nyw4IEBAIHZvaWQgQ2xhc3NEZWNsTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIFN0cmljdE1vZGVTY29w
ZSBzdHJpY3RNb2RlU2NvcGUoZ2VuZXJhdG9yKTsKKwogICAgIGlmIChtX25lZWRzTGV4aWNhbFNj
b3BlKQogICAgICAgICBnZW5lcmF0b3IucHVzaExleGljYWxTY29wZSh0aGlzLCBCeXRlY29kZUdl
bmVyYXRvcjo6VERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBCeXRlY29kZUdlbmVyYXRv
cjo6TmVzdGVkU2NvcGVUeXBlOjpJc05lc3RlZCk7CiAKQEAgLTQ4MzEsNyArNDgzMyw3IEBAIHZv
aWQgQmluZGluZ05vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiB2YWx1ZSkgY29uCiAgICAgICAgICAgICBnZW5lcmF0b3IubGlmdFREWkNoZWNr
SWZQb3NzaWJsZSh2YXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChnZW5lcmF0
b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0
KCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
QEAgLTQ4NDEsNyArNDg0Myw3IEBAIHZvaWQgQmluZGluZ05vZGU6OmJpbmRWYWx1ZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSkgY29uCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFy
LCB2YWx1ZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9O
b3RUaHJvd0lmTm90Rm91bmQsIGluaXRpYWxpemF0aW9uTW9kZUZvckFzc2lnbm1lbnRDb250ZXh0
KG1fYmluZGluZ0NvbnRleHQpKTsKKyAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUu
Z2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJv
d0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9y
QXNzaWdubWVudENvbnRleHQobV9iaW5kaW5nQ29udGV4dCkpOwogICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUodmFsdWUsIHZhciwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBp
ZiAobV9iaW5kaW5nQ29udGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0
ZW1lbnQgfHwgbV9iaW5kaW5nQ29udGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6Q29uc3REZWNs
YXJhdGlvblN0YXRlbWVudCkKICAgICAgICAgZ2VuZXJhdG9yLmxpZnRURFpDaGVja0lmUG9zc2li
bGUodmFyKTsKQEAgLTQ4NzksNyArNDg4MSw3IEBAIHZvaWQgQXNzaWdubWVudEVsZW1lbnROb2Rl
OjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAo
Z2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFy
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgbnVsbHB0
ciwgc2NvcGUuZ2V0KCkpOwpAQCAtNDg5MCw3ICs0ODkyLDcgQEAgdm9pZCBBc3NpZ25tZW50RWxl
bWVudE5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKgogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgaWYgKCFpc1JlYWRP
bmx5KSB7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCks
IHZhciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6
IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0
aW9uKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwg
dmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RG
b3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUs
IHZhciwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAobV9hc3NpZ25tZW50VGFyZ2V0LT5pc0RvdEFjY2Vzc29yTm9kZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRl
eCAzOWNiZjgyZTIxMTMyMDViNTZmM2E3ZDY4NzYzNWYwYzNlNzBmMTdhLi5mNDVlMDFkMDY3MTkz
MDc2MmZjMDcwODU1MGYzZTQ3YmNhM2M0YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTIxMiw5ICsyMTIsOSBA
QCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjp0aGlzVmFsdWUoVk0mIHZtKSBjb25zdAogICAg
IGlmICghdGhpc1ZhbHVlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIEVD
TUFNb2RlIGVjbWFNb2RlID0gTm90U3RyaWN0TW9kZTsKLSAgICBpZiAoY29kZUJsb2NrICYmIGNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIGVjbWFNb2RlID0gU3RyaWN0TW9kZTsK
KyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBpZiAoY29k
ZUJsb2NrICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0
KCkpCisgICAgICAgIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwogICAgIHJldHVybiB0
aGlzVmFsdWUudG9UaGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
dm0pLCBlY21hTW9kZSk7CiB9CiAKQEAgLTI1Myw3ICsyNTMsOCBAQCBKU1ZhbHVlIERlYnVnZ2Vy
Q2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNjcmlw
dCwgSlNPYgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAg
SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3Bl
KCksIHZhcmlhYmxlc1VuZGVyVERaKTsKIAotICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFt
ZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNv
ZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwg
Y29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxD
b250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01B
TW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgYXV0byogZXZhbCA9IERp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlw
dCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFy
aWFibGVzVW5kZXJURFosIGVjbWFNb2RlKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5l
eGNlcHRpb24oKSkpIHsKICAgICAgICAgZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24o
KTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CmluZGV4IDk1M2ZiYWVmNDhmM2E1NTRkNDU5YmQ5YTJiM2Q2ZTYzZGFhN2NhYzcuLjBkZThjZWZh
N2JjZmZlMzRlYWM0NWY5Nzk2YmVlM2Q3OTk1OTM1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAg
LTE4NiwxMCArMTg2LDEwIEBAIGVudW0gY2xhc3MgVG9UaGlzUmVzdWx0IHsKICAgICBHbG9iYWxU
aGlzLAogICAgIER5bmFtaWMsCiB9OwotaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRl
bnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JO
b2RlKQoraW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBFQ01B
TW9kZSBlY21hTW9kZSwgQWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JOb2RlKQogewogICAgIC8vIFdl
IGxvb2sgYXQgdGhlIHR5cGUgZmlyc3Qgc2luY2UgdGhhdCB3aWxsIGNvdmVyIG1vc3QgY2FzZXMg
YW5kIGRvZXMgbm90IHJlcXVpcmUgaXRlcmF0aW5nIGFsbCB0aGUgc3RydWN0dXJlcy4KLSAgICBp
ZiAoaXNTdHJpY3RNb2RlKSB7CisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAg
ICAgaWYgKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYgU3Bl
Y09iamVjdE90aGVyKSkKICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5
OwogICAgIH0gZWxzZSB7CkBAIC0yMDMsMjAgKzIwMywyMCBAQCBpbmxpbmUgVG9UaGlzUmVzdWx0
IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZh
bHVlJgogICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNPYmplY3Q6OnRvVGhpcykK
ICAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKICAgICAgICAg
ICAgIGlmICh0b1RoaXNNZXRob2QgPT0gJkpTU2NvcGU6OnRvVGhpcykgewotICAgICAgICAgICAg
ICAgIGlmIChpc1N0cmljdE1vZGUpCisgICAgICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3Ry
aWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5l
ZDsKICAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKChpc1N0cmljdE1vZGUgfHwg
KHZhbHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYgflNwZWNPYmpl
Y3QpKSkgJiYgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKKyAgICBpZiAo
KGVjbWFNb2RlLmlzU3RyaWN0KCkgfHwgKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZv
ck5vZGUubV90eXBlICYgflNwZWNPYmplY3QpKSkgJiYgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJl
LmlzRmluaXRlKCkpIHsKICAgICAgICAgYm9vbCBhbGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSA9ICF2
YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNDbGVhcigpOwogICAgICAgICBib29sIG92ZXJyaWRl
c1RvVGhpcyA9IGZhbHNlOwogICAgICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFj
aChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJ
bmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCk7CiAgICAgICAgICAgICBBU1NFUlQodHlw
ZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkg
PT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBCaWdJbnRUeXBlKTsKLSAgICAgICAgICAg
IGlmICghaXNTdHJpY3RNb2RlKQorICAgICAgICAgICAgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgp
KQogICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAg
Ly8gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBzaW5j
ZSBlaXRoZXI6CiAgICAgICAgICAgICAvLyAxKSBXZSBhcmUgaW4gc3RyaWN0IG1vZGUgYW5kIHN0
cmluZ3Mvc3ltYm9scyBhcmUgbm90IHdyYXBwZWQKQEAgLTIzMCw3ICsyMzAsNyBAQCBpbmxpbmUg
VG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2Rl
LCBBYnN0cmFjdFZhbHVlJgogICAgICAgICBpZiAoIW92ZXJyaWRlc1RvVGhpcykKICAgICAgICAg
ICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwogICAgICAgICBpZiAoYWxsU3RydWN0
dXJlc0FyZUpTU2NvcGUpIHsKLSAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpCisgICAgICAg
ICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gVG9U
aGlzUmVzdWx0OjpVbmRlZmluZWQ7CiAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpH
bG9iYWxUaGlzOwogICAgICAgICB9CkBAIC0yNzMwLDkgKzI3MzAsOSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNv
dXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBBYnN0cmFjdFZhbHVlJiBk
ZXN0aW5hdGlvbiA9IGZvck5vZGUobm9kZSk7Ci0gICAgICAgIGJvb2wgc3RyaWN0TW9kZSA9IG1f
Z3JhcGguaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEVD
TUFNb2RlIGVjbWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKTsKIAotICAgICAgICBUb1RoaXNSZXN1
bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fdm0sIHN0cmljdE1vZGUsIHNvdXJjZSk7
CisgICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV92bSwg
ZWNtYU1vZGUsIHNvdXJjZSk7CiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CiAgICAgICAgIGNh
c2UgVG9UaGlzUmVzdWx0OjpJZGVudGl0eToKICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxk
VHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwpAQCAtMjc0Niw3ICsyNzQ2LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uLnNldFR5cGUobV9ncmFwaCwg
U3BlY09iamVjdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUb1RoaXNSZXN1
bHQ6OkR5bmFtaWM6Ci0gICAgICAgICAgICBpZiAoc3RyaWN0TW9kZSkKKyAgICAgICAgICAgIGlm
IChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLm1ha2VI
ZWFwVG9wKCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlv
biA9IHNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggOTk2MWQ5MDMyZDY4MGQ4NTM0NjU5OGRlNmEyYjhmYWNkNzM0MjdiZC4u
MDJjOTBkNDBjZjcxZWRkNjlkOWE0YmUyMWExOTYyYzlmZTEzZWY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI0NSwxMCArMjQ1
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cywgQWNj
ZXNzVHlwZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKTsKICAgICB2b2lkIGVtaXRQdXRCeUlk
KAotICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwg
IGNvbnN0IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0KTsKKyAgICAgICAgTm9kZSogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgTm9kZSogdmFsdWUsICBjb25zdCBQdXRCeUlkU3RhdHVz
JiwgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAg
ICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAotICAgICAgICBib29s
IGlzRGlyZWN0LCB1bnNpZ25lZCBpbnRydWN0aW9uU2l6ZSk7CisgICAgICAgIGJvb2wgaXNEaXJl
Y3QsIHVuc2lnbmVkIGludHJ1Y3Rpb25TaXplLCBFQ01BTW9kZSk7CiAgICAgCiAgICAgLy8gRWl0
aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBvciBlbWl0IGEgY2hlY2sgZm9yIHRoaXMgY29uZGl0
aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQogICAgIC8vIGNvbmRpdGlvbiBubyBsb25nZXIgaG9s
ZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVhc29uYWJsZSBjaGVjayBjYW4gYmUgZW1pdHRlZC4KQEAg
LTg0NiwxOCArODQ2LDE4IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENh
bGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBjb25zdCBE
T01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwg
aW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7
CiAgICAgICAgIGlmIChvcCA9PSBUYWlsQ2FsbCkgewogICAgICAgICAgICAgaWYgKGFsbElubGlu
ZUZyYW1lc0FyZVRhaWxDYWxscygpKQotICAgICAgICAgICAgICAgIHJldHVybiBhZGRDYWxsV2l0
aG91dFNldHRpbmdSZXN1bHQob3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50
LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBhZGRD
YWxsV2l0aG91dFNldHRpbmdSZXN1bHQob3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKICAgICAgICAgICAgIG9wID0gVGFpbENhbGxJbmxpbmVk
Q2FsbGVyOwogICAgICAgICB9CiAKIAogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbFdpdGhv
dXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxs
ZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAg
ICAgICAgIG9wLCBvcEluZm8sIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcElu
Zm8ocHJlZGljdGlvbikpOwogICAgICAgICBpZiAocmVzdWx0LmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHNldChyZXN1bHQsIGNhbGwpOwogICAgICAgICByZXR1cm4gY2FsbDsKQEAgLTEzNDQsNyAr
MTM0NCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ2FsbCgKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBOb2RlKiBjYWxsTm9kZSA9IGFk
ZENhbGwocmVzdWx0LCBvcCwgbnVsbHB0ciwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICBOb2RlKiBjYWxsTm9k
ZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgQVNTRVJU
KGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFyYXJncyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBU
YWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKICAgICByZXR1cm4gY2FsbE5vZGUtPm9wKCkgPT0gVGFp
bENhbGwgPyBUZXJtaW5hbCA6IE5vblRlcm1pbmFsOwogfQpAQCAtMjE4Miw3ICsyMTgyLDcgQEAg
Qnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKAogICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3QoY2Fs
bGVlUmVnKTsKICAgICBpZiAoY291bGRUYWtlU2xvd1BhdGgpIHsKICAgICAgICAgYWRkQ2FsbCgK
LSAgICAgICAgICAgIHJlc3VsdCwgY2FsbE9wLCBudWxscHRyLCBteUNhbGxUYXJnZXROb2RlLCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKKyAgICAgICAgICAgIHJlc3VsdCwgY2FsbE9wLCBP
cEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIFZFUkJPU0Vf
TE9HKCJXZSBhZGRlZCBhIGNhbGwgaW4gdGhlIHNsb3cgcGF0aFxuIik7CiAgICAgfSBlbHNlIHsK
QEAgLTM2NTYsNyArMzY1Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENh
bGwoTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDw9IEpTQ19ET01KSVRfU0lH
TkFUVVJFX01BWF9BUkdVTUVOVFNfSU5DTFVESU5HX1RISVMsICJDdXJyZW50bHkgQ2FsbERPTSBk
b2VzIG5vdCBzdXBwb3J0IGFuIGFyYml0cmFyeSBsZW5ndGggYXJndW1lbnRzLiIpOwogCiAgICAg
aW5zZXJ0Q2hlY2tzKCk7Ci0gICAgYWRkQ2FsbChyZXN1bHQsIENhbGwsIHNpZ25hdHVyZSwgY2Fs
bFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVk
aWN0aW9uKTsKKyAgICBhZGRDYWxsKHJlc3VsdCwgQ2FsbCwgT3BJbmZvKHNpZ25hdHVyZSksIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ2MTUsMjIgKzQ2MTUsMjIgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKIH0KIAogdm9pZCBCeXRlQ29kZVBh
cnNlcjo6ZW1pdFB1dEJ5SWQoCi0gICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1
cywgYm9vbCBpc0RpcmVjdCkKKyAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVz
LCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBpZiAoaXNEaXJlY3Qp
Ci0gICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZERpcmVjdCwgT3BJbmZvKGlkZW50aWZpZXIpLCBi
YXNlLCB2YWx1ZSk7CisgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZERpcmVjdCwgT3BJbmZvKGlk
ZW50aWZpZXIpLCBPcEluZm8oZWNtYU1vZGUpLCBiYXNlLCB2YWx1ZSk7CiAgICAgZWxzZQotICAg
ICAgICBhZGRUb0dyYXBoKHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gUHV0QnlJZEZsdXNo
IDogUHV0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBiYXNlLCB2YWx1ZSk7CisgICAgICAgIGFk
ZFRvR3JhcGgocHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkgPyBQdXRCeUlkRmx1c2ggOiBQdXRC
eUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsK
IH0KIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICBOb2RlKiBiYXNl
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIE5vZGUqIHZhbHVlLAotICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMs
IGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSkKKyAgICBjb25zdCBQdXRC
eUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnN0cnVj
dGlvblNpemUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIGlmICghcHV0QnlJZFN0YXR1cy5p
c1NpbXBsZSgpIHx8ICFwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVz
ZUFjY2Vzc0lubGluaW5nKCkpIHsKICAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2V0KCkp
CiAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7Ci0gICAgICAgIGVtaXRQdXRC
eUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7Cisg
ICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVz
LCBpc0RpcmVjdCwgZWNtYU1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAt
NDYzOCw3ICs0NjM4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAg
ICAgICAgaWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXND
YWxscygpCiAgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxp
bmluZygpCiAgICAgICAgICAgICB8fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRp
b25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgewotICAgICAgICAg
ICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlz
RGlyZWN0KTsKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVl
LCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDY0Nyw3ICs0NjQ3LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgICAgICAgICBpZiAocHV0QnlJZFN0YXR1
c1t2YXJpYW50SW5kZXhdLmtpbmQoKSAhPSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGVjayhw
dXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0uY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3Rh
dHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtNDY5MCw3ICs0NjkwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJ
ZCgKIAogICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKICAgICAgICAg
aWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgpKSkgewotICAgICAgICAgICAgZW1pdFB1
dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsK
KyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlk
U3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTQ3NTcsNyArNDc1Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1
dEJ5SWQoCiAKICAgICAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKFNwZWNDZWxsT3RoZXIs
IGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgICAgICBpZiAoIWxvYWRlZFZh
bHVlKSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwg
cHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwg
aWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00ODAxLDcgKzQ4MDEs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAKICAg
ICBkZWZhdWx0OiB7Ci0gICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVl
LCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlk
ZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfSB9CiB9CkBAIC00OTczLDcgKzQ5NzMsOCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0VGhpcygp
OwotICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
VG9UaGlzPigpLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKKyAgICAgICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAgICAgICAgIFN0
cnVjdHVyZUlEIGNhY2hlZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJ
RDsKICAgICAgICAgICAgIFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGlmIChjYWNoZWRTdHJ1Y3R1cmVJRCkKQEAgLTQ5ODQsNyArNDk4NSw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93
Q2FzZShtX2N1cnJlbnRJbmRleCkKICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkKICAg
ICAgICAgICAgICAgICB8fCAob3AxLT5vcCgpID09IEdldExvY2FsICYmIG9wMS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCktPnN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoKSkpIHsKLSAgICAgICAg
ICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgoVG9UaGlzLCBPcEluZm8oKSwgT3BJbmZvKGdldFBy
ZWRpY3Rpb24oKSksIG9wMSkpOworICAgICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChU
b1RoaXMsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgT3BJbmZvKGdldFByZWRpY3Rpb24o
KSksIG9wMSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKAogICAgICAgICAgICAgICAgICAgICBDaGVja1N0cnVjdHVyZSwKQEAgLTU4MjQsNyArNTgy
NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCh0aGlzVmFsdWUpOwogICAgICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQocHJvcGVydHkpOwogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwot
ICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9w
SW5mbygwKSwgT3BJbmZvKDApKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJn
LCBQdXRCeVZhbFdpdGhUaGlzLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIE9wSW5mbygw
KSk7CiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsK
ICAgICAgICAgfQpAQCAtNTg5NCwxNCArNTg5NSwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChi
eXRlY29kZS5tX2Jhc2UpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHld
OwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKLSAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gISEoYnl0
ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCk7CisgICAgICAgICAgICBib29sIGRpcmVj
dCA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNEaXJlY3QoKTsKIAogICAgICAgICAgICAgUHV0QnlJZFN0
YXR1cyBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCiAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKICAg
ICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCBtX2dyYXBoLmlkZW50aWZpZXJzKClb
aWRlbnRpZmllck51bWJlcl0pOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBoYW5kbGVQdXRC
eUlkKGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCksIGlkZW50
aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBkaXJlY3QsIGN1cnJlbnRJbnN0cnVj
dGlvbi0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUs
IHB1dEJ5SWRTdGF0dXMsIGRpcmVjdCwgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCksIGJ5dGVj
b2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRf
YnlfaWQpOwogICAgICAgICB9CiAKQEAgLTU5MTIsOCArNTkxMyw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5t
X3Byb3BlcnR5XTsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBo
LmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07Ci0KLSAgICAgICAgICAgIGFkZFRvR3Jh
cGgoUHV0QnlJZFdpdGhUaGlzLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywgdWlkKSksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUpOworICAgICAgICAgICAgYWRkVG9H
cmFwaChQdXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLCB1aWQpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBiYXNlLCB0aGlzVmFs
dWUsIHZhbHVlKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV9pZF93aXRoX3Ro
aXMpOwogICAgICAgICB9CiAKQEAgLTU5NDgsNyArNTk0OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBiYXNlID0g
Z2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUubV9wcm9w
ZXJ0eV07CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCB1aWQpKSwgYmFzZSkpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBiYXNlKSk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwogICAgICAgICB9CiAKQEAg
LTU5NTYsNyArNTk1Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcERlbEJ5VmFsPigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29k
ZS5tX2Jhc2UpOwogICAgICAgICAgICAgTm9kZSoga2V5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVy
dHkpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5
VmFsLCBiYXNlLCBrZXkpKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9H
cmFwaChEZWxldGVCeVZhbCwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBiYXNlLCBrZXkp
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV92YWwpOwogICAgICAgICB9CiAK
QEAgLTY0NzksNyArNjQ3OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFsPigpOwogICAg
ICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1fYXJndjsKLSAgICAgICAg
ICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBudWxscHRyLCBnZXQoYnl0ZWNv
ZGUubV9jYWxsZWUpLCBieXRlY29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0
aW9uKCkpOworICAgICAgICAgICAgYWRkQ2FsbChieXRlY29kZS5tX2RzdCwgQ2FsbEV2YWwsIE9w
SW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgZ2V0KGJ5dGVjb2RlLm1fY2FsbGVlKSwgYnl0ZWNv
ZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAt
NjgyOCw3ICs2ODI4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIGlmIChuZWVkc0R5bmFtaWNMb29rdXAocmVzb2x2ZVR5cGUs
IG9wX3B1dF90b19zY29wZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllck51
bWJlciAhPSBVSU5UX01BWCk7CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgb3BJbmZvMSA9IG1h
a2VEeW5hbWljVmFyT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIsIGdldFB1dEluZm8ub3BlcmFuZCgp
KTsKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dER5bmFtaWNWYXIsIE9wSW5mbyhvcElu
Zm8xKSwgT3BJbmZvKCksIGdldChieXRlY29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dER5bmFtaWNWYXIsIE9wSW5mbyhv
cEluZm8xKSwgT3BJbmZvKGdldFB1dEluZm8uZWNtYU1vZGUoKSksIGdldChieXRlY29kZS5tX3Nj
b3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsKICAgICAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfdG9fc2NvcGUpOwogICAgICAgICAgICAgfQogCkBAIC02ODUwLDcgKzY4NTAsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSAhPSAxCiAgICAgICAgICAgICAgICAg
ICAgIHx8IHN0YXR1c1swXS5raW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UKICAgICAg
ICAgICAgICAgICAgICAgfHwgc3RhdHVzWzBdLnN0cnVjdHVyZSgpLnNpemUoKSAhPSAxKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZvKENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdl
dChieXRlY29kZS5tX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0
QnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBP
cEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9z
Y29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gd2Vha0pT
Q29uc3RhbnQoZ2xvYmFsT2JqZWN0KTsKQEAgLTc0OTYsOCArNzQ5Niw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAiIGZvciBpbmxpbmlu
ZyBhdCAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUVHlwZTo6REZHSklU
KSwKICAgICAgICAgICAgICAgICAiICIsIGlubGluZUNhbGxGcmFtZSgpLT5kaXJlY3RDYWxsZXIp
OwogICAgICAgICB9Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiLCBpc1N0cmljdE1v
ZGUgPSAiLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSwgIlxu
Iik7CisgICAgICAgIGRhdGFMb2dMbigpOwogICAgICAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVy
c2lvbigpLT5kdW1wQnl0ZWNvZGUoKTsKICAgICB9CiAgICAgCkBAIC03NjA0LDcgKzc2MDMsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBp
bGVkQXNQdXRCeUlkKQotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3Ry
dWN0aW9uU2l6ZSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIs
IGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgaW5zdHJ1
Y3Rpb25TaXplLCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBp
bGVkQXNQdXRCeUlkKSB7CkBAIC03NjE1LDcgKzc2MTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25T
aXplKQogICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0No
aWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRW
YXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dy
YXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKDApKTsKKyAgICAgICAgYWRkVG9HcmFw
aChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJ
bmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAg
ICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBt
dXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVw
UGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggNjUw
NTNjZWI1ZTA4N2EwY2Q0YTMxNDgwYWZkZThkNjUxODFlZDE0My4uZTc4MDFmODIxYzEzZjUxZGY4
OWJiM2ZjNTE2YTgzZTU2ZjUzNjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTc0NCw3ICs3NDQsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjYXNlIFRvVGhpczogewotICAg
ICAgICAgICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV9n
cmFwaC5tX3ZtLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgICAgICAgICBUb1Ro
aXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbm9kZS0+
ZWNtYU1vZGUoKSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5KSB7CiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggNzlhOWM0ZmFiNTBlNmM2NjU1YTQ2ZDRjOWExZjk4YmVmM2M3OGYzNy4uNGZj
YmNmYzNkYjE5Yjk1ZDJhOGQ0ZjM5OTg0ZjFhOTNhODJjMmVkZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yODMxLDcgKzI4MzEsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBmaXh1cFRvVGhpcyhOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKTsKIAogICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDk0N2VmYWFiYTllNjQ5NmIzYjA1YzZmNTUxNDJh
YjdjNzdiNWI1YTIuLjE2NjZkNzUzODdkYmM1NTQwMmM5ZjdiZTAzNjExNzViYzc1YzgyMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwdWJs
aWM6CiAgICAgSlNPYmplY3QqIGdsb2JhbFRoaXNPYmplY3RGb3IoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIG9iamVjdCA9IGdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKTsKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVj
dC0+bWV0aG9kVGFibGUobV92bSktPnRvVGhpcyhvYmplY3QsIG9iamVjdCwgTm90U3RyaWN0TW9k
ZSkpOworICAgICAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJs
ZShtX3ZtKS0+dG9UaGlzKG9iamVjdCwgb2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAg
ICB9CiAgICAgCiAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSkKQEAgLTQ2OSwxOCArNDY5LDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9j
ayhjb2RlT3JpZ2luLCBtX3Byb2ZpbGVkQmxvY2spOwogICAgIH0KICAgICAKLSAgICBib29sIGlz
U3RyaWN0TW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICBpZiAo
IWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9jb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpOwotICAgICAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUoKS0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgfQotICAgIAotICAgIEVDTUFNb2RlIGVj
bWFNb2RlRm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBp
c1N0cmljdE1vZGVGb3IoY29kZU9yaWdpbikgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsK
LSAgICB9Ci0gICAgCiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElz
U3RpbGxWYWxpZChjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnQoKS0+aXNTdGlsbFZhbGlkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCmluZGV4IGJjN2NmYjEyZDBhOGUyZDMyZTI3Mjk3Zjc0OGE2NTVlMzUxNzI2NzYuLjI5NWZj
OGNiNjYwNThmODc5MjE3M2NiMjk5ZDNiOTliZWE0NDVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC0yMjA0LDYgKzIyMDQsNTMgQEAgcHVibGljOgogICAgICAgICBtX29w
SW5mbyA9IGFycmF5TW9kZS5hc1dvcmQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQor
CisgICAgYm9vbCBoYXNFQ01BTW9kZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsK
KyAgICAgICAgY2FzZSBDYWxsRXZhbDoKKyAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAg
ICBjYXNlIERlbGV0ZUJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgIGNhc2Ug
UHV0QnlJZERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgIGNhc2Ug
UHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1
dEJ5VmFsQWxpYXM6CisgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CisgICAgICAgIGNhc2Ug
UHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBj
YXNlIFRvVGhpczoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgRUNNQU1v
ZGUgZWNtYU1vZGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0VDTUFNb2RlKCkpOworICAg
ICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBDYWxsRXZhbDoKKyAgICAgICAgY2Fz
ZSBEZWxldGVCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBj
YXNlIFRvVGhpczoKKyAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcElu
Zm8uYXM8dWludDhfdD4oKSk7CisgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2Fz
ZSBQdXRCeUlkOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0
QnlJZEZsdXNoOgorICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQ
dXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgorICAgICAgICBjYXNlIFB1dEJ5
VmFsRGlyZWN0OgorICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CisgICAgICAgICAgICByZXR1
cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvMi5hczx1aW50OF90PigpKTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gRUNNQU1vZGU6OnN0cmljdCgpOworICAgICAgICB9CisgICAgfQogICAg
IAogICAgIGJvb2wgaGFzQXJpdGhNb2RlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcEluZm8uaAppbmRleCA0NWU3YWMzZGI1OGY2NWI3OGFiNjAyZTc4ZTRhMzFjNDQ1ODNjOWM3
Li4wZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RydWN0IE9wSW5mbyB7
CiAgICAgZXhwbGljaXQgT3BJbmZvKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSA6IG1f
dmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0cnVj
dHVyZSkpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkgOiBtX3ZhbHVlKG9w
LmFzQml0cygpKSB7IH0KICAgICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50aWZpZXIucmF3
Qml0cygpKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFNb2RlKSA6IG1f
dmFsdWUoZWNtYU1vZGUudmFsdWUoKSkgeyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgICBleHBsaWNpdCBPcEluZm8oVCogcHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZjBhZGQ5YWU1NjAwZmVlZWE5MDQ2MWJjYjlmMThlZDQy
NjU1Yzc2ZC4uYzdlMzlmMjZiNDI3ZjMyMGVhM2VlZjQzNDVkMmFiM2M0Y2Q4Mzg1OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yOTgsNyArMjk4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2QKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RT
dHJpY3RNb2RlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXNTdHJpY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQpAQCAt
MzA3LDcgKzMwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9U
aGlzU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgU3RyaWN0TW9kZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KSk7CiB9CiAKIEpTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT2JqZWN0KQpA
QCAtMzQxNCw3ICszNDE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAg
ICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAppbmRleCAzNjE4MWEyODIxMzM5ZTg4
YjY2M2M2NTg3MWMwZGEzY2M0NGRlOGEyLi5iYWEyMWMwYmJmYTJhY2ZiYTUwZDVhOGY5OTMyZDMx
NGRiNTQ0OWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNp
c2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAKICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBv
dXRlcm1vc3QgYXJndW1lbnRzLCBleGNlcHQgdGhpcywgYXJlIHJlYWQgaW4gc2xvcHB5IG1vZGUu
Ci0gICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7
CisgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9ncmFwaC5tX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOyBpLS07KQogICAgICAgICAg
ICAgICAgICAgICBtX3JlYWQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlz
KGkpKTsKICAgICAgICAgICAgIH0KQEAgLTI1MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgICAgIC8vIFJlYWQgYWxsIG9mIHRoZSBpbmxpbmUgYXJndW1lbnRzIGFuZCBj
YWxsIGZyYW1lIGhlYWRlcnMgdGhhdCB3ZSBkaWRuJ3QgYWxyZWFkeSBjYXB0dXJlLgogICAgICAg
ICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNh
bGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVySW5saW5lRnJhbWVTa2lwcGluZ1Rh
aWxDYWxscygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzU3Ry
aWN0TW9kZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzSW5T
dHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBpLS07KQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkp
Lm9mZnNldCgpKSk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRl
eCAyODg4NThiMzhjMTZhNjVhOGM4ZWJkYjlkNDM3MDEyODM0NzJhNTBhLi5hMDdiYmY0NjYxNzNh
MGMzYjI1OWNmNTY0Yzc4YTI2YzE4Y2JjM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAt
NTA2LDcgKzUwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBUb1Ro
aXM6IHsKICAgICAgICAgICAgIC8vIFRvVGhpcyBpbiBtZXRob2RzIGZvciBwcmltaXRpdmUgdHlw
ZXMgc2hvdWxkIHNwZWN1bGF0ZSBwcmltaXRpdmUgdHlwZXMgaW4gc3RyaWN0IG1vZGUuCi0gICAg
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG5vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKICAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsK
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJvb2xl
YW4oKSkgewogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjQm9vbGVhbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IGQzOGNmZGYyYWUyODQ5ZTEzOTdiMGRlYzkxZjlmYzAzOWNmOWMzY2Mu
LmZhN2Y0NjRlMmEwZjRjM2NlM2YyYTE2MTc2OTVjMmVhYzQ3MzA2MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMTE5LDcgKzIx
MTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWYWwoTm9kZSog
bm9kZSwgU3BlY3VsYXRlQ2VsbE9wZXJhbmQmIGJhcwogICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZSwgdGhpcywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KQogICAgICAgICAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8g
b3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9w
ZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAg
ICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRE
b3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0
RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJl
ZywgdmFsdWVSZWcpKTsKQEAgLTMxNTAsMjQgKzMxNTAsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHBy
b3BlcnQKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKICAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9k
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBu
b2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmlj
dCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LAogICAgICAgICAgICAgICAgIE5v
UmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
R1BSKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAg
ICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3Qs
CisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9u
UHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwKICAgICAgICAgICAg
ICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5
LCB2YWx1ZUdQUikpOwogICAgICAgICB9CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKICAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0
aENhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsTm9uU3RyaWN0LAorICAgICAgICAgICAgICAgIG5v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdCwKICAgICAgICAgICAg
ICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIEpTVmFsdWVS
ZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eSksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2
YWx1ZUdQUikpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0aGlz
LAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsTm9uU3RyaWN0LAorICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5v
blN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2UsIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eSksIEpTVmFs
dWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0z
Mjk5LDcgKzMyOTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JD
ZWxsV2l0aFN0cmluZyhOb2RlKiBub2RlLCBFZGdlJiBjaGlsZDEsCiAgICAgc3BlY3VsYXRlU3Ry
aW5nKGNoaWxkMiwgYXJnMkdQUik7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxP
cGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBv
cGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxT
dHJpbmdOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcy
R1BSLCBhcmczUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbENlbGxTdHJpbmdOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcx
R1BSLCBhcmcyR1BSLCBhcmczUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMzMxOCw3ICszMzE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSogbm9kZSwgRWRnZSYg
Y2hpbGQxLAogICAgIHNwZWN1bGF0ZVN5bWJvbChjaGlsZDIsIGFyZzJHUFIpOwogCiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1JlZ3MpOworICAgIGNhbGxPcGVyYXRp
b24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3lt
Ym9sU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0LCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1JlZ3MpOwogICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTExMzI5LDcg
KzExMzI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dER5bmFtaWNWYXIoTm9k
ZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3Ry
aWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0RHluYW1pY1Zh
clN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBzY29wZUdQUiwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CisgICAgY2FsbE9wZXJhdGlv
bihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3Ry
aWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRp
Zmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTIyMTUsNyArMTIyMTUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFs
dWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVj
dCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICBjYWNoZWRQdXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUp
OwogfQpAQCAtMTIyMzAsNyArMTIyMzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpz
VmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0g
ICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVn
cywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QpOwor
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBu
b2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTIyNDUsNyAr
MTIyNDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERpcmVjdChOb2Rl
KiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7
CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBEaXJlY3QpOworICAgIGNhY2hlZFB1dEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIs
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgRGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsK
IAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTIyNjAsNyArMTIyNjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZFdpdGhUaGlzKE5vZGUqIG5vZGUpCiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJh
dGlvblB1dEJ5SWRXaXRoVGhpcywKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1
dEJ5SWRXaXRoVGhpcywKICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWdzLCB0aGlzUmVncywgdmFsdWVSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0xMjYyOSw3ICsxMjYy
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMoTm9kZSogbm9kZSkKICAg
ICBtX2ppdC5tb3ZlVmFsdWVSZWdzKHRoaXNWYWx1ZVJlZ3MsIHRlbXBSZWdzKTsKIAogICAgIEpf
SklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgIGlmIChtX2ppdC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICBpZiAobm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpKQogICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0cmljdDsKICAgICBlbHNl
CiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzOwpAQCAtMTM4MjgsNyArMTM4Mjgs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHJvZmlsZVR5cGUoTm9kZSogbm9kZSkK
ICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0
QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFB1dEtpbmQgcHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQ
dXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBp
ZiAoc3BpbGxNb2RlID09IERvbnRTcGlsbCkgewpAQCAtMTM4NDAsNyArMTM4NDAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
IGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
dmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3Jp
Z2luKSwgcHV0S2luZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsK
IAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDIzMDYxZTUzYzE1M2IwYTExNWU3
ZTE3YTAyMzBmZWI2OTkyZjllZjMuLjEwZWJiOWJmMWIyOThiMmE3MmI1NTNkNGZkNmY4YzdiODU4
ZGQ4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTcxNyw3ICs3MTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlQ2hlY2tOZXV0
ZXJlZChOb2RlKik7CiAKICAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NU
eXBlKTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29t
cGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZv
aWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2lu
ZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGls
ZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwogICAgIHZvaWQg
Y2FjaGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDEzMzIxNTVlMTI4MmU1MTNiN2Ux
Y2M0MzhhMmJiZjg0ZTVmYzY1ZjYuLmFlYmQ0NTVkMDUwZTNkNDM4MDBlM2MxZTg2MzY1Y2VjM2M2
OGI2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtNzYwLDcgKzc2MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIHVuc2lnbmVkIHJlcXVpcmVkQnl0ZXMgPSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykgKyBzaXplb2YoQ2FsbEZyYW1lKikgKiAyOwogICAgICAgICByZXF1
aXJlZEJ5dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMo
KSwgcmVxdWlyZWRCeXRlcyk7CiAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIocmVx
dWlyZWRCeXRlcyksIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKICAg
ICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5hcHBlbmRDYWxs
KG9wZXJhdGlvbkNhbGxFdmFsKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAg
LTI3MjUsOSArMjcyNiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyBhcmczR1BSID0gYXJnMy5ncHIoKTsKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZh
bERpcmVjdCkKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9k
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RN
b2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTI4
MDksNyArMjgxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
ICAgICBzbG93Q2FzZSwgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RN
b2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IChub2RlLT5v
cCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJh
eUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3Qp
CiAgICAgICAgICAgICAgICAgICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0
ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9w
ZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAg
ICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHBy
b3BlcnR5UmVnLCB2YWx1ZVJlZykpOwpAQCAtMjg5Myw3ICsyODk0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKCFzbG93Q2FzZXMu
ZW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAotICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAg
ICAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAg
ICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxC
ZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFy
cmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05v
blN0cmljdCksCiAgICAgICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0zODk3LDcg
KzM4OTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxXaXRoVGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VH
UFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdp
dGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BS
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jlc3VsdChu
b2RlKTsKQEAgLTU0NjUsNyArNTQ2Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVE
ZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1t
MzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RG
TW92ZShzbG93UGF0aCkpOwpAQCAtNTQ4NCw3ICs1NDg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJ
ZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIs
IGJhc2VSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC01NTIzLDcgKzU1MjQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIAogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGlt
aXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5m
bygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAKICAg
ICAgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTU1NDMsNyArNTU0NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQog
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDM0OThmOTEy
MTRhYjdiMTRhYTJlMWUyZTliZWI4Zjk4M2ZlMjI4MDguLjI0NWI2YTFlZjQ0OGZlYzg2NjY0YTNj
NGJmZTZmNmU0ZTQ4MjY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTIxMjAsNyArMjEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAg
Sl9KSVRPcGVyYXRpb25fR0ogZnVuY3Rpb247Ci0gICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0
TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgIGlmIChtX25vZGUtPmVj
bWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9U
aGlzU3RyaWN0OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlv
blRvVGhpczsKQEAgLTM2ODIsNyArMzY4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSB0
aGlzVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwogCi0gICAgICAgIHZtQ2FsbChW
b2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBv
cGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMs
CisgICAgICAgIHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9w
ZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywK
ICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHRoaXNWYWx1ZSwg
dmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJh
d0JpdHMoKSkpOwogICAgIH0KIApAQCAtMzY5NCw3ICszNjk0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgMikpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAzKSk7CiAKLSAgICAgICAgdm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJp
Y3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0
aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLAorICAgICAgICB2bUNhbGwo
Vm9pZCwgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdp
dGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywKICAgICAgICAgICAgIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVl
KTsKICAgICB9CiAgICAgCkBAIC0zOTY3LDcgKzM5NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAgICAg
IFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5lY21hTW9kZSgp
OworICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAg
IAogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
ewpAQCAtNDgyNSwxMiArNDgyNSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIFZfSklU
T3BlcmF0aW9uX0dDQ0ogb3BlcmF0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpZiAo
Y2hpbGQyLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdENlbGxTdHJpbmdTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX25v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdTdHJpY3Q7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9u
ID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3RyaWN0OwpAQCAtNDg0MSwxMiArNDg0
MSwxMiBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMi51c2VLaW5kKCkg
PT0gU3ltYm9sVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0g
UHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlz
U3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3lt
Ym9sU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJv
bE5vblN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN5bWJvbE5vblN0cmljdDsKQEAgLTQ4NTgsMTIgKzQ4NTgsMTIgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgVl9KSVRPcGVyYXRpb25fR0pKSiBvcGVyYXRpb247CiAgICAgICAgICAg
ICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAg
ICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0Owog
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3Q7CiAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpCisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpKQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbFN0
cmljdDsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlv
biA9IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0OwpAQCAtNDkwOSw3ICs0OTA5LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgY29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMoCi0gICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAg
ICAgICAgICAgICBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAg
ICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5
b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6IChtX25vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFy
cmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05v
blN0cmljdCksCiAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN0b3JhZ2UsIGluZGV4LCB2YWx1
ZSwgY29udGludWF0aW9uKTsKQEAgLTQ5MzUsNyArNDkzNSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNQ
dXRCeVZhbE91dE9mQm91bmRzKAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmlzU3RyaWN0
TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbV9u
b2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8gKG1f
bm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGly
ZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9u
ZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5v
cCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlv
bmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJy
YXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBp
bmRleCwgdmFsdWUsIGNvbnRpbnVhdGlvbik7CkBAIC00OTc1LDcgKzQ5NzUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgTFZhbHVlIGlzT3V0T2ZCb3VuZHMgPSBtX291dC5hYm92ZU9yRXF1YWwo
CiAgICAgICAgICAgICAgICAgaW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2Us
IG1faGVhcHMuQXJyYXlTdG9yYWdlX3ZlY3Rvckxlbmd0aCkpOwogCi0gICAgICAgICAgICBhdXRv
IHNsb3dQYXRoRnVuY3Rpb24gPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYykKKyAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhGdW5jdGlvbiA9IG1fbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5k
c1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAg
ICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9u
UHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpOwogICAgICAgICAgICAgaWYgKCFhcnJheU1v
ZGUuaXNPdXRPZkJvdW5kcygpKSB7CkBAIC01MjQwLDcgKzUyNDAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1
bmN0aW9uLCByZXR1cm5HUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3Jp
cHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwog
CiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChz
bG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNTI2OSw3ICs1MjY5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDkzOTcKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAg
ICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRHZW5lcmljLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJv
LCBiYXNlLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCkpKSkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1D
YWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKSwgbV9vdXQuY29uc3RJbnQzMihtX25v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCkBAIC01MzEwLDcgKzUzMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKICAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJv
NjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIG1fb3V0LmludFB0clplcm8sIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAg
ICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uRGVsZXRlQnlWYWxHZW5lcmljLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5p
bnRQdHJaZXJvLCBiYXNlLCBzdWJzY3JpcHQsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5lY21h
TW9kZSgpLnZhbHVlKCkpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTk4MDUsNyArOTgwNSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVx
dWlyZWRCeXRlcyA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIHNpemVvZihDYWxsRnJhbWUq
KSAqIDI7CiAgICAgICAgICAgICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICAg
ICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRl
cyksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9i
amVjdCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJl
Z1QyKTsKKyAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uQ2FsbEV2YWwpKSwgR1BSSW5mbzo6bm9u
UHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKICAgICAgICAgICAgICAgICBqaXQuY2FsbChHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjAsIE9wZXJhdGlvblB0clRhZyk7CkBAIC0x
MzM1NSw3ICsxMzM1Niw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwoVm9pZCwgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFt
aWNWYXJOb25TdHJpY3QsCisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKFZvaWQsIG1fbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9w
ZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsCiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1f
bm9kZS0+Z2V0UHV0SW5mbygpKSkpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXgg
MDgwZmFlZGU4MWEyMjY4MjIxZDFjNTA4OTQxZDllZjI3MTI3OWEyMC4uOTdiZmIyMDJlNWY3NDg0
ZTZjYTRiNDlkMTRiYWM3ZjMxNjNkY2JjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTE1MCw3ICsx
NTAsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9y
TmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBKU09iamVjdCog
b2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgSlNPYmplY3QqIG9i
amVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAgICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3QpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
aW5kZXggNTE4OGMwMjM5ZGY0NmUwMDJkYzllMmExYjM3MjFiNWQwYjBjMGY4ZS4uYzRkOWM3Mjdl
MDcxOGVlYWVmMDA2ODI4NDRjNTQ3M2RiMjJiYmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0pTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBKU1ZhbHVlIGV2YWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKICAg
ICBEaXJlY3RFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZGlyZWN0RXZh
bENvZGVDYWNoZSgpLnRyeUdldChwcm9ncmFtU291cmNlLCBjYWxsZXJDYWxsU2l0ZUluZGV4KTsK
ICAgICBpZiAoIWV2YWwpIHsKLSAgICAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKSB7CisgICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAg
ICAgaWYgKHByb2dyYW1Tb3VyY2UuaXM4Qml0KCkpIHsKICAgICAgICAgICAgICAgICBMaXRlcmFs
UGFyc2VyPExDaGFyPiBwcmVwYXJzZXIoZ2xvYmFsT2JqZWN0LCBwcm9ncmFtU291cmNlLmNoYXJh
Y3RlcnM4KCksIHByb2dyYW1Tb3VyY2UubGVuZ3RoKCksIE5vblN0cmljdEpTT04sIGNhbGxlckNv
ZGVCbG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJl
cGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKQpAQCAtMTY1LDcgKzE2NSw3IEBAIEpTVmFsdWUgZXZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAg
ICAgICAgCiAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAg
ICAgICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2Nv
cGVDaGFpbiwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwg
Y2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGNh
bGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVy
VW5saW5rZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5z
aWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclRE
Wik7CisgICAgICAgIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9i
amVjdCwgbWFrZVNvdXJjZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgp
LnByb3ZpZGVyKCktPnNvdXJjZU9yaWdpbigpKSwgZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJV
bmxpbmtlZENvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERa
LCBlY21hTW9kZSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhZXZhbCk7CiAgICAgICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpAQCAtMTA1Nyw3ICsxMDU3LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwK
ICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcyA9IGV2YWwtPm51bUZ1
bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7CiAKICAgICBKU1Njb3BlKiB2YXJpYWJsZU9iamVj
dDsKLSAgICBpZiAoKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpICYm
IGV2YWwtPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgaWYgKChudW1WYXJpYWJsZXMgfHwgbnVtVG9w
TGV2ZWxGdW5jdGlvbkRlY2xzKSAmJiBldmFsLT5pc0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAg
ICAgIHNjb3BlID0gU3RyaWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpLCBzY29wZSk7CiAgICAgICAgIHZhcmlh
YmxlT2JqZWN0ID0gc2NvcGU7CiAgICAgfSBlbHNlIHsKQEAgLTExMDQsNyArMTEwNCw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IGNvZGVCbG9jay0+dW5saW5rZWRFdmFsQ29kZUJsb2NrKCk7CiAKICAgICAv
LyBXZSBjYW4ndCBkZWNsYXJlIGEgInZhciIvImZ1bmN0aW9uIiB0aGF0IG92ZXJ3cml0ZXMgYSBn
bG9iYWwgImxldCIvImNvbnN0Ii8iY2xhc3MiIGluIGEgc2xvcHB5LW1vZGUgZXZhbC4KLSAgICBp
ZiAodmFyaWFibGVPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzU3RyaWN0TW9k
ZSgpICYmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSkgeworICAg
IGlmICh2YXJpYWJsZU9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSAmJiAhZXZhbC0+aXNJblN0cmlj
dENvbnRleHQoKSAmJiAobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykp
IHsKICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZp
cm9ubWVudCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHZhcmlhYmxlT2JqZWN0KS0+Z2xvYmFs
TGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1WYXJpYWJsZXM7ICsraSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQg
PSB1bmxpbmtlZENvZGVCbG9jay0+dmFyaWFibGUoaSk7CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbAogCiAgICAgaWYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BM
ZXZlbEZ1bmN0aW9uRGVjbHMgfHwgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMpIHsKICAg
ICAgICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIgb3B0aW1pemVyKHZtLCB2YXJpYWJsZU9i
amVjdCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpICYmICFldmFsLT5pc1N0
cmljdE1vZGUoKSkKKyAgICAgICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5uZXh0KCkgJiYgIWV2YWwt
PmlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAgICAgICB2YXJpYWJsZU9iamVjdC0+Z2xvYmFs
T2JqZWN0KHZtKS0+dmFySW5qZWN0aW9uV2F0Y2hwb2ludCgpLT5maXJlQWxsKHZtLCAiRXhlY3V0
ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0aW9uIHdhdGNocG9pbnQiKTsKIAogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsKQEAgLTExNDQsNyArMTE0
NCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGlmIChldmFsLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICBp
ZiAoZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bVRvcExldmVsRnVuY3Rpb25EZWNsczsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKGkpOwogICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhcmlhYmxlT2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgKaW5kZXggOTBhOWRiNWM1YTlmYjAyNTZjNTdkMWQ2Y2U0OTlhN2ZlNzMxZTA4NS4uNjQ1Mzkx
MjdiOGM3NGM4MjAyOWIyYmI2MTgwZTY5Njk3MWE2NGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQog
ICAgIH07CiAKLSAgICBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
KyAgICBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7
CiAKICAgICBpbmxpbmUgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1bnNpZ25lZCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAppbmRleCA3MGY1ZGQ0ODFmMTZkZjE2YWJkZDMyM2JiNDY0YjU3MDI2
NGRiM2JjLi5hYmEwZWViNTk1YmQwMDU5NzMzNWNmZDMxMDg1YTRhNzY2MWU2NzI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE0NzIsMTkgKzE0
NzIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3RyaWN0TW9kZUZvcihD
b2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJh
bWUgPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOwotICAgICAgICBpZiAoIWlubGluZUNh
bGxGcmFtZSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7
Ci0gICAgICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmlzU3RyaWN0TW9kZSgpOwotICAgIH0K
LSAgICAKLSAgICBFQ01BTW9kZSBlY21hTW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0g
ICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RNb2RlRm9yKGNvZGVPcmlnaW4pID8gU3RyaWN0
TW9kZSA6IE5vdFN0cmljdE1vZGU7Ci0gICAgfQotICAgIAogICAgIEV4ZWN1dGFibGVCYXNlKiBl
eGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pOwogICAgIAogICAgIENv
ZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGIyYmZjZTYzMzdkOWJl
MDJkNjFmMzg5NWNlNWVjYTNhMGQ3ODMyMDYuLmUxZTU2NWRjNTI0OWY2YWNmZGFhMjRiZmZiNDQ3
MWZmY2IyMGI4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMTM4
LDcgKzEzOCw4IEBAIGJvb2wgSklUOjpjb21waWxlQ2FsbEV2YWwoY29uc3QgT3BDYWxsRXZhbCYg
Ynl0ZWNvZGUpCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3Io
bV9jb2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIAot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbEV2YWwsIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSwgcmVnVDEpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUudmFsdWUoKSksIHJlZ1QyKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFs
LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHJlZ1QxLCByZWdUMik7CiAKICAgICBhZGRT
bG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1QwKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOThmOTRhMjY4
ODMxNjkxZjY3OTViMjc5ZjFiNzA5ZDFhZDExZTQwZi4uMjI2ZTZiNzk4NTFiNjFiY2NiZDUxMDdj
ZmE1ZmNjMzAyNjBlNzk1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIEpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkK
IAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1
bmN0aW9uKCkKIHsKLSAgICBpZiAobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKSB7CisgICAgaWYg
KG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAobV9wdXRLaW5kID09IERpcmVj
dCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1p
emU7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
aW5kZXggYTY0N2M0NWIzZjRlM2I0M2RiNWQ0NjA1NWRmNzU4YjZiOTJlZjhlYS4uZjAzZTA5MjUz
ODU0MWZiMDM0MGYxMmM2YmE4YTYxMTExZjMzNjc3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMTI4LDcgKzEyOCw5
IEBAIHB1YmxpYzoKIAogY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlk
R2VuZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkgeyB9CisgICAg
SklUUHV0QnlJZEdlbmVyYXRvcigpCisgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3Ry
aWN0KCkpCisgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2Rl
QmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMjNmZjVjODFjMWMwMzIyMmY5MTJh
NDk5MzFmMjgzNmRhZGNmYWNiNy4uN2RjYmU4ZmEzYWU1NjhjYmFhNjVjYTQxZTVlMWJhMjc1NjU1
MzNmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTE2Niw3ICsx
NjYsNyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklU
OjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewotICAgIGlmICghbV9jb2RlQmxvY2stPmlz
S25vd25Ob3RJbW1lZGlhdGUocmVnKSkKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2Vs
bChyZWcpKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiB9CiAKQEAgLTQ5Niw3ICs0OTYs
NyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9yZShWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBjb25z
dCBKU1ZhbHVlIGNvbnN0YW50LCBSZWdpc3RlcgogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewotICAgIGlmICghbV9j
b2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9jb2RlQmxv
Y2stPmlzS25vd25DZWxsKHJlZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAg
ICAgICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC01MDYsNyAr
NTA2LDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmly
dHVhbFJlZ2lzdGVyIHJlZykKIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZywgUmVnaXN0ZXJJRCB0YWcpCiB7Ci0gICAgaWYg
KCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShyZWcpKSB7CisgICAgaWYgKCFtX2Nv
ZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkgewogICAgICAgICBpZiAocmVnLmlzQ29uc3RhbnQo
KSkKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGVsc2UKQEAgLTYw
MCw3ICs2MDAsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoUmVnaXN0ZXJJRCByZWcpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklEIHJlZywgVmlydHVhbFJlZ2lzdGVyIHZS
ZWcpCiB7Ci0gICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZSh2UmVnKSkK
KyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbCh2UmVnKSkKICAgICAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDU3NmY1ZjU0ZWU3YzhlNzUyNjY5MmM5MDRkMGJi
NjQyZTNiYjU2MzkuLjMyMTgzNDA2NDA1OTU0YmJiNjEyNTk1YjJlOTVkY2VjMzRlYWE5MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNzAxLDcg
KzcwMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgICAgIHJlcGF0Y2hQdXRCeUlE
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgcHV0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFs
dWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8pCitzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFs
dWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtNzE3LDEyICs3MTcsMTIgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUK
IAogICAgICAgICAgICAgYnlWYWxJbmZvLT5hcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7
CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPnB1dEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9k
ZS5pc1N0cmljdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpLCB2YWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIGJhc2VW
YWx1ZS5wdXRCeUluZGV4KGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChzdWJzY3JpcHQuaXNJbnQzMigp
KSB7CiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKQEAgLTczOCwxNSAr
NzM4LDE0IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGJ5VmFsSW5mby0+dG9v
a1Nsb3dQYXRoID0gdHJ1ZTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAg
YmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7
CiB9CiAKLXN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1
ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQorc3RhdGlj
IHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIGJhc2VPYmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CiAKICAg
ICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAvLyBEZXNwaXRl
IGl0cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3aWxsIHJldHVybiB0cnVlIG9ubHkgZm9yIHBv
c2l0aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0aG9zZSB2YWx1ZXMgYXJlIHZhbGlkIGFycmF5IGlu
ZGljZXMuCkBAIC03NjgsNyArNzY3LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAg
ICAgfQogCiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYmFzZU9iamVjdC0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/
IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93
KTsKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRl
eCwgdmFsdWUsIDAsIGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRo
cm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTc3OCw3ICs3NzcsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogICAgICAg
ICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChz
dWJzY3JpcHRBc1VJbnQzMikpIHsKICAgICAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRo
ID0gdHJ1ZTsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGJhc2VP
YmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZh
bHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGly
ZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CisgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJl
Y3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwgMCwgZWNtYU1v
ZGUuaXNTdHJpY3QoKSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRl
eFNob3VsZE5vdFRocm93KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
QEAgLTc5MCw3ICs3ODksNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogICAgIGlmIChPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkgewogICAgICAgICBi
eVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52
YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJv
dyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOworICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBlY21h
TW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdElu
ZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03OTgsNyAr
Nzk3LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAgICAgYnlWYWxJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CisgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoYmFzZU9iamVjdCwgZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgQ29tbW9uU2xvd1Bh
dGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJv
cGVydHksIHZhbHVlLCBzbG90KTsKIH0KIApAQCAtODg0LDcgKzg4Myw3IEBAIHN0YXRpYyBPcHRp
bWl6YXRpb25SZXN1bHQgdHJ5UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsCiAgICAgcmV0dXJuIG9wdGltaXphdGlvblJlc3VsdDsKIH0KIAotdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC05MDIsNyArOTAxLDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2QKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVl
OwogICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihP
VVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbykpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1
YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KIAogc3RhdGljIE9wdGlt
aXphdGlvblJlc3VsdCB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNPYmplY3QqIG9iamVjdCwgSlNWYWx1ZSBzdWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC05NzQsNyArOTczLDcgQEAgc3Rh
dGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICByZXR1cm4gb3B0aW1pemF0aW9uUmVzdWx0OwogfQog
Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNj
cmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywg
RUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTk5
NSwxMCArOTk0LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyks
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
b2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3Jp
cHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1
YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTEwMDgsMTEgKzEwMDcsMTEgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGUKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAKLSAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCksIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKTsKKyAgICBwdXRCeVZh
bChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBl
Y21hTW9kZSk7CiB9CiAKIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTAyMiwxMCArMTAyMSwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKLSAgICBkaXJlY3RQdXRCeVZh
bChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIGFzT2JqZWN0KGJhc2VWYWx1
ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbyk7CisgICAgZGlyZWN0UHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbElu
Zm8sIGVjbWFNb2RlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxl
ZUZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBFQ01B
TW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTAzNSw3ICsxMDM0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxl
ZUZyYW1lLT5ndWFyYW50ZWVkSlNWYWx1ZUNhbGxlZSgpLCBnbG9iYWxGdW5jRXZhbCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcmVz
dWx0ID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgZWNtYU1vZGUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIxNjMsNyArMjE2Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhK
U0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmpl
Y3QtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9iYWxPYmplY3QsIGluZGV4LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9CiAgICAgCi1zdGF0aWMg
Ym9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qs
IEpTVmFsdWUgYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEVDTUFNb2RlIGVjbWFNb2Rl
KQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE3
MywxMiArMjE3MiwxMiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgIGlmICghY291bGREZWxldGUg
JiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3Vs
ZERlbGV0ZSAmJiBlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgIHJl
dHVybiBjb3VsZERlbGV0ZTsKIH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCBy
YXdDYWNoZWFibGVJZGVudGlmaWVyKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCBy
YXdDYWNoZWFibGVJZGVudGlmaWVyLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMjE5MiwyMSArMjE5MSwyMSBAQCBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUwogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVp
ZCgpKTsKIAotICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgaWRlbnQpOworICAgIGJvb2wgcmVzdWx0ID0gZGVs
ZXRlQnlJZChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBiYXNlVmFsdWUsIGlkZW50LCBlY21hTW9k
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKCFwYXJzZUluZGV4
KGlkZW50KSkgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdC
eSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCksIGlkZW50aWZpZXIp
KQotICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywg
RGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50
aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwsIGVjbWFNb2RlKTsKICAgICAgICAg
fQogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJf
dCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hl
YWJsZUlkZW50aWZpZXIsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CkBAIC0yMjE0LDEwICsyMjEzLDEwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwog
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgaWRlbnQpOworICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgdm0sIHNsb3Qs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGlkZW50LCBlY21hTW9kZSk7CiB9CiAKLXN0
YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGtleSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1Zh
bHVlIGJhc2UsIEpTVmFsdWUga2V5LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIyMzYsMTIgKzIyMzUsMTIgQEAg
c3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkK
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxl
dGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKLXNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRUNNQU1vZGUg
ZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIyNTMsNyArMjI1
Miw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51
bGwoKTsKIAotICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAgYm9vbCByZXN1bHQg
PSBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlw
dCwgZWNtYU1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50
aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgewpAQCAtMjI2NCwy
MCArMjI2MywyMCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5j
b25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxs
KCksIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgICAgICAgICAg
cmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUs
IG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5
VmFsLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKLSAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpOworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxP
YmplY3QsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCksIGVjbWFNb2RlKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkK
QEAgLTI1NDQsNyArMjU0Myw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Nj
b3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEluc3RyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0
aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3Qoc2NvcGUsIGdldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQ
dXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5w
dXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGI1MjQ5YWUyMTM4ZjkyMGQ5YTVjMzQ5YzRk
NzJlY2YyNjIyMjg1NzIuLjEyMDI5OWJlMTUwZjhiYzcxZGUwYzk1MTUwMzIyNzAxYjc1ZDFiYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC02NCw2ICs2
NCw3IEBAIGNsYXNzIFZNOwogY2xhc3MgV2F0Y2hwb2ludFNldDsKIAogc3RydWN0IEJ5VmFsSW5m
bzsKK3N0cnVjdCBFQ01BTW9kZTsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5z
dHJ1Y3Rpb247CiAKQEAgLTE4NywxMSArMTg4LDEyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RG
X0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJO
QUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5m
byosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9J
TlRFUk5BTDsKKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZh
bChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChDYWxsRnJh
bWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKIFNsb3dQ
YXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwo
Q2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7
CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ2FsbChD
YWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsK
QEAgLTI1MCwxMCArMjUyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkg
V1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZf
SU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGFyZ2V0KSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxl
dGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3Qs
IEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOworc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGFyZ2V0LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQsIEVD
TUFNb2RlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVz
aFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5j
b2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmplY3QpIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYzM1NDNkYWU3ZDA4MmViZGVjNjFkMGJj
ZDViOGY4NzUyMDQwYmU3NC4uYTQwODA1OTM2NTBhNmVjNTY4YWE2MTA2OTE3ZmU5N2IzOGYxMzM4
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5
VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBtX2NvZGVCbG9jay0+
ZWNtYU1vZGUoKSwgcHV0S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3Ry
dWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBG
SVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZl
bHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTMxMSwxMSArMzExLDEzIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2U7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZTsKKyAgICBFQ01BTW9kZSBl
Y21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsKIAogICAgIGF1dG8gbG9hZCA9IFsmXShhdXRv
IGJ5dGVjb2RlKSB7CiAgICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHBy
b3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5t
X3ZhbHVlOworICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsK
IAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTMzMSw3ICszMzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8UwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihp
c0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IHJlZ1QwLCByZWdUMSwgcmVnVDIsIGJ5VmFsSW5mbyk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVnVDIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKGVj
bWFNb2RlLnZhbHVlKCkpKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbElu
c3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENv
bXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNh
bGw7CkBAIC00MjcsNyArNDI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgcmVnVDApOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMo
KSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0
aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpLCBUcnVzdGVk
SW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpT
VmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC00NzcsNyArNDc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFMKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdU
MSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9w
dGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCByZWdUMCwgcmVnVDEsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2Rl
LnZhbHVlKCkpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTY1
NCw3ICs2NTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29k
ZS5tX3ZhbHVlOwotICAgIGJvb2wgZGlyZWN0ID0gISEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5
SWRJc0RpcmVjdCk7CisgICAgYm9vbCBkaXJlY3QgPSBieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0
KCk7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlm
aWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAogICAgIC8vIEluIG9yZGVyIHRvIGJlIGFibGUg
dG8gcGF0Y2ggYm90aCB0aGUgU3RydWN0dXJlLCBhbmQgdGhlIG9iamVjdCBvZmZzZXQsIHdlIHN0
b3JlIG9uZSBwb2ludGVyLApAQCAtNjY4LDcgKzY3MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVn
VDIsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwK
ICAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA4ZDE4ODAzNmEyMzU5ZGYwYjFlMWFm
MWFiNGQ4NzdmYzZjNjBjOWFhLi41MzU0ODZjZDhmMTUzMmFkMWJlYjUxNWE4NmI5MDhhYmM4MzY5
NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
UwogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QyLCByZWdUMSk7CiAgICAgZW1pdExvYWQocHJvcGVy
dHksIHJlZ1QzLCByZWdUMCk7CiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1Q1LCByZWdUNCk7Ci0g
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QyLCByZWdUMSksIEpTVmFsdWVSZWdzKHJl
Z1QzLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCksIGJ5VmFsSW5mbyk7CisgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QyLCByZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1Qz
LCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCksIGJ5VmFsSW5mbywgYnl0ZWNvZGUu
bV9pc1N0cmljdE1vZGUpOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5z
dHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29t
cGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2Fs
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGMzZGYwNzkyZTRlNzJk
NDliNGQ3YTIyNmNhMTAxMTk1ZDhmNGM2MDguLmRlN2Q2NmQwMzFlY2RiOWMzNTRhNWFjOTgxYTI3
NWNjNDFhMjY0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNzM4
LDcgKzczOCw3IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFw
cHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKLXN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVs
QnlLaW5kKQorc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBEZWxCeUtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKQEAg
LTc3MSw3ICs3NzEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVC
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxp
ZE9mZnNldChuZXdPZmZzZXQpKTsKICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpj
cmVhdGVEZWxldGUodm0sIGNvZGVCbG9jaywgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQsIG9sZFN0
cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKLSAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkgeworICAgICAgICB9IGVsc2UgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgp
KSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc05vbmNvbmZpZ3VyYWJsZSgpKQogICAgICAgICAg
ICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNz
Q2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlLCBwcm9wZXJ0eU5hbWUsIGludmFsaWRPZmZzZXQs
IG9sZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTc5Miwx
MiArNzkyLDEyIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgcmV0dXJuIHJlc3VsdC5z
aG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7CiB9CiAK
LXZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZh
bHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit2b2lk
IHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1l
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kLCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYgKHRyeUNhY2hl
RGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKSB7
CisgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3Qs
IGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kLCBl
Y21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRl
bEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9i
amVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkp
KTsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCiAgICAgICAgICAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guaAppbmRleCBlNWNlNDY4NzExNDYzOTJlNGU3MmU2MTRhMmY1ZTU4ZWE2NzQ5OTQ1
Li5kODkwZmQ3MGFhY2Q4MmZmYmY0ZGE4ZmIyNGUxZjNkZmY1NzQ5ZGMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDksNyArNDksNyBAQCBlbnVtIGNsYXNzIERlbEJ5S2lu
ZCB7CiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9p
ZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IEdldEJ5S2luZCk7CiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJs
b2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHV0
UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKLXZvaWQgcmVwYXRj
aERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90
JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1
YkluZm8mLCBEZWxCeUtpbmQpOwordm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCwgRUNNQU1v
ZGUpOwogdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNP
YmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBl
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwg
Q2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDJiZmZjMzgxNjNmZTMxYmU5
NDFiZWQ2YTVmYjU2ZDI5OGJlYjYyMjcuLmYzOWY4ZjVjMWFjMDdiZDk0MDAwZDg2ZGFhNjU0ODlm
YTg5MzU1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcApAQCAtODM2LDEwICs4MzYsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV9pZCkKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOwotICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29k
ZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
VmFsdWUsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBjb2RlQmxvY2st
PnB1dEJ5SWRDb250ZXh0KCkpOwogCiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNl
VmFsdWUuaXNDZWxsKCkgPyBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgOiBudWxs
cHRyOwotICAgIGlmIChieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KQorICAgIGlm
IChieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCkpCiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6
cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSks
IGlkZW50LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSksIHNsb3QpOwog
ICAgIGVsc2UKICAgICAgICAgYmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50
LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSksIHNsb3QpOwpAQCAtODg4
LDcgKzg4OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9s
ZFN0cnVjdHVyZS0+aWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElz
RGlyZWN0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGJ5dGVjb2RlLm1f
ZmxhZ3MuaXNEaXJlY3QoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3U3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihnbG9iYWxP
YmplY3QsIGFzT2JqZWN0KGJhc2VDZWxsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChjaGFpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFk
YXRhLm1fc3RydWN0dXJlQ2hhaW4uc2V0KHZtLCBjb2RlQmxvY2ssIGNoYWluKTsKQEAgLTkyNyw3
ICs5MjcsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQogICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6
OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisg
ICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkpCiAg
ICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRv
RGVsZXRlUHJvcGVydHlFcnJvcikpOwogICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGRE
ZWxldGUpKTsKIH0KQEAgLTEwMjUsNyArMTAyNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKLSAgICBib29sIGlz
U3RyaWN0TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgCiAgICAgaWYgKExJ
S0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNj
cmlwdC5hc1VJbnQzMigpOwpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
YmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlz
U3RyaWN0KCk7CiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAg
ICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1
ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2
YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAgICBBU1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNV
SW50MzIoKSkpOwpAQCAtMTExMiw3ICsxMTEyLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RlbF9ieV92YWwpCiAgICAgfQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwog
Ci0gICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAg
IGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAg
ICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0Rl
bGV0ZVByb3BlcnR5RXJyb3IpKTsKICAgICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNv
dWxkRGVsZXRlKSk7CkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5U
eXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlv
bgogICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwp
KQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgc2V0VXBDYWxsKGNhbGxl
ZUZyYW1lLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSkpOwogICAgIAotICAgIHZtLmhvc3RD
YWxsUmV0dXJuVmFsdWUgPSBldmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUpOworICAgIHZt
Lmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGJ5
dGVjb2RlLm1fZWNtYU1vZGUpOwogICAgIExMSU5UX0NBTExfUkVUVVJOKGdsb2JhbE9iamVjdCwg
Y2FsbGVlRnJhbWUsIExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBD
RnVuY3Rpb25QdHJUYWcpOwogfQogICAgIApAQCAtMTg3NCw3ICsxODc0LDcgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zY29wZSkKICAgICBpZiAobWV0YWRhdGEubV9n
ZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0
eSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihnbG9i
YWxPYmplY3QsIGlkZW50KSk7CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwg
aXNJbml0aWFsaXphdGlvbihtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2Rl
KCkpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4
dCwgaXNJbml0aWFsaXphdGlvbihtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25N
b2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9i
amVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBDb21tb25TbG93UGF0aHM6OnRy
eUNhY2hlUHV0VG9TY29wZUdsb2JhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYnl0ZWNvZGUs
IHNjb3BlLCBzbG90LCBpZGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggN2E2NDJjMDI2ZmRiMGQyMDk5Y2FlZGU2NmM3MjE1
MTdlNmY2ZmVlMS4uYjA0N2ZiNTgwOGNmMGM4ZTAwYWMwMTM1YzExOWUyMzU0MWIyMDI3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApA
QCAtNTk5LDcgKzU5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSk7CiAKICAgICAvLyAxLiBMZXQgYXJyYXkgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5n
IFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZhbHVlLgogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
dGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC02ODEsNyArNjgxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBT
dHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC03NzksNyAr
Nzc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBMZXQgTyBiZSA/IFRvT2JqZWN0KHRoaXMg
dmFsdWUpLgotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2Jq
ZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZW5j
b2RlZEpTVmFsdWUoKTsKQEAgLTg2NCw3ICs4NjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICBpZiAoaXNKU0FycmF5KHRoaXNWYWx1ZSkp
CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzQXJy
YXkodGhpc1ZhbHVlKS0+cG9wKGdsb2JhbE9iamVjdCkpKTsKQEAgLTg5OSw3ICs4OTksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgaWYg
KExJS0VMWShpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSA9PSAxKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsK
QEAgLTk0MCw3ICs5NDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jUmV2ZXJzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09i
amVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1ZhbHVlKCk7CkBAIC0xMDM3LDcgKzEwMzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEMKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1h
cnJheS5wcm90b3R5cGUuc2xpY2UKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJp
Y3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNj
b3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmop
KQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMjIyLDcgKzEyMjIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICAvLyAxNS40LjQuMTMKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEzNTQsNyArMTM1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
Ly8gMTUuNC40LjE0Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRo
aXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVy
biB7IH07CkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4x
NQotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDIyNmI0
ODM1NDYyZDhjNDVlNjE5ZjY2ODAwYmU5OTdhOTFhZTg4YTEuLjgwMmYyMDJmOTI5YjAwODAzNGZh
N2Q2ZWI4MTA5MGFiNzMzMGQyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MTgsNyArMTgxOCw2IEBAIHB1YmxpYzoKICAgICBSZWY8
VW5saW5rZWRNZXRhZGF0YVRhYmxlPiBtZXRhZGF0YShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7
IHJldHVybiBtX21ldGFkYXRhLmRlY29kZShkZWNvZGVyKTsgfQogCiAgICAgdW5zaWduZWQgdXNl
c0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9Ci0gICAgdW5zaWduZWQgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICB1bnNpZ25lZCBp
c0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgdW5z
aWduZWQgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVk
VmFyaWFibGVzOyB9CiAgICAgdW5zaWduZWQgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CkBAIC0xODUxLDcgKzE4NTAsNiBAQCBwcml2YXRl
OgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKICAgICB1bnNpZ25lZCBt
X3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5z
aWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFy
aWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKQEAgLTIw
NDgsNyArMjA0Niw2IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2Vk
Q29kZUJsb2NrKERlY29kZXImIGRlY29kZXIsIFN0cnVjdHVyZSoKICAgICAsIG1fc2NvcGVSZWdp
c3RlcihjYWNoZWRDb2RlQmxvY2suc2NvcGVSZWdpc3RlcigpKQogCiAgICAgLCBtX3VzZXNFdmFs
KGNhY2hlZENvZGVCbG9jay51c2VzRXZhbCgpKQotICAgICwgbV9pc1N0cmljdE1vZGUoY2FjaGVk
Q29kZUJsb2NrLmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGNhY2hlZENv
ZGVCbG9jay5pc0NvbnN0cnVjdG9yKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGNh
Y2hlZENvZGVCbG9jay5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKQogICAgICwgbV9pc0J1aWx0aW5G
dW5jdGlvbihjYWNoZWRDb2RlQmxvY2suaXNCdWlsdGluRnVuY3Rpb24oKSkKQEAgLTIyMzQsNyAr
MjIzMSw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlw
ZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAgICAgbV90aGlzUmVnaXN0ZXIgPSBj
b2RlQmxvY2subV90aGlzUmVnaXN0ZXI7CiAgICAgbV9zY29wZVJlZ2lzdGVyID0gY29kZUJsb2Nr
Lm1fc2NvcGVSZWdpc3RlcjsKICAgICBtX3VzZXNFdmFsID0gY29kZUJsb2NrLm1fdXNlc0V2YWw7
Ci0gICAgbV9pc1N0cmljdE1vZGUgPSBjb2RlQmxvY2subV9pc1N0cmljdE1vZGU7CiAgICAgbV9p
c0NvbnN0cnVjdG9yID0gY29kZUJsb2NrLm1faXNDb25zdHJ1Y3RvcjsKICAgICBtX2hhc0NhcHR1
cmVkVmFyaWFibGVzID0gY29kZUJsb2NrLm1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgbV9p
c0J1aWx0aW5GdW5jdGlvbiA9IGNvZGVCbG9jay5tX2lzQnVpbHRpbkZ1bmN0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXgg
OGRkZDk4YTFiZmIwZmVjMTVhN2Q3MzJhY2MzYzJjZWY4NWQwNDBiNC4uYmY4NTQxMjI0NmIyOWM5
OTllNTIzYTdhNGVjY2M4MzEwNzI2Yzc5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgYm9vbCBD
bG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGlmICghdGhpc09iamVjdC0+c3BlY2lhbHNNYXRlcmlh
bGl6ZWQoKSkgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpc09iamVjdC0+bV9jYWxsZWUtPmV4ZWN1dGFibGUo
KSk7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2Rl
KCk7CisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENv
bnRleHQoKTsKIAogICAgICAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVl
KSB7CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CkBAIC0yNTAsNyArMjUwLDcgQEAg
dm9pZCBDbG9uZWRBcmd1bWVudHM6Om1hdGVyaWFsaXplU3BlY2lhbHMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgCiAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KG1fY2FsbGVlLT5leGVjdXRhYmxlKCkpOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0g
ZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVj
dXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpOwogICAgIAogICAgIGlmIChpc1N0cmljdE1vZGUp
CiAgICAgICAgIHB1dERpcmVjdEFjY2Vzc29yKGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+Y2FsbGVlLCB0aGlzLT5nbG9iYWxPYmplY3Qodm0pLT50aHJvd1R5cGVFcnJvckFyZ3VtZW50
c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpB
Y2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApp
bmRleCBmYTNjZDMyNmJjZDViOTc4OWEyNDI3ZTYxM2FjOTU0OGIyZmIzYWUyLi45ZTE3MmI2YWVh
NzRiMDYyZGU5ZmZlZjhkYTU2ZDQ5MzRmOTRkNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTkxLDExICs5MSwxMSBAQCBVbmxpbmtlZENvZGVC
bG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgcwogICAgICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVh
dHVyZXMoKSB8IGFycm93Q29udGV4dEZlYXR1cmUsIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlh
YmxlcygpLCByb290Tm9kZS0+bGFzdExpbmUoKSwgZW5kQ29sdW1uKTsKIAogICAgIGJvb2wgdXNl
c0V2YWwgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIEV2YWxGZWF0dXJlOwotICAgIGJvb2wgaXNT
dHJpY3RNb2RlID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZTsKKyAg
ICBFQ01BTW9kZSBlY21hTW9kZSA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZl
YXR1cmUgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CiAgICAgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3Nh
bWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KQogICAgICAgICBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKCk7Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGlz
U3RyaWN0TW9kZSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1v
ZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2Nr
VHlwZT46OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7
CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2
ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlSW5mbywgY29kZUdlbmVyYXRpb25Nb2RlKTsKICAgICB1bmxpbmtlZENv
ZGVCbG9jay0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXND
YXB0dXJlZFZhcmlhYmxlcygpLCBsaW5lQ291bnQsIHVubGlua2VkRW5kQ29sdW1uKTsKQEAgLTEw
NCw3ICsxMDQsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIGlmICghc291cmNlLnBy
b3ZpZGVyKCktPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKICAgICAgICAg
dW5saW5rZWRDb2RlQmxvY2stPnNldFNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoc291cmNlLnBy
b3ZpZGVyKCktPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKSk7CiAKLSAgICBlcnJvciA9IEJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5s
aW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgdmFyaWFibGVzVW5kZXJURFopOwor
ICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQo
KSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCB2YXJpYWJs
ZXNVbmRlclREWiwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0NGQ4ZmI0YjQyMmE5MmQwM2I4MWFiMGFmMThkNGY2
NWIxZThjODM1Li5iNTZhNzQ4ZWQ0NmM0OGE2M2EwYjU1MDcyMzNhMzE3OTJiZGIyYTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
QEAgLTM4MCw3ICszODAsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fdGhpcykKICAg
ICAvLyBkaWZmZXJlbnQgb2JqZWN0IHRoYXQgc3RpbGwgaGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBv
biB0aGUgZmFzdCBwYXRoIHNpbmNlIGl0J2xsIHByb2R1Y2UKICAgICAvLyB0aGUgc2FtZSBTcGVj
dWxhdGVkVHlwZS4gVGhlcmVmb3JlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHZhbHVl
IHByb2ZpbGluZyBvbiB0aGUKICAgICAvLyBmYXN0IHBhdGguCi0gICAgYXV0byB2YWx1ZSA9IHYx
LnRvVGhpcyhnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RN
b2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgYXV0byB2YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxP
YmplY3QsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19D
VVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHZhbHVlLCBQUk9GSUxFX1ZBTFVFKHZhbHVlKSk7CiB9
CiAKQEAgLTk4OSw3ICs5ODksNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3Zh
bCkKICAgICB9CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgCi0gICAgaWYgKCFjb3VsZERl
bGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUg
JiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICBUSFJPVyhjcmVhdGVU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKICAg
ICAKICAgICBSRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CkBAIC0xMzA2LDcgKzEzMDYs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbCA9IEdFVF9DKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlKS5qc1ZhbHVlKCk7
CiAgICAgSlNWYWx1ZSBwdXRWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fdmFsdWUpLmpzVmFsdWUo
KTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOworICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXNWYWwsIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSwgY29kZUJsb2Nr
LT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVj
dCwgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKICAgICBFTkQoKTsKIH0KQEAgLTEzMjIsNyArMTMy
Miw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKICAg
ICAKICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzVmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXNWYWx1ZSwgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICBi
YXNlVmFsdWUucHV0KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICBF
TkQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRoc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRoc0lubGluZXMuaAppbmRleCAzN2FmYTc2YzQwNTc1OTM1NTA2ZTU5Yjg0ZDJiNWYx
ZTgwOWFmZmYzLi5iYjU0NzQwN2MxNzU3NWVhYzQ0ZGFlYzFmNGI3ZTA3MTk5ZGM0NjQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
SW5saW5lcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29w
ZUdsb2JhbCgKICAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CiAgICAgICAgICAgICByZXNvbHZlVHlwZSA9
IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNr
IGluLgogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1l
dGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRh
dGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6
YXRpb25Nb2RlKCksIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwpAQCAtNjEsNyArNjEs
NyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xU
YWJsZSgpLT5nZXQoaWRlbnQuaW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNO
dWxsKCkpOwogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZv
KG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0
YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlh
bGl6YXRpb25Nb2RlKCksIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsK
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZz
ZXQoKSkuc2xvdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwOSw3ICsxMDksNyBAQCBp
bmxpbmUgdm9pZCB0cnlDYWNoZUdldEZyb21TY29wZUdsb2JhbCgKICAgICAgICAgICAgIFJlc29s
dmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5
cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVy
dHk7CiAgICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBi
ZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0
YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZl
TW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBt
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIG1ldGFkYXRhLm1fZ2V0
UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIEZBTExUSFJPVUdIOwpAQCAtMTIzLDcgKzEyMyw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hl
R2V0RnJvbVNjb3BlR2xvYmFsKAogICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9
IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwo
KSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
bWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8u
cmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZl
VHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0
YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNo
cG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5t
X29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCmluZGV4IDIxMTdjYzllOTZkOWYwMDRmYTE2MzllYTlmZDgwNmE0NTM4YzAwZWMuLmViYzZm
MjJlMDA5ZDIzNGM4MDUzMDRhN2UwNzYwNzdkMDY5OTkwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgSlNWYWx1
ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEpTVmFsdWUKIAogICAgIGlmICghdGhpc1ZhbHVlIHx8IHRoaXNWYWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICB0aGlzVmFsdWUgPSBnbG9iYWxPYmplY3Q7Ci0gICAg
SlNPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGds
b2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0ganND
YXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
bG9wcHkoKSkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVQ
cm9ncmFtKHNvdXJjZSwgZ2xvYmFsT2JqZWN0LCB0aGlzT2JqKTsKIAogICAgIGlmIChzY29wZS5l
eGNlcHRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDFhNzJiZmI0N2VmZWZhNTUwZGVmOTgzNTY2
NTRhZjY0OTA3Nzk3MzUuLjdjMTliNzVjNjJjODA0MTM2MmRkOWViMTJlZGE1OTc5MjUxMTVkZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFs
RXhlY3V0YWJsZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURp
cmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2
YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHZhcmlhYmxlc1VuZGVyVERaKQorRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCog
dmFyaWFibGVzVW5kZXJURFosIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC00NSwxMSArNDUsMTEgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4
ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJpdmVk
Q29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CisgICAg
YXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxF
eGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UsIGVjbWFNb2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJp
Y3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKKyAgICBKU1Bh
cnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBKU1BhcnNl
clN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAg
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2Jh
bE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwogCiAgICAgLy8gV2UgZG9uJ3Qg
Ym90aGVyIHdpdGggQ29kZUNhY2hlIGhlcmUgYmVjYXVzZSBkaXJlY3QgZXZhbCB1c2VzIGEgc3Bl
Y2lhbGl6ZWQgRGlyZWN0RXZhbENvZGVDYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDQ3ODI2YmYzMjBjMWMx
N2Q1ODMxMzljNDZlNTNlNmRhZWRhYmJkNDkuLjI0MDc1YTdmNWEzNmM3M2ZlYmE0MDdlNzEwOWE2
ZmMzM2YyNzBkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgRGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFi
bGUgewogcHVibGljOgotICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQs
IERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxD
b250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIHN0YXRpYyBEaXJl
Y3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29k
ZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2
YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIHBy
aXZhdGU6CiAgICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
b3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQU1vZGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQU1vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0NDRkZTI4
ZmZmMTZlYjdiMTBmNjJhNjdlOTdjMjAwMWYwMTZhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BTW9kZS5jcHAKQEAgLTAsMCArMSw0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRUNNQU1vZGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBFQ01BTW9kZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChpc1N0cmljdCgpKQorICAgICAgICBvdXQucHJp
bnQoIlN0cmljdE1vZGUiKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgiTm90U3RyaWN0
TW9kZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0VDTUFNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FQ01BTW9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmZjFiMTFhNjZlYTkxN2Q3ZTNkM2NkMTlhNTc5
MjJiNTllNzdjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FQ01BTW9kZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXVEYgewor
Y2xhc3MgUHJpbnRTdHJlYW07Cit9OworCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEVDTUFN
b2RlIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgU3RyaWN0TW9kZSA9IDA7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFNsb3BweU1vZGUgPSAxOworCitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0ZXhwciBFQ01BTW9kZSBmcm9tQnl0ZSh1aW50OF90IGJ5dGUpIHsgcmV0dXJu
IEVDTUFNb2RlKGJ5dGUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFQ01BTW9kZSBzdHJpY3Qo
KSB7IHJldHVybiBFQ01BTW9kZShTdHJpY3RNb2RlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
RUNNQU1vZGUgc2xvcHB5KCkgeyByZXR1cm4gRUNNQU1vZGUoU2xvcHB5TW9kZSk7IH0KKworICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1N0cmljdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0g
U3RyaWN0TW9kZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3RleHByIEVDTUFNb2RlKHVpbnQ4X3QgdmFsdWUpCisg
ICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlID09
IFN0cmljdE1vZGUgfHwgbV92YWx1ZSA9PSBTbG9wcHlNb2RlLCBtX3ZhbHVlKTsKKyAgICB9CisK
KyAgICB1aW50OF90IG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDYwNWIyZWZm
YjFkN2I4MmU1Y2RiN2M2NDUzZGM1ZGU3MWYzMDI2NzYuLjY3ZTY5Yzg2MjliYTNmYjM4MTE0ODEx
MzZiOGU3ZTk5NDgwZWQ3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXZhbEV4ZWN1dGFibGUuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJF
X0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFs
c2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVy
aXZlZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
dXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2Vy
U2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNl
TW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4
dFR5cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bUZ1
bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxv
Y2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggNDQzYmIzOGE2
NWNiODA0NzQ1Njg1N2NkOGQyNzZhZGU5ZjdhNmI1Yy4uYmFkZTk4NzM1Zjk5ZGM0N2U3YTZkYzc4
N2M1Nzk3MTFjZTUxNWVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICAvLyBQZXIgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZm9y
YmlkZGVuLWV4dGVuc2lvbnMsIG9ubHkgc2xvcHB5LW1vZGUgbm9uLWJ1aWx0aW4gZnVuY3Rpb25z
IGluIG9sZC1zdHlsZSAocHJlLUVTNikgc3ludGFjdGljIGZvcm1zIGNhbiBjb250YWluCiAgICAg
ICAgIC8vICJjYWxsZXIiIGFuZCAiYXJndW1lbnRzIi4KLSAgICAgICAgcmV0dXJuICFpc1N0cmlj
dE1vZGUoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9u
TW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuICFp
c0luU3RyaWN0Q29udGV4dCgpICYmIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9y
bWFsRnVuY3Rpb25Nb2RlICYmICFpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOwogICAgIH0K
ICAgICBib29sIGhhc1Byb3RvdHlwZVByb3BlcnR5KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uY3BwCmluZGV4IGQ2ZTcxZWQ4NDhhN2M1
N2JjZTg5ZjkyNDQ4MjkyMWUzOTU4NDBjOGMuLjE1MDhhNjAxN2M5YjFhZTVlNzAxODkyOTdiMjYz
ZWMxNjI1ZjYyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dFB1dEluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dElu
Zm8uY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIEdldFB1dElu
Zm86OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQob3BlcmFu
ZCgpLCAiPCIsIHJlc29sdmVNb2RlKCksICJ8IiwgcmVzb2x2ZVR5cGUoKSwgInwiLCBpbml0aWFs
aXphdGlvbk1vZGUoKSwgIj4iKTsKKyAgICBvdXQucHJpbnQob3BlcmFuZCgpLCAiPCIsIHJlc29s
dmVNb2RlKCksICJ8IiwgcmVzb2x2ZVR5cGUoKSwgInwiLCBpbml0aWFsaXphdGlvbk1vZGUoKSwg
InwiLCBlY21hTW9kZSgpLCAiPiIpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldFB1dEluZm8uaAppbmRleCAwNmZmZDQzYTAyNWYwYjVlY2I0ZTAxMGUyNzE4ZDA2YzAx
YjQ1OWRlLi45MzQwODAxZjIxZjY1ZDI3YjZhM2Y4MTY2YWQ4NDg2NTJkMWI2N2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oCkBAIC0yMDIsMTggKzIwMiwy
MCBAQCBjbGFzcyBHZXRQdXRJbmZvIHsKICAgICB0eXBlZGVmIHVuc2lnbmVkIE9wZXJhbmQ7CiBw
dWJsaWM6CiAgICAgLy8gR2l2ZSBlYWNoIGZpZWxkIDEwIGJpdHMgZm9yIHNpbXBsaWNpdHkuCi0g
ICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3BlcmFuZCkgKiA4ID4gMzAsICJOb3QgZW5vdWdoIGJp
dHMgZm9yIEdldFB1dEluZm8iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kKSAq
IDggPiAzMSwgIk5vdCBlbm91Z2ggYml0cyBmb3IgR2V0UHV0SW5mbyIpOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgaXNTdHJpY3RTaGlmdCA9IDMwOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbW9kZVNoaWZ0ID0gMjA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBpbml0aWFsaXphdGlvblNoaWZ0ID0gMTA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB0eXBlQml0cyA9ICgxIDw8IGluaXRpYWxpemF0aW9uU2hpZnQpIC0gMTsKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGluaXRpYWxpemF0aW9uQml0cyA9ICgoMSA8PCBtb2RlU2hpZnQp
IC0gMSkgJiB+dHlwZUJpdHM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtb2RlQml0
cyA9ICgoMSA8PCAzMCkgLSAxKSAmIH5pbml0aWFsaXphdGlvbkJpdHMgJiB+dHlwZUJpdHM7Ci0g
ICAgc3RhdGljX2Fzc2VydCgobW9kZUJpdHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0
cykgPT0gMHgwLCAiVGhlcmUgc2hvdWxkIGJlIG5vIGludGVyc2VjdGlvbiBiZXR3ZWVuIFJlc29s
dmVNb2RlIFJlc29sdmVUeXBlIGFuZCBJbml0aWFsaXphdGlvbk1vZGUiKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGlzU3RyaWN0Qml0ID0gMSA8PCAzMDsKKyAgICBzdGF0aWNfYXNz
ZXJ0KChtb2RlQml0cyAmIGluaXRpYWxpemF0aW9uQml0cyAmIHR5cGVCaXRzICYgaXNTdHJpY3RC
aXQpID09IDB4MCwgIlRoZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNv
bHZlTW9kZSBSZXNvbHZlVHlwZSBhbmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7CiAKICAgICBHZXRQ
dXRJbmZvKCkgPSBkZWZhdWx0OwogCi0gICAgR2V0UHV0SW5mbyhSZXNvbHZlTW9kZSByZXNvbHZl
TW9kZSwgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFs
aXphdGlvbk1vZGUpCi0gICAgICAgIDogbV9vcGVyYW5kKChyZXNvbHZlTW9kZSA8PCBtb2RlU2hp
ZnQpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsaXphdGlvbk1vZGUpIDw8IGluaXRp
YWxpemF0aW9uU2hpZnQpIHwgcmVzb2x2ZVR5cGUpCisgICAgR2V0UHV0SW5mbyhSZXNvbHZlTW9k
ZSByZXNvbHZlTW9kZSwgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9k
ZSBpbml0aWFsaXphdGlvbk1vZGUsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1fb3Bl
cmFuZCgoZWNtYU1vZGUuaXNTdHJpY3QoKSA8PCBpc1N0cmljdFNoaWZ0KSB8IChyZXNvbHZlTW9k
ZSA8PCBtb2RlU2hpZnQpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsaXphdGlvbk1v
ZGUpIDw8IGluaXRpYWxpemF0aW9uU2hpZnQpIHwgcmVzb2x2ZVR5cGUpCiAgICAgewogICAgIH0K
IApAQCAtMjI1LDYgKzIyNyw3IEBAIHB1YmxpYzoKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihtX29wZXJhbmQgJiB0
eXBlQml0cyk7IH0KICAgICBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25Nb2RlPigobV9vcGVyYW5k
ICYgaW5pdGlhbGl6YXRpb25CaXRzKSA+PiBpbml0aWFsaXphdGlvblNoaWZ0KTsgfQogICAgIFJl
c29sdmVNb2RlIHJlc29sdmVNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb2x2
ZU1vZGU+KChtX29wZXJhbmQgJiBtb2RlQml0cykgPj4gbW9kZVNoaWZ0KTsgfQorICAgIEVDTUFN
b2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYW5kICYgaXNTdHJpY3RCaXQgPyBF
Q01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7IH0KICAgICB1bnNpZ25lZCBv
cGVyYW5kKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYW5kOyB9CiAKICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldHRlclNldHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuY3BwCmluZGV4IDVmOWY4NWUxZWNkYzgxMzQ3ZDg5NzQwNmU2MjExNGQwNjU0NzI3
OTMuLjY2Y2M3NTA3MzkwYmE0MWUwODg5Y2Q2YjZjNTAwZTc2YjAyMTYwYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtNjgsNyArNjgs
NyBAQCBib29sIGNhbGxTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlcgogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyT2JqID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAKICAgICBpZiAo
Z2V0dGVyU2V0dGVyT2JqLT5pc1NldHRlck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBlY21hTW9kZSA9PSBTdHJpY3RNb2RlLCBSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
OwogCiAgICAgSlNPYmplY3QqIHNldHRlciA9IGdldHRlclNldHRlck9iai0+c2V0dGVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFs
RXhlY3V0YWJsZS5jcHAKaW5kZXggMjAwMzE5MjkwZjBiZTBmOTczMTQxYmZlOTQ5OWYzYmFlODk3
ODg2Mi4uMTRmN2ZhYjVjM2Q0ZWFhODc5NDJiY2YzMzJhNDVmMWM1MDZkYWU3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUluZGlyZWN0
RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0
cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkK
K0luZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtNDUsMTUgKzQ1LDE0IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbmRpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQs
IGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRU
eXBlKTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUo
Z2xvYmFsT2JqZWN0LCBzb3VyY2UsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RN
b2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3Qt
PmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKICAgICAKICAgICBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2sqIHVubGlua2VkRXZhbENvZGUgPSB2bS5jb2RlQ2FjaGUoKS0+Z2V0VW5saW5rZWRFdmFs
Q29kZUJsb2NrKAotICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCks
IHN0cmljdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7
CisgICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJT
dHJpY3RNb2RlOjpOb3RTdHJpY3QsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250
ZXh0VHlwZSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpKQogICAgICAg
ICBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChnbG9iYWxPYmplY3QsIGV4
ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2Fn
ZSgpKTsKQEAgLTY4LDggKzY3LDEwIEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0
dXJuIGV4ZWN1dGFibGU7CiB9CiAKLUluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZh
bEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2
ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6Tm8pCitjb25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKK2NvbnN0
ZXhwciBib29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZTsKK0luZGlyZWN0RXZhbEV4
ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlw
ZSBldmFsQ29udGV4dFR5cGUpCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNv
dXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggYzE5OTJm
ZGIxYTQyNTA1NGFlOWJjNDU3NTEyOGU2ZjUwODZjYTliYy4uNDk4YjVjODcwOThhYjM3NDc5N2Ey
NWJmNDgxNjM3Y2ZiYjkyZWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOSArMzEsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBFdmFsRXhlY3V0YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1
dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlz
SW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKKyAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRD
b250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUp
OwogcHJpdmF0ZToKLSAgICBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKKyAgICBJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYs
IERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29u
dGV4dFR5cGUpOwogfTsKIAogc3RhdGljX2Fzc2VydChzaXplb2YoSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSkgPT0gc2l6ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA2NDAwZWU4YmRiMmU1NzcwMmIzY2Jj
MzY5OTM2OWQ3N2M5NDMzMGQ0Li41ZGI3Y2QzZmQxOWU4OWJkODFkNTkwMjUzZTk5MWI4YmVhMDhk
MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkg
KHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTExMSw3ICsx
MTEsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEFTU0VSVCghaXNDZWxsKCkp
OwogCi0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlz
U3RyaWN0KCkpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGlmIChpc0ludDMyKCkgfHwg
aXNEb3VibGUoKSkKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0
aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eQog
CiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAgICAg
ICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKQotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFs
dWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOwor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9i
YWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBFQ01BTW9k
ZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIAogICAgICAgICAgICAgaWYgKGdz
LmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxDdXN0
b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBncywgYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggZGViNjQwMjUzMGViNThi
ZjUwZDBkNjcwZWQxNmJjNTQ4YjdmOTI2OS4uNzI5NzgwM2EyOWQ1MjA4NjRmYTk2YjI4YzMyNjA2
NTI3MGY3ZmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYg
KzIyLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFQ01BTW9kZS5oIgogI2luY2x1
ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSAiUHVyZU5hTi5oIgogI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CkBAIC04MCw4ICs4MSw3IEBAIHVzaW5nIFdyaXRlQmFycmllclRyYWl0c1NlbGVj
dCA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19zYW1lPFQsIFVua25vCiAgICAg
RHVtYlZhbHVlVHJhaXRzPFQ+LCBEdW1iUHRyVHJhaXRzPFQ+CiA+Ojp0eXBlOwogCi1lbnVtIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVy
U3RyaW5nIH07Ci1lbnVtIEVDTUFNb2RlIHsgU3RyaWN0TW9kZSwgTm90U3RyaWN0TW9kZSB9Owor
ZW51bSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIDogdWludDhfdCB7IE5vUHJlZmVyZW5jZSwgUHJl
ZmVyTnVtYmVyLCBQcmVmZXJTdHJpbmcgfTsKIAogZW51bSBjbGFzcyBDYWxsVHlwZSA6IHVuc2ln
bmVkOwogc3RydWN0IENhbGxEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5jcHAKaW5kZXggNTUzZDE2ZjU2OTI1OWNmODIzYjk2ODY4ZmQwOTBiN2YyZTcwOGIyMC4uYTQ3
NGU3YWU1Mjc1YWM3Njg2NDgyMzZmNjZmZDQyOGFmZGU3ZTE4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBKU0NlbGw6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHUKIAogSlNWYWx1ZSBKU0NlbGw6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIGlmIChl
Y21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAg
ICAgICByZXR1cm4gY2VsbDsKICAgICByZXR1cm4gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5k
ZXggMDlhYmFlMzhiZTBmZTM0NmZkNWQzOGIyMmJkYTQ3YmY5ZTY2Y2EzNS4uNTE5MDNjYTc4NzFk
MzcyZTI2YjhlY2UwZTNhZTBhM2YxNDZiODU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgU3RydWN0dXJlKiBKU0Z1
bmN0aW9uOjpzZWxlY3RTdHJ1Y3R1cmVGb3JOZXdGdW5jRXhwKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QKICAgICBib29sIGlzQnVpbHRpbiA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0
aW9uKCk7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKQogICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKGlzQnVpbHRpbik7Ci0g
ICAgaWYgKGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChleGVjdXRhYmxlLT5p
c0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpY3RG
dW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnNs
b3BweUZ1bmN0aW9uU3RydWN0dXJlKGlzQnVpbHRpbik7CiB9CkBAIC00MzAsNyArNDMwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1YKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNH
ZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okluc3Rh
bmNlRmllbGRJbml0aWFsaXplck1vZGU6Ci0gICAgICAgIGlmICghZnVuY3Rpb24tPmpzRXhlY3V0
YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaWYgKCFmdW5jdGlvbi0+anNFeGVjdXRh
YmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhbGxlcik7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJp
ZXZlIHN0cmljdCBjYWxsZXIiX3MpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggOWJh
OGM3MGQ3NmE3NDJlZWI1NzE2NzhjYzkzZGJhY2I0NzkzOTQ0ZS4uY2E5NDg5YzBlMGVmZGM4NmIw
ZjQyMmZmMjg4NmVmNDhkMTkzYTkzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNTA3LDcgKzUw
Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocGFyc2VkT2JqZWN0KTsKIAogICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBj
YWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2
YWwgPSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291
cmNlKHMsIHNvdXJjZU9yaWdpbiksIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZh
bHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0g
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShz
LCBzb3VyY2VPcmlnaW4pLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29u
dGV4dFR5cGU6Ok5vbmUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhZXZhbCk7CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKQEAgLTcxNCw3ICs3MTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNQcm90b0dldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5v
dEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpKTsKIApAQCAtNzM1LDcgKzcz
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAg
ICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIE9iamVjdFByb3RvQ2FsbGVkT25OdWxs
T3JVbmRlZmluZWRFcnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAppbmRleCAyNWRmZjUzMzM3ODkxNDI4ZTYyZmE5NTE5ZGUxNGE3MTk0NGQ0Yjc4Li5k
YWM3MjNlYzBjOTNhNWQ2NjM5OGVjODk4MDRjYjdmMTQ5NzIzZTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04MTAsNyArODEwLDcgQEAgYm9vbCBK
U09iamVjdDo6cHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHkKICAgICAgICAgICAgICAgICBpZiAoIXRoaXMtPnN0cnVjdHVyZSh2
bSktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAgICAgICBzbG90LnNldENhY2hlYWJs
ZVNldHRlcihvYmosIG9mZnNldCk7CiAKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGNh
bGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCBzbG90LnRoaXNWYWx1ZSgpLCBncywgdmFsdWUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgICAgICAg
ICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFs
dWUoKSwgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gRUNNQU1vZGU6OnN0cmljdCgp
IDogRUNNQU1vZGU6OnNsb3BweSgpKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgIH0KQEAgLTE4MTgsNyArMTgxOCw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlw
ZVdpdGhDeWNsZUNoZWNrKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lm
Q2FudFNldCwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2Jq
ZWN0Il9zKTsKICAgICB9CiAKLSAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1RoaXModGhp
cywgZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobWV0
aG9kVGFibGUodm0pLT50b1RoaXModGhpcywgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5
KCkpID09IHRoaXMpOwogCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCh2bSkgPT0g
cHJvdG90eXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggNmQ1YWI2ODJjNjgzOTE0ZjY5ZjNlNWMyMjgzODRmZWZl
NDY1NzdjOC4uYjNjMjcyMDIyODA2YjgxMTQzNTdkODFkZTlmM2I1ZmMxMDM1NGQ5YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTQxMSw3ICs0MTEsNyBA
QCBTeW1ib2xUYWJsZSogSlNTY29wZTo6c3ltYm9sVGFibGUoVk0mIHZtKQogCiBKU1ZhbHVlIEpT
U2NvcGU6OnRvVGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZSBlY21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBp
ZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IGFhZWU4ZWU3YTc3ZWVhNmRlZmM3NTdh
ODdkMjNiM2VjYmE4NmYyMWYuLjBmMjA3YTNiNjg2YWVhN2I1N2Q0OTVjZDcwMjlhZDhhODM4NmRi
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAgLTQx
Nyw3ICs0MTcsNyBAQCBKU09iamVjdCogSlNTdHJpbmc6OnRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAKIEpTVmFsdWUgSlNTdHJpbmc6OnRvVGhpcyhKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQog
ewotICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgIGlmIChlY21hTW9kZS5pc1N0
cmljdCgpKQogICAgICAgICByZXR1cm4gY2VsbDsKICAgICByZXR1cm4gU3RyaW5nT2JqZWN0Ojpj
cmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGFzU3RyaW5nKGNlbGwpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAK
aW5kZXggNjk3NmY3MDVkMzQwNGUzN2EyMWQ4OTJiMTIzY2JjMzgwNDIzNmQ1Yi4uNTM1MjM3MThk
YzliOWQyMjEyYjhiODIxMTc2MzY4ZjQ4NDIxODJhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTkzMyw3ICs5MzMsNyBAQCBKU1Zh
bHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3Rh
dGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkF0dGVt
cHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3M7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxv
Y2sgPyBtX251bGxPckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgOiBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxv
Y2sgPyBtX251bGxPckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250
ZXh0KCkgOiBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLmxhc3QoKS5w
dXQobV9nbG9iYWxPYmplY3QsIGlkZW50LCBsYXN0VmFsdWUsIHNsb3QpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDQ2NTQ2MjAwNGYz
N2UyMDEyZDcyMTY4YzYyMDllNTA1MTdjMTIwNTUuLjA5OWQ4OTlhZDVlNjNhNzQzMzU4ZTJhYmIy
MGFiMzRmNTliOTYwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRN
b2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1v
ZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRl
eHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2
ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRl
ckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJG
dW5jdGlvbi5jcHAKaW5kZXggMTBmODg3MjVhYzAwMmQyNTNhOWM4NjM3MWQ0NTM5ODUwZGZjYWEy
OS4uNDE0Y2I4Y2VmZGZmODMwZjU3YmZmZDgyNjk0NDUwYTJmMzkzODk4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCkBA
IC0zNyw2ICszNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIE51bGxTZXR0
ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE51bGxTZXR0ZXJGdW5jdGlvbikgfTsKIAog
CisjaWYgQVNTRVJUX0VOQUJMRUQKKwogY2xhc3MgR2V0Q2FsbGVyU3RyaWN0bmVzc0Z1bmN0b3Ig
ewogcHVibGljOgogICAgIEdldENhbGxlclN0cmljdG5lc3NGdW5jdG9yKCkKQEAgLTUyLDcgKzU0
LDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7
CiAKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxvY2soKTsK
LSAgICAgICAgbV9jYWxsZXJJc1N0cmljdCA9IGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpOworICAgICAgICAvLyBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRo
YXQgd2UgbWlnaHQgaGF2ZSBhbiBzdHJpY3Qgb3Bjb2RlIGluIGEgbm9uLXN0cmljdCBjb250ZXh0
LCBidXQgdGhhdCdzCisgICAgICAgIC8vIG9rIHNpbmNlIHdlIGFzc2VydCBiZWxvdyB0aGF0IHRo
aXMgZnVuY3Rpb24gc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBmcm9tIGFueSBraW5kIHN0cmljdCBj
b250ZXh0LgorICAgICAgICBtX2NhbGxlcklzU3RyaWN0ID0gY29kZUJsb2NrICYmIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCk7CiAgICAgICAgIHJldHVy
biBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgfQogCkBAIC03MCwxNCArNzQsMTYgQEAgc3RhdGlj
IGJvb2wgY2FsbGVySXNTdHJpY3QoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBy
ZXR1cm4gaXRlci5jYWxsZXJJc1N0cmljdCgpOwogfQogCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJM
RUQKKwogbmFtZXNwYWNlIE51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIGlmIChjYWxsZXJJc1N0cmljdCh2bSwgY2FsbEZyYW1lKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiU2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3MpKTsKKyNpZiAh
QVNTRVJUX0VOQUJMRUQKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICBVTlVT
RURfUEFSQU0oY2FsbEZyYW1lKTsKKyNlbmRpZgorICAgIEFTU0VSVCghY2FsbGVySXNTdHJpY3Qo
Z2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsRnJhbWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggYzA1NzEyYjBhNDVhMWUwYTBlNmViMzY2
ZmJmNDM0M2RmMjQ4NmY5Ni4uNmRhYTdiNGM2YmI1YWMyOTg0MjkxZTM4YmIyNjk4ZmI1MDYyZmZk
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwCkBAIC04MCw3ICs4MCw3IEBAIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBl
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
U3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgSlNPYmpl
Y3QqIHZhbHVlT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgaWYg
KFVOTElLRUxZKCF2YWx1ZU9iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpA
QCAtOTIsNyArOTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY0hhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
UHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsCiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCkBAIC0xNDgsNyArMTQ4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmlj
dE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
TwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OwpAQCAtMjA0LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jTG9va3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9w
ZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2Rl
KS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjY3LDcgKzI2
Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVy
dHlJc0VudW1lcmFibGUoSlNHbG9iYWxPYmplY3QqCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBzY29wZS5yZWxlYXNl
KCk7CkBAIC0yODgsNyArMjg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAvLyAy
LiBJbnZva2UoViwgInRvU3RyaW5nIikKIAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2Yg
Y2FsbGluZyBUb09iamVjdCBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4K
LSAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0
cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9
IHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICAvLyBMZXQgdG9TdHJpbmcgYmUgdGhlIE8uW1tHZXRdXSgidG9T
dHJpbmciLCBWKQpAQCAtMzEzLDcgKzMxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVk
KCkgPyB2bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0
cmluZ3MubnVsbE9iamVjdFN0cmluZygpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRo
aXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IGE4ZjBiNWY4OTk0MmIz
N2RhZTllN2EzMDI5MmQ0MThmYjg3ZTg5MzMuLjJiMzJmNWEwNGEyMDEyMzZhOTdiYmFlZGM0MzQ2
MmNkMjg4ZTMzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNPYmplY3QqIFByb2dyYW1F
eGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KgogICAgIEFTU0VSVCgmZ2xvYmFsT2JqZWN0LT52bSgpID09ICZ2bSk7CiAKICAgICBQYXJz
ZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzU3Ry
aWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdDsKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzSW5T
dHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9k
ZSgpOwogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2
bS5jb2RlQ2FjaGUoKS0+Z2V0VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKAogICAgICAgICB2bSwg
dGhpcywgc291cmNlKCksIHN0cmljdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IpOwpA
QCAtMTM2LDcgKzEzNiw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6
ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGJv
b2wgaGFzUHJvcGVydHkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmhhc1Byb3BlcnR5KGds
b2JhbE9iamVjdCwgZW50cnkua2V5LmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkp
IHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYm
ICF2bS5nbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmljdE1v
ZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25z
dCgpICYmICF2bS5nbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc0lu
U3RyaWN0Q29udGV4dCgpKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGFsbG93
ICJjb25zdCIgZHVwbGljYXRlIGRlY2xhcmF0aW9ucyB1bmRlciB0aGlzIHNldHRpbmcuCiAgICAg
ICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCB3ZSBkb24ndCAibGV0IiB2YXJpYWJsZXMg
dG8gYmUgb3ZlcnJpZGRlbiBieSAiY29uc3QiIHZhcmlhYmxlcy4KICAgICAgICAgICAgICAgICAg
ICAgaWYgKGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+aXNDb25zdFZhcmlhYmxlKGVudHJ5Lmtl
eS5nZXQoKSkpCkBAIC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxl
Ojppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAg
ICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQt
PnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9s
VGFibGUtPm1fbG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsRGVjbGFy
YXRpb25zKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgp
ICYmICF2bS5nbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmlj
dE1vZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0
KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzSW5T
dHJpY3RDb250ZXh0KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5jb250
YWlucyhsb2NrZXIsIGVudHJ5LmtleS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggMjljYTAxMzIwNTYxYjE0NmE2MjljNmZiNWZhMTg4
ZmY1OGMzZGIxZi4uYjg3MTVhYTcyYmJjYjczMzlkNmUzNDEzYWM1OWM3NDQxMTdiODJhOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5o
CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250
ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVz
ZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNj
cmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1v
ZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4
dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVP
YmplY3RNYXAoVk0mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlP
YmplY3QuY3BwCmluZGV4IGIwN2UwYTAyOTMzMjgyNjEwMzZmNDExMDZlZWVlOWU1ZjkwYzY2NjAu
LjZkMTFiNDFiYTQwNjE4MTU1MjJkYWIzZWJmZTMxYzc3NmU3ZWU3NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
ICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpTdHJpY3RN
b2RlKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwogICAgIGFyZ3VtZW50cy5hcHBl
bmQoYXJnQXJyYXkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxP
YmplY3QsIGFwcGx5TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50
cykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFi
bGUuaAppbmRleCAxMDZjZjI1ZjYzMWYwNDFiOWJjNjMxOTQwMGY0NjY3YjA3YjM5Y2ZjLi4wZGQ0
NGVjYjg0MzcxZDQ3NzM0NjBjZDRjMGFhZTU1ZmUzY2QyMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCkBAIC02MCwxMiArNjAsMTAg
QEAgcHVibGljOgogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVz
ICYgRXZhbEZlYXR1cmU7IH0KICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVy
biBtX2ZlYXR1cmVzICYgQXJndW1lbnRzRmVhdHVyZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQot
ICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmlj
dE1vZGVGZWF0dXJlOyB9CiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJp
dmVkQ29udGV4dFR5cGUpOyB9CiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFsQ29udGV4
dFR5cGUpOyB9CisgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMgJiBTdHJpY3RNb2RlRmVhdHVyZTsgfQogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUo
KSBjb25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RN
b2RlOyB9Ci0gICAgICAgIAogICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBt
X25ldmVySW5saW5lID0gdmFsdWU7IH0KICAgICB2b2lkIHNldE5ldmVyT3B0aW1pemUoYm9vbCB2
YWx1ZSkgeyBtX25ldmVyT3B0aW1pemUgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0TmV2ZXJGVExP
cHRpbWl6ZShib29sIHZhbHVlKSB7IG1fbmV2ZXJGVExPcHRpbWl6ZSA9IHZhbHVlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
Y3BwCmluZGV4IDg1YzFjZjM0MzM4MTg0Nzg4Mzg4NDU2ZWIzNmFlYTJmZmI2MzQxZmEuLjNmZDYw
MDZlMWU4NDVmYWVlZDI2ZDBlNzI4M2M1M2Y2YzEwZjMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCkBAIC0yMDMs
NyArMjAzLDcgQEAgYm9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXIKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gU3Ry
aWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwg
c2hvdWxkVGhyb3cgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsK
IH0KIAogSlNWYWx1ZSBTcGFyc2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VNb2RlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApp
bmRleCAxYmI1Y2RmZmE3NmE3N2RlMjI0M2NiNjIxYzIyNDViYjhlMDUxMmRjLi41NGQxYzlkMjZl
MGU5NDUwMjdkYWU0NjFkN2EwYTBjODdjZTQ4M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MjYsNyArNjI2LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlv
bk9wZW5EYXRhYmFzZUJvZHkoSlMKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElE
TE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewotICAgIHJldHVybiB0b0pTRE9NV2lu
ZG93KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhp
cygmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIHJldHVybiB0b0pT
RE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgp
LnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5KCkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25PcGVuRGF0YWJhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0Q3VzdG9tLmgKaW5kZXggMDkyODUxNzYzY2EwZDFhY2ExYmM3MzQ2NTM1MGI2ZTJjMGVlZTUw
Ni4uMzc2OGJmMjkxYzU5ZGFlODk5ZGIwZjE1MGExYjBjYTA4YzdkYzJiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaApAQCAtNjMsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZt
LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
Ok5vdFN0cmljdE1vZGUpKTsKKyAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdl
dENhc3Qodm0sIGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6RUNNQU1vZGU6OnNsb3BweSgpKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdGhp
c09iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJFdmVudFRhcmdldCIsIG9wZXJhdGlvbk5hbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IDg5MjAzZmRkOTVjZjcwMmM3NmIwMDU5MWZiN2I3NzU0NjZmNDcxNjUuLmUyM2Mx
ZThmY2RhZjFlN2ViZTAyYTk2NzBlZGZmOTkxYmM0YmU2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00NTkwLDcgKzQ1
OTAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoZGVjb2RlZFRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4
aWNhbEdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZSgmbGV4aWNh
bEdsb2JhbE9iamVjdCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xv
cHB5KCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
JGNhc3RpbmdGdW5jdGlvbih2bSwgZGVjb2RlZFRoaXNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2MDYs
NyArNDYwNiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgIyBGSVhN
RTogTWFrZSBjb25zaXN0ZW50IElETEF0dHJpYnV0ZTw+OjpjYXN0IGFuZCBJRExPcGVyYXRpb248
Pjo6Y2FzdCBpbiBjYXNlIG9mIEN1c3RvbVByb3h5VG9KU09iamVjdC4KICAgICAgICAgbXkgJGNh
c3RpbmdGdW5jdGlvbiA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVBy
b3h5VG9KU09iamVjdH0gPyAidG8ke2NsYXNzTmFtZX0iIDogR2V0Q2FzdGluZ0hlbHBlckZvclRo
aXNPYmplY3QoJGludGVyZmFjZSk7Ci0gICAgICAgIG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFt
ZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUp
IiA6ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkiOworICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJj
YWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c2xvcHB5KCkpIiA6ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkiOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NOYW1lfSogSURMT3BlcmF0aW9u
PCR7Y2xhc3NOYW1lfT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSYgY2FsbEZyYW1lKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1
bmN0aW9uKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAkdGhpc1ZhbHVlKTtcbiIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDNhZmMwOWIwYThlYjhlZWVhN2E0MzczNTIzYzMzMTE4MWIwY2VlOWMuLjQ3Mzdj
ZTcxNTViNmJjYTkzOGI2Yjc0YTdkMTk1OGI5ZmRmM2QwZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAyMC0wNC0wNiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBOb3QgdXNpbmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVjbGFyYXRpb24gc3RhdGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1
NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCB0aGUgdGVzdCBzaW5jZSBpdCBjb250
YWluZWQgaW5jb3JyZWN0IGNvZGUuCisKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50YXgtbWV0aG9k
LW5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3lu
dGF4LW1ldGhvZC1uYW1lcy5qczoKKwogMjAyMC0wMy0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBzY3JvbGxJbnRvVmlldygpIGVycm9uZW91c2x5
IHNjcm9sbHMgbm9uLWNvbnRhaW5pbmcgYmxvY2sgc2Nyb2xsZXJzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CmluZGV4IDdm
MTQ5MjRmM2QzYWQ3NjlkOTk4MWI0NWNhYjQ2ZWVlZjk3NmQ3NWMuLjg4OGNkMmQyMjUyYThmMzlj
YzNmMmVlMzAxNzQ2YjkwNThiY2E5YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2NsYXNz
LXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2Ns
YXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CkBAIC01Niw5ICs1Niw5IEBAIFBB
U1MgQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28nLCAyMTUpOyAobmV3IEEp
Wydmb28nXSgpIGlzIDIxNQogUEFTUyBBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2Qo
J2ZvbycsIDIxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnYmFyJywgMjE3
KTsgWyhuZXcgQSlbJ2ZvbyddKCksIChuZXcgQilbJ2JhciddKCldIGlzIFsyMTYsIDIxN10KIFBB
U1MgeCA9IDIxODsgY2xhc3MgQSB7IFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpWzIx
OF0oKSBpcyAyMTkKIFBBU1MgeCA9IHVuZGVmaW5lZDsgY2xhc3MgQSB7IFsoeD0yMjApICYmICdm
b28nXSgpIHsgcmV0dXJuIHg7IH0gfTsgKG5ldyBBKS5mb28oKSBpcyAyMjAKLVBBU1MgeCA9IDIy
MTsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYg
eCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCld
IGlzIFsyMjEsIDIyMl0KK1BBU1MgdmFyIHggPSAyMjEsIHgxLCB4MjsgY2xhc3MgQSB7IFsoeDE9
eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgy
OyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCldIGlzIFsyMjEsIDIyMl0KIFBB
U1MgeCA9IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjIzOyB9IFsnZm9v
JyArIHgrK10oKSB7IHJldHVybiAyMjQ7IH0gfTsgWyhuZXcgQSkuZm9vMSgpLCAobmV3IEEpLmZv
bzIoKV0gaXMgWzIyMywgMjI0XQotUEFTUyB4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0o
KSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7
IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0gaXMgWzIsIDMsIDIyNl0KK1BBU1MgdmFyIHgg
PSAxLCB4MTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4MT14
KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZv
bzIoKV0gaXMgWzIsIDMsIDIyNl0KIAogU3RhdGljIG1ldGhvZHMgd2l0aCBjb21wdXRlZCBuYW1l
cwogUEFTUyBjbGFzcyBBIHsgc3RhdGljIFsnYScgKyAnYiddKCkgeyByZXR1cm4gMzExOyB9IH07
IEEuYWIoKSBpcyAzMTEKQEAgLTY5LDkgKzY5LDkgQEAgUEFTUyBBID0gY3JlYXRlQ2xhc3NXaXRo
U3RhdGljTWV0aG9kKCdmb28nLCAzMTUpOyBBWydmb28nXSgpIGlzIDMxNQogUEFTUyBBID0gY3Jl
YXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTYpOyBCID0gY3JlYXRlQ2xhc3NXaXRo
U3RhdGljTWV0aG9kKCdiYXInLCAzMTcpOyBbQVsnZm9vJ10oKSwgQlsnYmFyJ10oKV0gaXMgWzMx
NiwgMzE3XQogUEFTUyB4ID0gMjE4OyBjbGFzcyBBIHsgc3RhdGljIFt4KytdKCkgeyByZXR1cm4g
eDsgfSB9OyBBWzIxOF0oKSBpcyAyMTkKIFBBU1MgeCA9IHVuZGVmaW5lZDsgY2xhc3MgQSB7IHN0
YXRpYyBbKHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IEEuZm9vKCkgaXMgMjIw
Ci1QQVNTIHggPSAyMjE7IGNsYXNzIEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1
cm4geDE7IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFtBWzIy
MV0oKSwgQVsyMjJdKCldIGlzIFsyMjEsIDIyMl0KK1BBU1MgdmFyIHggPSAyMjEsIHgxLCB4Mjsg
Y2xhc3MgQSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0aWMg
Wyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0oKV0g
aXMgWzIyMSwgMjIyXQogUEFTUyB4ID0gMTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2ZvbycgKyB4Kytd
KCkgeyByZXR1cm4gMjIzOyB9IHN0YXRpYyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI0OyB9
IH07IFtBLmZvbzEoKSwgQS5mb28yKCldIGlzIFsyMjMsIDIyNF0KLVBBU1MgeCA9IDE7IGNsYXNz
IEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMgWyh4MT14
KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCBBLmZvbzIoKV0g
aXMgWzIsIDMsIDIyNl0KK1BBU1MgdmFyIHggPSAxLCB4MTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2Zv
bycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgpICYmICdmb28nICsgeCsr
XSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSBpcyBbMiwgMywgMjI2XQog
CiBJbnN0YW5jZSBtZXRob2RzIHdpdGggZHVwbGljYXRlZCBuYW1lcwogUEFTUyBjbGFzcyBBIHsg
YWIoKSB7IHJldHVybiA0MDEgfSBhYigpIHsgcmV0dXJuIDQwMjsgfSB9OyAobmV3IEEpLmFiKCkg
aXMgNDAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3lu
dGF4LW1ldGhvZC1uYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1z
eW50YXgtbWV0aG9kLW5hbWVzLmpzCmluZGV4IDE0MmJiMDViM2I0MDlkOTAxMmFhNDlhZDQyNTIz
ZGU5NzE1M2M2YTYuLjFiYmU5MDM1ODZlODU0NzIyNGRkM2JiY2Y0YTkwZWY4MjQ0M2I5MDYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9k
LW5hbWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgt
bWV0aG9kLW5hbWVzLmpzCkBAIC01Nyw5ICs1Nyw5IEBAIHNob3VsZEJlKCJBID0gY3JlYXRlQ2xh
c3NXaXRoSW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNSk7IChuZXcgQSlbJ2ZvbyddKCkiLCAiMjE1
CiBzaG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28nLCAyMTYp
OyBCID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2JhcicsIDIxNyk7IFsobmV3IEEp
Wydmb28nXSgpLCAobmV3IEIpWydiYXInXSgpXSIsICJbMjE2LCAyMTddIik7CiBzaG91bGRCZSgi
eCA9IDIxODsgY2xhc3MgQSB7IFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpWzIxOF0o
KSIsICIyMTkiKTsKIHNob3VsZEJlKCJ4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgWyh4PTIyMCkg
JiYgJ2ZvbyddKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpLmZvbygpIiwgIjIyMCIpOwotc2hv
dWxkQmUoInggPSAyMjE7IGNsYXNzIEEgeyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsg
fSBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbKG5ldyBBKVsyMjFdKCksIChu
ZXcgQSlbMjIyXSgpXSIsICJbMjIxLCAyMjJdIik7CitzaG91bGRCZSgidmFyIHggPSAyMjEsIHgx
LCB4MjsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkg
JiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJd
KCldIiwgIlsyMjEsIDIyMl0iKTsKIHNob3VsZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyAr
IHgrK10oKSB7IHJldHVybiAyMjM7IH0gWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9
OyBbKG5ldyBBKS5mb28xKCksIChuZXcgQSkuZm9vMigpXSIsICJbMjIzLCAyMjRdIik7Ci1zaG91
bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IFso
eDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgKG5ldyBB
KS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7CitzaG91bGRCZSgidmFyIHggPSAxLCB4MTsgY2xh
c3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAnZm9vJyAr
IHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0iLCAiWzIs
IDMsIDIyNl0iKTsKIAogZGVidWcoJycpOwogZGVidWcoJ1N0YXRpYyBtZXRob2RzIHdpdGggY29t
cHV0ZWQgbmFtZXMnKTsKQEAgLTcyLDkgKzcyLDkgQEAgc2hvdWxkQmUoIkEgPSBjcmVhdGVDbGFz
c1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNSk7IEFbJ2ZvbyddKCkiLCAiMzE1Iik7CiBzaG91
bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE2KTsgQiA9IGNy
ZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnYmFyJywgMzE3KTsgW0FbJ2ZvbyddKCksIEJbJ2Jh
ciddKCldIiwgIlszMTYsIDMxN10iKTsKIHNob3VsZEJlKCJ4ID0gMjE4OyBjbGFzcyBBIHsgc3Rh
dGljIFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyBBWzIxOF0oKSIsICIyMTkiKTsKIHNob3VsZEJl
KCJ4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgc3RhdGljIFsoeD0yMjApICYmICdmb28nXSgpIHsg
cmV0dXJuIHg7IH0gfTsgQS5mb28oKSIsICIyMjAiKTsKLXNob3VsZEJlKCJ4ID0gMjIxOyBjbGFz
cyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRpYyBbKHgy
PXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgpXSIsICJb
MjIxLCAyMjJdIik7CitzaG91bGRCZSgidmFyIHggPSAyMjEsIHgxLCB4MjsgY2xhc3MgQSB7IHN0
YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0aWMgWyh4Mj14KSAmJiB4
KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0oKV0iLCAiWzIyMSwgMjIy
XSIpOwogc2hvdWxkQmUoInggPSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArIHgrK10oKSB7
IHJldHVybiAyMjM7IH0gc3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7IH0gfTsg
W0EuZm9vMSgpLCBBLmZvbzIoKV0iLCAiWzIyMywgMjI0XSIpOwotc2hvdWxkQmUoInggPSAxOyBj
bGFzcyBBIHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFso
eDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28y
KCldIiwgIlsyLCAzLCAyMjZdIik7CitzaG91bGRCZSgidmFyIHggPSAxLCB4MTsgY2xhc3MgQSB7
IHN0YXRpYyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgpICYm
ICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSIsICJb
MiwgMywgMjI2XSIpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnSW5zdGFuY2UgbWV0aG9kcyB3aXRo
IGR1cGxpY2F0ZWQgbmFtZXMnKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjIwM2U1YzVlYzM0NzdkZDU4ODU3NTg5MWZiN2Q0MzA3YWQ3
NTU2MS4uM2U4NDVjMWI1ZDQ3NWVjNDdkMDI2MjZlZmNlMWJiMmNlOGNiZjI5YSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMC0wNC0wNiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBOb3QgdXNpbmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVjbGFyYXRpb24gc3Rh
dGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU1NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3N1cGVyY2xhc3MtZXhw
cmVzc2lvbi1zdHJpY3RuZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKGYudHJ5LmMpOgorICAgICAg
ICAoZik6CisKIDIwMjAtMDMtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgogCiAgICAgICAgIFJlZ0V4cC5wcm90b3R5cGUuZXhlYyBtdXN0IGFsd2F5cyBhY2Nlc3Mg
bGFzdEluZGV4CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Np
b24tc3RyaWN0bmVzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhwcmVzc2lvbi1z
dHJpY3RuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3ZWE2ODQ3OWM5NzNmM2M2MjBhY2ZiZjFmMDE5YWJl
ZGE5MmEyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdXBlcmNsYXNzLWV4
cHJlc3Npb24tc3RyaWN0bmVzcy5qcwpAQCAtMCwwICsxLDU5IEBACitmdW5jdGlvbiBmKCkgewor
ICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xh
c3MgYyBleHRlbmRzKGQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ge307
CisgICAgICAgICAgICB9LCBkKSB7fQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
ICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVycm9yLm1l
c3NhZ2UgIT0gIkNhbid0IGZpbmQgdmFyaWFibGU6IGQiKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJUZXN0IHNob3VsZCBoYXZlIHRocm93biBhIHJlZmVyZW5jZSBlcnJvciIpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB2YXIgb2JqID0ge307Cisg
ICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICd4JywgeyBjb25maWd1cmFibGU6IGZh
bHNlLCB2YWx1ZTogMSB9KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsYXNzIGMgZXh0
ZW5kcyhkZWxldGUgb2JqLngsICgpPT57fSkge30KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlcnJvciB8fCBl
cnJvci5tZXNzYWdlICE9ICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgdHlwZSBlcnJvciIp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB2YXIgb2JqID0g
e307CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICd4JywgeyBjb25maWd1cmFi
bGU6IGZhbHNlLCB2YWx1ZTogMSB9KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsYXNz
IGMgZXh0ZW5kcyhldmFsKCdkZWxldGUgb2JqLngnKSwgY2xhc3N7fSkge30KKyAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3du
IGEgdHlwZSBlcnJvciIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIG8gPSB7fTsKKyAg
ICAgICAgby5fX2RlZmluZUdldHRlcl9fKCJ4IiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gNDI7IH0p
OworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3MgYyBleHRlbmRzIChvLnggPSAxMywg
Y2xhc3MgeyB9KSB7IH0KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3Ig
PSBlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9
ICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgdHlwZSBlcnJvciIp
OworICAgIH0KK30KKworIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICBmKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395607</attachid>
            <date>2020-04-06 13:09:53 -0700</date>
            <delta_ts>2020-04-06 15:23:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200406130952.patch</filename>
            <type>text/plain</type>
            <size>261142</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YjI0ZTMzNmQ0ZDBkZjRiY2QzYTI3NWI1Y2MzYTI0OTZkM2IwNzlhLi43OWI1NWZiMjg0Y2IwYWUy
ZmE0NGE2ZjU5YWE3N2EwZjNjOTc4MjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODUgQEAKKzIwMjAtMDQtMDYgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0
IHN0cmljdCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQg
d2hlbiBlbWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0
IHdlIGNhbiBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0
IG11c3QgYmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUg
YmxvY2sgaXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9u
bHkgdGVuCisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5l
c3MsIHNvIGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVz
LgorICAgICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBi
YXNlbGluZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjppc0tub3duQ2VsbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhl
Y3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnVzZXNFdmFsIGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKEpT
Qzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5
SWRGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJl
Y3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmlzRGlyZWN0IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZEZsYWdzOjplY21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRGbGFnczo6UHV0QnlJZEZsYWdzKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
Ojppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZy
b21TY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29w
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVz
aEZ1bmN0aW9uTmFtZVNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRUb1RoaXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZWNtYU1vZGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJpY3RNb2RlU2NvcGU6OlN0cmljdE1vZGVTY29wZSk6CisgICAgICAgIChKU0M6OlN0
cmljdE1vZGVTY29wZTo6flN0cmljdE1vZGVTY29wZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAo
SlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBj
b25zdCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6
OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvVGhpcyk6CisgICAgICAgICogZGZnL0RG
R0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Omdsb2JhbFRoaXNPYmplY3RGb3Ip
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
RUNNQU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAg
KiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlY2lz
ZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2Ji
ZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dER5bmFtaWNWYXIpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVUb1RoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
UHV0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVEZWxCeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNhbGxFdmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVB1dER5bmFtaWNWYXIpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVRDYWxs
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRH
ZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRC
eUlkR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKEpT
Qzo6cmVwYXRjaERlbGV0ZUJ5KToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNvbW1vbkNhbGxFdmFsKToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQ
cm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVT
dHJpbmcpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlND
OjphcnJheVByb3RvRnVuY1BvcCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6
CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NsaWNlKToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0luZGV4T2Yp
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAgKiBy
dW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjp1
c2VzRXZhbCBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtl
ZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBl
Pjo6ZW5jb2RlKToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAg
ICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6Q2xvbmVkQXJndW1lbnRzOjptYXRlcmlhbGl6ZVNwZWNpYWxzKToKKyAgICAgICAgKiBy
dW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAg
ICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1
dFRvU2NvcGVHbG9iYWwpOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hl
R2V0RnJvbVNjb3BlR2xvYmFsKToKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0VDTUFNb2RlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAuCisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpkdW1wIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0VDTUFNb2RlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuaC4KKyAgICAgICAgKEpTQzo6RUNN
QU1vZGU6OmZyb21CeXRlKToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OnN0cmljdCk6CisgICAg
ICAgIChKU0M6OkVDTUFNb2RlOjpzbG9wcHkpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6aXNT
dHJpY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6dmFsdWUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpFQ01BTW9kZTo6RUNNQU1vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZv
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvR2V0UHV0SW5mby5jcHA6CisgICAgICAgIChKU0M6OkdldFB1dEluZm86OmR1
bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0UHV0SW5mby5oOgorICAgICAgICAoSlND
OjpHZXRQdXRJbmZvOjpHZXRQdXRJbmZvKToKKyAgICAgICAgKEpTQzo6R2V0UHV0SW5mbzo6ZWNt
YU1vZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
dG9UaGlzU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1p
dGl2ZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhpcyk6CisgICAgICAgICog
cnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c2VsZWN0
U3RydWN0dXJlRm9yTmV3RnVuY0V4cCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNhbGxl
ckdldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y1Byb3RvR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dElubGluZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5
Y2xlQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6
OkpTU2NvcGU6OnRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAg
ICAgIChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZSk6
CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0Q2FsbGVy
U3RyaWN0bmVzc0Z1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpOdWxs
U2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZCk6CisgICAgICAgICog
cnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1
bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkp
OgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9v
a3VwR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKToK
KyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpOgorICAg
ICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6
Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVH
bG9iYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmg6
CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnBlcmZv
cm1Qcm94eUNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oOgorICAg
ICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppc0Fycm93RnVuY3Rpb25Db250ZXh0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aXNJblN0cmljdENvbnRleHQgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAg
IChKU0M6OlNwYXJzZUFycmF5RW50cnk6OnB1dCk6CisKIDIwMjAtMDQtMDYgIFJpY2sgV2FsZHJv
biAgPHdhbGRyb24ucmlja0BnbWFpbC5jb20+IGFuZCBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgVGVzdDI2MiBoYXJu
ZXNzIGZpbGUgYW5kIGltcGxlbWVudCAkMjYyLklzSFRNTEREQQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAzMTA3
NTViYjdiZThjYmI0ZjI1MzQyNTM1MjBhYzIyMjgwZGZhMWYuLjU3YjhiYzZiYzhiNjQ5Zjc0NTcw
ZjZlOGM0YzhmNjQ0Mzc1YjkwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0w
NC0wNiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBOb3Qg
dXNpbmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVjbGFyYXRpb24gc3RhdGVtZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1NzgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IEpTVGVzdHMvIHN0cmVzcy9zdXBlcmNsYXNzLWV4
cHJlc3Npb24tc3RyaWN0bmVzcy5qcworCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpTRE9NV2luZG93
Pjo6Y2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpTRXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDIwLTA0LTA2ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICAnY3VycmVudGNvbG9yJyBkb2Vzbid0IG5lZWQgc2V0
SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMgbWFya2luZyBhbnltb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IGM5OTEw
NTNhMTkxOWY4ZTFiYTRlYTk4Yjc3ZDhlMWE5ZDFiN2RkZTguLmQ1NjViNDEyODllN2Y2ODYxZjhm
OWY5YjdlYWRiMDkxNjk2ZWE0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FsbGJhY2tGdW5jdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
Q29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJl
ZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmpl
Y3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICBKU09i
amVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CiAK
ICAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50KCkpOwogICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAppbmRleCAwMmNlZGM3OTY2YmVjMGE1M2E5YmMwMmE5ZjM3ODNlNzlmNzMyZTJmLi4wM2Ex
OGRjOTAzNmI2Njc4NDE5MmVmNTBjOTIwNDVlZDM1MzhiNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTIz
LDcgKzUyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2Fs
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAKICAgICBKU0NvbnRleHRSZWYg
ZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25S
ZWYgPSB0b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNP
YmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNPYmplY3RSZWYgdGhp
c09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogICAgIAogICAgIGZv
ciAoSlNDbGFzc1JlZiBqc0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+
KHRvSlMoZnVuY3Rpb25SZWYpKS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xh
c3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2Fs
bGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlvbikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDIyMmE0ZWUyMGRjYmFk
YjA3YjdiYzY1NGRjZjhhYTgwY2YyYzEyYmUuLjI0MDE3OTE2ZTc1MTc2YjgzZTM1ZDllZDAyODgy
ODMyNTIxNmM3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmpl
Y3QoSlNDb250ZXh0UmVmIGN0eCkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKLSAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpT
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpKTsKKyAgICByZXR1cm4gdG9SZWYoanND
YXN0PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogfQogCiBKU0Nv
bnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNjUzOTVhZDBmZmJiYzlmYTRjOWQwZjUzOTgyNzAz
YzE5ZGY5ODUwLi44M2U0ODYyNzQwNDJiOTQzMmZjYTA1NTA1ZGE2NjE5Y2JhZGZlMzNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzk4LDYgKzc5OCw3IEBACiAJCTE0NTBGQTFD
MjM1N0JEQkUwMDkzQ0Q0RCAvKiBXYXNtRnVuY3Rpb25Db2RlQmxvY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QzVBRDZCMjJGMzNGQzAwMEYxRkI4
MyAvKiBXYXNtRnVuY3Rpb25Db2RlQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDUwRkExRjIzNTdCRUM5MDA5M0NENEQgLyogV2FzbUxM
SW50VGllclVwQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ1MEZBMUUyMzU3QkVDNDAwOTNDRDREIC8qIFdhc21MTEludFRpZXJVcENvdW50
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
NDU3MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ1NzIyODUxNDM3RTE0MDAwNUZERTI2
IC8qIFN0cm9uZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkxNDVGRjJDODI0M0JCOUQ2MDA1NjlFNzEgLyogRUNNQU1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NUZGMkM3MjQzQkI5
OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTE0NkMzODRCMjE3N0FDREYwMDc5RjZEOSAvKiBVbmxpbmtlZE1l
dGFkYXRhVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0MkQ1MkJFMjE3NjI5NTgwMDJEQjA4NiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDcxNDgz
MDIwRDMyM0QzMDA5MEU2MzAgLyogSlNXcmFwcGVyTWFwVGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDcxNDgyRjIwRDMyMzY1MDA5MEU2MzAg
LyogSlNXcmFwcGVyTWFwVGVzdHMubW0gKi87IH07CiAJCTE0NzM0MUNDMURDMDJENzIwMEFBMjlC
QSAvKiBFeGVjdXRhYmxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQ3MzQxQ0IxREMwMkQ3MjAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzMzks
NiArMzM0MCw4IEBACiAJCTE0NTM0ODU3MjI5MTczN0YwMEIxQzJFQiAvKiB0ZXN0YXBpLmVudGl0
bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gdGVzdGFw
aS5lbnRpdGxlbWVudHM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NTcyMjg1MTQz
N0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cm9uZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQ1QzUwN0YwRDlERjYzQjAwODhGNkI5IC8qIENhbGxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhbGxEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0NUZGMkM2MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFQ01BTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NUZGMkM3
MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFQ01BTW9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYg
LyogSlNTdHJpbmdSZWZDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
dHJpbmdSZWZDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIzNzBCNjZB
OTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdHJpbmdSZWZDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zZXJ2YXRpdmVSb290cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTE0LDYgKzcxMTcsOCBAQAogCQkJ
CUUzRkMyNTExMjI1NkVDRjQwMDU4MzUxOCAvKiBEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQu
aCAqLywKIAkJCQlBNzA0NDdFQjE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuY3BwICov
LAogCQkJCUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovLAorCQkJ
CTE0NUZGMkM2MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5jcHAgKi8sCisJCQkJMTQ1RkYy
QzcyNDNCQjk5QTAwNTY5RTcxIC8qIEVDTUFNb2RlLmggKi8sCiAJCQkJRkUzMThGREQxQ0FDOEM1
MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwICovLAogCQkJ
CUZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rp
b25zLmggKi8sCiAJCQkJRkUzNEVFMjIyNDM5OEI4NTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxp
dmVIZXJlLmNwcCAqLywKQEAgLTk0MjksNiArOTQzNCw3IEBACiAJCQkJRTM1Q0ExNTQxREJDM0E1
QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM1MDcw
OEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTcwNDQ3RUUxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKKwkJCQkxNDVGRjJDODI0M0JCOUQ2MDA1NjlFNzEgLyogRUNNQU1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVy
bmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzNEVF
MjEyNDM5OEFBRTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3MTZmZTQ3OWFkNDlkZWI3YjIxZThl
NjFhNzA4Y2Y1NDhjYWQwMGU3Li4wOGZmOGZlN2JiMWM3YzQ5ZTE4NzA4ZTNkNTkxMWE5MTI1ZDIx
NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03NjUsNiArNzY1LDcgQEAgcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnku
Y3BwCiBydW50aW1lL0RvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvRHVt
cENvbnRleHQuY3BwCitydW50aW1lL0VDTUFNb2RlLmNwcAogcnVudGltZS9FQ01BU2NyaXB0U3Bl
Y0ludGVybmFsRnVuY3Rpb25zLmNwcAogcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5jcHAK
IHJ1bnRpbWUvRXJyb3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCBkMzcyMzZmNDBhYTg5OTEyN2M3NDllYmRiOTg2OTZj
Nzc4NWQ4Y2IzLi5kOTEwNjJjZjdhMzU0ZjA2YTJjNjJmNDRmNDE4MzQ0OTVkNjgzMTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
QEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCi0jaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA5ZjJhYmEzOWYyY2U3MDhkMzEz
YjhkOTQwY2Y5NmZiYTQyZmNjOTRlLi5mZGFhYTY5NDVmZjBlOWQ1MTUxYWFhODlhN2E5OTIwN2Fj
MWMyOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICAgICAgICAgICAg
ICBzY29wZSwgLy8gc2NvcGUKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVy
SW5kZXgsIC8vIGlkZW50aWZpZXIKICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZCwgLy8gdmFs
dWUKLSAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwg
TG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwg
Ly8gaW5mbworICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZv
dW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24sIG1fYnl0ZWNvZGVHZW5lcmF0b3IuZWNtYU1vZGUoKSksIC8vIGluZm8KICAgICAgICAgICAg
ICAgICAgICAgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdp
c3RlciB7IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4IH0pLCAvLyBzeW1ib2wgdGFi
bGUgY29uc3RhbnQgaW5kZXgKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNl
dC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKICAgICAgICAgICAgICAgICApOwpAQCAtMjY5LDcg
KzI2OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhbmQsIC8vIGRzdAogICAgICAgICAgICAgICAgICAgICBzY29wZSwg
Ly8gc2NvcGUKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8v
IGlkZW50aWZpZXIKLSAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZO
b3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxp
emF0aW9uKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhy
b3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24sIG1fYnl0ZWNvZGVHZW5lcmF0b3IuZWNtYU1vZGUoKSksIC8vIGluZm8KICAg
ICAgICAgICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKICAgICAgICAgICAgICAg
ICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKICAgICAg
ICAgICAgICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0NjgwYzEyNmEwZjcyNzUzNmYxYmUzN2M0ZS4u
MWY1NjY5NGNlNzAwZmRlYmUxZmRjYmQwNDRmMmE4N2QwODhmN2VhMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0yNyw2ICsyNyw3IEBA
IHR5cGVzIFsKICAgICA6QmFzaWNCbG9ja0xvY2F0aW9uLAogICAgIDpCb3VuZExhYmVsLAogICAg
IDpEZWJ1Z0hvb2tUeXBlLAorICAgIDpFQ01BTW9kZSwKICAgICA6RXJyb3JUeXBlLAogICAgIDpH
ZXRCeUlkTW9kZSwKICAgICA6R2V0QnlJZE1vZGVNZXRhZGF0YSwKQEAgLTE3NCw2ICsxNzUsNyBA
QCBvcCA6YXJndW1lbnRfY291bnQsCiBvcCA6dG9fdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAg
IHNyY0RzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAg
ICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCkBAIC01MjIsNiArNTI0LDcgQEAgb3AgOnB1dF9ieV9pZF93aXRoX3RoaXMsCiAgICAg
ICAgIHRoaXNWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWdu
ZWQsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVjbWFNb2RlOiBF
Q01BTW9kZSwKICAgICB9CiAKIG9wIDpkZWxfYnlfaWQsCkBAIC01MjksNiArNTMyLDcgQEAgb3Ag
OmRlbF9ieV9pZCwKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJhc2U6
IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAorICAgICAgICBl
Y21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6Z2V0X2J5X3ZhbCwKQEAgLTU0OCw2ICs1
NTIsNyBAQCBvcCA6cHV0X2J5X3ZhbCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAog
ICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRh
ZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKQEAgLTU1OSw2ICs1
NjQsNyBAQCBvcCA6cHV0X2J5X3ZhbF93aXRoX3RoaXMsCiAgICAgICAgIHRoaXNWYWx1ZTogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAg
ICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAg
ICAgfQogCiBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCkBAIC01NjYsNiArNTcyLDcgQEAgb3AgOnB1
dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAg
IHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLApAQCAtNTc2LDYgKzU4Myw3IEBA
IG9wIDpkZWxfYnlfdmFsLAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
YmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVy
LAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6cHV0X2dldHRlcl9i
eV9pZCwKQEAgLTc3OCw2ICs3ODYsNyBAQCBvcCA6Y2FsbF9ldmFsLAogICAgICAgICBjYWxsZWU6
IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgYXJnYzogdW5zaWduZWQsCiAgICAgICAgIGFyZ3Y6
IHVuc2lnbmVkLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRh
ZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhMWFkMzc2Njlh
ZjEyMDAzMDIzNTE1MDJlMzRjOTBjMjQxODg0ZTc2Li42MGI0MGNmZGE3YjNlNjVjN2Y3YWZhZDdi
MWIyZjMwMDU0YzI4OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQXNzdW1p
bmdKSVRUeXBlKFByaW50U3RyZWFtJiBvdXQsIEpJVFR5cGUgaml0VHlwZSkgY29uc3QKICAgICAg
ICAgb3V0LnByaW50KCIgKE5ldmVyRlRMT3B0aW1pemUpIik7CiAgICAgaWYgKG93bmVyRXhlY3V0
YWJsZSgpLT5kaWRUcnlUb0VudGVySW5Mb29wKCkpCiAgICAgICAgIG91dC5wcmludCgiIChEaWRU
cnlUb0VudGVySW5Mb29wKSIpOwotICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RN
b2RlKCkpCisgICAgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQog
ICAgICAgICBvdXQucHJpbnQoIiAoU3RyaWN0TW9kZSkiKTsKICAgICBpZiAobV9kaWRGYWlsSklU
Q29tcGlsYXRpb24pCiAgICAgICAgIG91dC5wcmludCgiIChKSVRGYWlsKSIpOwpAQCAtNjE5LDcg
KzYxOSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICAgICAgICAgIEFTU0VSVCgh
aXNJbml0aWFsaXphdGlvbihieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2Rl
KCkpKTsKICAgICAgICAgICAgIGlmIChieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUo
KSA9PSBMb2NhbENsb3N1cmVWYXIpIHsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1
dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBD
bG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwor
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLm1fZ2V0
UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFN
b2RlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC02Mjcs
OSArNjI3LDkgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIFJlc29sdmVP
cCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0
ZWNvZGUubV9sb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dl
dFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKIAotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRl
Y29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQ
dXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0
UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCks
IG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0
ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUg
PT0gTW9kdWxlVmFyKQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdl
dFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIs
IGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAg
ICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1
dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xvc3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpLCBieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAg
ICAgICAgICAgICBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8
fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7
CiAgICAgICAgICAgICBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCkBAIC02NjEsNyArNjYxLDcgQEAg
Ym9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2Nv
cGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUubV9zeW1i
b2xUYWJsZU9yU2NvcGVEZXB0aC5zY29wZURlcHRoKCksIHNjb3BlLCBpZGVudCwgUHV0LCBieXRl
Y29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBi
eXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAg
bWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8u
cmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpLCBieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAg
ICBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBl
ID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAg
ICAgICBlbHNlIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBDbG9zdXJl
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IGQzYjA2YTg5MWFlZmM2Yzc5NGQ3NWUxYzBkMDA0NmUxOTIz
OGU4MjYuLmUxMTEzOWQ1YTM4NDM1YTA2ZGUyNjc3NWZmZjMxMDAxNWVjYzQ0YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIyMiw5ICsyMjIsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBNYXRoSUNTdGF0cygpOwogCi0gICAgYm9vbCBpc1N0
cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aXNTdHJpY3RNb2RlKCk7
IH0KICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29k
ZS0+aXNDb25zdHJ1Y3RvcigpOyB9Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJl
dHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAgICAg
Q29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+Y29kZVR5
cGUoKTsgfQogCiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkQ29kZS0+c2NyaXB0TW9kZSgpOyB9CkBAIC0yMzIsMTEgKzIzMCw4IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc0luc3RhbGxlZFZNVHJhcEJyZWFrcG9pbnRzKCkgY29uc3Q7
CiAgICAgYm9vbCBpbnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoKTsKIAotICAgIGlubGluZSBib29s
IGlzS25vd25Ob3RJbW1lZGlhdGUoVmlydHVhbFJlZ2lzdGVyIHJlZykKKyAgICBpbmxpbmUgYm9v
bCBpc0tub3duQ2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgIHsKLSAgICAgICAgaWYgKHJl
ZyA9PSB0aGlzUmVnaXN0ZXIoKSAmJiAhaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLQogICAgICAgICBpZiAocmVnLmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJl
dHVybiBnZXRDb25zdGFudChyZWcpLmlzQ2VsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDc3ZjE5MjkwNjkwODMzNmViZDAw
OGRjZjBjMzZmNGFjNmU5ZTc1ZDQuLjQ5ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcxOTkw
YmU5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oCkBAIC0zNiw5ICszNiw4IEBAIGVudW0gY2xhc3MgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgOiB1aW50OF90IHsgTm8sIFllcyB9OwogLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJz
ZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdh
bml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3
CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2
YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJv
b2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJv
b2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAg
ICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkKLSAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0
cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAgICAg
ICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBt
X2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkK
QEAgLTU3LDcgKzU2LDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB9CiAKICAgICBi
b29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNT
dHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsg
fQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtNzIs
NyArNzAsNiBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogCiBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fdXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAg
ICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGlu
RnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDU3Nzg5YmMyYzY2OWY3Y2FkODg4M2Rl
Y2YzNTEzMjc4NDQ5YzgyNGYuLmY0MzA5ZDE4NThjZDYyYzMwYTllZDEyYWE1ZTg1YTA0ZDBlNjIw
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtNDksNyArNDksNyBA
QCBzdHJ1Y3QgRml0czsKIAogLy8gSW1wbGljaXQgY29udmVyc2lvbiBmb3IgdHlwZXMgb2YgdGhl
IHNhbWUgc2l6ZQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgT3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0
IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZSwgc3RkOjp0
cnVlX3R5cGU+PiB7CitzdHJ1Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVv
ZihUKSA9PSBzaXplICYmIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUsIHN0ZDo6dHJ1
ZV90eXBlPj4gewogICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNp
emU+Ojp1bnNpZ25lZFR5cGU7CiAKICAgICBzdGF0aWMgYm9vbCBjaGVjayhUKSB7IHJldHVybiB0
cnVlOyB9CkBAIC0xNzQsMTggKzE3NCwyMCBAQCBzdHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBzaXpl
LCBzdGQ6OmVuYWJsZV9pZl90PHNpemUgIT0gT3Bjb2RlU2l6ZTo6V2lkZTMyLCBzdGQ6OgogICAg
IC8vIDEzIFJlc29sdmUgVHlwZXMKICAgICAvLyAzIEluaXRpYWxpemF0aW9uIE1vZGVzCiAgICAg
Ly8gMiBSZXNvbHZlIE1vZGVzCisgICAgLy8gMSBiaXQgaXNTdHJpY3QgZmxhZwogICAgIC8vCiAg
ICAgLy8gVHJ5IHRvIGVuY29kZSBlbmNvZGUgYXMKICAgICAvLwotICAgIC8vICAgICAgICAgICBp
bml0aWFsaXphdGlvbiBtb2RlCi0gICAgLy8gICAgICAgICAgICAgICAgICAgIHYKLSAgICAvLyBm
cmVlIGJpdC0+IDB8MDAwMHwwMHwwCi0gICAgLy8gICAgICAgICAgICAgICAgIF4gICAgXgotICAg
IC8vICAgIHJlc29sdmUgIHR5cGUgICByZXNvbHZlIG1vZGUKKyAgICAvLyAgICAgICAgICAgIGlu
aXRpYWxpemF0aW9uIG1vZGUKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAvLyBp
c1N0cmljdCAtPiAwfDAwMDB8MDB8MAorICAgIC8vICAgICAgICAgICAgICAgICAgXiAgICBeCisg
ICAgLy8gICAgICByZXNvbHZlICB0eXBlICAgIHJlc29sdmUgbW9kZQogICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IHNfcmVzb2x2ZVR5cGVNYXggPSAxIDw8IDQ7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgc19pbml0aWFsaXphdGlvbk1vZGVNYXggPSAxIDw8IDI7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgc19yZXNvbHZlTW9kZU1heCA9IDEgPDwgMTsKIAorICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAxIDw8IDc7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
c19yZXNvbHZlVHlwZUJpdHMgPSAoc19yZXNvbHZlVHlwZU1heCAtIDEpIDw8IDM7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgc19pbml0aWFsaXphdGlvbk1vZGVCaXRzID0gKHNfaW5pdGlhbGl6
YXRpb25Nb2RlTWF4IC0gMSkgPDwgMTsKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3Jlc29s
dmVNb2RlQml0cyA9IChzX3Jlc29sdmVNb2RlTWF4IC0gMSk7CkBAIC0yMDYsNyArMjA4LDggQEAg
c3RydWN0IEZpdHM8R2V0UHV0SW5mbywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplICE9IE9w
Y29kZVNpemU6OldpZGUzMiwgc3RkOjoKICAgICAgICAgYXV0byByZXNvbHZlVHlwZSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KGdwaS5yZXNvbHZlVHlwZSgpKTsKICAgICAgICAgYXV0byBpbml0aWFs
aXphdGlvbk1vZGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkuaW5pdGlhbGl6YXRpb25Nb2Rl
KCkpOwogICAgICAgICBhdXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3Bp
LnJlc29sdmVNb2RlKCkpOwotICAgICAgICByZXR1cm4gKHJlc29sdmVUeXBlIDw8IDMpIHwgKGlu
aXRpYWxpemF0aW9uTW9kZSA8PCAxKSB8IHJlc29sdmVNb2RlOworICAgICAgICBhdXRvIGlzU3Ry
aWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7Cisg
ICAgICAgIHJldHVybiAoaXNTdHJpY3QgPDwgNykgfCAocmVzb2x2ZVR5cGUgPDwgMykgfCAoaW5p
dGlhbGl6YXRpb25Nb2RlIDw8IDEpIHwgcmVzb2x2ZU1vZGU7CiAgICAgfQogCiAgICAgc3RhdGlj
IEdldFB1dEluZm8gY29udmVydChUYXJnZXRUeXBlIGdwaSkKQEAgLTIxNCwxMCArMjE3LDQ1IEBA
IHN0cnVjdCBGaXRzPEdldFB1dEluZm8sIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZSAhPSBP
cGNvZGVTaXplOjpXaWRlMzIsIHN0ZDo6CiAgICAgICAgIGF1dG8gcmVzb2x2ZVR5cGUgPSBzdGF0
aWNfY2FzdDxSZXNvbHZlVHlwZT4oKGdwaSAmIHNfcmVzb2x2ZVR5cGVCaXRzKSA+PiAzKTsKICAg
ICAgICAgYXV0byBpbml0aWFsaXphdGlvbk1vZGUgPSBzdGF0aWNfY2FzdDxJbml0aWFsaXphdGlv
bk1vZGU+KChncGkgJiBzX2luaXRpYWxpemF0aW9uTW9kZUJpdHMpID4+IDEpOwogICAgICAgICBh
dXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU1vZGU+KGdwaSAmIHNfcmVzb2x2
ZU1vZGVCaXRzKTsKLSAgICAgICAgcmV0dXJuIEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29s
dmVUeXBlLCBpbml0aWFsaXphdGlvbk1vZGUpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3Rh
dGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7CisgICAgICAgIHJldHVybiBHZXRQ
dXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSwgaW5pdGlhbGl6YXRpb25Nb2RlLCBpc1N0
cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSk7CiAgICAgfQog
fTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdz
LCBzaXplPiB7CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6
ZT46OnVuc2lnbmVkVHlwZTsKKworICAgIC8vIFB1dEJ5SWRGbGFncyBpcyBqdXN0IHR3byBib29s
ZWFuIHZhbHVlcyBlbmNvZGVkIGFzCisgICAgLy8KKyAgICAvLyAgICAgICAgaXNTdHJpY3QKKyAg
ICAvLyAgICAgICAgICAgdgorICAgIC8vICAgIDAwMDAwMHwwfDAKKyAgICAvLyAgICAgICAgICAg
ICBeCisgICAgLy8gICAgICAgICBpc0RpcmVjdAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNf
aXNEaXJlY3RCaXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQg
PSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlJZEZsYWdzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIFRhcmdldFR5cGUgY29udmVydChQ
dXRCeUlkRmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7CisgICAgICAgIGF1dG8gaXNTdHJpY3Qg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAg
ICAgICByZXR1cm4gKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7CisgICAgfQorCisgICAgc3Rh
dGljIFB1dEJ5SWRGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsKKyAgICAgICAg
YXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOwor
ICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmlj
dEJpdCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJp
Y3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICAgICAgcmV0dXJuIGlzRGlyZWN0ID8gUHV0
QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUo
ZWNtYU1vZGUpOworICAgIH0KK307CiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNp
emU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBz
aXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMg
Rml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9
IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC0zMjcsNCArMzY1LDI5
IEBAIHN0cnVjdCBGaXRzPEdlbmVyaWNCb3VuZExhYmVsPEdlbmVyYXRvclRyYWl0cz4sIHNpemU+
IDogcHVibGljIEZpdHM8aW50LCBzaXplPiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2Rl
U2l6ZSBzaXplPgorc3RydWN0IEZpdHM8RUNNQU1vZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWlu
dDhfdCwgc2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisg
ICAgLy8gYSBwYWlyIG9mIChSZXN1bHRUeXBlOjpUeXBlLCBSZXN1bHRUeXBlOjpUeXBlKSAtIHRy
eSB0byBmaXQgZWFjaCB0eXBlIGludG8gNCBiaXRzCisgICAgLy8gYWRkaXRpb25hbGx5LCBlbmNv
ZGUgdW5rbm93biB0eXBlcyBhcyAwIHJhdGhlciB0aGFuIHRoZSB8IG9mIGFsbCB0eXBlcworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdHlwZVdpZHRoID0gNDsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heFR5cGUgPSAoMSA8PCB0eXBlV2lkdGgpIC0gMTsKKworICAgIHN0
YXRpYyBib29sIGNoZWNrKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEJhc2U6OmNoZWNrKGVjbWFNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0eXBl
bmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgewor
ICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChlY21hTW9kZS52YWx1ZSgpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgRUNNQU1vZGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGVj
bWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShCYXNlOjpj
b252ZXJ0KGVjbWFNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCmlu
ZGV4IDNlM2U2NWY1OWM1MTMwMWViMmY0NGIyZDIzMWVmY2VjYTkxZWNjZjEuLjc5OTFhYzJhOGU2
N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wQnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBvdXQucHJp
bnQoYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCksICI6PCIsIFJhd1BvaW50ZXIoYmFzZWxpbmVD
b2RlQmxvY2suZ2V0KCkpKTsKLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGlzSW5T
dHJpY3RDb250ZXh0KCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2RlKSIpOwogICAg
IG91dC5wcmludCgiLCAiLCBkaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRleCgpLCAiLCAiLCBzdGF0
aWNfY2FzdDxLaW5kPihraW5kKSk7CiAgICAgaWYgKGlzQ2xvc3VyZUNhbGwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKaW5kZXggZTI5ZjM4
NGQxZDA2NzJmZWVhMDcxMjA1YmNhYTI4MWE2NDliMjIyOS4uNzVmOWJiMWE4NDY4YTYxZDdiZTk2
YzNhYzliOTFlOTUzZWEzYmY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0cnVjdCBJbmxpbmVD
YWxsRnJhbWUgewogICAgIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6Y2FsbGVyRnJh
bWVPZmZzZXQoKTsgfQogICAgIHB0cmRpZmZfdCByZXR1cm5QQ09mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6cmV0dXJuUENP
ZmZzZXQoKTsgfQogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBiYXNl
bGluZUNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luU3RyaWN0Q29udGV4dCgpOyB9CiAKICAgICB2b2lkIGR1bXBCcmllZkZ1bmN0aW9uSW5m
b3JtYXRpb24oUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFn
cy5jcHAKaW5kZXggYzhhNGI2MGZhNTg4YjAxN2Q3OWVjZjI3MGQ5N2FiYjY4YTI0ODI0OS4uNjY1
MDBlNjI3NmJjNDY5N2JlMGVlYTFkODgxNDlmZjFhNTAxNGQ0NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKQEAgLTM2LDggKzM2LDEwIEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBQdXRCeUlkRmxhZ3MgZmxhZ3MpIHsKICAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsK
LSAgICBpZiAoZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpCisgICAgaWYgKGZsYWdzLmlzRGlyZWN0
KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklzRGlyZWN0Iik7CisgICAgaWYgKGZsYWdz
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiU3RyaWN0
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRGbGFncy5oCmluZGV4IDVjMDQ5MjgxMGUxYzkzZmY2MTUzZTY1NmVmNDRj
NzdlMmZmOTc0OGUuLjgxZDQ2NzE4YTVmNzU5OTlhY2NlOWMxMGZmNDcxNzU2MjY2ODNlMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTcg
KzI1LDM3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRUNNQU1vZGUuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIFB1dEJ5
SWRGbGFncyA6IGludDMyX3QgewotICAgIFB1dEJ5SWROb25lID0gMCwKK2NsYXNzIFB1dEJ5SWRG
bGFncyB7CitwdWJsaWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeUlkRmxhZ3MgY3JlYXRl
KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRGbGFncyhm
YWxzZSwgZWNtYU1vZGUpOworICAgIH0KIAotICAgIC8vIFRoaXMgZmxhZyBpbmRpY2F0ZXMgdGhh
dCB0aGUgcHV0X2J5X2lkIGlzIGRpcmVjdC4gVGhhdCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBw
cm9wZXJ0eSB3aXRob3V0Ci0gICAgLy8gY2hlY2tpbmcgaWYgdGhlIHByb3RvdHlwZSBjaGFpbiBo
YXMgYSBzZXR0ZXIuCi0gICAgUHV0QnlJZElzRGlyZWN0ID0gMHgxLAotICAgIFB1dEJ5SWRQZXJz
aXN0ZW50RmxhZ3NNYXNrID0gMHgxLAorICAgIC8vIEEgZGlyZWN0IHB1dF9ieV9pZCBtZWFucyB0
aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlmIHRoZQorICAgIC8v
IHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCisgICAgY29uc3RleHByIHN0YXRpYyBQdXRC
eUlkRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFB1dEJ5SWRGbGFncyh0cnVlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgYm9vbCBp
c0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAgICBFQ01BTW9kZSBlY21h
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KKworcHJpdmF0ZToKKyAgICBjb25z
dGV4cHIgUHV0QnlJZEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAg
ICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2lzRGlyZWN0OworICAgIEVDTUFNb2RlIG1f
ZWNtYU1vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCAyY2JjYmNhYzkyMDRkNWQz
MDdlMmNiNDgzZDNlZjA4YTNhNzFlMTRkLi5mMWVkYjM4MDdlYjAyMWU0NDQ5Y2NkNjEwNjlhZjJh
Yjg2MzkwN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlCiAg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24pOwogICAgIAogICAgIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKLSAgICBpZiAoIShieXRlY29k
ZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgIGlmICghKGJ5dGVjb2RlLm1fZmxh
Z3MuaXNEaXJlY3QoKSkpIHsKICAgICAgICAgY29uZGl0aW9uU2V0ID0KICAgICAgICAgICAgIGdl
bmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSgKICAgICAg
ICAgICAgICAgICB2bSwgcHJvZmlsZWRCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHN0cnVjdHVyZSwg
dWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCmluZGV4IDU4OTFmMmE1YzI1NzdiOTljNTI5MjJkM2RmZGY1OTZiYTJmZTU2
YmYuLjU0ZGE1N2RhYjY5Y2EyNjFhZWZkY2ViOTM4ZmZhMGY0ZmYwMzc5MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApA
QCAtNTcsNyArNTcsNiBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRDb2RlQmxvY2s6OnNfaW5m
byA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwgbnVsbHB0ciwgbnVsbAogVW5saW5rZWRDb2RlQmxv
Y2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVU
eXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQogICAgICwgbV91c2VzRXZhbChpbmZvLnVzZXNFdmFsKCkpCi0gICAgLCBtX2lzU3RyaWN0
TW9kZShpbmZvLmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGluZm8uaXND
b25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAs
IG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBk
ZDIxN2I3ZmQ0ZmVmNTZkZjhkODFjMzVjMjgxMzNkNWM4N2ExYTljLi4wMGRjNjE2MzM1ZmQzMWIw
NDMyNTFlMzQ0MDBlNTdkZWY1MzE1ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIzLDcgKzEyMyw2IEBAIHB1Ymxp
YzoKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKICAgICBib29s
IGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KLSAgICBi
b29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAg
Ym9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KICAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNl
TW9kZShwYXJzZU1vZGUoKSk7IH0KQEAgLTMzNSw3ICszMzQsNiBAQCBwcml2YXRlOgogICAgIFZp
cnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFs
IDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9p
c0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDog
MTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmgKaW5kZXggMjEzYTNhODMyZDdlYWFhOWI5NzEwZjAxYTg2NGRhOTM1YmRkN2VhNS4uMmVi
OTg0YzFiMDVhNDVlMGFhNTIwZTFmZDM3OGFkOWUyZmM5MzIyMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAg
ICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KICAgICBib29sIHVzZXNF
dmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KICAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNl
TW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJldHVybiBtX2NvZGVCbG9j
ay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGNk
OGJlYmY4ZDM2NDU0NWQxODJkNzljYmY4MDY4MDY3MWY0MTE5N2YuLjBiZjMwMjhkODEwYzYxNmVi
MDdhZGE2NmM1N2RhOTI5OWUxYmJjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAt
NzEsMTAgKzcxLDExIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0
ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlzQ2xhc3NDb250ZXh0ID0g
ZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAKLSAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24t
PnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFi
bGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRp
bmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0
YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0
LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1v
ZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhm
dW5jdGlvbi0+dXNlc0V2YWwoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktp
bmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2lu
ZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBl
eGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6
OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogCiAgICAgVmFyaWFi
bGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IGV4ZWN1dGFibGUtPnBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25N
b2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0g
ZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVD
TUFNb2RlOjpzbG9wcHkoKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUs
ICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGEw
MWQ0N2Q3ZGMwYmMxYjQ4MDE2NWJiY2QyNjZkMTFhNmMyMzJiNDUuLjYyODQxYjU2N2QwZTFmODg0
ZWVhZmU3ZjYyMGVjMWUwODkzMWM3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yOTcsMTQgKzI5
NywyMSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIHJl
dHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1O
b2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2sp
LCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAg
ICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZy
YW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29kZSkK
ICAgICAsIG1fdm0odm0pCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2Up
CisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQorICAgICwgbV9pblRhaWxQb3NpdGlv
bihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAg
LCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9ncmFtTm9kZS0+dXNlc0Fy
cm93RnVuY3Rpb24oKSB8fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1v
ZGUoZWNtYU1vZGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCkBAIC0zMzgsMTQgKzM0NSwx
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFt
Tm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2sp
LCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAg
ICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKICAgICAsIG1fY29kZVR5cGUoRnVuY3Rpb25D
b2RlKQogICAgICwgbV92bSh2bSkKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBmbGFn
CisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9leHByZXNzaW9uVG9vRGVl
cChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2NrLT5pc0J1aWx0aW5G
dW5jdGlvbigpKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFs
KCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX3VzZXNOb25TdHJpY3RF
dmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSB0YWlsIGNhbGwgZWxpbWluYXRpb24g
d2l0aCB0aGUgcHJvZmlsZXIKICAgICAvLyBlbmFibGVkLiBUaGlzIGlzIGN1cnJlbnRseSBub3Qg
cG9zc2libGUgYmVjYXVzZSB0aGUgcHJvZmlsZXIgZXhwZWN0cwogICAgIC8vIG9wX3dpbGxfY2Fs
bCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBhcmUg
bm90CkBAIC0zNTMsOCArMzYzLDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgIC8vCiAg
ICAgLy8gTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZW5hYmxlIHRhaWwgY2FsbCBmb3IgbmFr
ZWQgY29uc3RydWN0b3JzIHNpbmNlIGl0IGRvZXMgbm90IGhhdmUgc3BlY2lhbCBjb2RlIGZvciAi
cmV0dXJuIi4KLSAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkg
JiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlv
bnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAg
LCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBk
YXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigp
IHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUp
CiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlw
ZSgpKQogewogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9sVGFi
bGU6OmNyZWF0ZShtX3ZtKTsKQEAgLTQzNyw3ICs0NDksNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgp
LCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAgICBBU1NFUlQocGFyc2VN
b2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOwogICAgICAgICBBU1NF
UlQoIWlzQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSk7Ci0gICAgICAgIGJv
b2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2st
PnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBib29sIGlz
RHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2Vz
RXZhbCgpLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFt
ZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAg
ICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFt
ZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKQEAgLTQ4Nyw3
ICs0OTksNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBG
dW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICBtX2FyZ3VtZW50c1Jl
Z2lzdGVyLT5yZWYoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRzICYmICFj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgeworICAg
IGlmIChuZWVkc0FyZ3VtZW50cyAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSAmJiBpc1NpbXBsZVBh
cmFtZXRlckxpc3QpIHsKICAgICAgICAgLy8gSWYgd2UgY2FwdHVyZWQgYW55IGZvcm1hbCBwYXJh
bWV0ZXIgYnkgbmFtZSwgdGhlbiB3ZSB1c2UgU2NvcGVkQXJndW1lbnRzLiBPdGhlcndpc2Ugd2UK
ICAgICAgICAgLy8gdXNlIERpcmVjdEFyZ3VtZW50cy4gV2l0aCBTY29wZWRBcmd1bWVudHMsIHdl
IGxpZnQgYWxsIG9mIG91ciBhcmd1bWVudHMgaW50byB0aGUKICAgICAgICAgLy8gYWN0aXZhdGlv
bi4KQEAgLTUxNiw3ICs1MjgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAg
ICAgICAgICAgICBlbnRyeS5kaXNhYmxlV2F0Y2hpbmcobV92bSk7CiAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIGVu
dHJ5KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjpl
bWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIFVJTlRfTUFYLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93
SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxS
ZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsK
KyAgICAgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3RlciwgVUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVk
aW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVW
YXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIGVjbWFNb2RlKSwgU3lt
Ym9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJv
bFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhpcyBjcmVhdGVzIGEgc2NvcGVkIGFyZ3Vt
ZW50cyBvYmplY3QgYW5kIGNvcGllcyB0aGUgb3ZlcmZsb3cgYXJndW1lbnRzIGludG8gdGhlCkBA
IC01NTQsMTEgKzU2NiwxMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGNvbnN0IEJpbmRpbmdOb2RlKj4ocGFyYW1ldGVycy5hdChpKS5maXJz
dCktPmJvdW5kUHJvcGVydHkoKTsKICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNl
dChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9m
ZnNldCkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRo
aXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIGFkZENvbnN0YW50KGlkZW50KSwgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5mbyhU
aHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbiksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0
dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQo
KSk7CisgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3RlciwgYWRkQ29uc3RhbnQoaWRlbnQpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9j
YWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBlY21h
TW9kZSksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0
ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRzICYmIChjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpIHx8ICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpKSB7CisgICAgaWYgKG5l
ZWRzQXJndW1lbnRzICYmIChlY21hTW9kZS5pc1N0cmljdCgpIHx8ICFpc1NpbXBsZVBhcmFtZXRl
ckxpc3QpKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgY2xvbmVkIGFyZ3VtZW50cyBvYmplY3Qu
CiAgICAgICAgIE9wQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOjplbWl0KHRoaXMsIG1fYXJndW1lbnRz
UmVnaXN0ZXIpOwogICAgIH0KQEAgLTcxMiw3ICs3MjQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRUb1RoaXMgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2Rl
QmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9u
c1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlRXZh
bCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRW1pdFRvVGhpcyA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3Bl
cnR5KCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyUHJv
cGVydHkoKSkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoKGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVydHkoKSB8fCBtX3Nj
b3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpKSAmJiAh
ZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbXVz
dCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0IG1vZGUgYmVjYXVzZSB3ZQog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb252ZXJ0IHx0aGlzfCB0byBhbiBvYmpl
Y3QsIGFuZCB0aGF0IG9iamVjdCBtYXkgYmUgcGFzc2VkCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB0byBhIHN0cmljdCBmdW5jdGlvbiBhcyB8dGhpc3wuIFRoaXMgaXMgb2JzZXJ2YWJsZSBi
ZWNhdXNlIHRoYXQKQEAgLTgzMywxNSArODQ1LDIxIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
CiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246
Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJ
bml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZh
bENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1v
ZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlv
bk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCiAg
ICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAg
ICwgbV9jb2RlVHlwZShFdmFsQ29kZSkKICAgICAsIG1fdm0odm0pCi0gICAgLCBtX3VzZXNOb25T
dHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25U
b29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKKyAgICAsIG1f
dXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFlY21hTW9kZS5pc1N0
cmljdCgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVk
VmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0
aW9uQ29udGV4dChldmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBldmFsTm9kZS0+dXNl
c0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250
ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIG1fY29kZUJs
b2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwpAQCAtODkxLDE1ICs5MDksMjEgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBV
bmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVj
a09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51
bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2Rl
KiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9k
ZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29k
ZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01B
TW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGlu
dEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2Nv
ZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZSht
b2R1bGVQcm9ncmFtTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0Fy
Z3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAgLCBtX3Zt
KHZtKQorICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhwcmVzc2lvblRv
b0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogICAgICwgbV91
c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCisg
ICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1Rv
VXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1
bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2VjbWFN
b2RlKGVjbWFNb2RlKQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIApAQCAtMjM5NSw3ICsyNDE5
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGcm9tU2NvcGUoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY28KICAgICAgICAgICAgIGtpbGwoZHN0KSwKICAg
ICAgICAgICAgIHNjb3BlLAogICAgICAgICAgICAgYWRkQ29uc3RhbnQodmFyaWFibGUuaWRlbnQo
KSksCi0gICAgICAgICAgICBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCB2YXJpYWJsZS5vZmZzZXQo
KS5pc1Njb3BlKCkgPyBMb2NhbENsb3N1cmVWYXIgOiByZXNvbHZlVHlwZSgpLCBJbml0aWFsaXph
dGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwKKyAgICAgICAgICAgIEdldFB1dEluZm8ocmVz
b2x2ZU1vZGUsIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExvY2FsQ2xvc3VyZVZhciA6
IHJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIGVj
bWFNb2RlKCkpLAogICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoKCksCiAgICAgICAgICAgICB2
YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyB2YXJpYWJsZS5vZmZzZXQoKS5zY29wZU9mZnNl
dCgpLm9mZnNldCgpIDogMCk7CiAgICAgICAgIHJldHVybiBkc3Q7CkBAIC0yNDIyLDExICsyNDQ2
LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29wZShSZWdp
c3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmCiAgICAgICAgIFNjb3BlT2Zmc2V0IG9mZnNl
dDsKICAgICAgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSkgewogICAgICAgICAg
ICAgb2Zmc2V0ID0gdmFyaWFibGUub2Zmc2V0KCkuc2NvcGVPZmZzZXQoKTsKLSAgICAgICAgICAg
IGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBMb2NhbENsb3N1cmVWYXIsIGlu
aXRpYWxpemF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhy
ZXNvbHZlTW9kZSwgTG9jYWxDbG9zdXJlVmFyLCBpbml0aWFsaXphdGlvbk1vZGUsIGVjbWFNb2Rl
KCkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGVPclNjb3BlRGVwdGggPSBTeW1ib2xUYWJsZU9y
U2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgdmFyaWFibGUuc3ltYm9s
VGFibGVDb25zdGFudEluZGV4KCkgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlQocmVzb2x2ZVR5cGUoKSAhPSBMb2NhbENsb3N1cmVWYXIpOwotICAgICAgICAgICAgZ2V0
UHV0SW5mbyA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBlKCksIGluaXRpYWxp
emF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNvbHZl
TW9kZSwgcmVzb2x2ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlLCBlY21hTW9kZSgpKTsKICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gU3ltYm9sVGFibGVPclNjb3BlRGVw
dGg6OnNjb3BlRGVwdGgobG9jYWxTY29wZURlcHRoKCkpOwogICAgICAgICB9CiAgICAgICAgIE9w
UHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBzY29wZSwgYWRkQ29uc3RhbnQodmFyaWFibGUuaWRlbnQo
KSksIHZhbHVlLCBnZXRQdXRJbmZvLCBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwgISFvZmZzZXQg
PyBvZmZzZXQub2Zmc2V0KCkgOiAwKTsKQEAgLTI1MDcsNyArMjUzMSw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNl
LCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0QnlJZDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9w
ZXJ0eUluZGV4LCB2YWx1ZSwgUHV0QnlJZE5vbmUpOyAvLyBpcyBub3QgZGlyZWN0CisgICAgT3BQ
dXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBQdXRCeUlkRmxh
Z3M6OmNyZWF0ZShlY21hTW9kZSgpKSk7IC8vIGlzIG5vdCBkaXJlY3QKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKQEAgLTI1MTcsNyArMjU0MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsCiAK
ICAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQocHJvcGVydHkpOwogCi0g
ICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0
eUluZGV4LCB2YWx1ZSk7CisgICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwg
dGhpc1ZhbHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAKICAgICByZXR1
cm4gdmFsdWU7CiB9CkBAIC0yNTMwLDcgKzI1NTQsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRp
ZgogCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZSwgcHJvcGVydHlJ
bmRleCk7CiAKLSAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBlID09IFByb3BlcnR5Tm9k
ZTo6S25vd25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNj
b3JlUHJvdG8pID8gUHV0QnlJZElzRGlyZWN0IDogUHV0QnlJZE5vbmU7CisgICAgUHV0QnlJZEZs
YWdzIHR5cGUgPSAocHV0VHlwZSA9PSBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0IHx8IHByb3Bl
cnR5ICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSA/IFB1dEJ5SWRGbGFn
czo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNtYU1v
ZGUoKSk7CiAgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZh
bHVlLCB0eXBlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTkwLDcgKzI2MTQsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JGaWVsZHMoUmVnaXN0
ZXJJRCogbmV4dEZ1bmN0aW9uKQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGV0ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBPcERlbEJ5SWQ6OmVtaXQodGhpcywgZHN0LCBiYXNl
LCBhZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAgIE9wRGVsQnlJZDo6ZW1pdCh0aGlzLCBkc3Qs
IGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIGRz
dDsKIH0KIApAQCAtMjYzNCwyNSArMjY1OCwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUgog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQdXRC
eVZhbDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAg
IHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsV2l0aFRo
aXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIE9w
UHV0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2
YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFs
RGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQdXRCeVZh
bERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5KQogewotICAgIE9wRGVsQnlWYWw6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBw
cm9wZXJ0eSk7CisgICAgT3BEZWxCeVZhbDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5
LCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0zMjQ2LDcgKzMyNzAsMTAg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWMKICAgICAvLyBFbWl0IGNhbGwuCiAgICAgQVNTRVJU
KGRzdCk7CiAgICAgQVNTRVJUKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpOwotICAgIENhbGxPcDo6
ZW1pdCh0aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpKTsKKyAgICBpZiBjb25zdGV4cHIg
KG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkKKyAgICAgICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRz
dCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxs
QXJndW1lbnRzLnN0YWNrT2Zmc2V0KCksIGVjbWFNb2RlKCkpOworICAgIGVsc2UKKyAgICAgICAg
Q2FsbE9wOjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCkpOwogICAgIAogICAg
IGlmIChleHBlY3RlZEZ1bmN0aW9uICE9IE5vRXhwZWN0ZWRGdW5jdGlvbikKICAgICAgICAgZW1p
dExhYmVsKGRvbmUuZ2V0KCkpOwpAQCAtMzc4OSw3ICszODE2LDcgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eSwgUmUKICAgICB1bnNpZ25lZCBudW1WYXJzID0gbV9jb2RlQmxvY2stPm51bVZhcnMoKTsK
ICAgICBwdXNoTGV4aWNhbFNjb3BlSW50ZXJuYWwobmFtZVNjb3BlRW52aXJvbm1lbnQsIFREWkNo
ZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwg
bnVsbHB0ciwgVERaUmVxdWlyZW1lbnQ6Ok5vdFVuZGVyVERaLCBTY29wZVR5cGU6OkZ1bmN0aW9u
TmFtZVNjb3BlLCBTY29wZVJlZ2lzdGVyVHlwZTo6VmFyKTsKICAgICBBU1NFUlRfVU5VU0VEKG51
bVZhcnMsIG1fY29kZUJsb2NrLT5udW1WYXJzKCkgPT0gc3RhdGljX2Nhc3Q8aW50PihudW1WYXJz
ICsgMSkpOyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNyZWF0ZWQgb25lIG5ldyAidmFyIiBmb3IgdGhl
IGZ1bmN0aW9uIG5hbWUgc2NvcGUuCi0gICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlh
YmxlID0gaXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlh
YmxlID0gZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgIFZhcmlhYmxlIGZ1bmN0aW9uVmFyID0g
dmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3Qo
KS5tX3N5bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBwcm9wZXJ0eS5pbXBsKCkp
LCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwg
c2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSk7CiAgICAgZW1pdFB1dFRvU2NvcGUobV9sZXhp
Y2FsU2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSwgZnVuY3Rpb25WYXIsIGNhbGxlZSwgVGhyb3dJ
Zk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKIH0KQEAg
LTM5NzIsNyArMzk5OSw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4
Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKIHsKICAgICAvLyBJZiB3
ZSdyZSBpbiBzdHJpY3QgbW9kZSwgd2UgYWx3YXlzIHRocm93LgogICAgIC8vIElmIHdlJ3JlIG5v
dCBpbiBzdHJpY3QgbW9kZSwgd2UgdGhyb3cgZm9yICJjb25zdCIgdmFyaWFibGVzIGJ1dCBub3Qg
dGhlIGZ1bmN0aW9uIGNhbGxlZS4KLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkgfHwgdmFyaWFibGUu
aXNDb25zdCgpKSB7CisgICAgaWYgKGVjbWFNb2RlKCkuaXNTdHJpY3QoKSB8fCB2YXJpYWJsZS5p
c0NvbnN0KCkpIHsKICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKElkZW50aWZpZXI6OmZyb21T
dHJpbmcobV92bSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtNTA1NSw3ICs1MDgyLDcgQEAgdm9pZCBTdGF0aWNQcm9wZXJ0eUFu
YWx5c2lzOjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKCkK
IHsKLSAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAg
IE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSwgZWNtYU1vZGUoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDI5ODkzNzQwYTg1YTU4
NDllMzk3Mjg4NTY1MDMyYWU3NGJhZmY1NWIuLjcwNzU5NmE0OTc3MjAxY2VlNzQxZTMyYTE3ODcz
NmQ1NGExNjI3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM4MCwxMyArMzgwLDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgRmluYWxseUNvbnRleHQ7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQgY2xhc3MgU3Ry
dWN0dXJlRm9ySW5Db250ZXh0OworICAgICAgICBmcmllbmQgY2xhc3MgU3RyaWN0TW9kZVNjb3Bl
OwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rp
b25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwg
UHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwotICAgICAgICBCeXRl
Y29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCopOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1
bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAg
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBG
dW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7Cisg
ICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1
bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1v
ZGUpOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigpOwogICAgICAgICAKQEAgLTQwNiwx
NCArNDA3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgVW5saW5rZWRDb2RlQmxvY2s+Ci0gICAgICAgIHN0
YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCkKKyAgICAgICAgc3RhdGljIFBhcnNlckVy
cm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQqIGVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgewogICAgICAg
ICAgICAgTW9ub3RvbmljVGltZSBiZWZvcmU7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAgICAgICAgICAgICAgYmVm
b3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5p
cXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVH
ZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAgICAgYXV0byBieXRlY29kZUdl
bmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtl
ZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCwgZWNtYU1vZGUpOwog
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsK
IAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGls
ZVRpbWVzKCkpKSB7CkBAIC0xMDE5LDcgKzEwMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVHZW5lcmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2VuZXJhdGlvbk1vZGU6OlR5cGVQcm9maWxl
cik7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0Q29udHJvbEZsb3dQcm9maWxlckhvb2tzKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlR2VuZXJhdGlvbk1vZGUuY29udGFpbnMoQ29kZUdlbmVyYXRp
b25Nb2RlOjpDb250cm9sRmxvd1Byb2ZpbGVyKTsgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBp
c1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7
IH0KKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2Rl
OyB9CiAgICAgICAgIHZvaWQgc2V0VXNlc0NoZWNrcG9pbnRzKCkgeyBtX2NvZGVCbG9jay0+c2V0
SGFzQ2hlY2twb2ludHMoKTsgfQogCiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KQEAgLTEyOTcsOCAr
MTI5OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1faXNCdWlsdGluRnVuY3Rp
b24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWwgeyBmYWxzZSB9
OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBmYWxzZSB9OwotICAgICAgICBib29s
IG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwogICAgICAgICBib29sIG1faGFz
Q2FjaGVkVmFyaWFibGVzVW5kZXJURFogeyBmYWxzZSB9OworICAgICAgICBib29sIG1fbmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0IDogMTsKKyAgICAgICAgRUNNQU1vZGUgbV9lY21h
TW9kZTsKICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsg
RGVyaXZlZENvbnRleHRUeXBlOjpOb25lIH07CiAKICAgICAgICAgQ29tcGFjdFZhcmlhYmxlTWFw
OjpIYW5kbGUgbV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWjsKQEAgLTEzMTIsNiArMTMxNCwyNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhdGNoRW50cnk+IG1fZXhjZXB0aW9u
SGFuZGxlcnNUb0VtaXQ7CiAgICAgfTsKIAorICAgIGNsYXNzIFN0cmljdE1vZGVTY29wZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBTdHJpY3RNb2RlU2NvcGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvcikKKyAgICAgICAgICAgIDogbV9nZW5lcmF0b3IoZ2VuZXJhdG9yKQorICAgICAgICAg
ICAgLCBtX3ByZXZpb3VzRUNNQU1vZGUoZ2VuZXJhdG9yLm1fZWNtYU1vZGUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fZ2VuZXJhdG9yLm1fZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7
CisgICAgICAgIH0KKworICAgICAgICB+U3RyaWN0TW9kZVNjb3BlKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9nZW5lcmF0b3IubV9lY21hTW9kZSA9IG1fcHJldmlvdXNFQ01BTW9kZTsKKyAg
ICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3ImIG1fZ2Vu
ZXJhdG9yOworICAgICAgICBFQ01BTW9kZSBtX3ByZXZpb3VzRUNNQU1vZGU7CisgICAgfTsKKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDY0MGIyNDk3
NTVlMTBlY2RkOWE4M2I5ZTE0YjA5N2FiMzlmZDA5NGYuLmJkMzNiOGEwZjliYjIyMjM2N2Q2OTQ3
ZmYyYmI4NDQxODk3Zjc3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI5MDMsNyArMjkwMyw3IEBAIFJlZ2lzdGVy
SUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgaWYg
KGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCku
aXNTdHJpY3QoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgaWYgKG1f
YXNzaWdubWVudENvbnRleHQgPT0gQXNzaWdubWVudENvbnRleHQ6OkFzc2lnbm1lbnRFeHByZXNz
aW9uKQpAQCAtMjkyMCw3ICsyOTIwLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogcmV0dXJuUmVzdWx0ID0gcmVzdWx0LmdldCgpOwogICAg
IGlmICghaXNSZWFkT25seSkgewotICAgICAgICByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3IuZW1p
dFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3IuaXNT
dHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5p
dGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQobV9hc3NpZ25tZW50Q29udGV4dCkp
OworICAgICAgICByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUu
Z2V0KCksIHZhciwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgp
ID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIGluaXRpYWxpemF0aW9u
TW9kZUZvckFzc2lnbm1lbnRDb250ZXh0KG1fYXNzaWdubWVudENvbnRleHQpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXN1bHQuZ2V0KCksIHZhciwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICB9CiAKQEAgLTMxNDAsNyArMzE0MCw3IEBAIFJlZ2lzdGVySUQq
IEVtcHR5TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzCiAgICAgfSBlbHNlIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0
KCksIHZhciwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZO
b3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRp
YWxpemF0aW9uKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgp
LCB2YXIsIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhy
b3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6
SW5pdGlhbGl6YXRpb24pOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVl
LmdldCgpLCB2YXIsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50Lmxlbmd0aCgpKTsg
CiAgICAgfQogCkBAIC0zMzUwLDEzICszMzUwLDEzIEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0TG9v
cEhlYWRlcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBwcm9wZXJ0
CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVk
KHZhcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShsb2NhbCwgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2Rl
KCkpCisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBpZiAodmFyLmlzUmVhZE9ubHkoKSkK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQo
dmFyKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5l
bWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcHJvcGVy
dHlOYW1lLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05v
dFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwg
cHJvcGVydHlOYW1lLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5v
dEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24pOwogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUocHJvcGVydHlOYW1lLCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHItPnBvc2l0
aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7CiAgICAgfTsKQEAgLTM2MDcsMTMgKzM2MDcsMTMgQEAg
dm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVh
ZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5t
b3ZlKGxvY2FsLCB2YWx1ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgICAgICAgICBpZiAodmFyLmlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAgICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBn
ZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZO
b3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVl
LCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9O
b3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24p
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2
YWx1ZSwgdmFyLCBtX2xleHByLT5wb3NpdGlvbigpLCBtX2xleHByLT5wb3NpdGlvbigpICsgaWRl
bnQubGVuZ3RoKCkpOwogICAgICAgICB9IGVsc2UgaWYgKG1fbGV4cHItPmlzRG90QWNjZXNzb3JO
b2RlKCkpIHsKQEAgLTQzOTcsNiArNDM5Nyw4IEBAIHZvaWQgQ2xhc3NEZWNsTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiBSZWdp
c3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIFN0cmljdE1vZGVTY29wZSBzdHJpY3RN
b2RlU2NvcGUoZ2VuZXJhdG9yKTsKKwogICAgIGlmIChtX25lZWRzTGV4aWNhbFNjb3BlKQogICAg
ICAgICBnZW5lcmF0b3IucHVzaExleGljYWxTY29wZSh0aGlzLCBCeXRlY29kZUdlbmVyYXRvcjo6
VERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBCeXRlY29kZUdlbmVyYXRvcjo6TmVzdGVk
U2NvcGVUeXBlOjpJc05lc3RlZCk7CiAKQEAgLTQ4MzEsNyArNDgzMyw3IEBAIHZvaWQgQmluZGlu
Z05vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiB2YWx1ZSkgY29uCiAgICAgICAgICAgICBnZW5lcmF0b3IubGlmdFREWkNoZWNrSWZQb3NzaWJs
ZSh2YXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChnZW5lcmF0b3IuaXNTdHJp
Y3RNb2RlKCkpCisgICAgaWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTQ4NDEs
NyArNDg0Myw3IEBAIHZvaWQgQmluZGluZ05vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSkgY29uCiAgICAgICAgIGdlbmVyYXRvci5l
bWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwg
Z2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lm
Tm90Rm91bmQsIGluaXRpYWxpemF0aW9uTW9kZUZvckFzc2lnbm1lbnRDb250ZXh0KG1fYmluZGlu
Z0NvbnRleHQpKTsKKyAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZh
ciwgdmFsdWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91
bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVu
dENvbnRleHQobV9iaW5kaW5nQ29udGV4dCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUodmFsdWUsIHZhciwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBpZiAobV9iaW5k
aW5nQ29udGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQgfHwg
bV9iaW5kaW5nQ29udGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6Q29uc3REZWNsYXJhdGlvblN0
YXRlbWVudCkKICAgICAgICAgZ2VuZXJhdG9yLmxpZnRURFpDaGVja0lmUG9zc2libGUodmFyKTsK
QEAgLTQ4NzksNyArNDg4MSw3IEBAIHZvaWQgQXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFs
dWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoZ2VuZXJhdG9y
LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgbnVsbHB0ciwgc2NvcGUu
Z2V0KCkpOwpAQCAtNDg5MCw3ICs0ODkyLDcgQEAgdm9pZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6
OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAg
ICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgaWYgKCFpc1JlYWRPbmx5KSB7Ci0g
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFs
dWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhy
b3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1
ZSwgZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERv
Tm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIHZhciwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9hc3Np
Z25tZW50VGFyZ2V0LT5pc0RvdEFjY2Vzc29yTm9kZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCAzOWNiZjgy
ZTIxMTMyMDViNTZmM2E3ZDY4NzYzNWYwYzNlNzBmMTdhLi5mNDVlMDFkMDY3MTkzMDc2MmZjMDcw
ODU1MGYzZTQ3YmNhM2M0YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTIxMiw5ICsyMTIsOSBAQCBKU1ZhbHVl
IERlYnVnZ2VyQ2FsbEZyYW1lOjp0aGlzVmFsdWUoVk0mIHZtKSBjb25zdAogICAgIGlmICghdGhp
c1ZhbHVlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIEVDTUFNb2RlIGVj
bWFNb2RlID0gTm90U3RyaWN0TW9kZTsKLSAgICBpZiAoY29kZUJsb2NrICYmIGNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIGVjbWFNb2RlID0gU3RyaWN0TW9kZTsKKyAgICBFQ01B
TW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBpZiAoY29kZUJsb2NrICYm
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCisgICAg
ICAgIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwogICAgIHJldHVybiB0aGlzVmFsdWUu
dG9UaGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLCBlY21h
TW9kZSk7CiB9CiAKQEAgLTI1Myw3ICsyNTMsOCBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1l
OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNPYgog
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgSlNTY29wZTo6
Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3BlKCksIHZhcmlh
Ymxlc1VuZGVyVERaKTsKIAotICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFtZS0+Y2FsbGVy
U291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+
dW5saW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2Nr
LT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlw
ZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3Ry
aWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZy
YW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygp
LT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5p
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5k
ZXJURFosIGVjbWFNb2RlKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24o
KSkpIHsKICAgICAgICAgZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKTsKICAgICAg
ICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDc3
MWQ5MmU4MjM5ZTQzYWIyNWZkYjY2ZmNmMTA1OTllYWFjYTM5NDYuLmMxODcwNjY3NTE4ZjRiYjA4
YjJjNjM5YzQ4NGY2ZjYwMGYwYzM1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE4NiwxMCAr
MTg2LDEwIEBAIGVudW0gY2xhc3MgVG9UaGlzUmVzdWx0IHsKICAgICBHbG9iYWxUaGlzLAogICAg
IER5bmFtaWMsCiB9OwotaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0m
IHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JOb2RlKQoraW5s
aW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBFQ01BTW9kZSBlY21h
TW9kZSwgQWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JOb2RlKQogewogICAgIC8vIFdlIGxvb2sgYXQg
dGhlIHR5cGUgZmlyc3Qgc2luY2UgdGhhdCB3aWxsIGNvdmVyIG1vc3QgY2FzZXMgYW5kIGRvZXMg
bm90IHJlcXVpcmUgaXRlcmF0aW5nIGFsbCB0aGUgc3RydWN0dXJlcy4KLSAgICBpZiAoaXNTdHJp
Y3RNb2RlKSB7CisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgaWYgKHZh
bHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYgU3BlY09iamVjdE90
aGVyKSkKICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwogICAgIH0g
ZWxzZSB7CkBAIC0yMDMsMjAgKzIwMywyMCBAQCBpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlz
QW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJgogICAg
ICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNPYmplY3Q6OnRvVGhpcykKICAgICAgICAg
ICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKICAgICAgICAgICAgIGlmICh0
b1RoaXNNZXRob2QgPT0gJkpTU2NvcGU6OnRvVGhpcykgewotICAgICAgICAgICAgICAgIGlmIChp
c1N0cmljdE1vZGUpCisgICAgICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKICAgICAg
ICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKChpc1N0cmljdE1vZGUgfHwgKHZhbHVlRm9y
Tm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYgflNwZWNPYmplY3QpKSkgJiYg
dmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKKyAgICBpZiAoKGVjbWFNb2Rl
LmlzU3RyaWN0KCkgfHwgKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90
eXBlICYgflNwZWNPYmplY3QpKSkgJiYgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmlzRmluaXRl
KCkpIHsKICAgICAgICAgYm9vbCBhbGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSA9ICF2YWx1ZUZvck5v
ZGUubV9zdHJ1Y3R1cmUuaXNDbGVhcigpOwogICAgICAgICBib29sIG92ZXJyaWRlc1RvVGhpcyA9
IGZhbHNlOwogICAgICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUg
PSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCk7CiAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVj
dCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9s
VHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBCaWdJbnRUeXBlKTsKLSAgICAgICAgICAgIGlmICghaXNT
dHJpY3RNb2RlKQorICAgICAgICAgICAgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAg
ICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBzaW5jZSBlaXRoZXI6
CiAgICAgICAgICAgICAvLyAxKSBXZSBhcmUgaW4gc3RyaWN0IG1vZGUgYW5kIHN0cmluZ3Mvc3lt
Ym9scyBhcmUgbm90IHdyYXBwZWQKQEAgLTIzMCw3ICsyMzAsNyBAQCBpbmxpbmUgVG9UaGlzUmVz
dWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFj
dFZhbHVlJgogICAgICAgICBpZiAoIW92ZXJyaWRlc1RvVGhpcykKICAgICAgICAgICAgIHJldHVy
biBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwogICAgICAgICBpZiAoYWxsU3RydWN0dXJlc0FyZUpT
U2NvcGUpIHsKLSAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpCisgICAgICAgICAgICBpZiAo
ZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0
OjpVbmRlZmluZWQ7CiAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlz
OwogICAgICAgICB9CkBAIC0yNzMwLDkgKzI3MzAsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlv
biA9IGZvck5vZGUobm9kZSk7Ci0gICAgICAgIGJvb2wgc3RyaWN0TW9kZSA9IG1fZ3JhcGguaXNT
dHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEVDTUFNb2RlIGVj
bWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKTsKIAotICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0
ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fdm0sIHN0cmljdE1vZGUsIHNvdXJjZSk7CisgICAgICAg
IFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV92bSwgZWNtYU1vZGUs
IHNvdXJjZSk7CiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CiAgICAgICAgIGNhc2UgVG9UaGlz
UmVzdWx0OjpJZGVudGl0eToKICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3Rh
bnRGb2xkaW5nKHRydWUpOwpAQCAtMjc0Niw3ICsyNzQ2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uLnNldFR5cGUobV9ncmFwaCwgU3BlY09iamVj
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OkR5bmFt
aWM6Ci0gICAgICAgICAgICBpZiAoc3RyaWN0TW9kZSkKKyAgICAgICAgICAgIGlmIChlY21hTW9k
ZS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLm1ha2VIZWFwVG9wKCk7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNvdXJj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggOWRkNGI5YWE0OGM4MGMwNmRmMDRjMGUxZjNhZjMzMDVlZWRhZDEyYi4uZmI5Y2FkMWM1
MWNlYmZmMjA0OTQ2OTQwODAyN2JmOTFhZTY0NDBlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI0NiwxMyArMjQ2LDEzIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZGVzdGluYXRpb24sIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cywgQWNjZXNzVHlwZSwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKAotICAgICAg
ICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1
dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0KTsKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgTm9kZSogdmFsdWUsICBjb25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBp
c0RpcmVjdCwgRUNNQU1vZGUpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAgICAgTm9k
ZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwg
Tm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAotICAgICAgICBib29sIGlzRGlyZWN0
LCB1bnNpZ25lZCBpbnRydWN0aW9uU2l6ZSk7CisgICAgICAgIGJvb2wgaXNEaXJlY3QsIHVuc2ln
bmVkIGludHJ1Y3Rpb25TaXplLCBFQ01BTW9kZSk7CiAKICAgICB2b2lkIGhhbmRsZURlbGV0ZUJ5
SWQoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0
dXMpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3Rh
dHVzLCBFQ01BTW9kZSk7CiAgICAgCiAgICAgLy8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2lu
dCBvciBlbWl0IGEgY2hlY2sgZm9yIHRoaXMgY29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRo
ZQogICAgIC8vIGNvbmRpdGlvbiBubyBsb25nZXIgaG9sZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVh
c29uYWJsZSBjaGVjayBjYW4gYmUgZW1pdHRlZC4KQEAgLTg1MCwxOCArODUwLDE4IEBAIHByaXZh
dGU6CiAgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0
dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywg
Tm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGlmIChvcCA9PSBUYWls
Q2FsbCkgewogICAgICAgICAgICAgaWYgKGFsbElubGluZUZyYW1lc0FyZVRhaWxDYWxscygpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQob3AsIE9w
SW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZv
KCkpOworICAgICAgICAgICAgICAgIHJldHVybiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQo
b3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsK
ICAgICAgICAgICAgIG9wID0gVGFpbENhbGxJbmxpbmVkQ2FsbGVyOwogICAgICAgICB9CiAKIAog
ICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAg
ICAgICAgb3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9m
ZnNldCwgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgIG9wLCBvcEluZm8sIGNhbGxl
ZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAg
ICBpZiAocmVzdWx0LmlzVmFsaWQoKSkKICAgICAgICAgICAgIHNldChyZXN1bHQsIGNhbGwpOwog
ICAgICAgICByZXR1cm4gY2FsbDsKQEAgLTEzNDgsNyArMTM0OCw3IEBAIEJ5dGVDb2RlUGFyc2Vy
OjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgbnVsbHB0
ciwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0
LCBwcmVkaWN0aW9uKTsKKyAgICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwg
T3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxD
YWxsVmFyYXJncyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsK
ICAgICByZXR1cm4gY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwgPyBUZXJtaW5hbCA6IE5vblRl
cm1pbmFsOwogfQpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRp
bWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIE5vZGUq
IG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVnKTsKICAgICBpZiAoY291bGRU
YWtlU2xvd1BhdGgpIHsKICAgICAgICAgYWRkQ2FsbCgKLSAgICAgICAgICAgIHJlc3VsdCwgY2Fs
bE9wLCBudWxscHRyLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywKKyAgICAgICAgICAgIHJlc3VsdCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9k
ZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dCwgcHJlZGljdGlvbik7CiAgICAgICAgIFZFUkJPU0VfTE9HKCJXZSBhZGRlZCBhIGNhbGwgaW4g
dGhlIHNsb3cgcGF0aFxuIik7CiAgICAgfSBlbHNlIHsKQEAgLTM2NjAsNyArMzY2MCw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCwKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDw9IEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNfSU5D
TFVESU5HX1RISVMsICJDdXJyZW50bHkgQ2FsbERPTSBkb2VzIG5vdCBzdXBwb3J0IGFuIGFyYml0
cmFyeSBsZW5ndGggYXJndW1lbnRzLiIpOwogCiAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgYWRk
Q2FsbChyZXN1bHQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICBhZGRDYWxsKHJl
c3VsdCwgQ2FsbCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTQ2MjAsMTEgKzQ2MjAsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlJZCgKIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwKLSAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVC
eVN0YXR1cyBkZWxldGVCeVN0YXR1cykKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBE
ZWxldGVCeVN0YXR1cyBkZWxldGVCeVN0YXR1cywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAg
aWYgKCFkZWxldGVCeVN0YXR1cy5pc1NpbXBsZSgpIHx8ICFkZWxldGVCeVN0YXR1cy52YXJpYW50
cygpLnNpemUoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBz
ZXQoZGVzdGluYXRpb24sCi0gICAgICAgICAgICBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5m
byhpZGVudGlmaWVyKSwgYmFzZSkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlk
LCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNDYzMyw3ICs0NjMzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRGVsZXRlQnlJZCgKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IGRlbGV0ZUJ5U3RhdHVzLnZhcmlh
bnRzKCkuc2l6ZSgpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RT
aXplKCkpIHsKICAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwKLSAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgYmFzZSkpOworICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcElu
Zm8oZWNtYU1vZGUpLCBiYXNlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtNDcxNywyMiArNDcxNywyMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVC
eUlkKAogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKLSAgICBOb2RlKiBi
YXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQ
dXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0KQorICAgIE5vZGUqIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1
dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFN
b2RlKQogewogICAgIGlmIChpc0RpcmVjdCkKLSAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkRGly
ZWN0LCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgYWRkVG9HcmFw
aChQdXRCeUlkRGlyZWN0LCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJh
c2UsIHZhbHVlKTsKICAgICBlbHNlCi0gICAgICAgIGFkZFRvR3JhcGgocHV0QnlJZFN0YXR1cy5t
YWtlc0NhbGxzKCkgPyBQdXRCeUlkRmx1c2ggOiBQdXRCeUlkLCBPcEluZm8oaWRlbnRpZmllciks
IGJhc2UsIHZhbHVlKTsKKyAgICAgICAgYWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2Fs
bHMoKSA/IFB1dEJ5SWRGbHVzaCA6IFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZv
KGVjbWFNb2RlKSwgYmFzZSwgdmFsdWUpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeUlkKAogICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsCi0gICAgY29uc3QgUHV0
QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25TaXplKQorICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wg
aXNEaXJlY3QsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7
CiAgICAgaWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRTdGF0dXMubnVt
VmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBp
ZiAoIXB1dEJ5SWRTdGF0dXMuaXNTZXQoKSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VP
U1JFeGl0KTsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1
dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRp
ZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCkBAIC00NzQwLDcgKzQ3NDAsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRM
KCkgfHwgcHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25z
Ojp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1dEJ5SWRT
dGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmdMaXN0U2l6ZSgpKSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5
SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21h
TW9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NzQ5
LDcgKzQ3NDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAg
ICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0ua2luZCgpICE9IFB1dEJ5
SWRWYXJpYW50OjpUcmFuc2l0aW9uKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICBpZiAoIWNoZWNrKHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25k
aXRpb25TZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRl
bnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMs
IGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tT
dHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVj
dHVyZSgpKSksIGJhc2UpOwogICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0
KCkpKSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwg
cHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwg
aWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDg1OSw3ICs0ODU5LDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKIAogICAgICAgICBOb2RlKiBsb2FkZWRW
YWx1ZSA9IGxvYWQoU3BlY0NlbGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFu
dCk7CiAgICAgICAgIGlmICghbG9hZGVkVmFsdWUpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlk
KGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAg
ICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1
cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAKQEAgLTQ5MDMsNyArNDkwMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQoCiAgICAgfQogICAgIAogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgZW1pdFB1dEJ5
SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAg
ICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMs
IGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IH0KIH0KQEAgLTUw
NzUsNyArNTA3NSw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7CiAgICAgICAg
ICAgICBOb2RlKiBvcDEgPSBnZXRUaGlzKCk7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsK
KyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9U
aGlzPigpOworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBt
ZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNo
ZWRTdHJ1Y3R1cmUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlE
KQpAQCAtNTA4Niw3ICs1MDg3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAg
ICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZENhY2hlKQogICAgICAgICAgICAgICAgIHx8IChvcDEtPm9wKCkgPT0g
R2V0TG9jYWwgJiYgb3AxLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c3RydWN0dXJlQ2hlY2tIb2lz
dGluZ0ZhaWxlZCgpKSkgewotICAgICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChUb1Ro
aXMsIE9wSW5mbygpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CisgICAgICAgICAg
ICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIENoZWNr
U3RydWN0dXJlLApAQCAtNTkyNiw3ICs1OTI3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHRoaXNW
YWx1ZSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CiAgICAgICAgICAg
ICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZh
ckFyZywgUHV0QnlWYWxXaXRoVGhpcywgT3BJbmZvKDApLCBPcEluZm8oMCkpOworICAgICAgICAg
ICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbyhieXRl
Y29kZS5tX2VjbWFNb2RlKSwgT3BJbmZvKDApKTsKIAogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CkBAIC01OTk2LDE0ICs1OTk3LDE0
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVy
UmVtYXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotICAgICAg
ICAgICAgYm9vbCBkaXJlY3QgPSAhIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0
KTsKKyAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgp
OwogCiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jaywKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5l
TWFwLCBtX2ljQ29udGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2lu
KCksIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jaywgdWlkKSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0
dXMsIGRpcmVjdCwgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgaGFu
ZGxlUHV0QnlJZChiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQp
LCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBjdXJyZW50
SW5zdHJ1Y3Rpb24tPnNpemUoKSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpKTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV9pZCk7CiAgICAgICAgIH0KIApAQCAtNjAxNCw4
ICs2MDE1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAg
ICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1f
aWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwogICAgICAgICAgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVy
XTsKLQotICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgYmFzZSwgdGhpc1ZhbHVlLCB2
YWx1ZSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUu
bV9lY21hTW9kZSksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIApAQCAtNjA1NSw3ICs2
MDU1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKICAgICAgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl07CiAgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCB1aWQpOwotICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29k
ZS5tX2RzdCwgYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0
dXMpOworICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwg
aWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMsIGJ5dGVjb2RlLm1f
ZWNtYU1vZGUpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X2lkKTsKICAgICAg
ICAgfQogCkBAIC02MDg1LDEzICs2MDg1LDEzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJv
cGVydHkpOwogCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUJ5SWQoYnl0ZWNvZGUu
bV9kc3QsIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIGRlbGV0ZUJ5U3RhdHVz
KTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5tX2RzdCwg
YmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMsIGJ5dGVj
b2RlLm1fZWNtYU1vZGUpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRDb21waWxlQXNEZWxl
dGVCeUlkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICghc2hvdWxkQ29tcGlsZUFzRGVsZXRlQnlJZCkKLSAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIGJhc2UsIHByb3BlcnR5
KSk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0
ZUJ5VmFsLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIGJhc2UsIHByb3BlcnR5KSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfdmFsKTsKICAgICAgICAgfQogCkBAIC02
NjE0LDcgKzY2MTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICAgICAg
ICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1ieXRlY29kZS5tX2FyZ3Y7Ci0gICAgICAgICAgICBh
ZGRDYWxsKGJ5dGVjb2RlLm1fZHN0LCBDYWxsRXZhbCwgbnVsbHB0ciwgZ2V0KGJ5dGVjb2RlLm1f
Y2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigp
KTsKKyAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8o
Ynl0ZWNvZGUubV9lY21hTW9kZSksIGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1f
YXJnYywgcmVnaXN0ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9jYWxsX2V2YWwpOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTY5NjMs
NyArNjk2Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICBpZiAobmVlZHNEeW5hbWljTG9va3VwKHJlc29sdmVUeXBlLCBvcF9w
dXRfdG9fc2NvcGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXJOdW1iZXIg
IT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgIHVpbnQ2NF90IG9wSW5mbzEgPSBtYWtlRHlu
YW1pY1Zhck9wSW5mbyhpZGVudGlmaWVyTnVtYmVyLCBnZXRQdXRJbmZvLm9wZXJhbmQoKSk7Ci0g
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZvMSks
IE9wSW5mbygpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZv
MSksIE9wSW5mbyhnZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSks
IGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
cHV0X3RvX3Njb3BlKTsKICAgICAgICAgICAgIH0KIApAQCAtNjk4NSw3ICs2OTg1LDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
ICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMQogICAgICAgICAgICAgICAgICAgICB8
fCBzdGF0dXNbMF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlCiAgICAgICAgICAg
ICAgICAgICAgIHx8IHN0YXR1c1swXS5zdHJ1Y3R1cmUoKS5zaXplKCkgIT0gMSkgewotICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0
ZWNvZGUubV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQs
IE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZv
KGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUp
LCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IHdlYWtKU0NvbnN0
YW50KGdsb2JhbE9iamVjdCk7CkBAIC03NjMxLDggKzc2MzEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgIiBmb3IgaW5saW5pbmcgYXQg
IiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVFR5cGU6OkRGR0pJVCksCiAg
ICAgICAgICAgICAgICAgIiAiLCBpbmxpbmVDYWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyKTsKICAg
ICAgICAgfQotICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIiwgaXNTdHJpY3RNb2RlID0g
IiwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCksICJcbiIpOwor
ICAgICAgICBkYXRhTG9nTG4oKTsKICAgICAgICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24o
KS0+ZHVtcEJ5dGVjb2RlKCk7CiAgICAgfQogICAgIApAQCAtNzczOSw3ICs3NzM4LDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2ln
bmVkIGluc3RydWN0aW9uU2l6ZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFz
UHV0QnlJZCkKLSAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRl
bnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBpbnN0cnVjdGlv
blNpemUpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVu
dGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0aW9u
U2l6ZSwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFz
UHV0QnlJZCkgewpAQCAtNzc1MCw3ICs3NzQ5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSkK
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZCgw
KTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChO
b2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZv
KGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbygwKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9k
ZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhh
cnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAg
ICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBi
ZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNl
IG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDkxMWRkOWIx
ZTc3YWNiNTU4YTg2MzBlZjJjMTgxMDA2MGYxZWRjMmYuLmZiNDU3MDlmZTUxNjI4MmY0ODQ3NWMz
MDcxMjdhMGEyMzI4NGNiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC03NzQsNyArNzc0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1RoaXM6IHsKLSAgICAgICAg
ICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgu
bV92bSwgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7CisgICAgICAgICAgICAgICAgVG9UaGlzUmVz
dWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX2dyYXBoLm1fdm0sIG5vZGUtPmVjbWFN
b2RlKCksIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpOwogICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpJZGVudGl0eSkgewogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CmluZGV4IDJjMzc2ODAzYzRjYTZkZjRmMmZkMmJlMDVjMTRlMDY0M2Q0ODM1N2MuLjFhNGRlY2Rh
MGMyZDczNjg3ZWZjZjM4OGI4NDgyZmIwZWM2NDdjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjgzNyw3ICsyODM3LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgZml4dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCk7CiAKICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAppbmRleCAyYzI1MTk2ZmIwNWM0OTc3OTRiNWRkZmM2NjFkYzc3ZmYx
YTBlMGFjLi43YmQxODgwNjZhZDA2ZDdiZThhZjI1ZjM4YWIxNDg5N2VlZmRlZjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC00NDEsNyArNDQxLDcgQEAgcHVibGljOgog
ICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikK
ICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBnbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbik7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1l
dGhvZFRhYmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBvYmplY3QsIE5vdFN0cmljdE1vZGUpKTsK
KyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUobV92
bSktPnRvVGhpcyhvYmplY3QsIG9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAgICAgfQog
ICAgIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVGb3IoSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUpCkBAIC00NjksMTggKzQ2OSw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29k
ZU9yaWdpbiwgbV9wcm9maWxlZEJsb2NrKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmlj
dE1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKCFjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsKLSAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lKCktPmlzU3RyaWN0TW9kZSgpOwotICAgIH0KLSAgICAKLSAgICBFQ01BTW9kZSBlY21hTW9k
ZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJp
Y3RNb2RlRm9yKGNvZGVPcmlnaW4pID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7Ci0gICAg
fQotICAgIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxs
VmFsaWQoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICB7CiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50KCktPmlzU3RpbGxWYWxpZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApp
bmRleCBhYWMzYTYzN2EwOTQxNjY0NTQ0YzkxOWJiNzQ2ZTBhZDU3YjlmNDMxLi4wYjg1MGYwYzgw
NzQwOTUwNWE5MGE1OTg5NmU0NTg5NzM1M2E1OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaApAQCAtMjIyMyw2ICsyMjIzLDUzIEBAIHB1YmxpYzoKICAgICAgICAgbV9vcEluZm8g
PSBhcnJheU1vZGUuYXNXb3JkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKworICAg
IGJvb2wgaGFzRUNNQU1vZGUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAg
ICAgIGNhc2UgQ2FsbEV2YWw6CisgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2Fz
ZSBEZWxldGVCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICBjYXNlIFB1dEJ5
SWREaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICBjYXNlIFB1dEJ5
SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5
VmFsV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKKyAgICAgICAgY2FzZSBU
b1RoaXM6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEVDTUFNb2RlIGVj
bWFNb2RlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNFQ01BTW9kZSgpKTsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgQ2FsbEV2YWw6CisgICAgICAgIGNhc2UgRGVs
ZXRlQnlWYWw6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2FzZSBU
b1RoaXM6CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFz
PHVpbnQ4X3Q+KCkpOworICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CisgICAgICAgIGNhc2UgUHV0
QnlJZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5SWRG
bHVzaDoKKyAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0QnlW
YWw6CisgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbERp
cmVjdDoKKyAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICAgICAgcmV0dXJuIEVD
TUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mbzIuYXM8dWludDhfdD4oKSk7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAg
ICBib29sIGhhc0FyaXRoTW9kZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJ
bmZvLmgKaW5kZXggNDVlN2FjM2RiNThmNjViNzhhYjYwMmU3OGU0YTMxYzQ0NTgzYzljNy4uMGU0
YzMxYmYwZDdlNTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEwYjYzOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oCkBAIC00Nyw2ICs0Nyw3IEBAIHN0cnVjdCBPcEluZm8gewogICAg
IGV4cGxpY2l0IE9wSW5mbyhSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdHJ1Y3R1cmUp
KSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92YWx1ZShvcC5hc0Jp
dHMoKSkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJhd0JpdHMo
KSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVl
KGVjbWFNb2RlLnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAg
ZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCmluZGV4IDA4Y2U1NDM1ZDNmNzE5MDYzY2ZjMDlmZmE3N2RjZjYxMWZmOGY5
OTguLmNjNTc4MDk3Yjc0YThmNjVkNmEwM2E5ZTk2N2NmZDA3NmQ1Y2UwN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjk4LDcgKzI5OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0
TW9kZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTMwNyw3
ICszMDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0
cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IFN0cmljdE1vZGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwog
fQogCiBKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkKQEAgLTMz
ODUsNyArMzM4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3Ry
aWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlm
ICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKaW5kZXggMzYxODFhMjgyMTMzOWU4OGI2NjNj
NjU4NzFjMGRhM2NjNDRkZThhMi4uYmFhMjFjMGJiZmEyYWNmYmE1MGQ1YThmOTkzMmQzMTRkYjU0
NDlmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9j
YWxDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNl
TG9jYWxDbG9iYmVyaXplLmgKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgCiAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJt
b3N0IGFyZ3VtZW50cywgZXhjZXB0IHRoaXMsIGFyZSByZWFkIGluIHNsb3BweSBtb2RlLgotICAg
ICAgICAgICAgaWYgKCFtX2dyYXBoLm1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAg
ICAgICAgICAgaWYgKCFtX2dyYXBoLm1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJ
blN0cmljdENvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
Z3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tOykKICAgICAgICAgICAgICAg
ICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7
CiAgICAgICAgICAgICB9CkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBSZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50cyBhbmQgY2FsbCBm
cmFtZSBoZWFkZXJzIHRoYXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4KICAgICAgICAgICAg
IGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUoKTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJh
bWUgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlcklubGluZUZyYW1lU2tpcHBpbmdUYWlsQ2Fs
bHMoKSkgewotICAgICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1v
ZGUoKSkgeworICAgICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0luU3RyaWN0
Q29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tOykKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKS5vZmZz
ZXQoKSkpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggOGYx
OTI2MDgwNTY2OTQ3YmFiYTAyZjE3NzZiNTQwOTRiMTBlMGJlMy4uMjEwMDNlZDVmZDNmYmMzODE2
MmM4OTJiMzRjODQ3YjkyNzY4M2ZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUwNiw3
ICs1MDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7
CiAgICAgICAgICAgICAvLyBUb1RoaXMgaW4gbWV0aG9kcyBmb3IgcHJpbWl0aXZlIHR5cGVzIHNo
b3VsZCBzcGVjdWxhdGUgcHJpbWl0aXZlIHR5cGVzIGluIHN0cmljdCBtb2RlLgotICAgICAgICAg
ICAgYm9vbCBpc1N0cmljdE1vZGUgPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21h
TW9kZSgpLmlzU3RyaWN0KCk7CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0Jv
b2xlYW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBjYWE0YmFiNDEwZTZkNTM0ZTA2YTU5NTc2MTlkMzljOWM4N2VjMDlkLi44ZDUz
ZjM0MWJkNjU1MzNkMTYyNjFmYjQyNDk3YWZkNDU4YjczOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjExOSw3ICsyMTE5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUs
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kJiBiYXMKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
CiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRo
aXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAg
ICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRp
b25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAg
ICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91Ymxl
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dERvdWJs
ZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgIE5vUmVz
dWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZh
bHVlUmVnKSk7CkBAIC0zMTUwLDI0ICszMTUwLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0
CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3Vs
dCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZUdQUikp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAg
ICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBv
cGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LAorICAg
ICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5
VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBwcm9wZXJ0eSwgdmFs
dWVHUFIpKTsKICAgICAgICAgfQogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNl
cywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3Qg
OiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBKU1ZhbHVlUmVncyhw
cm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVH
UFIpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAg
ICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5v
blN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJp
Y3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVn
cyh2YWx1ZVRhZ0dQUiwgdmFsdWVHUFIpKSk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzI5OSw3
ICszMjk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdp
dGhTdHJpbmcoTm9kZSogbm9kZSwgRWRnZSYgY2hpbGQxLAogICAgIHNwZWN1bGF0ZVN0cmluZyhj
aGlsZDIsIGFyZzJHUFIpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5n
Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwg
YXJnM1JlZ3MpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
ID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsU3RyaW5nTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwg
YXJnMkdQUiwgYXJnM1JlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBu
b1Jlc3VsdChub2RlKTsKQEAgLTMzMTgsNyArMzMxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxk
MSwKICAgICBzcGVjdWxhdGVTeW1ib2woY2hpbGQyLCBhcmcyR1BSKTsKIAogICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6IG9w
ZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMTMyOSw3ICsxMTMy
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqIG5v
ZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAog
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1v
ZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJp
Y3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24obm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6
IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzY29wZUdQUiwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjE1LDcgKzEyMjE1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0g
ICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVn
cywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0K
QEAgLTEyMjMwLDcgKzEyMjMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
SWQoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVl
UmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNh
Y2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNj
cmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0KTsKKyAgICBj
YWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+
ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjQ1LDcgKzEyMjQ1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9k
ZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgRGlyZWN0KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjYwLDcgKzEyMjYwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwotICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeUlkV2l0aFRoaXMsCisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlk
V2l0aFRoaXMsCiAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywg
dGhpc1JlZ3MsIHZhbHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMo
KSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMTI2MjksNyArMTI2MjksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgbV9q
aXQubW92ZVZhbHVlUmVncyh0aGlzVmFsdWVSZWdzLCB0ZW1wUmVncyk7CiAKICAgICBKX0pJVE9w
ZXJhdGlvbl9HSiBmdW5jdGlvbjsKLSAgICBpZiAobV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpCisgICAgaWYgKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkK
ICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAgZWxzZQogICAg
ICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKQEAgLTEzODI1LDcgKzEzODI1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAg
bm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
dXRLaW5kIHB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJl
Z2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJ
ZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNw
aWxsTW9kZSA9PSBEb250U3BpbGwpIHsKQEAgLTEzODM3LDcgKzEzODM3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVu
dGlmaWVyLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVl
UmVncywKLSAgICAgICAgc2NyYXRjaEdQUiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiks
IHB1dEtpbmQpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCk7CiAKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlM2Y2N2UxNTkyYzhlZjljNzBiYmQwNjI3
MmVkMzc2YTNiOWNkMzJhLi5kM2U4ZTdkNTlkOWVlZjk3MjNlOGUyYWYxOWU0NTI5OTM1NGVlOTEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBA
IC03MTcsNyArNzE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUNoZWNrTmV1dGVyZWQo
Tm9kZSopOwogCiAgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7
Ci0gICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVy
OjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVl
UmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVD
TUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hl
ZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiODdmNjg3MjI3NTgwM2I5NTViOGRhMGRi
NmI3NzljOTQ1ZDZmNmI5Li5hYzg4ZmY4MzIwN2U4YzdmZWYzN2JkYmZiMDYzNjQ2ZTMyOWI4ODY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTc2MCw3ICs3NjAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlKQogICAgICAgICB1bnNpZ25lZCByZXF1aXJlZEJ5dGVzID0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpICsgc2l6ZW9mKENhbGxGcmFtZSopICogMjsKICAgICAgICAgcmVxdWlyZWRC
eXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJl
cXVpcmVkQnl0ZXMpOwogICAgICAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHJlcXVpcmVk
Qnl0ZXMpLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25DYWxsRXZhbCk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAg
IHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKICAgICAgICAgbV9qaXQuYXBwZW5kQ2FsbChvcGVy
YXRpb25DYWxsRXZhbCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0yNzI1
LDkgKzI3MjYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBHUFJSZWcgYXJnM0dQUiA9IGFyZzMuZ3ByKCk7CiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJl
Y3QpCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFH
UFIsIGFyZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFH
UFIsIGFyZzJHUFIsIGFyZzNHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0yODA5LDcg
KzI4MTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBpZiAoYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2UsIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAg
ICAgICAgICAgICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRp
b25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAg
ICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZywgdmFsdWVSZWcpKTsKQEAgLTI4OTMsNyArMjg5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmICghc2xvd0Nhc2VzLmVtcHR5
KCkpIHsKICAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25k
QXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6IChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QpLAogICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwpAQCAtMzg5Nyw3ICszODk4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBH
UFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsV2l0aFRoaXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCB0
aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhp
c1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7
CkBAIC01NDY3LDcgKzU0NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRl
QnlJZChOb2RlKiBub2RlKQogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogCiAgICAgICAgIG1faml0LmFkZERlbEJ5SWQoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKQEAgLTU0ODYsNyArNTQ4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5l
cmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNl
UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtNTUyNSw3ICs1NTI2LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwK
LSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogCiAgICAgICAg
IG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC01NTQ1LDcgKzU1NDYsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5UmVncyk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAzNWQ4Y2U2NjkxMzc4
NzZkYmQxOWQyMmQwMjZjMjk2MjQ5ZWY4ZDcyLi5jNjNiYmQ3NTVkZGZiZmUyYTI3OTg5MGQxNTdk
NzU4ODliZGRiYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIEpfSklU
T3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0
cmljdDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1Ro
aXM7CkBAIC0zNjg2LDcgKzM2ODYsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgdGhpc1Zh
bHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKIAotICAgICAgICB2bUNhbGwoVm9pZCwg
bV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0
aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAorICAg
ICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCiAgICAg
ICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVl
LCBtX291dC5jb25zdEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCkpKTsKICAgICB9CiAKQEAgLTM2OTgsNyArMzY5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExW
YWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIp
KTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMykpOwogCi0gICAgICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9k
ZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywKKyAgICAgICAgdm1DYWxsKFZvaWQs
IG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhp
c1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsCiAgICAgICAgICAgICB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAg
ICAgfQogICAgIApAQCAtMzk3MSw3ICszOTcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHBy
ZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0
ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBtX2dy
YXBoLmV4ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZWNtYU1vZGUoKTsKKyAg
ICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogICAgICAgICAKICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAg
LTQ4MzEsMTIgKzQ4MzEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWX0pJVE9wZXJh
dGlvbl9HQ0NKIG9wZXJhdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxk
Mi51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX25v
ZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RDZWxsU3RyaW5nU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0Q2VsbFN0cmluZ05vblN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0
aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0OwogICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9w
ZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdDsKQEAgLTQ4NDcsMTIgKzQ4NDcsMTIg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGlmIChjaGlsZDIudXNlS2luZCgpID09IFN5
bWJvbFVzZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5
VmFsRGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmlj
dE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFN0
cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xOb25T
dHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1
dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENl
bGxTeW1ib2xOb25TdHJpY3Q7CkBAIC00ODY0LDEyICs0ODY0LDEyIEBAIHByaXZhdGU6CiAKICAg
ICAgICAgICAgIFZfSklUT3BlcmF0aW9uX0dKSkogb3BlcmF0aW9uOwogICAgICAgICAgICAgaWYg
KG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAg
ICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdDsKICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpKQorICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkK
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Q7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBv
cGVyYXRpb25QdXRCeVZhbE5vblN0cmljdDsKQEAgLTQ5MTUsNyArNDkxNSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNv
bnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAg
ICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFy
cmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QpLAogICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNv
bnRpbnVhdGlvbik7CkBAIC00OTQxLDcgKzQ5NDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjb250aWd1b3VzUHV0QnlW
YWxPdXRPZkJvdW5kcygKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pc1N0cmljdE1vZGVG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IChtX25vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJl
eW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJh
eUJvdW5kc1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG1fbm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJy
YXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91
bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3RvcmFnZSwgaW5kZXgs
IHZhbHVlLCBjb250aW51YXRpb24pOwpAQCAtNDk4MSw3ICs0OTgxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIExWYWx1ZSBpc091dE9mQm91bmRzID0gbV9vdXQuYWJvdmVPckVxdWFsKAogICAg
ICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hl
YXBzLkFycmF5U3RvcmFnZV92ZWN0b3JMZW5ndGgpKTsKIAotICAgICAgICAgICAgYXV0byBzbG93
UGF0aEZ1bmN0aW9uID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpCisgICAgICAgICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSBtX25vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRC
eVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAg
ICAgICAgIDogKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJl
eW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KTsKICAgICAgICAgICAgIGlmICghYXJyYXlNb2RlLmlz
T3V0T2ZCb3VuZHMoKSkgewpAQCAtNTI0Niw3ICs1MjQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlv
biwgcmV0dXJuR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0KS5j
YWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1Bh
dGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTUyNzUsNyArNTI3NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
Mzk3CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgc2V0
Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlk
R2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFz
ZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0
cygpKSkpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJ
bnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIG1fb3V0LmludFB0clplcm8sIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApA
QCAtNTMxNiw3ICs1MzE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZt
Q2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBzdWJzY3JpcHQpKSk7CisgICAgICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsR2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRy
WmVybywgYmFzZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+ZWNtYU1vZGUo
KS52YWx1ZSgpKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05OTA5
LDcgKzk5MDksOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlcXVpcmVk
Qnl0ZXMgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBzaXplb2YoQ2FsbEZyYW1lKikgKiAy
OwogICAgICAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgICAgICAg
ICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3Qs
IEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7
CisgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNh
bGxFdmFsKT4oZ2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwog
ICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86Om5vblByZXNl
cnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6
bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTM0NTUs
NyArMTM0NTYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgIHNldEpTVmFsdWUodm1D
YWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFy
Tm9uU3RyaWN0LAorICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRp
b25QdXREeW5hbWljVmFyTm9uU3RyaWN0LAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUt
PmdldFB1dEluZm8oKSkpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDA4MGZh
ZWRlODFhMjI2ODIyMWQxYzUwODk0MWQ5ZWYyNzEyNzlhMjAuLjk3YmZiMjAyZTVmNzQ4NGU2Y2E0
YjQ5ZDE0YmFjN2YzMTYzZGNiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xNTAsNyArMTUwLDcg
QEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9iamVj
dCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgIHJldHVybiBqc1N0cmlu
Zyh2bSwgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUob2JqZWN0KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDUxODhjMDIzOWRmNDZlMDAyZGM5ZTJhMWIzNzIxYjVkMGIwYzBmOGUuLmM0ZDljNzI3ZTA3MThl
ZWFlZjAwNjgyODQ0YzU0NzNkYjIyYmJmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1KU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNWYWx1ZSBldmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogCiAgICAgRGly
ZWN0RXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmRpcmVjdEV2YWxDb2Rl
Q2FjaGUoKS50cnlHZXQocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ2FsbFNpdGVJbmRleCk7CiAgICAg
aWYgKCFldmFsKSB7Ci0gICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkgeworICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgICAgIGlm
IChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNl
cjxMQ2hhcj4gcHJlcGFyc2VyKGdsb2JhbE9iamVjdCwgcHJvZ3JhbVNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBwcm9ncmFtU291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OLCBjYWxsZXJDb2RlQmxv
Y2spOwogICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNl
ci50cnlMaXRlcmFsUGFyc2UoKSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBKU1ZhbHVlIGV2YWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAg
IAogICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAg
ICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hh
aW4sIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxl
ckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBjYWxsZXJD
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlu
a2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOwor
ICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92
aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5r
ZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNt
YU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAg
dW5zaWduZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMgPSBldmFsLT5udW1GdW5jdGlv
bkhvaXN0aW5nQ2FuZGlkYXRlcygpOwogCiAgICAgSlNTY29wZSogdmFyaWFibGVPYmplY3Q7Ci0g
ICAgaWYgKChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSAmJiBldmFs
LT5pc1N0cmljdE1vZGUoKSkgeworICAgIGlmICgobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVs
RnVuY3Rpb25EZWNscykgJiYgZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkgewogICAgICAgICBz
Y29wZSA9IFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c3Ry
aWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSwgc2NvcGUpOwogICAgICAgICB2YXJpYWJsZU9i
amVjdCA9IHNjb3BlOwogICAgIH0gZWxzZSB7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkRXZhbENvZGVCbG9jaygpOwogCiAgICAgLy8gV2Ug
Y2FuJ3QgZGVjbGFyZSBhICJ2YXIiLyJmdW5jdGlvbiIgdGhhdCBvdmVyd3JpdGVzIGEgZ2xvYmFs
ICJsZXQiLyJjb25zdCIvImNsYXNzIiBpbiBhIHNsb3BweS1tb2RlIGV2YWwuCi0gICAgaWYgKHZh
cmlhYmxlT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpICYmICFldmFsLT5pc1N0cmljdE1vZGUoKSAm
JiAobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKKyAgICBpZiAo
dmFyaWFibGVPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250
ZXh0KCkgJiYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpKSB7CiAg
ICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2YXJpYWJsZU9iamVjdCktPmdsb2JhbExleGlj
YWxFbnZpcm9ubWVudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFy
aWFibGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gdW5s
aW5rZWRDb2RlQmxvY2stPnZhcmlhYmxlKGkpOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWwKIAogICAgIGlmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxG
dW5jdGlvbkRlY2xzIHx8IG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKSB7CiAgICAgICAg
IEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcih2bSwgdmFyaWFibGVPYmplY3Qp
OwotICAgICAgICBpZiAodmFyaWFibGVPYmplY3QtPm5leHQoKSAmJiAhZXZhbC0+aXNTdHJpY3RN
b2RlKCkpCisgICAgICAgIGlmICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpICYmICFldmFsLT5pc0lu
U3RyaWN0Q29udGV4dCgpKQogICAgICAgICAgICAgdmFyaWFibGVPYmplY3QtPmdsb2JhbE9iamVj
dCh2bSktPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+ZmlyZUFsbCh2bSwgIkV4ZWN1dGVkIGV2
YWwsIGZpcmVkIFZhckluamVjdGlvbiB3YXRjaHBvaW50Iik7CiAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7CkBAIC0xMTQ0LDcgKzExNDQsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAoZXZhbC0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgaWYgKGV2
YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHM7ICsraSkgewogICAgICAgICAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChp
KTsKICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh2YXJpYWJsZU9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmlu
ZGV4IDkwYTlkYjVjNWE5ZmIwMjU2YzU3ZDFkNmNlNDk5YTdmZTczMWUwODUuLjY0NTM5MTI3Yjhj
NzRjODIwMjliMmJiNjE4MGU2OTY5NzFhNjRiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0xNTAsNyArMTUwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICB9
OwogCi0gICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAg
SlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpOwogCiAg
ICAgaW5saW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKaW5kZXggZTk1ZjhmZTM1ZGMxZGFhOWU2NTA1NDZlMWIzNTA5MTcxYWNjZDkw
Yy4uMzU2ZGExYjE2MjgyZWFkMWI3MmM4OGUxMWIwYTQxNDVkODAwNzAzNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNDcyLDE5ICsxNDcyLDYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdE1vZGVGb3IoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0g
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJh
bWUpCi0gICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOwotICAg
ICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKTsKLSAgICB9Ci0gICAg
Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGlzU3RyaWN0TW9kZUZvcihjb2RlT3JpZ2luKSA/IFN0cmljdE1vZGUg
OiBOb3RTdHJpY3RNb2RlOwotICAgIH0KLSAgICAKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0
YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKTsKICAgICAKICAgICBDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBiMmJmY2U2MzM3ZDliZTAyZDYx
ZjM4OTVjZTVlY2EzYTBkNzgzMjA2Li5lMWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZmYjQ0NzFmZmNi
MjBiODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTEzOCw3ICsx
MzgsOCBAQCBib29sIEpJVDo6Y29tcGlsZUNhbGxFdmFsKGNvbnN0IE9wQ2FsbEV2YWwmIGJ5dGVj
b2RlKQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29k
ZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIHJlZ1QxKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpLCByZWdUMik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsRXZhbCwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCByZWdUMSwgcmVnVDIpOwogCiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDk4Zjk0YTI2ODgzMTY5
MWY2Nzk1YjI3OWYxYjcwOWQxYWQxMWU0MGYuLjIyNmU2Yjc5ODUxYjYxYmNjYmQ1MTA3Y2ZhNWZj
YzMwMjYwZTc5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZf
SklUT3BlcmF0aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlv
bigpCiB7Ci0gICAgaWYgKG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgeworICAgIGlmIChtX2Vj
bWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3QpCiAg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwog
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4
IGE2NDdjNDViM2Y0ZTNiNDNkYjVkNDYwNTVkZjc1OGI2YjkyZWY4ZWEuLmYwM2UwOTI1Mzg1NDFm
YjAzNDBmMTJjNmJhOGE2MTExMWYzMzY3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTEyOCw3ICsxMjgsOSBAQCBw
dWJsaWM6CiAKIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVy
YXRvciB7CiBwdWJsaWM6Ci0gICAgSklUUHV0QnlJZEdlbmVyYXRvcigpIHsgfQorICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IoKQorICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgp
KQorICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDIzZmY1YzgxYzFjMDMyMjJmOTEyYTQ5OTMx
ZjI4MzZkYWRjZmFjYjcuLjdkY2JlOGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3NTY1NTMzZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0xNjYsNyArMTY2LDcg
QEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmUKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlu
a1Nsb3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
ciwgVmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3du
Tm90SW1tZWRpYXRlKHJlZykpCisgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVn
KSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogfQogCkBAIC00OTYsNyArNDk2LDcgQEAg
aW5saW5lIHZvaWQgSklUOjplbWl0U3RvcmUoVmlydHVhbFJlZ2lzdGVyIHJlZywgY29uc3QgSlNW
YWx1ZSBjb25zdGFudCwgUmVnaXN0ZXIKIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJs
b2NrLT5pc0tub3duTm90SW1tZWRpYXRlKHJlZykpIHsKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5p
c0tub3duQ2VsbChyZWcpKSB7CiAgICAgICAgIGlmIChyZWcuaXNDb25zdGFudCgpKQogICAgICAg
ICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgZWxzZQpAQCAtNTA2LDcgKzUwNiw3
IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxS
ZWdpc3RlciByZWcpCiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKFZpcnR1YWxSZWdpc3RlciByZWcsIFJlZ2lzdGVySUQgdGFnKQogewotICAgIGlmICghbV9j
b2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9jb2RlQmxv
Y2stPmlzS25vd25DZWxsKHJlZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAg
ICAgICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC02MDAsNyAr
NjAwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKFJlZ2lzdGVySUQgcmVnKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCByZWcsIFZpcnR1YWxSZWdpc3RlciB2UmVnKQog
ewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUodlJlZykpCisgICAg
aWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwodlJlZykpCiAgICAgICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCBkYTgyZjMxZTFiOGM4Y2FiNDEyNzE4MGU1OWExNThkZjQz
MjFkM2VmLi4xNWQwNjcwNDdkZGUyZTVlMzY3ZTgwMWE5Y2FmM2U3ZTQ3MWUwNzlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcwMSw3ICs3MDEs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudGlmaWVyLCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvKQorc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTcxNywxMiArNzE3LDEyIEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAKICAg
ICAgICAgICAgIGJ5VmFsSW5mby0+YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAg
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPnB1dEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5wdXRCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgZWNtYU1vZGUuaXNT
dHJpY3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGdsb2JhbE9iamVjdCwg
aSwgdmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBiYXNlVmFsdWUu
cHV0QnlJbmRleChnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzSW50MzIoKSkgewog
ICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CkBAIC03MzgsMTUgKzczOCwx
NCBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93
UGF0aCA9IHRydWU7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoYmFzZVZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgIGJhc2VW
YWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQog
Ci1zdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUgc3Vi
c2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3N0YXRpYyB2b2lk
IGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
Ym9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwogCiAgICAgaWYg
KExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMg
bmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2
ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2Vz
LgpAQCAtNzY4LDcgKzc2Nyw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIH0K
IAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Cisg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgsIHZh
bHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6
IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC03NzgsNyArNzc3LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAgICAgaWYg
KHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2Ny
aXB0QXNVSW50MzIpKSB7CiAgICAgICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRy
dWU7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwg
MCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdElu
ZGV4U2hvdWxkTm90VGhyb3cpOworICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGVjbWFNb2RlLmlz
U3RyaWN0KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91
bGROb3RUaHJvdyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC03
OTAsNyArNzg5LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpIHsKICAgICAgICAgYnlWYWxJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQ
dXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgZWNtYU1vZGUu
aXNTdHJpY3QoKSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNo
b3VsZE5vdFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzk4LDcgKzc5Nyw3
IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGJhc2VPYmplY3QsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgIENvbW1vblNsb3dQYXRoczo6
cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKQEAgLTg4NCw3ICs4ODMsNyBAQCBzdGF0aWMgT3B0aW1pemF0
aW9uUmVzdWx0IHRyeVB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbAogICAgIHJldHVybiBvcHRpbWl6YXRpb25SZXN1bHQ7CiB9CiAKLXZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8pCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtOTAyLDcgKzkwMSw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAg
ICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKICAgICB9Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
YmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3Jp
cHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CiAKIHN0YXRpYyBPcHRpbWl6YXRp
b25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2Jq
ZWN0KiBvYmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAtOTc0LDcgKzk3Myw3IEBAIHN0YXRpYyBP
cHRpbWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIG9wdGltaXphdGlvblJlc3VsdDsKIH0KIAotdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFN
b2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC05OTUsMTAg
Kzk5NCwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBjdGlQYXRjaENhbGxC
eVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIG9iamVj
dCwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2
YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3Jp
cHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xMDA4LDExICsxMDA3LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlCiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogCi0gICAgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBi
YXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbyk7CisgICAgcHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1v
ZGUpOwogfQogCiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTEwMjIsMTAgKzEwMjEsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpT
VmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBSRUxF
QVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgZGlyZWN0UHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBhc09iamVjdChiYXNlVmFsdWUpLCBz
dWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pOworICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9i
amVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBl
Y21hTW9kZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bEV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUg
ZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEwMzUsNyArMTAzNCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVGcmFt
ZS0+Z3VhcmFudGVlZEpTVmFsdWVDYWxsZWUoKSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBl
dmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGVjbWFNb2RlKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMTYzLDcgKzIxNjIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5o
YXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wg
ZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1Zh
bHVlIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxNzMsMTIg
KzIxNzIsMTIgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHYKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxl
dGUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4g
Y291bGREZWxldGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2Fj
aGVhYmxlSWRlbnRpZmllcikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2Fj
aGVhYmxlSWRlbnRpZmllciwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTIxOTIsMjEgKzIxOTEsMjEgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFMKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7
CiAKLSAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUs
IHZtLCBzbG90LCBiYXNlVmFsdWUsIGlkZW50KTsKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5
SWQoZ2xvYmFsT2JqZWN0LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBpZGVudCwgZWNtYU1vZGUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
aWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmICghcGFyc2VJbmRleChpZGVu
dCkpIHsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0s
IGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVudGlmaWVyKSkKLSAg
ICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNs
b3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5
S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVy
LCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3
Q2FjaGVhYmxlSWRlbnRpZmllcikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJ
ZGVudGlmaWVyLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMjIxNCwxMCArMjIxMywxMCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdAogICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIg
aWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGlk
ZW50KTsKKyAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBpZGVudCwgZWNtYU1vZGUpOwogfQogCi1zdGF0aWMg
Ym9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBrZXkpCitzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBi
YXNlLCBKU1ZhbHVlIGtleSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMjM2LDEyICsyMjM1LDEyIEBAIHN0YXRp
YyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBWTSYKICAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHks
IHNsb3QpOwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0g
ICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJv
cGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1zaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVDTUFNb2RlIGVjbWFN
b2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMjUzLDcgKzIyNTIsNyBA
QCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAg
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7
CiAKLSAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQpOworICAgIGJvb2wgcmVzdWx0ID0gZGVs
ZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGVj
bWFNb2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVy
Ojppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKQEAgLTIyNjQsMjAgKzIy
NjMsMjAgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNl
bGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lk
ZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBp
ZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAq
c3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICAgICAgICAgIHJlcGF0
Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRT
dHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCwg
ZWNtYU1vZGUpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdWJzY3JpcHQpKTsKKyAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0
LCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdWJzY3JpcHQpLCBlY21hTW9kZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCkBAIC0y
NTQ0LDcgKzI1NDMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6
YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOworICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KHNjb3BlLCBnZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJv
cGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNj
b3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB2b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA1YzFmYzM3NjE2MGI0NGE3NjgwYzM2NzVjMDViODRk
NjI3MTYyZmY0Li44ZWZiNWI1YWM5ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5MDIyNjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNjQsNiArNjQsNyBA
QCBjbGFzcyBWTTsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAKIHN0cnVjdCBCeVZhbEluZm87Citz
dHJ1Y3QgRUNNQU1vZGU7CiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0
aW9uOwogCkBAIC0xODcsMTEgKzE4OCwxMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlUwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRF
Uk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9J
TlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1Bh
dGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJl
dHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKENhbGxG
cmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwogU2xv
d1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENhbGwoQ2FsbEZy
YW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CkBAIC0y
NTAsMTAgKzI1MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVS
TkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1
aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdl
dCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlW
YWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90LCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRhcmdldCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRo
U2NvcGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRK
U1ZhbHVlIG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1c2hXaXRoU2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGMzNTQzZGFlN2QwODJlYmRlYzYxZDBiY2Q1Yjhm
ODc1MjA0MGJlNzQuLmE0MDgwNTkzNjUwYTZlYzU2OGFhNjEwNjkxN2ZlOTdiMzhmMTMzOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC0yODcsNyArMjg3LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdp
dGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFN
b2RlKCksIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVy
ZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6
IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRv
IHJlZHVjZSBjb2RlIHNpemUuCkBAIC0zMTEsMTEgKzMxMSwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8UwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWU7CisgICAgRUNNQU1vZGUgZWNtYU1v
ZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7CiAKICAgICBhdXRvIGxvYWQgPSBbJl0oYXV0byBieXRl
Y29kZSkgewogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKKyAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAg
ICBpZiAoaXNEaXJlY3QpCkBAIC0zMzEsNyArMzMzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcih2YWx1ZSwgcmVnVDIpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJl
Y3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCwgcmVnVDEsIHJlZ1QyLCBieVZhbEluZm8pOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9u
UHV0QnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCByZWdUMCwgcmVnVDEsIHJlZ1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihlY21hTW9k
ZS52YWx1ZSgpKSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpA
QCAtNDI3LDcgKzQyOSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QwKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwor
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMy
KGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVl
UmVncyhyZWdUMCkpOwpAQCAtNDc3LDcgKzQ3OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOwor
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgcmVnVDAsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1
ZSgpKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsK
IAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC02NTQsNyAr
NjU2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVj
b2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWVWUmVnID0gYnl0ZWNvZGUubV92
YWx1ZTsKLSAgICBib29sIGRpcmVjdCA9ICEhKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNE
aXJlY3QpOworICAgIGJvb2wgZGlyZWN0ID0gYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpOwog
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICAvLyBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHBh
dGNoIGJvdGggdGhlIFN0cnVjdHVyZSwgYW5kIHRoZSBvYmplY3Qgb2Zmc2V0LCB3ZSBzdG9yZSBv
bmUgcG9pbnRlciwKQEAgLTY2OCw3ICs2NzAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwK
LSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBt
X2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksCiAgICAg
ICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggOGQxODgwMzZhMjM1OWRmMGIxZTFhZjFhYjRk
ODc3ZmM2YzYwYzlhYS4uNTM1NDg2Y2Q4ZjE1MzJhZDFiZWI1MTVhODZiOTA4YWJjODM2OTZlMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAg
ICBlbWl0TG9hZChiYXNlLCByZWdUMiwgcmVnVDEpOwogICAgIGVtaXRMb2FkKHByb3BlcnR5LCBy
ZWdUMywgcmVnVDApOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwotICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8pOworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9w
dGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8sIGJ5dGVjb2RlLm1faXNT
dHJpY3RNb2RlKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0
aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0
aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAwOGZhYmQ1NjQyODY4YzBjNmZk
Njk3NjcxYzFmOWU2MGQwOTRhZDcwLi44YmJlM2NiOTNlNDBjODc5NTk2MjFmZTBmYTZiMGJiNmFl
Y2QzZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTczOCw3ICs3
MzgsNyBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3By
aWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCi1zdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50
aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2lu
ZCkKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgRGVsQnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CkBAIC03NzEs
NyArNzcxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgICAgIEFTU0VSVChu
ZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZz
ZXQobmV3T2Zmc2V0KSk7CiAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKHZtLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1
cmUsIG5ld1N0cnVjdHVyZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpIHsKKyAgICAgICAgfSBlbHNlIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkgewog
ICAgICAgICAgICAgaWYgKHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKICAgICAgICAgICAgICAg
ICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6
OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwgcHJvcGVydHlOYW1lLCBpbnZhbGlkT2Zmc2V0LCBvbGRT
dHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CiAgICAgICAgICAgICBlbHNlCkBAIC03OTIsMTIgKzc5
MiwxMiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgIHJldHVybiByZXN1bHQuc2hvdWxk
R2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lk
IHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1l
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQordm9pZCByZXBh
dGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGlmICh0cnlDYWNoZURlbGV0
ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgeworICAg
IGlmICh0cnlDYWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNl
VmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1v
ZGUpID09IEdpdmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJl
cGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3Qt
PnZtKCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAg
ICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmgKaW5kZXggZTVjZTQ2ODcxMTQ2MzkyZTRlNzJlNjE0YTJmNWU1OGVhNjc0OTk0NS4uZDg5
MGZkNzBhYWNkODJmZmJmNGRhOGZiMjRlMWYzZGZmNTc0OWRjMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgZW51bSBjbGFzcyBEZWxCeUtpbmQgewog
dm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpT
VmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVw
YXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRC
eUtpbmQpOwogdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayos
IEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Ci12b2lkIHJlcGF0Y2hEZWxl
dGVCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpT
VmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZv
JiwgRGVsQnlLaW5kKTsKK3ZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQsIEVDTUFNb2RlKTsK
IHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90
JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3Ry
dWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxG
cmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAzZGIyM2JhZTA1ZDU4MDI5YzUwMzlm
NTcyM2I5ZDk5NjVmNDJiNDJjLi44ZGVhN2YyNzhlNzY2MmU1MDMxNGNlYjliMDgzMzlmODdiZmRh
NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKQEAgLTgzNiwxMCArODM2LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWQpCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKLSAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9j
ay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
LCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgY29kZUJsb2NrLT5wdXRC
eUlkQ29udGV4dCgpKTsKIAogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVl
LmlzQ2VsbCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsK
LSAgICBpZiAoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkKKyAgICBpZiAoYnl0
ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpKQogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBpZGVu
dCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpLCBzbG90KTsKICAgICBl
bHNlCiAgICAgICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpZGVudCwgZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpLCBzbG90KTsKQEAgLTg4OCw3ICs4
ODgsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1
Y3R1cmUtPmlkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZz
ZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVj
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShieXRlY29kZS5tX2ZsYWdz
LmlzRGlyZWN0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IG5ld1N0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0
LCBhc09iamVjdChiYXNlQ2VsbCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X3N0cnVjdHVyZUNoYWluLnNldCh2bSwgY29kZUJsb2NrLCBjaGFpbik7CkBAIC05MjcsNyArOTI3
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gSlNDZWxsOjpkZWxl
dGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlm
ICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAg
ICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0
ZVByb3BlcnR5RXJyb3IpKTsKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRl
KSk7CiB9CkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2J5X3ZhbCkKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX2Jhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIAogICAgIGlmIChMSUtFTFko
c3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQu
YXNVSW50MzIoKTsKQEAgLTEwNTgsNyArMTA1OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VW
YWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmlj
dCgpOwogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIC8v
IERlc3BpdGUgaXRzIG5hbWUsIEpTVmFsdWU6OmlzVUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25s
eSBmb3IgcG9zaXRpdmUgYm94ZWQgaW50MzJfdDsgYWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQg
YXJyYXkgaW5kaWNlcy4KICAgICAgICAgQVNTRVJUKGlzSW5kZXgoc3Vic2NyaXB0LmFzVUludDMy
KCkpKTsKQEAgLTExMTIsNyArMTExMiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9kZWxfYnlfdmFsKQogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIAotICAg
IGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQ
cm9wZXJ0eUVycm9yKSk7CiAgICAgCiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERl
bGV0ZSkpOwpAQCAtMTczOCw3ICsxNzM4LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBj
b21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24KICAg
ICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIHNldFVwQ2FsbChjYWxsZWVGcmFt
ZSwgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpKTsKICAgICAKLSAgICB2bS5ob3N0Q2FsbFJl
dHVyblZhbHVlID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lKTsKKyAgICB2bS5ob3N0
Q2FsbFJldHVyblZhbHVlID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBieXRlY29k
ZS5tX2VjbWFNb2RlKTsKICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNhbGxl
ZUZyYW1lLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0
aW9uUHRyVGFnKTsKIH0KICAgICAKQEAgLTE4NzQsNyArMTg3NCw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAgICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVydHkpCiAg
ICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCkpOwogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5p
dGlhbGl6YXRpb24obWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7
CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5l
Y21hTW9kZSgpLmlzU3RyaWN0KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlz
SW5pdGlhbGl6YXRpb24obWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KSk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmplY3Qs
IGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgQ29tbW9uU2xvd1BhdGhzOjp0cnlDYWNo
ZVB1dFRvU2NvcGVHbG9iYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJ5dGVjb2RlLCBzY29w
ZSwgc2xvdCwgaWRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCmluZGV4IDA3ZDhlOGM4MjFjNDZmNGJjZGNjYjkzZWQwODIwMjEyZmRl
NWQ3NDkuLmFkZTU0OTU5ZmI2ZmIyN2I1ZDljYWFiNzdlOTkxNDUzMDc2M2M5NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTYw
MCw3ICs2MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
VG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpOwogCiAgICAgLy8gMS4gTGV0IGFycmF5IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09i
amVjdCBvbiB0aGUgdGhpcyB2YWx1ZS4KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNW
YWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtNjgzLDcgKzY4Myw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0
TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNzgxLDcgKzc4MSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8gYmUgPyBUb09iamVjdCh0aGlzIHZhbHVl
KS4KLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CkBAIC04NjYsNyArODY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1BvcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpKQogICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRo
aXNWYWx1ZSktPnBvcChnbG9iYWxPYmplY3QpKSk7CkBAIC05MDEsNyArOTAxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2EKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJp
Y3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIGlmIChMSUtF
TFkoaXNKU0FycmF5KHRoaXNWYWx1ZSkgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0g
MSkpIHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNWYWx1ZSk7CkBAIC05
NDIsNyArOTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1JldmVyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Cisg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3Qp
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1NoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEwNjYsNyArMTA2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXku
cHJvdG90eXBlLnNsaWNlCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhpc09i
aiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKQEAgLTExMjYsNyArMTEyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgLy8gMTUuNC40LjEzCiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhp
c09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29k
ZWRKU1ZhbHVlKCk7CkBAIC0xMzU2LDcgKzEzNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1
LjQuNC4xNAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2Jq
ZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9
OwpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxNS40LjQuMTUKLSAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCAyMjZiNDgzNTQ2
MmQ4YzQ1ZTYxOWY2NjgwMGJlOTk3YTkxYWU4OGExLi44MDJmMjAyZjkyOWIwMDgwMzRmYTdkNmVi
ODEwOTBhYjczMzBkMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCkBAIC0xODE4LDcgKzE4MTgsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFVubGlu
a2VkTWV0YWRhdGFUYWJsZT4gbWV0YWRhdGEoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1
cm4gbV9tZXRhZGF0YS5kZWNvZGUoZGVjb2Rlcik7IH0KIAogICAgIHVuc2lnbmVkIHVzZXNFdmFs
KCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIHVuc2lnbmVkIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgdW5zaWduZWQgaXNDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIHVuc2lnbmVk
IGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlh
YmxlczsgfQogICAgIHVuc2lnbmVkIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0J1aWx0aW5GdW5jdGlvbjsgfQpAQCAtMTg1MSw3ICsxODUwLDYgQEAgcHJpdmF0ZToKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwogCiAgICAgdW5zaWduZWQgbV91c2Vz
RXZhbCA6IDE7Ci0gICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVk
IG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CkBAIC0yMDQ4LDcg
KzIwNDYsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVC
bG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiAgICAgLCBtX3Njb3BlUmVnaXN0ZXIo
Y2FjaGVkQ29kZUJsb2NrLnNjb3BlUmVnaXN0ZXIoKSkKIAogICAgICwgbV91c2VzRXZhbChjYWNo
ZWRDb2RlQmxvY2sudXNlc0V2YWwoKSkKLSAgICAsIG1faXNTdHJpY3RNb2RlKGNhY2hlZENvZGVC
bG9jay5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihjYWNoZWRDb2RlQmxv
Y2suaXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhjYWNoZWRD
b2RlQmxvY2suaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rp
b24oY2FjaGVkQ29kZUJsb2NrLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCkBAIC0yMjM0LDcgKzIyMzEs
NiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIG1fdGhpc1JlZ2lzdGVyID0gY29kZUJs
b2NrLm1fdGhpc1JlZ2lzdGVyOwogICAgIG1fc2NvcGVSZWdpc3RlciA9IGNvZGVCbG9jay5tX3Nj
b3BlUmVnaXN0ZXI7CiAgICAgbV91c2VzRXZhbCA9IGNvZGVCbG9jay5tX3VzZXNFdmFsOwotICAg
IG1faXNTdHJpY3RNb2RlID0gY29kZUJsb2NrLm1faXNTdHJpY3RNb2RlOwogICAgIG1faXNDb25z
dHJ1Y3RvciA9IGNvZGVCbG9jay5tX2lzQ29uc3RydWN0b3I7CiAgICAgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlcyA9IGNvZGVCbG9jay5tX2hhc0NhcHR1cmVkVmFyaWFibGVzOwogICAgIG1faXNCdWls
dGluRnVuY3Rpb24gPSBjb2RlQmxvY2subV9pc0J1aWx0aW5GdW5jdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IGY2OTk5
ZTczNDg0ZTJhYmQ4ODE0NTRmMTE0ODMxMGMwMmQ0ZjJhNzQuLjg5NmVkODExNzNmYmI3Nzc4NjFi
M2I5NTYxMTlmNGFkYTJhMWU1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgQ2xvbmVk
QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhCiAKICAgICBpZiAoIXRoaXNPYmplY3QtPnNwZWNpYWxzTWF0ZXJpYWxpemVk
KCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXNPYmplY3QtPm1fY2FsbGVlLT5leGVjdXRhYmxlKCkpOwot
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpOwor
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0
KCk7CiAKICAgICAgICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSkgewog
ICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQg
Q2xvbmVkQXJndW1lbnRzOjptYXRlcmlhbGl6ZVNwZWNpYWxzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIAogICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihtX2NhbGxlZS0+ZXhlY3V0YWJsZSgpKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1
dGFibGUtPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJs
ZS0+aXNJblN0cmljdENvbnRleHQoKTsKICAgICAKICAgICBpZiAoaXNTdHJpY3RNb2RlKQogICAg
ICAgICBwdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNh
bGxlZSwgdGhpcy0+Z2xvYmFsT2JqZWN0KHZtKS0+dGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxs
ZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNz
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXgg
ZmEzY2QzMjZiY2Q1Yjk3ODlhMjQyN2U2MTNhYzk1NDhiMmZiM2FlMi4uOWUxNzJiNmFlYTc0YjA2
MmRlOWZmZWY4ZGE1NmQ0OTM0Zjk0ZDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCkBAIC05MSwxMSArOTEsMTEgQEAgVW5saW5rZWRDb2RlQmxvY2tU
eXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHMKICAgICAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVz
KCkgfCBhcnJvd0NvbnRleHRGZWF0dXJlLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSwgcm9vdE5vZGUtPmxhc3RMaW5lKCksIGVuZENvbHVtbik7CiAKICAgICBib29sIHVzZXNFdmFs
ID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBFdmFsRmVhdHVyZTsKLSAgICBib29sIGlzU3RyaWN0
TW9kZSA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmU7CisgICAgRUNN
QU1vZGUgZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJl
ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8
RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikKICAgICAgICAgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpOwotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBpc1N0cmlj
dE1vZGUsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+
OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOworICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29u
dGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlw
ZSogdW5saW5rZWRDb2RlQmxvY2sgPSBVbmxpbmtlZENvZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZUluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxv
Y2stPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoKSwgbGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7CkBAIC0xMDQsNyAr
MTA0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2Nr
SW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBpZiAoIXNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIHVubGlu
a2VkQ29kZUJsb2NrLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkpOwogCi0gICAgZXJyb3IgPSBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2Vk
Q29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBl
cnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNv
dXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgdmFyaWFibGVzVW5k
ZXJURFosIGVjbWFNb2RlKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKaW5kZXggZTNiZWQ4OGQ4M2FiZWVmMTliODY4ZTk3MzIzMTdjNTIyZDkw
OGUzZC4uYjhkZTk2NTU4MmY3ZDkxMjcxMzM3ZDU0MzE5MDNlODMxOGMyNmY0NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0z
NzksNyArMzc5LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgLy8g
ZGlmZmVyZW50IG9iamVjdCB0aGF0IHN0aWxsIGhhcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgb24gdGhl
IGZhc3QgcGF0aCBzaW5jZSBpdCdsbCBwcm9kdWNlCiAgICAgLy8gdGhlIHNhbWUgU3BlY3VsYXRl
ZFR5cGUuIFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB2YWx1ZSBwcm9m
aWxpbmcgb24gdGhlCiAgICAgLy8gZmFzdCBwYXRoLgotICAgIGF1dG8gdmFsdWUgPSB2MS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6
IE5vdFN0cmljdE1vZGUpOworICAgIGF1dG8gdmFsdWUgPSB2MS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBieXRlY29kZS5tX2VjbWFNb2RlKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9N
KGJ5dGVjb2RlLm1fc3JjRHN0LCB2YWx1ZSwgUFJPRklMRV9WQUxVRSh2YWx1ZSkpOwogfQogCkBA
IC05ODgsNyArOTg4LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiAg
ICAgfQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIAotICAgIGlmICghY291bGREZWxldGUg
JiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGJ5
dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgVEhST1coY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CiAgICAgCiAg
ICAgUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOwpAQCAtMTMwNSw3ICsxMzA1LDcgQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWwgPSBHRVRfQyhieXRlY29kZS5tX3RoaXNWYWx1ZSkuanNWYWx1ZSgpOwogICAg
IEpTVmFsdWUgcHV0VmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX3ZhbHVlKS5qc1ZhbHVlKCk7Ci0g
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbCwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzVmFsLCBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCksIGNvZGVCbG9jay0+cHV0
QnlJZENvbnRleHQoKSk7CiAgICAgYmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlk
ZW50LCBwdXRWYWx1ZSwgc2xvdCk7CiAgICAgRU5EKCk7CiB9CkBAIC0xMzIxLDcgKzEzMjEsNyBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgCiAg
ICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1Zh
bHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzVmFsdWUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgYmFzZVZh
bHVlLnB1dChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgRU5EKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHNJbmxpbmVzLmgKaW5kZXggMzdhZmE3NmM0MDU3NTkzNTUwNmU1OWI4NGQyYjVmMWU4MDlh
ZmZmMy4uYmI1NDc0MDdjMTc1NzVlYWM0NGRhZWMxZjRiN2UwNzE5OWRjNDY0NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGlu
ZXMuaApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9i
YWwoCiAgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdS
ZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4K
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2sp
OwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0
YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1f
Z2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5t
X2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9k
ZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9u
TW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTYxLDcgKzYxLDcgQEAg
aW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKAogICAgICAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUo
KS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgp
KTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0
YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZl
TW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAg
ICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkp
LnNsb3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDksNyArMTA5LDcgQEAgaW5saW5l
IHZvaWQgdHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBSZXNvbHZlVHlw
ZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5Owog
ICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cg
Y2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUo
KSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1v
ZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1l
dGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRh
dGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dElu
Zm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBG
QUxMVEhST1VHSDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZUdldEZy
b21TY29wZUdsb2JhbCgKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwog
ICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6
YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0
SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUs
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50
U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVy
YW5kID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpOwogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApp
bmRleCBjODNiOTA1ZTM4MzUxYzFiYTBlZTE1ODQyZDk4M2ZhNjI5ZDcxMmZkLi5iMmY4ZmZkYTFm
NzgxNjc3YzVhZDEzNDQ5NGFhYjRjY2ZjNWQ4Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEpTVmFsdWUgZXZh
bHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBKU1ZhbHVlCiAKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkKICAgICAgICAgdGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0OwotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxP
YmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxK
U09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5
KCkpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlUHJvZ3Jh
bShzb3VyY2UsIGdsb2JhbE9iamVjdCwgdGhpc09iaik7CiAKICAgICBpZiAoc2NvcGUuZXhjZXB0
aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCAxYTcyYmZiNDdlZmVmYTU1MGRlZjk4MzU2NjU0YWY2
NDkwNzc5NzM1Li43YzE5Yjc1YzYyYzgwNDEzNjJkZDllYjEyZWRhNTk3OTI1MTE1ZGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1
dGFibGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EaXJlY3RF
dmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29u
dGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWikKK0RpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250
ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlh
Ymxlc1VuZGVyVERaLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtNDUsMTEgKzQ1LDExIEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRh
YmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRl
eHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8q
IGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0
YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNl
LCBlY21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9k
ZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CisgICAgSlNQYXJzZXJT
dHJpY3RNb2RlIHN0cmljdE1vZGUgPSBlY21hTW9kZS5pc1N0cmljdCgpID8gSlNQYXJzZXJTdHJp
Y3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmpl
Y3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKIAogICAgIC8vIFdlIGRvbid0IGJvdGhl
ciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2UgZGlyZWN0IGV2YWwgdXNlcyBhIHNwZWNpYWxp
emVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAppbmRleCA0NzgyNmJmMzIwYzFjMTdkNTgz
MTM5YzQ2ZTUzZTZkYWVkYWJiZDQ5Li4yNDA3NWE3ZjVhMzZjNzNmZWJhNDA3ZTcxMDlhNmZjMzNm
MjcwZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RF
dmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZh
bEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBE
ZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29u
dGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiBwcml2YXRl
OgogICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNl
Q29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFNb2RlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0VDTUFNb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDQ0ZGUyOGZmZjE2
ZWI3YjEwZjYyYTY3ZTk3YzIwMDFmMDE2YTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQU1vZGUuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkVDTUFNb2RlLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgRUNNQU1vZGU6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKK3sKKyAgICBpZiAoaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50KCJT
dHJpY3RNb2RlIik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQoIk5vdFN0cmljdE1vZGUi
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FQ01BTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RUNNQU1vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmYxYjExYTY2ZWE5MTdkN2UzZDNjZDE5YTU3OTIyYjU5
ZTc3YzE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RUNNQU1vZGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFByaW50U3RyZWFtOworfTsKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBFQ01BTW9kZSB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFN0cmljdE1vZGUgPSAwOworICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDhfdCBTbG9wcHlNb2RlID0gMTsKKworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdGV4cHIgRUNNQU1vZGUgZnJvbUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBFQ01B
TW9kZShieXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgc3RyaWN0KCkgeyBy
ZXR1cm4gRUNNQU1vZGUoU3RyaWN0TW9kZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVDTUFN
b2RlIHNsb3BweSgpIHsgcmV0dXJuIEVDTUFNb2RlKFNsb3BweU1vZGUpOyB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNTdHJpY3QoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFN0cmlj
dE1vZGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CisKKyAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIGNvbnN0ZXhwciBFQ01BTW9kZSh1aW50OF90IHZhbHVlKQorICAgICAg
ICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV92YWx1ZSA9PSBTdHJp
Y3RNb2RlIHx8IG1fdmFsdWUgPT0gU2xvcHB5TW9kZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAg
dWludDhfdCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA2MDViMmVmZmIxZDdi
ODJlNWNkYjdjNjQ1M2RjNWRlNzFmMzAyNjc2Li42N2U2OWM4NjI5YmEzZmIzODExNDgxMTM2Yjhl
N2U5OTQ4MGVkNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
dmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxF
eGVjdXRhYmxlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZP
OwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRD
b250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KKyAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNF
dmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlw
dE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBl
KCkpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2Vk
RXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1GdW5jdGlv
bkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5u
dW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDQ0M2JiMzhhNjVjYjgw
NDc0NTY4NTdjZDhkMjc2YWRlOWY3YTZiNWMuLmJhZGU5ODczNWY5OWRjNDdlN2E2ZGM3ODdjNTc5
NzExY2U1MTVlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgLy8gUGVyIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWZvcmJpZGRl
bi1leHRlbnNpb25zLCBvbmx5IHNsb3BweS1tb2RlIG5vbi1idWlsdGluIGZ1bmN0aW9ucyBpbiBv
bGQtc3R5bGUgKHByZS1FUzYpIHN5bnRhY3RpYyBmb3JtcyBjYW4gY29udGFpbgogICAgICAgICAv
LyAiY2FsbGVyIiBhbmQgImFyZ3VtZW50cyIuCi0gICAgICAgIHJldHVybiAhaXNTdHJpY3RNb2Rl
KCkgJiYgcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUg
JiYgIWlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiAhaXNJblN0
cmljdENvbnRleHQoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1
bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsKICAgICB9CiAgICAg
Ym9vbCBoYXNQcm90b3R5cGVQcm9wZXJ0eSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmNwcAppbmRleCBkNmU3MWVkODQ4YTdjNTdiY2U4
OWY5MjQ0ODI5MjFlMzk1ODQwYzhjLi4xNTA4YTYwMTdjOWIxYWU1ZTcwMTg5Mjk3YjI2M2VjMTYy
NWY2MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmNw
cApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBHZXRQdXRJbmZvOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG9wZXJhbmQoKSwg
IjwiLCByZXNvbHZlTW9kZSgpLCAifCIsIHJlc29sdmVUeXBlKCksICJ8IiwgaW5pdGlhbGl6YXRp
b25Nb2RlKCksICI+Iik7CisgICAgb3V0LnByaW50KG9wZXJhbmQoKSwgIjwiLCByZXNvbHZlTW9k
ZSgpLCAifCIsIHJlc29sdmVUeXBlKCksICJ8IiwgaW5pdGlhbGl6YXRpb25Nb2RlKCksICJ8Iiwg
ZWNtYU1vZGUoKSwgIj4iKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXRQdXRJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXRQdXRJbmZvLmgKaW5kZXggMDZmZmQ0M2EwMjVmMGI1ZWNiNGUwMTBlMjcxOGQwNmMwMWI0NTlk
ZS4uZGU1MTUwODliMmM1Zjg1OWUwMTk4NDgxZmZkODBkMDlkNWE2OTUxNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFQ01BTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjAyLDE4ICsyMDMs
MjAgQEAgY2xhc3MgR2V0UHV0SW5mbyB7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBPcGVyYW5kOwog
cHVibGljOgogICAgIC8vIEdpdmUgZWFjaCBmaWVsZCAxMCBiaXRzIGZvciBzaW1wbGljaXR5Lgot
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmQpICogOCA+IDMwLCAiTm90IGVub3VnaCBi
aXRzIGZvciBHZXRQdXRJbmZvIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3BlcmFuZCkg
KiA4ID4gMzEsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1dEluZm8iKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGlzU3RyaWN0U2hpZnQgPSAzMDsKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIG1vZGVTaGlmdCA9IDIwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgaW5pdGlhbGl6YXRpb25TaGlmdCA9IDEwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgdHlwZUJpdHMgPSAoMSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSAtIDE7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsaXphdGlvbkJpdHMgPSAoKDEgPDwgbW9kZVNoaWZ0
KSAtIDEpICYgfnR5cGVCaXRzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbW9kZUJp
dHMgPSAoKDEgPDwgMzApIC0gMSkgJiB+aW5pdGlhbGl6YXRpb25CaXRzICYgfnR5cGVCaXRzOwot
ICAgIHN0YXRpY19hc3NlcnQoKG1vZGVCaXRzICYgaW5pdGlhbGl6YXRpb25CaXRzICYgdHlwZUJp
dHMpID09IDB4MCwgIlRoZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNv
bHZlTW9kZSBSZXNvbHZlVHlwZSBhbmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBpc1N0cmljdEJpdCA9IDEgPDwgMzA7CisgICAgc3RhdGljX2Fz
c2VydCgobW9kZUJpdHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0cyAmIGlzU3RyaWN0
Qml0KSA9PSAweDAsICJUaGVyZSBzaG91bGQgYmUgbm8gaW50ZXJzZWN0aW9uIGJldHdlZW4gUmVz
b2x2ZU1vZGUgUmVzb2x2ZVR5cGUgYW5kIEluaXRpYWxpemF0aW9uTW9kZSIpOwogCiAgICAgR2V0
UHV0SW5mbygpID0gZGVmYXVsdDsKIAotICAgIEdldFB1dEluZm8oUmVzb2x2ZU1vZGUgcmVzb2x2
ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlh
bGl6YXRpb25Nb2RlKQotICAgICAgICA6IG1fb3BlcmFuZCgocmVzb2x2ZU1vZGUgPDwgbW9kZVNo
aWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2RlKSA8PCBpbml0
aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQorICAgIEdldFB1dEluZm8oUmVzb2x2ZU1v
ZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1v
ZGUgaW5pdGlhbGl6YXRpb25Nb2RlLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX29w
ZXJhbmQoKGVjbWFNb2RlLmlzU3RyaWN0KCkgPDwgaXNTdHJpY3RTaGlmdCkgfCAocmVzb2x2ZU1v
ZGUgPDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25N
b2RlKSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQogICAgIHsKICAgICB9
CiAKQEAgLTIyNSw2ICsyMjgsNyBAQCBwdWJsaWM6CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4obV9vcGVyYW5kICYg
dHlwZUJpdHMpOyB9CiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEluaXRpYWxpemF0aW9uTW9kZT4oKG1fb3BlcmFu
ZCAmIGluaXRpYWxpemF0aW9uQml0cykgPj4gaW5pdGlhbGl6YXRpb25TaGlmdCk7IH0KICAgICBS
ZXNvbHZlTW9kZSByZXNvbHZlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc29s
dmVNb2RlPigobV9vcGVyYW5kICYgbW9kZUJpdHMpID4+IG1vZGVTaGlmdCk7IH0KKyAgICBFQ01B
TW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZCAmIGlzU3RyaWN0Qml0ID8g
RUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOyB9CiAgICAgdW5zaWduZWQg
b3BlcmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZDsgfQogCiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0
dGVyU2V0dGVyLmNwcAppbmRleCA1ZjlmODVlMWVjZGM4MTM0N2Q4OTc0MDZlNjIxMTRkMDY1NDcy
NzkzLi42NmNjNzUwNzM5MGJhNDFlMDg4OWNkNmI2YzUwMGU3NmIwMjE2MGI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTY4LDcgKzY4
LDcgQEAgYm9vbCBjYWxsU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNl
dHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwogCiAgICAgaWYg
KGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSwgUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGVjbWFNb2RlLmlzU3RyaWN0KCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKIAogICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZh
bEV4ZWN1dGFibGUuY3BwCmluZGV4IDIwMDMxOTI5MGYwYmUwZjk3MzE0MWJmZTk0OTlmM2JhZTg5
Nzg4NjIuLjE0ZjdmYWI1YzNkNGVhYTg3OTQyYmNmMzMyYTQ1ZjFjNTA2ZGFlN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1
dGFibGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbmRpcmVj
dEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5T
dHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUp
CitJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTQ1LDE1ICs0NSwxNCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGly
ZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0
VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEluZGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
KGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2Rl
IHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0
TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0
LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAgICAgCiAgICAgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVubGlua2VkRXZh
bENvZGVCbG9jaygKLSAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgp
LCBzdHJpY3RNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUp
OworICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29u
dGV4dFR5cGUpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSkKICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBl
eGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3Nh
Z2UoKSk7CkBAIC02OCw4ICs2NywxMCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJl
dHVybiBleGVjdXRhYmxlOwogfQogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJp
dmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRU
eXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwg
c291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Ok5vKQorY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFsc2U7Citjb25z
dGV4cHIgYm9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CitJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2
ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IGMxOTky
ZmRiMWE0MjUwNTRhZTliYzQ1NzUxMjhlNmY1MDg2Y2E5YmMuLjQ5OGI1Yzg3MDk4YWIzNzQ3OTdh
MjViZjQ4MTYzN2NmYmI5MmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1
dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
KTsKIHByaXZhdGU6Ci0gICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAg
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUm
LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENv
bnRleHRUeXBlKTsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEluZGlyZWN0RXZhbEV4ZWN1
dGFibGUpID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJkYjJlNTc3MDJiM2Ni
YzM2OTkzNjlkNzdjOTQzMzBkNC4uNWRiN2NkM2ZkMTllODliZDgxZDU5MDI1M2U5OTFiOGJlYTA4
ZDJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
QEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMTEsNyAr
MTExLDcgQEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBBU1NFUlQoIWlzQ2VsbCgp
KTsKIAotICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgIGlmIChlY21hTW9kZS5p
c1N0cmljdCgpKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBpZiAoaXNJbnQzMigpIHx8
IGlzRG91YmxlKCkpCkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1p
dGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHkK
IAogICAgICAgICAgICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7CiAgICAg
ICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCAqdGhpcywgZ3MsIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpKTsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xv
YmFsT2JqZWN0LCAqdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gRUNNQU1v
ZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAKICAgICAgICAgICAgIGlmIChn
cy5pc0N1c3RvbUdldHRlclNldHRlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBjYWxsQ3Vz
dG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgZ3MsIGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDBiY2FiNDBiOGQ5MjFk
MmM3MzRhMjlhMTRkYzAyMWM3MmQyMzBhMzQuLjQyYzUzNzc3Y2NkZWM1ZmNkNGRiODEwZDE4NTRm
YTYwYzlmNDgxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtl
bGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw2
ICsyMiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRUNNQU1vZGUuaCIKICNpbmNs
dWRlICJKU0V4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgIlB1cmVOYU4uaCIKICNpbmNsdWRlIDxm
dW5jdGlvbmFsPgpAQCAtODAsOCArODEsNyBAQCB1c2luZyBXcml0ZUJhcnJpZXJUcmFpdHNTZWxl
Y3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtubwogICAg
IER1bWJWYWx1ZVRyYWl0czxUPiwgRHVtYlB0clRyYWl0czxUPgogPjo6dHlwZTsKIAotZW51bSBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZl
clN0cmluZyB9OwotZW51bSBFQ01BTW9kZSB7IFN0cmljdE1vZGUsIE5vdFN0cmljdE1vZGUgfTsK
K2VudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA6IHVpbnQ4X3QgeyBOb1ByZWZlcmVuY2UsIFBy
ZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07CiAKIGVudW0gY2xhc3MgQ2FsbFR5cGUgOiB1bnNp
Z25lZDsKIHN0cnVjdCBDYWxsRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCmluZGV4IDJmZWEyYjViOGVkODA5MzdhMDkwZmM1YzFhZjViNTkyZDMzNTgzM2EuLjEz
OTBjNzYxOWFjYzdhOTQ0OWFmZTNjODc3YmQ5OTM1MGY1NDA2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNDZWxs
OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1CiAKIEpTVmFsdWUgSlNDZWxsOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAgICBpZiAo
ZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAg
ICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmlu
ZGV4IDA5YWJhZTM4YmUwZmUzNDZmZDVkMzhiMjJiZGE0N2JmOWU2NmNhMzUuLjUxOTAzY2E3ODcx
ZDM3MmUyNmI4ZWNlMGUzYWUwYTNmMTQ2Yjg1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cnVjdHVyZSogSlNG
dW5jdGlvbjo6c2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0CiAgICAgYm9vbCBpc0J1aWx0aW4gPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5j
dGlvbigpOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSkKICAgICAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwot
ICAgIGlmIChleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZXhlY3V0YWJsZS0+
aXNJblN0cmljdENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaWN0
RnVuY3Rpb25TdHJ1Y3R1cmUoaXNCdWlsdGluKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5z
bG9wcHlGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwogfQpAQCAtNDMwLDcgKzQzMCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpJbnN0
YW5jZUZpZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBpZiAoIWZ1bmN0aW9uLT5qc0V4ZWN1
dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlmICghZnVuY3Rpb24tPmpzRXhlY3V0
YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYWxsZXIpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRy
aWV2ZSBzdHJpY3QgY2FsbGVyIl9zKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDli
YThjNzBkNzZhNzQyZWViNTcxNjc4Y2M5M2RiYWNiNDc5Mzk0NGUuLmNhOTQ4OWMwZTBlZmRjODZi
MGY0MjJmZjI4ODZlZjQ4ZDE5M2E5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTUwNyw3ICs1
MDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHBhcnNlZE9iamVjdCk7CiAKICAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luID0g
Y2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwotICAgIEV2YWxFeGVjdXRhYmxlKiBl
dmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNv
dXJjZShzLCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBm
YWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uo
cywgc291cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENv
bnRleHRUeXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIWV2YWwpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Zh
bHVlKCk7CkBAIC03MTQsNyArNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVO
b3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CiAKQEAgLTczNSw3ICs3
MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAg
ICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBPYmplY3RQcm90b0NhbGxlZE9uTnVs
bE9yVW5kZWZpbmVkRXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKaW5kZXggMjcxZTgxYzFhNzAwMDkyMzcxOWUxYTliODk0MzU2M2NmNjgwNGEzZC4u
MWIyNGYxMWVjNzg4ZjU0ODRkY2JhZDI2MTRiODg0YzQxYjZhZjk4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtODEwLDcgKzgxMCw3IEBAIGJvb2wg
SlNPYmplY3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLT5zdHJ1Y3R1cmUo
dm0pLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFi
bGVTZXR0ZXIob2JqLCBvZmZzZXQpOwogCi0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBj
YWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFsdWUoKSwgZ3MsIHZhbHVlLCBzbG90
LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOworICAgICAgICAg
ICAgICAgIGJvb2wgcmVzdWx0ID0gY2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHNsb3QudGhpc1Zh
bHVlKCksIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IEVDTUFNb2RlOjpzdHJpY3Qo
KSA6IEVDTUFNb2RlOjpzbG9wcHkoKSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgICAgICB9CkBAIC0xODE4LDcgKzE4MTgsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3dJ
ZkNhbnRTZXQsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9i
amVjdCJfcyk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRo
aXMsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1l
dGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3Bw
eSgpKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pID09
IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDZkNWFiNjgyYzY4MzkxNGY2OWYzZTVjMjI4Mzg0ZmVm
ZTQ2NTc3YzguLmIzYzI3MjAyMjgwNmI4MTE0MzU3ZDgxZGU5ZjNiNWZjMTAzNTRkOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTEsNyArNDExLDcg
QEAgU3ltYm9sVGFibGUqIEpTU2NvcGU6OnN5bWJvbFRhYmxlKFZNJiB2bSkKIAogSlNWYWx1ZSBK
U1Njb3BlOjp0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNN
QU1vZGUgZWNtYU1vZGUpCiB7Ci0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAg
aWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBhYWVlOGVlN2E3N2VlYTZkZWZjNzU3
YTg3ZDIzYjNlY2JhODZmMjFmLi4wZjIwN2EzYjY4NmFlYTdiNTdkNDk1Y2Q3MDI5YWQ4YTgzODZk
YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00
MTcsNyArNDE3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b09iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdAogCiBKU1ZhbHVlIEpTU3RyaW5nOjp0b1RoaXMoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkK
IHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNT
dHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIFN0cmluZ09iamVjdDo6
Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhjZWxsKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
CmluZGV4IDY5NzZmNzA1ZDM0MDRlMzdhMjFkODkyYjEyM2NiYzM4MDQyMzZkNWIuLjUzNTIzNzE4
ZGM5YjlkMjIxMmI4YjgyMTE3NjM2OGY0ODQyMTgyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC05MzMsNyArOTMzLDcgQEAgSlNW
YWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0
YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJBdHRl
bXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5Il9zOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJs
b2NrID8gbV9udWxsT3JDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpIDogZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJs
b2NrID8gbV9udWxsT3JDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29u
dGV4dCgpIDogZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5sYXN0KCku
cHV0KG1fZ2xvYmFsT2JqZWN0LCBpZGVudCwgbGFzdFZhbHVlLCBzbG90KTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA0NjU0NjIwMDRm
MzdlMjAxMmQ3MjE2OGM2MjA5ZTUwNTE3YzEyMDU1Li4wOTlkODk5YWQ1ZTYzYTc0MzM1OGUyYWJi
MjBhYjM0ZjU5Yjk2MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0
TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpN
b2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250
ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJp
dmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0
ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVy
RnVuY3Rpb24uY3BwCmluZGV4IDEwZjg4NzI1YWMwMDJkMjUzYTljODYzNzFkNDUzOTg1MGRmY2Fh
MjkuLjQxNGNiOGNlZmRmZjgzMGY1N2JmZmQ4MjY5NDQ1MGEyZjM5Mzg5OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcApA
QCAtMzcsNiArMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IENsYXNzSW5mbyBOdWxsU2V0
dGVyRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShOdWxsU2V0dGVyRnVuY3Rpb24pIH07CiAK
IAorI2lmIEFTU0VSVF9FTkFCTEVECisKIGNsYXNzIEdldENhbGxlclN0cmljdG5lc3NGdW5jdG9y
IHsKIHB1YmxpYzoKICAgICBHZXRDYWxsZXJTdHJpY3RuZXNzRnVuY3RvcigpCkBAIC01Miw3ICs1
NCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVl
OwogCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJsb2NrKCk7
Ci0gICAgICAgIG1fY2FsbGVySXNTdHJpY3QgPSBjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKTsKKyAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0
aGF0IHdlIG1pZ2h0IGhhdmUgYW4gc3RyaWN0IG9wY29kZSBpbiBhIG5vbi1zdHJpY3QgY29udGV4
dCwgYnV0IHRoYXQncworICAgICAgICAvLyBvayBzaW5jZSB3ZSBhc3NlcnQgYmVsb3cgdGhhdCB0
aGlzIGZ1bmN0aW9uIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgZnJvbSBhbnkga2luZCBzdHJpY3Qg
Y29udGV4dC4KKyAgICAgICAgbV9jYWxsZXJJc1N0cmljdCA9IGNvZGVCbG9jayAmJiBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpOwogICAgICAgICByZXR1
cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogICAgIH0KIApAQCAtNzAsMTQgKzc0LDE2IEBAIHN0YXRp
YyBib29sIGNhbGxlcklzU3RyaWN0KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAg
cmV0dXJuIGl0ZXIuY2FsbGVySXNTdHJpY3QoKTsKIH0KIAorI2VuZGlmIC8vIEFTU0VSVF9FTkFC
TEVECisKIG5hbWVzcGFjZSBOdWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbCB7CiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0KLSAgICBpZiAoY2FsbGVySXNTdHJpY3Qodm0sIGNhbGxGcmFtZSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIl9zKSk7CisjaWYg
IUFTU0VSVF9FTkFCTEVECisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgVU5V
U0VEX1BBUkFNKGNhbGxGcmFtZSk7CisjZW5kaWYKKyAgICBBU1NFUlQoIWNhbGxlcklzU3RyaWN0
KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4IGNiYzc5YTMwMDhjMTMyYjZkMzY5ZGU3
MmY1Y2Q2MjZiODA1YTM5YmQuLjQxY2U4YWFmMWRiMmNkNzA3MGUxNWI2YTZkMzFiNzU0MTc1MmM4
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcApAQCAtODEsNyArODEsNyBAQCBPYmplY3RQcm90b3R5cGUqIE9iamVjdFByb3RvdHlw
ZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIEpTT2Jq
ZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlm
IChVTkxJS0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
QEAgLTk0LDcgKzk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNIYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFs
dWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbAogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCi0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwog
ICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQpAQCAtMTUwLDcgKzE1MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJp
Y3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSk7CkBAIC0xNzgsNyArMTc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY0xvb2t1cEdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmlj
dCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTI2OSw3ICsy
NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3Bl
cnR5SXNFbnVtZXJhYmxlKEpTR2xvYmFsT2JqZWN0KgogICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVsZWFz
ZSgpOwpAQCAtMjkwLDcgKzI5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgLy8g
Mi4gSW52b2tlKFYsICJ0b1N0cmluZyIpCiAKICAgICAvLyBMZXQgTyBiZSB0aGUgcmVzdWx0IG9m
IGNhbGxpbmcgVG9PYmplY3QgcGFzc2luZyB0aGUgdGhpcyB2YWx1ZSBhcyB0aGUgYXJndW1lbnQu
Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBT
dHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSB0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gTGV0IHRvU3RyaW5nIGJlIHRoZSBPLltbR2V0XV0oInRv
U3RyaW5nIiwgVikKQEAgLTMxNSw3ICszMTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZS5pc1VuZGVmaW5l
ZCgpID8gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVjdFN0cmluZygpIDogdm0uc21hbGxT
dHJpbmdzLm51bGxPYmplY3RTdHJpbmcoKSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0
aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAppbmRleCBhOGYwYjVmODk5NDJi
MzdkYWU5ZTdhMzAyOTJkNDE4ZmI4N2U4OTMzLi4yYjMyZjVhMDRhMjAxMjM2YTk3YmJhZWRjNDM0
NjJjZDI4OGUzMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIEpTT2JqZWN0KiBQcm9ncmFt
RXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCoKICAgICBBU1NFUlQoJmdsb2JhbE9iamVjdC0+dm0oKSA9PSAmdm0pOwogCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBpc1N0
cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RN
b2RlOjpOb3RTdHJpY3Q7CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBpc0lu
U3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0
cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBj
b2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1v
ZGUoKTsKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0g
dm0uY29kZUNhY2hlKCktPmdldFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaygKICAgICAgICAgdm0s
IHRoaXMsIHNvdXJjZSgpLCBzdHJpY3RNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yKTsK
QEAgLTEzNiw3ICsxMzYsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxp
emVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICBi
b29sIGhhc1Byb3BlcnR5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5oYXNQcm9wZXJ0eShn
bG9iYWxPYmplY3QsIGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKGhhc1Byb3BlcnR5
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAm
JiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNTdHJpY3RN
b2RlKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29u
c3QoKSAmJiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNJ
blN0cmljdENvbnRleHQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBhbGxv
dyAiY29uc3QiIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbnMgdW5kZXIgdGhpcyBzZXR0aW5nLgogICAg
ICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgd2UgZG9uJ3QgImxldCIgdmFyaWFibGVz
IHRvIGJlIG92ZXJyaWRkZW4gYnkgImNvbnN0IiB2YXJpYWJsZXMuCiAgICAgICAgICAgICAgICAg
ICAgIGlmIChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmlzQ29uc3RWYXJpYWJsZShlbnRyeS5r
ZXkuZ2V0KCkpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJs
ZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAg
ICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJv
bFRhYmxlLT5tX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGV4aWNhbERlY2xh
cmF0aW9ucykgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3Qo
KSAmJiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNTdHJp
Y3RNb2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25z
dCgpICYmICF2bS5nbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc0lu
U3RyaWN0Q29udGV4dCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+Y29u
dGFpbnMobG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCkpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDI5Y2EwMTMyMDU2MWIxNDZhNjI5YzZmYjVmYTE4
OGZmNThjM2RiMWYuLmI4NzE1YWE3MmJiY2I3MzM5ZDZlMzQxM2FjNTljNzQ0MTE3YjgyYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUu
aApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsK
IAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhl
Y3V0YWJsZUluZm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29u
dGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CisgICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1
c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRl
eHRUeXBlOjpOb25lKTsgfQogCiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRl
T2JqZWN0TWFwKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAppbmRleCBiMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVlZTllNWY5MGM2NjYw
Li42ZDExYjQxYmE0MDYxODE1NTIyZGFiM2ViZmUzMWM3NzZlN2VlNzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC01NDcsNyArNTQ3LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6U3RyaWN0
TW9kZSkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpKTsKICAgICBhcmd1bWVudHMuYXBw
ZW5kKGFyZ0FycmF5KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFs
T2JqZWN0LCBhcHBseU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVu
dHMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRF
eGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmgKaW5kZXggMTA2Y2YyNWY2MzFmMDQxYjliYzYzMTk0MDBmNDY2N2IwN2IzOWNmYy4uMGRk
NDRlY2I4NDM3MWQ0NzczNDYwY2Q0YzBhYWU1NWZlM2NkMjMyYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaApAQCAtNjAsMTIgKzYwLDEw
IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJl
cyAmIEV2YWxGZWF0dXJlOyB9CiAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0K
LSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJp
Y3RNb2RlRmVhdHVyZTsgfQogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVy
aXZlZENvbnRleHRUeXBlKTsgfQogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFdmFsQ29udGV4dFR5cGU+KG1fZXZhbENvbnRl
eHRUeXBlKTsgfQorICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KIAotICAgIEVDTUFNb2RlIGVjbWFNb2Rl
KCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0
TW9kZTsgfQotICAgICAgICAKICAgICB2b2lkIHNldE5ldmVySW5saW5lKGJvb2wgdmFsdWUpIHsg
bV9uZXZlcklubGluZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXROZXZlck9wdGltaXplKGJvb2wg
dmFsdWUpIHsgbV9uZXZlck9wdGltaXplID0gdmFsdWU7IH0KICAgICB2b2lkIHNldE5ldmVyRlRM
T3B0aW1pemUoYm9vbCB2YWx1ZSkgeyBtX25ldmVyRlRMT3B0aW1pemUgPSB2YWx1ZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFw
LmNwcAppbmRleCA4NWMxY2YzNDMzODE4NDc4ODM4ODQ1NmViMzZhZWEyZmZiNjM0MWZhLi4zZmQ2
MDA2ZTFlODQ1ZmFlZWQyNmQwZTcyODNjNTNmNmMxMGYzMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcApAQCAtMjAz
LDcgKzIwMyw3IEBAIGJvb2wgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFyCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyA/IFN0
cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUs
IHNob3VsZFRocm93ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpKSk7
CiB9CiAKIEpTVmFsdWUgU3BhcnNlQXJyYXlFbnRyeTo6Z2V0Tm9uU3BhcnNlTW9kZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
aW5kZXggMWJiNWNkZmZhNzZhNzdkZTIyNDNjYjYyMWMyMjQ1YmI4ZTA1MTJkYy4uNTRkMWM5ZDI2
ZTBlOTQ1MDI3ZGFlNDYxZDdhMGEwYzg3Y2U0ODNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNjI2LDcgKzYyNiw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rp
b25PcGVuRGF0YWJhc2VCb2R5KEpTCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTRE9NV2luZG93KiBJ
RExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gdG9KU0RPTVdp
bmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1Ro
aXMoJmxleGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICByZXR1cm4gdG9K
U0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNhbGxGcmFtZS50aGlzVmFsdWUo
KS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnNsb3BweSgpKSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uT3BlbkRhdGFiYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldEN1c3RvbS5oCmluZGV4IDA5Mjg1MTc2M2NhMGQxYWNhMWJjNzM0NjUzNTBiNmUyYzBlZWU1
MDYuLjM3NjhiZjI5MWM1OWRhZTg5OWRiMGYxNTBhMWIwY2EwOGM3ZGMyYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2
bSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpOb3RTdHJpY3RNb2RlKSk7CisgICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJn
ZXRDYXN0KHZtLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiRXZlbnRUYXJnZXQiLCBvcGVyYXRpb25OYW1lKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCBkYjlhYzFiYzdhZTE4YTRkZGYwZGI1OGIzOTlhNGJlNDBmNmJhMjVkLi43NzMx
MDYzZmZmNmIwM2ZmOTlhNmMzNzE5ZjYwYWZhZTI1ZDFkNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDU5MSw3ICs0
NTkxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGRlY29kZWRUaGlzVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KS50b1RoaXMoJmxl
eGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWUoJmxleGlj
YWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNs
b3BweSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
ICRjYXN0aW5nRnVuY3Rpb24odm0sIGRlY29kZWRUaGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NjA3
LDcgKzQ2MDcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICMgRklY
TUU6IE1ha2UgY29uc2lzdGVudCBJRExBdHRyaWJ1dGU8Pjo6Y2FzdCBhbmQgSURMT3BlcmF0aW9u
PD46OmNhc3QgaW4gY2FzZSBvZiBDdXN0b21Qcm94eVRvSlNPYmplY3QuCiAgICAgICAgIG15ICRj
YXN0aW5nRnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Q
cm94eVRvSlNPYmplY3R9ID8gInRvJHtjbGFzc05hbWV9IiA6IEdldENhc3RpbmdIZWxwZXJGb3JU
aGlzT2JqZWN0KCRpbnRlcmZhY2UpOwotICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJjYWxsRnJh
bWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2Rl
KSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKKyAgICAgICAgbXkgJHRoaXNWYWx1ZSA9ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAi
Y2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnNsb3BweSgpKSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAke2NsYXNzTmFtZX0qIElETE9wZXJhdGlv
bjwke2NsYXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdG
dW5jdGlvbihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJHRoaXNWYWx1ZSk7XG4i
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAzNTY2MWEwM2EwMWIxZjdhMjQzNDczNjY0MzAyMWU4MGFlOTFmMzY3Li41ZjY0
MzhlNjg4YjJhZjhiMmZmYzlhNzIyYzE1MGUxNjhjZjk1YWJjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjAtMDQtMDYgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0aW9uIHN0YXRl
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1
NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIHRlc3Qgc2luY2UgaXQgY29u
dGFpbmVkIGluY29ycmVjdCBjb2RlLgorCisgICAgICAgICoganMvY2xhc3Mtc3ludGF4LW1ldGhv
ZC1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5
bnRheC1tZXRob2QtbmFtZXMuanM6CisKIDIwMjAtMDQtMDYgIEphY29iIFVwaG9mZiAgPGphY29i
X3VwaG9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBdIGluc3BlY3Rvci9kZWJ1Z2dl
ci9icmVhay1pbi1jb25zdHJ1Y3Rvci1iZWZvcmUtc3VwZXIuaHRtbCBpcyBhIGZsYWt5IGZhaWx1
cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1l
eHBlY3RlZC50eHQKaW5kZXggN2YxNDkyNGYzZDNhZDc2OWQ5OTgxYjQ1Y2FiNDZlZWVmOTc2ZDc1
Yy4uODg4Y2QyZDIyNTJhOGYzOWNjM2YyZWUzMDE3NDZiOTA1OGJjYTljOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQK
QEAgLTU2LDkgKzU2LDkgQEAgUEFTUyBBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2Qo
J2ZvbycsIDIxNSk7IChuZXcgQSlbJ2ZvbyddKCkgaXMgMjE1CiBQQVNTIEEgPSBjcmVhdGVDbGFz
c1dpdGhJbnN0YW5jZU1ldGhvZCgnZm9vJywgMjE2KTsgQiA9IGNyZWF0ZUNsYXNzV2l0aEluc3Rh
bmNlTWV0aG9kKCdiYXInLCAyMTcpOyBbKG5ldyBBKVsnZm9vJ10oKSwgKG5ldyBCKVsnYmFyJ10o
KV0gaXMgWzIxNiwgMjE3XQogUEFTUyB4ID0gMjE4OyBjbGFzcyBBIHsgW3grK10oKSB7IHJldHVy
biB4OyB9IH07IChuZXcgQSlbMjE4XSgpIGlzIDIxOQogUEFTUyB4ID0gdW5kZWZpbmVkOyBjbGFz
cyBBIHsgWyh4PTIyMCkgJiYgJ2ZvbyddKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpLmZvbygp
IGlzIDIyMAotUEFTUyB4ID0gMjIxOyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1
cm4geDE7IH0gWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIx
XSgpLCAobmV3IEEpWzIyMl0oKV0gaXMgWzIyMSwgMjIyXQorUEFTUyB2YXIgeCA9IDIyMSwgeDEs
IHgyOyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAm
JiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0o
KV0gaXMgWzIyMSwgMjIyXQogUEFTUyB4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArIHgrK10oKSB7
IHJldHVybiAyMjM7IH0gWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBbKG5ldyBB
KS5mb28xKCksIChuZXcgQSkuZm9vMigpXSBpcyBbMjIzLCAyMjRdCi1QQVNTIHggPSAxOyBjbGFz
cyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsg
eCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSBpcyBbMiwg
MywgMjI2XQorUEFTUyB2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgpIHsg
cmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9
OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSBpcyBbMiwgMywgMjI2XQogCiBTdGF0aWMgbWV0aG9k
cyB3aXRoIGNvbXB1dGVkIG5hbWVzCiBQQVNTIGNsYXNzIEEgeyBzdGF0aWMgWydhJyArICdiJ10o
KSB7IHJldHVybiAzMTE7IH0gfTsgQS5hYigpIGlzIDMxMQpAQCAtNjksOSArNjksOSBAQCBQQVNT
IEEgPSBjcmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNSk7IEFbJ2ZvbyddKCkg
aXMgMzE1CiBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNik7
IEIgPSBjcmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2JhcicsIDMxNyk7IFtBWydmb28nXSgp
LCBCWydiYXInXSgpXSBpcyBbMzE2LCAzMTddCiBQQVNTIHggPSAyMTg7IGNsYXNzIEEgeyBzdGF0
aWMgW3grK10oKSB7IHJldHVybiB4OyB9IH07IEFbMjE4XSgpIGlzIDIxOQogUEFTUyB4ID0gdW5k
ZWZpbmVkOyBjbGFzcyBBIHsgc3RhdGljIFsoeD0yMjApICYmICdmb28nXSgpIHsgcmV0dXJuIHg7
IH0gfTsgQS5mb28oKSBpcyAyMjAKLVBBU1MgeCA9IDIyMTsgY2xhc3MgQSB7IHN0YXRpYyBbKHgx
PXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0aWMgWyh4Mj14KSAmJiB4KytdKCkgeyBy
ZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0oKV0gaXMgWzIyMSwgMjIyXQorUEFTUyB2
YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsg
cmV0dXJuIHgxOyB9IHN0YXRpYyBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBb
QVsyMjFdKCksIEFbMjIyXSgpXSBpcyBbMjIxLCAyMjJdCiBQQVNTIHggPSAxOyBjbGFzcyBBIHsg
c3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjM7IH0gc3RhdGljIFsnZm9vJyArIHgr
K10oKSB7IHJldHVybiAyMjQ7IH0gfTsgW0EuZm9vMSgpLCBBLmZvbzIoKV0gaXMgWzIyMywgMjI0
XQotUEFTUyB4ID0gMTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4g
MjI1OyB9IHN0YXRpYyBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9
OyBbeDEsIHgsIEEuZm9vMigpXSBpcyBbMiwgMywgMjI2XQorUEFTUyB2YXIgeCA9IDEsIHgxOyBj
bGFzcyBBIHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFso
eDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28y
KCldIGlzIFsyLCAzLCAyMjZdCiAKIEluc3RhbmNlIG1ldGhvZHMgd2l0aCBkdXBsaWNhdGVkIG5h
bWVzCiBQQVNTIGNsYXNzIEEgeyBhYigpIHsgcmV0dXJuIDQwMSB9IGFiKCkgeyByZXR1cm4gNDAy
OyB9IH07IChuZXcgQSkuYWIoKSBpcyA0MDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMuanMKaW5kZXggMTQyYmIwNWIz
YjQwOWQ5MDEyYWE0OWFkNDI1MjNkZTk3MTUzYzZhNi4uMWJiZTkwMzU4NmU4NTQ3MjI0ZGQzYmJj
ZjRhOTBlZjgyNDQzYjkwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMuanMKQEAgLTU3LDkgKzU3LDkgQEAgc2hv
dWxkQmUoIkEgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnZm9vJywgMjE1KTsgKG5l
dyBBKVsnZm9vJ10oKSIsICIyMTUKIHNob3VsZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFu
Y2VNZXRob2QoJ2ZvbycsIDIxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgn
YmFyJywgMjE3KTsgWyhuZXcgQSlbJ2ZvbyddKCksIChuZXcgQilbJ2JhciddKCldIiwgIlsyMTYs
IDIxN10iKTsKIHNob3VsZEJlKCJ4ID0gMjE4OyBjbGFzcyBBIHsgW3grK10oKSB7IHJldHVybiB4
OyB9IH07IChuZXcgQSlbMjE4XSgpIiwgIjIxOSIpOwogc2hvdWxkQmUoInggPSB1bmRlZmluZWQ7
IGNsYXNzIEEgeyBbKHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSku
Zm9vKCkiLCAiMjIwIik7Ci1zaG91bGRCZSgieCA9IDIyMTsgY2xhc3MgQSB7IFsoeDE9eCkgJiYg
eCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07
IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKK3Nob3Vs
ZEJlKCJ2YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyBy
ZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlb
MjIxXSgpLCAobmV3IEEpWzIyMl0oKV0iLCAiWzIyMSwgMjIyXSIpOwogc2hvdWxkQmUoInggPSAx
OyBjbGFzcyBBIHsgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyMzsgfSBbJ2ZvbycgKyB4Kytd
KCkgeyByZXR1cm4gMjI0OyB9IH07IFsobmV3IEEpLmZvbzEoKSwgKG5ldyBBKS5mb28yKCldIiwg
IlsyMjMsIDIyNF0iKTsKLXNob3VsZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0o
KSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7
IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0iLCAiWzIsIDMsIDIyNl0iKTsKK3Nob3VsZEJl
KCJ2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsg
fSBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChu
ZXcgQSkuZm9vMigpXSIsICJbMiwgMywgMjI2XSIpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnU3Rh
dGljIG1ldGhvZHMgd2l0aCBjb21wdXRlZCBuYW1lcycpOwpAQCAtNzIsOSArNzIsOSBAQCBzaG91
bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE1KTsgQVsnZm9v
J10oKSIsICIzMTUiKTsKIHNob3VsZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9k
KCdmb28nLCAzMTYpOyBCID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdiYXInLCAzMTcp
OyBbQVsnZm9vJ10oKSwgQlsnYmFyJ10oKV0iLCAiWzMxNiwgMzE3XSIpOwogc2hvdWxkQmUoIngg
PSAyMTg7IGNsYXNzIEEgeyBzdGF0aWMgW3grK10oKSB7IHJldHVybiB4OyB9IH07IEFbMjE4XSgp
IiwgIjIxOSIpOwogc2hvdWxkQmUoInggPSB1bmRlZmluZWQ7IGNsYXNzIEEgeyBzdGF0aWMgWyh4
PTIyMCkgJiYgJ2ZvbyddKCkgeyByZXR1cm4geDsgfSB9OyBBLmZvbygpIiwgIjIyMCIpOwotc2hv
dWxkQmUoInggPSAyMjE7IGNsYXNzIEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1
cm4geDE7IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFtBWzIy
MV0oKSwgQVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDIyMSwg
eDEsIHgyOyBjbGFzcyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9
IHN0YXRpYyBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFb
MjIyXSgpXSIsICJbMjIxLCAyMjJdIik7CiBzaG91bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBzdGF0
aWMgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyMzsgfSBzdGF0aWMgWydmb28nICsgeCsrXSgp
IHsgcmV0dXJuIDIyNDsgfSB9OyBbQS5mb28xKCksIEEuZm9vMigpXSIsICJbMjIzLCAyMjRdIik7
Ci1zaG91bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0
dXJuIDIyNTsgfSBzdGF0aWMgWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7
IH0gfTsgW3gxLCB4LCBBLmZvbzIoKV0iLCAiWzIsIDMsIDIyNl0iKTsKK3Nob3VsZEJlKCJ2YXIg
eCA9IDEsIHgxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7
IH0gc3RhdGljIFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4
MSwgeCwgQS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7CiAKIGRlYnVnKCcnKTsKIGRlYnVnKCdJ
bnN0YW5jZSBtZXRob2RzIHdpdGggZHVwbGljYXRlZCBuYW1lcycpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1MjM5ZTg5NmMyZGQ4ZTVk
YjU3MDgzN2QzNjYxYTI5OGEwNzhkNmFlLi4zYjhiYjQ2OTNkYTRjYjVmYWQ5ODIxY2QzM2JmZDNi
ZmEwZWI4YTlmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTA2ICBUYWRldSBaYWdhbGxvICA8dHph
Z2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIE5vdCB1c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4g
Q2xhc3NEZWNsYXJhdGlvbiBzdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTU3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1
ODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanM6IEFkZGVkLgorICAgICAg
ICAoZi50cnkuYyk6CisgICAgICAgIChmKToKKwogMjAyMC0wNC0wNiAgUmljayBXYWxkcm9uICA8
d2FsZHJvbi5yaWNrQGdtYWlsLmNvbT4gYW5kIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBUZXN0MjYyIGhhcm5lc3Mg
ZmlsZSBhbmQgaW1wbGVtZW50ICQyNjIuSXNIVE1MRERBCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcyBiL0pTVGVzdHMvc3RyZXNz
L3N1cGVyY2xhc3MtZXhwcmVzc2lvbi1zdHJpY3RuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3ZWE2ODQ3
OWM5NzNmM2M2MjBhY2ZiZjFmMDE5YWJlZGE5MmEyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcwpAQCAtMCwwICsx
LDU5IEBACitmdW5jdGlvbiBmKCkgeworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgY2xhc3MgYyBleHRlbmRzKGQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4ge307CisgICAgICAgICAgICB9LCBkKSB7fQorICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0gIkNhbid0IGZpbmQgdmFyaWFibGU6IGQi
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IHNob3VsZCBoYXZlIHRocm93biBh
IHJlZmVyZW5jZSBlcnJvciIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOwor
ICAgICAgICB2YXIgb2JqID0ge307CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmos
ICd4JywgeyBjb25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZTogMSB9KTsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGNsYXNzIGMgZXh0ZW5kcyhkZWxldGUgb2JqLngsICgpPT57fSkge30KKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhh
dmUgdGhyb3duIGEgdHlwZSBlcnJvciIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIGVy
cm9yOworICAgICAgICB2YXIgb2JqID0ge307CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShvYmosICd4JywgeyBjb25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZTogMSB9KTsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGNsYXNzIGMgZXh0ZW5kcyhldmFsKCdkZWxldGUgb2JqLngnKSwg
Y2xhc3N7fSkge30KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJV
bmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgdHlwZSBlcnJvciIpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgdmFyIG8gPSB7fTsKKyAgICAgICAgby5fX2RlZmluZUdldHRlcl9fKCJ4IiwgZnVu
Y3Rpb24gKCkgeyByZXR1cm4gNDI7IH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xh
c3MgYyBleHRlbmRzIChvLnggPSAxMywgY2xhc3MgeyB9KSB7IH0KKyAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFl
cnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5
IHByb3BlcnR5LiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhh
dmUgdGhyb3duIGEgdHlwZSBlcnJvciIpOworICAgIH0KK30KKworIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykKKyAgICBmKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395623</attachid>
            <date>2020-04-06 15:23:37 -0700</date>
            <delta_ts>2020-04-07 12:24:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205578-20200406152336.patch</filename>
            <type>text/plain</type>
            <size>261706</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YjI0ZTMzNmQ0ZDBkZjRiY2QzYTI3NWI1Y2MzYTI0OTZkM2IwNzlhLi40YmI3NTgwNTJlZjExMTc1
MzYzNDg0NDgxMTUxMzkyMzI2YTFkYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODYgQEAKKzIwMjAtMDQtMDYgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3JyZWN0bHkgc2V0
IHN0cmljdCBtb2RlIHdoZW4gcGFyc2luZyBjbGFzc2VzLCBidXQgd2UgZGlkIG5vdCBzZXQgaXQg
d2hlbiBlbWl0dGluZyBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBtZWFucyB0aGF0
IHdlIGNhbiBub3cgaGF2ZSBhIHN1YnNldCBvZiBhIGNvZGUgYmxvY2sncyBieXRlY29kZSB0aGF0
IG11c3QgYmUgcnVuIGluCisgICAgICAgIHN0cmljdCBtb2RlLCBldmVuIHdoZW4gdGhlIGNvZGUg
YmxvY2sgaXRzZWxmIGlzIG5vdCBzdHJpY3QuIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIG9u
bHkgdGVuCisgICAgICAgIG9wY29kZXMgdGhhdCBuZWVkIHRvIGJlIGF3YXJlIG9mIHN0cmljdG5l
c3MsIHNvIGFuIGV4dHJhIGBtb2RlYCBvcGVyYW5kIHdhcyBhZGRlZCB0byB0aGVzZSBvcGNvZGVz
LgorICAgICAgICBUaGUgbW9kZSB0aGVuIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBi
YXNlbGluZSwgREZHIGFuZCBGVEwuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlv
bi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmNhbGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
RHVtcGVyLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5
cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpp
c0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0tub3duQ2Vs
bCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUluZm86OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5l
Q2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Jbmxp
bmVDYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjppc0luU3RyaWN0
Q29udGV4dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcDoKKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZEZs
YWdzLmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6UHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxh
Z3M6OmlzRGlyZWN0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjplY21hTW9k
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRGbGFnczo6UHV0QnlJZEZsYWdzKToKKyAg
ICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRD
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0NvbnN0cnVjdG9yIGNvbnN0KToKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
Y29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZyb21TY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlW
YWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb1RoaXMpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZWNtYU1vZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlU2NvcGU6OlN0cmljdE1v
ZGVTY29wZSk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVTY29wZTo6flN0cmljdE1vZGVTY29w
ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0
eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6
ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdOb2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25t
ZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhp
c1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgor
ICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRm
Zy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cFRvVGhpcyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6Omdsb2JhbFRoaXNPYmplY3RGb3IpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRUNNQU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChK
U0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToKKyAgICAg
ICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckNlbGxX
aXRoU3ltYm9sKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dER5bmFtaWNWYXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0
QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJ
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZh
bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxCeSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxFdmFsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dER5bmFtaWNWYXIp
OgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFt
ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpldmFsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVy
cy5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlQ2FsbEV2YWwpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24pOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
SVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQv
SklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAg
ICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlD
YWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbGV0ZUJ5KToKKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmNvbW1vbkNhbGxFdmFsKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChK
U0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjphcnJheVBy
b3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1BvcCk6CisgICAgICAg
IChKU0M6OmFycmF5UHJvdG9GdW5jUHVzaCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2hpZnQpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNT
cGxpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVu
Y0xhc3RJbmRleE9mKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjp1c2VzRXZhbCBjb25zdCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNh
Y2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAgICAgKiBydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjptYXRlcmlh
bGl6ZVNwZWNpYWxzKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAg
IChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwpOgorICAgICAgICAoSlND
OjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKToKKyAgICAgICAg
KiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpldmFsdWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkRp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZh
bEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0VDTUFNb2RlLmNwcDogQ29waWVkIGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAuCisgICAg
ICAgIChKU0M6OkVDTUFNb2RlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0VDTUFN
b2RlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
RmxhZ3MuaC4KKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmZyb21CeXRlKToKKyAgICAgICAgKEpT
Qzo6RUNNQU1vZGU6OnN0cmljdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpzbG9wcHkpOgor
ICAgICAgICAoSlNDOjpFQ01BTW9kZTo6aXNTdHJpY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpF
Q01BTW9kZTo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6RUNNQU1vZGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZh
bEV4ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2V0UHV0SW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OkdldFB1dEluZm86OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
R2V0UHV0SW5mby5oOgorICAgICAgICAoSlNDOjpHZXRQdXRJbmZvOjpHZXRQdXRJbmZvKToKKyAg
ICAgICAgKEpTQzo6R2V0UHV0SW5mbzo6ZWNtYU1vZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAg
ICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5k
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFs
RXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9J
bmRpcmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpK
U0NlbGw6OnRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6c2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cCk6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OmNhbGxlckdldHRlcik6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFdmFs
KToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvR2V0dGVyKToKKyAgICAgICAgKEpTQzo6
Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZVNsb3cpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OnRvVGhpcyk6CisgICAgICAgICog
cnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVy
YWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0Q2FsbGVyU3RyaWN0bmVzc0Z1bmN0b3I6Om9wZXJhdG9yKCkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpOdWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJl
dHVyblVuZGVmaW5lZCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1
bmNJc1Byb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0
dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5j
UHJvcGVydHlJc0VudW1lcmFibGUpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb0xv
Y2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAg
ICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
Z3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpp
c0Fycm93RnVuY3Rpb25Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0
YWJsZTo6aXNJblN0cmljdENvbnRleHQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5RW50cnk6OnB1dCk6
CisKIDIwMjAtMDQtMDYgIFJpY2sgV2FsZHJvbiAgPHdhbGRyb24ucmlja0BnbWFpbC5jb20+IGFu
ZCBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1v
dmUgdW5uZWNlc3NhcnkgVGVzdDI2MiBoYXJuZXNzIGZpbGUgYW5kIGltcGxlbWVudCAkMjYyLklz
SFRNTEREQQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAzMTA3NTViYjdiZThjYmI0ZjI1MzQyNTM1MjBhYzIyMjgw
ZGZhMWYuLjU3YjhiYzZiYzhiNjQ5Zjc0NTcwZjZlOGM0YzhmNjQ0Mzc1YjkwNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNC0wNiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxv
QGFwcGxlLmNvbT4KKworICAgICAgICBOb3QgdXNpbmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNz
RGVjbGFyYXRpb24gc3RhdGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDU1NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IEpT
VGVzdHMvIHN0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcworCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURMT3BlcmF0aW9uPEpTRE9NV2luZG93Pjo6Y2FzdCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9u
PEpTRXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDIw
LTA0LTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICAnY3Vy
cmVudGNvbG9yJyBkb2Vzbid0IG5lZWQgc2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRp
ZXMgbWFya2luZyBhbnltb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2Fs
bGJhY2tGdW5jdGlvbi5oCmluZGV4IGM5OTEwNTNhMTkxOWY4ZTFiYTRlYTk4Yjc3ZDhlMWE5ZDFi
N2RkZTguLmQ1NjViNDEyODllN2Y2ODYxZjhmOWY5YjdlYWRiMDkxNjk2ZWE0NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCkBAIC00OCw3
ICs0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlv
bjo6Y2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xv
YmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFt
ZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2Fz
dDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
Tm90U3RyaWN0TW9kZSkpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanND
YXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CiAKICAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRp
Y19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpOwogICAgIFZlY3RvcjxKU1Zh
bHVlUmVmLCAxNj4gYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAwMmNlZGM3OTY2YmVjMGE1M2E5
YmMwMmE5ZjM3ODNlNzlmNzMyZTJmLi4wM2ExOGRjOTAzNmI2Njc4NDE5MmVmNTBjOTIwNDVlZDM1
MzhiNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTIzLDcgKzUyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsCiAKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCk7
CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxsRnJhbWUtPmpzQ2FsbGVl
KCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3Qq
PihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1v
ZGUpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVj
dCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnNsb3BweSgpKSkpOwogICAgIAogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0ganNDYXN0
PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+KHRvSlMoZnVuY3Rpb25SZWYpKS0+Y2xhc3NSZWYo
KTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlm
IChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBqc0NsYXNz
LT5jYWxsQXNGdW5jdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCmluZGV4IDIyMmE0ZWUyMGRjYmFkYjA3YjdiYzY1NGRjZjhhYTgwY2YyYzEyYmUuLjI0
MDE3OTE2ZTc1MTc2YjgzZTM1ZDllZDAyODgyODMyNTIxNmM3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBKU09iamVj
dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoSlNDb250ZXh0UmVmIGN0eCkKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAK
LSAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPnRvVGhpcyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9k
ZSkpKTsKKyAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnNsb3BweSgpKSkpOwogfQogCiBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91
cChKU0NvbnRleHRSZWYgY3R4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IGI1N2EwMjc2YjNiM2Q5NTViMmJmYTI1OWNhNGEzYjdlYTA5MTUwYTMuLjk5MGFlOTkwODZkZTkw
YzZkMTc1ZGRhYWY1YjZlYzU2YjE1NDgxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTgyMiw2ICs4MjIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5oCiAgICAgcnVudGltZS9E
aXNhbGxvd1ZNUmVlbnRyeS5oCiAgICAgcnVudGltZS9EdW1wQ29udGV4dC5oCisgICAgcnVudGlt
ZS9FQ01BTW9kZS5oCiAgICAgcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5oCiAgICAgcnVu
dGltZS9FbnVtZXJhdGlvbk1vZGUuaAogICAgIHJ1bnRpbWUvRXJyb3IuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAwNjUzOTVhZDBmZmJiYzlmYTRjOWQwZjUzOTgyNzAzYzE5ZGY5
ODUwLi44M2U0ODYyNzQwNDJiOTQzMmZjYTA1NTA1ZGE2NjE5Y2JhZGZlMzNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzk4LDYgKzc5OCw3IEBACiAJCTE0NTBGQTFDMjM1N0JE
QkUwMDkzQ0Q0RCAvKiBXYXNtRnVuY3Rpb25Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QzVBRDZCMjJGMzNGQzAwMEYxRkI4MyAvKiBX
YXNtRnVuY3Rpb25Db2RlQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxNDUwRkExRjIzNTdCRUM5MDA5M0NENEQgLyogV2FzbUxMSW50VGll
clVwQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ1MEZBMUUyMzU3QkVDNDAwOTNDRDREIC8qIFdhc21MTEludFRpZXJVcENvdW50ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDU3MjI4
NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ1NzIyODUxNDM3RTE0MDAwNUZERTI2IC8qIFN0
cm9uZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkxNDVGRjJDODI0M0JCOUQ2MDA1NjlFNzEgLyogRUNNQU1vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NUZGMkM3MjQzQkI5OUEwMDU2
OUU3MSAvKiBFQ01BTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0NkMzODRCMjE3N0FDREYwMDc5RjZEOSAvKiBVbmxpbmtlZE1ldGFkYXRh
VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MkQ1MkJFMjE3NjI5NTgwMDJEQjA4NiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDcxNDgzMDIwRDMy
M0QzMDA5MEU2MzAgLyogSlNXcmFwcGVyTWFwVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDcxNDgyRjIwRDMyMzY1MDA5MEU2MzAgLyogSlNX
cmFwcGVyTWFwVGVzdHMubW0gKi87IH07CiAJCTE0NzM0MUNDMURDMDJENzIwMEFBMjlCQSAvKiBF
eGVjdXRhYmxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQ3MzQxQ0IxREMwMkQ3MjAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzMzksNiArMzM0
MCw4IEBACiAJCTE0NTM0ODU3MjI5MTczN0YwMEIxQzJFQiAvKiB0ZXN0YXBpLmVudGl0bGVtZW50
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQucGxpc3QuZW50aXRsZW1lbnRzOyBwYXRoID0gdGVzdGFwaS5lbnRp
dGxlbWVudHM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NTcyMjg1MTQzN0UxNDAw
MDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cm9uZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ1QzUw
N0YwRDlERjYzQjAwODhGNkI5IC8qIENhbGxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhbGxEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NUZG
MkM2MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
Q01BTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NUZGMkM3MjQzQkI5
OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFQ01BTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYgLyogSlNT
dHJpbmdSZWZDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdS
ZWZDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIzNzBCNjZBOTQ0MDBF
NTVGMTYgLyogSlNTdHJpbmdSZWZDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTdHJpbmdSZWZDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zZXJ2YXRpdmVSb290cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTE0LDYgKzcxMTcsOCBAQAogCQkJCUUzRkMy
NTExMjI1NkVDRjQwMDU4MzUxOCAvKiBEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLywK
IAkJCQlBNzA0NDdFQjE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuY3BwICovLAogCQkJ
CUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovLAorCQkJCTE0NUZG
MkM2MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5jcHAgKi8sCisJCQkJMTQ1RkYyQzcyNDNC
Qjk5QTAwNTY5RTcxIC8qIEVDTUFNb2RlLmggKi8sCiAJCQkJRkUzMThGREQxQ0FDOEM1MzAwREZD
QzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwICovLAogCQkJCUZFMzE4
RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgg
Ki8sCiAJCQkJRkUzNEVFMjIyNDM5OEI4NTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJl
LmNwcCAqLywKQEAgLTk0MjksNiArOTQzNCw3IEBACiAJCQkJRTM1Q0ExNTQxREJDM0E1QzAwRjgz
NTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM1MDcwOEExREM0
OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcw
NDQ3RUUxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxNDVGRjJDODI0M0JCOUQ2MDA1NjlFNzEgLyogRUNNQU1vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVu
Y3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyog
RWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzNEVFMjEyNDM5
OEFBRTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3MTZmZTQ3OWFkNDlkZWI3YjIxZThlNjFhNzA4
Y2Y1NDhjYWQwMGU3Li4wOGZmOGZlN2JiMWM3YzQ5ZTE4NzA4ZTNkNTkxMWE5MTI1ZDIxNmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC03NjUsNiArNzY1LDcgQEAgcnVudGltZS9E
aXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCiBy
dW50aW1lL0RvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvRHVtcENvbnRl
eHQuY3BwCitydW50aW1lL0VDTUFNb2RlLmNwcAogcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVy
bmFsRnVuY3Rpb25zLmNwcAogcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5jcHAKIHJ1bnRp
bWUvRXJyb3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlRHVtcGVyLmNwcAppbmRleCBkMzcyMzZmNDBhYTg5OTEyN2M3NDllYmRiOTg2OTZjNzc4NWQ4
Y2IzLi5kOTEwNjJjZjdhMzU0ZjA2YTJjNjJmNDRmNDE4MzQ0OTVkNjgzMTc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTM3
LDcgKzM3LDYgQEAKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCi0jaW5jbHVkZSAi
UHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUg
IlRvVGhpc1N0YXR1cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA5ZjJhYmEzOWYyY2U3MDhkMzEzYjhkOTQw
Y2Y5NmZiYTQyZmNjOTRlLi5mZGFhYTY5NDVmZjBlOWQ1MTUxYWFhODlhN2E5OTIwN2FjMWMyOWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICAgICAgICAgICAgICBzY29w
ZSwgLy8gc2NvcGUKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgs
IC8vIGlkZW50aWZpZXIKICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZCwgLy8gdmFsdWUKLSAg
ICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxD
bG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgLy8gaW5m
bworICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBM
b2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIG1f
Ynl0ZWNvZGVHZW5lcmF0b3IuZWNtYU1vZGUoKSksIC8vIGluZm8KICAgICAgICAgICAgICAgICAg
ICAgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4IH0pLCAvLyBzeW1ib2wgdGFibGUgY29u
c3RhbnQgaW5kZXgKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZz
ZXQoKSAvLyBzY29wZSBvZmZzZXQKICAgICAgICAgICAgICAgICApOwpAQCAtMjY5LDcgKzI2OSw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgICAgICAgICAg
ICAgICAgIG9wZXJhbmQsIC8vIGRzdAogICAgICAgICAgICAgICAgICAgICBzY29wZSwgLy8gc2Nv
cGUKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50
aWZpZXIKLSAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3Vu
ZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
KSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5v
dEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6
YXRpb24sIG1fYnl0ZWNvZGVHZW5lcmF0b3IuZWNtYU1vZGUoKSksIC8vIGluZm8KICAgICAgICAg
ICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKICAgICAgICAgICAgICAgICAgICAg
c3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKICAgICAgICAgICAg
ICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0NjgwYzEyNmEwZjcyNzUzNmYxYmUzN2M0ZS4uMWY1NjY5
NGNlNzAwZmRlYmUxZmRjYmQwNDRmMmE4N2QwODhmN2VhMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0yNyw2ICsyNyw3IEBAIHR5cGVz
IFsKICAgICA6QmFzaWNCbG9ja0xvY2F0aW9uLAogICAgIDpCb3VuZExhYmVsLAogICAgIDpEZWJ1
Z0hvb2tUeXBlLAorICAgIDpFQ01BTW9kZSwKICAgICA6RXJyb3JUeXBlLAogICAgIDpHZXRCeUlk
TW9kZSwKICAgICA6R2V0QnlJZE1vZGVNZXRhZGF0YSwKQEAgLTE3NCw2ICsxNzUsNyBAQCBvcCA6
YXJndW1lbnRfY291bnQsCiBvcCA6dG9fdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIHNyY0Rz
dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQs
CkBAIC01MjIsNiArNTI0LDcgQEAgb3AgOnB1dF9ieV9pZF93aXRoX3RoaXMsCiAgICAgICAgIHRo
aXNWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAg
ICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9CiAKIG9wIDpkZWxfYnlfaWQsCkBAIC01MjksNiArNTMyLDcgQEAgb3AgOmRlbF9i
eV9pZCwKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJhc2U6IFZpcnR1
YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAorICAgICAgICBlY21hTW9k
ZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6Z2V0X2J5X3ZhbCwKQEAgLTU0OCw2ICs1NTIsNyBA
QCBvcCA6cHV0X2J5X3ZhbCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAg
ICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lz
dGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKQEAgLTU1OSw2ICs1NjQsNyBA
QCBvcCA6cHV0X2J5X3ZhbF93aXRoX3RoaXMsCiAgICAgICAgIHRoaXNWYWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1
ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQog
CiBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCkBAIC01NjYsNiArNTcyLDcgQEAgb3AgOnB1dF9ieV92
YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3Bl
cnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLApAQCAtNTc2LDYgKzU4Myw3IEBAIG9wIDpk
ZWxfYnlfdmFsLAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgYmFzZTog
VmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAg
ICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfQogCiBvcCA6cHV0X2dldHRlcl9ieV9pZCwK
QEAgLTc3OCw2ICs3ODYsNyBAQCBvcCA6Y2FsbF9ldmFsLAogICAgICAgICBjYWxsZWU6IFZpcnR1
YWxSZWdpc3RlciwKICAgICAgICAgYXJnYzogdW5zaWduZWQsCiAgICAgICAgIGFyZ3Y6IHVuc2ln
bmVkLAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhMWFkMzc2NjlhZjEyMDAz
MDIzNTE1MDJlMzRjOTBjMjQxODg0ZTc2Li42MGI0MGNmZGE3YjNlNjVjN2Y3YWZhZDdiMWIyZjMw
MDU0YzI4OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQXNzdW1pbmdKSVRU
eXBlKFByaW50U3RyZWFtJiBvdXQsIEpJVFR5cGUgaml0VHlwZSkgY29uc3QKICAgICAgICAgb3V0
LnByaW50KCIgKE5ldmVyRlRMT3B0aW1pemUpIik7CiAgICAgaWYgKG93bmVyRXhlY3V0YWJsZSgp
LT5kaWRUcnlUb0VudGVySW5Mb29wKCkpCiAgICAgICAgIG91dC5wcmludCgiIChEaWRUcnlUb0Vu
dGVySW5Mb29wKSIpOwotICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkp
CisgICAgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAg
ICBvdXQucHJpbnQoIiAoU3RyaWN0TW9kZSkiKTsKICAgICBpZiAobV9kaWRGYWlsSklUQ29tcGls
YXRpb24pCiAgICAgICAgIG91dC5wcmludCgiIChKSVRGYWlsKSIpOwpAQCAtNjE5LDcgKzYxOSw3
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICAgICAgICAgIEFTU0VSVCghaXNJbml0
aWFsaXphdGlvbihieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsK
ICAgICAgICAgICAgIGlmIChieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBM
b2NhbENsb3N1cmVWYXIpIHsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8g
PSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJl
VmFyLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9n
ZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5m
by5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCkBAIC02MjcsOSArNjI3
LDkgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9
IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUu
bV9sb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dElu
Zm8ucmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAot
ICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5t
X2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZv
LmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
byA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5
cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUu
bV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gTW9k
dWxlVmFyKQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8u
cmVzb2x2ZU1vZGUoKSwgQ2xvc3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxp
emF0aW9uTW9kZSgpLCBieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAg
ICAgICBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50
eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAg
ICAgICAgICBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCkBAIC02NjEsNyArNjYxLDcgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFi
c3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUubV9zeW1ib2xUYWJs
ZU9yU2NvcGVEZXB0aC5zY29wZURlcHRoKCksIHNjb3BlLCBpZGVudCwgUHV0LCBieXRlY29kZS5t
X2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxp
emF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJ
bmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBieXRlY29k
ZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpLCBieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBpZiAo
b3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IEds
b2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBl
bHNlIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBDbG9zdXJlVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCmluZGV4IGQzYjA2YTg5MWFlZmM2Yzc5NGQ3NWUxYzBkMDA0NmUxOTIzOGU4MjYu
LmUxMTEzOWQ1YTM4NDM1YTA2ZGUyNjc3NWZmZjMxMDAxNWVjYzQ0YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIyMiw5ICsyMjIsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGR1bXBNYXRoSUNTdGF0cygpOwogCi0gICAgYm9vbCBpc1N0cmljdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aXNTdHJpY3RNb2RlKCk7IH0KICAg
ICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aXND
b25zdHJ1Y3RvcigpOyB9Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBp
c1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAgICAgQ29kZVR5
cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+Y29kZVR5cGUoKTsg
fQogCiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkQ29kZS0+c2NyaXB0TW9kZSgpOyB9CkBAIC0yMzIsMTEgKzIzMCw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0luc3RhbGxlZFZNVHJhcEJyZWFrcG9pbnRzKCkgY29uc3Q7CiAgICAg
Ym9vbCBpbnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoKTsKIAotICAgIGlubGluZSBib29sIGlzS25v
d25Ob3RJbW1lZGlhdGUoVmlydHVhbFJlZ2lzdGVyIHJlZykKKyAgICBpbmxpbmUgYm9vbCBpc0tu
b3duQ2VsbChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgIHsKLSAgICAgICAgaWYgKHJlZyA9PSB0
aGlzUmVnaXN0ZXIoKSAmJiAhaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLQogICAgICAgICBpZiAocmVnLmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJldHVybiBn
ZXRDb25zdGFudChyZWcpLmlzQ2VsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDc3ZjE5MjkwNjkwODMzNmViZDAwOGRjZjBj
MzZmNGFjNmU5ZTc1ZDQuLjQ5ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcxOTkwYmU5MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5m
by5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
CkBAIC0zNiw5ICszNiw4IEBAIGVudW0gY2xhc3MgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
OiB1aW50OF90IHsgTm8sIFllcyB9OwogLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2Rl
cyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQu
CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1
Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJv
b2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBz
Y3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXND
b25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXND
bGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAgICAgIDog
bV91c2VzRXZhbCh1c2VzRXZhbCkKLSAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1v
ZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCiAgICAgICAgICwg
bV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0
cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKQEAgLTU3
LDcgKzU2LDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICB9CiAKICAgICBib29sIHVz
ZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtNzIsNyArNzAs
NiBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
dXNlc0V2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNp
Z25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rp
b24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDU3Nzg5YmMyYzY2OWY3Y2FkODg4M2RlY2YzNTEz
Mjc4NDQ5YzgyNGYuLmY0MzA5ZDE4NThjZDYyYzMwYTllZDEyYWE1ZTg1YTA0ZDBlNjIwYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1
Y3QgRml0czsKIAogLy8gSW1wbGljaXQgY29udmVyc2lvbiBmb3IgdHlwZXMgb2YgdGhlIHNhbWUg
c2l6ZQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgT3Bjb2RlU2l6ZSBzaXplPgotc3RydWN0IEZpdHM8
VCwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZSwgc3RkOjp0cnVlX3R5
cGU+PiB7CitzdHJ1Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihUKSA9
PSBzaXplICYmIHN0ZDo6aXNfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBl
Pj4gewogICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1
bnNpZ25lZFR5cGU7CiAKICAgICBzdGF0aWMgYm9vbCBjaGVjayhUKSB7IHJldHVybiB0cnVlOyB9
CkBAIC0xNzQsMTggKzE3NCwyMCBAQCBzdHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBzaXplLCBzdGQ6
OmVuYWJsZV9pZl90PHNpemUgIT0gT3Bjb2RlU2l6ZTo6V2lkZTMyLCBzdGQ6OgogICAgIC8vIDEz
IFJlc29sdmUgVHlwZXMKICAgICAvLyAzIEluaXRpYWxpemF0aW9uIE1vZGVzCiAgICAgLy8gMiBS
ZXNvbHZlIE1vZGVzCisgICAgLy8gMSBiaXQgaXNTdHJpY3QgZmxhZwogICAgIC8vCiAgICAgLy8g
VHJ5IHRvIGVuY29kZSBlbmNvZGUgYXMKICAgICAvLwotICAgIC8vICAgICAgICAgICBpbml0aWFs
aXphdGlvbiBtb2RlCi0gICAgLy8gICAgICAgICAgICAgICAgICAgIHYKLSAgICAvLyBmcmVlIGJp
dC0+IDB8MDAwMHwwMHwwCi0gICAgLy8gICAgICAgICAgICAgICAgIF4gICAgXgotICAgIC8vICAg
IHJlc29sdmUgIHR5cGUgICByZXNvbHZlIG1vZGUKKyAgICAvLyAgICAgICAgICAgIGluaXRpYWxp
emF0aW9uIG1vZGUKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAvLyBpc1N0cmlj
dCAtPiAwfDAwMDB8MDB8MAorICAgIC8vICAgICAgICAgICAgICAgICAgXiAgICBeCisgICAgLy8g
ICAgICByZXNvbHZlICB0eXBlICAgIHJlc29sdmUgbW9kZQogICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfcmVzb2x2ZVR5cGVNYXggPSAxIDw8IDQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
c19pbml0aWFsaXphdGlvbk1vZGVNYXggPSAxIDw8IDI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgc19yZXNvbHZlTW9kZU1heCA9IDEgPDwgMTsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IHNfaXNTdHJpY3RCaXQgPSAxIDw8IDc7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19yZXNv
bHZlVHlwZUJpdHMgPSAoc19yZXNvbHZlVHlwZU1heCAtIDEpIDw8IDM7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgc19pbml0aWFsaXphdGlvbk1vZGVCaXRzID0gKHNfaW5pdGlhbGl6YXRpb25N
b2RlTWF4IC0gMSkgPDwgMTsKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3Jlc29sdmVNb2Rl
Qml0cyA9IChzX3Jlc29sdmVNb2RlTWF4IC0gMSk7CkBAIC0yMDYsNyArMjA4LDggQEAgc3RydWN0
IEZpdHM8R2V0UHV0SW5mbywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplICE9IE9wY29kZVNp
emU6OldpZGUzMiwgc3RkOjoKICAgICAgICAgYXV0byByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGdwaS5yZXNvbHZlVHlwZSgpKTsKICAgICAgICAgYXV0byBpbml0aWFsaXphdGlv
bk1vZGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkuaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwog
ICAgICAgICBhdXRvIHJlc29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLnJlc29s
dmVNb2RlKCkpOwotICAgICAgICByZXR1cm4gKHJlc29sdmVUeXBlIDw8IDMpIHwgKGluaXRpYWxp
emF0aW9uTW9kZSA8PCAxKSB8IHJlc29sdmVNb2RlOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7CisgICAgICAg
IHJldHVybiAoaXNTdHJpY3QgPDwgNykgfCAocmVzb2x2ZVR5cGUgPDwgMykgfCAoaW5pdGlhbGl6
YXRpb25Nb2RlIDw8IDEpIHwgcmVzb2x2ZU1vZGU7CiAgICAgfQogCiAgICAgc3RhdGljIEdldFB1
dEluZm8gY29udmVydChUYXJnZXRUeXBlIGdwaSkKQEAgLTIxNCwxMCArMjE3LDQ1IEBAIHN0cnVj
dCBGaXRzPEdldFB1dEluZm8sIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZSAhPSBPcGNvZGVT
aXplOjpXaWRlMzIsIHN0ZDo6CiAgICAgICAgIGF1dG8gcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2Fz
dDxSZXNvbHZlVHlwZT4oKGdwaSAmIHNfcmVzb2x2ZVR5cGVCaXRzKSA+PiAzKTsKICAgICAgICAg
YXV0byBpbml0aWFsaXphdGlvbk1vZGUgPSBzdGF0aWNfY2FzdDxJbml0aWFsaXphdGlvbk1vZGU+
KChncGkgJiBzX2luaXRpYWxpemF0aW9uTW9kZUJpdHMpID4+IDEpOwogICAgICAgICBhdXRvIHJl
c29sdmVNb2RlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU1vZGU+KGdwaSAmIHNfcmVzb2x2ZU1vZGVC
aXRzKTsKLSAgICAgICAgcmV0dXJuIEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBl
LCBpbml0aWFsaXphdGlvbk1vZGUpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nh
c3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7CisgICAgICAgIHJldHVybiBHZXRQdXRJbmZv
KHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSwgaW5pdGlhbGl6YXRpb25Nb2RlLCBpc1N0cmljdCA/
IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSk7CiAgICAgfQogfTsKIAor
dGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXpl
PiB7CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVu
c2lnbmVkVHlwZTsKKworICAgIC8vIFB1dEJ5SWRGbGFncyBpcyBqdXN0IHR3byBib29sZWFuIHZh
bHVlcyBlbmNvZGVkIGFzCisgICAgLy8KKyAgICAvLyAgICAgICAgaXNTdHJpY3QKKyAgICAvLyAg
ICAgICAgICAgdgorICAgIC8vICAgIDAwMDAwMHwwfDAKKyAgICAvLyAgICAgICAgICAgICBeCisg
ICAgLy8gICAgICAgICBpc0RpcmVjdAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNEaXJl
Y3RCaXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAyOwor
CisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlJZEZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIFRhcmdldFR5cGUgY29udmVydChQdXRCeUlk
RmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7CisgICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAgICAgICBy
ZXR1cm4gKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7CisgICAgfQorCisgICAgc3RhdGljIFB1
dEJ5SWRGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsKKyAgICAgICAgYXV0byBp
c0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOworICAgICAg
ICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7
CisgICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICAgICAgcmV0dXJuIGlzRGlyZWN0ID8gUHV0QnlJZEZs
YWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNtYU1v
ZGUpOworICAgIH0KK307CiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNpemU+CiBz
dHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBzaXplICYm
IHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMgRml0czxz
dGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9IEZpdHM8
c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CkBAIC0zMjcsNCArMzY1LDI5IEBAIHN0
cnVjdCBGaXRzPEdlbmVyaWNCb3VuZExhYmVsPEdlbmVyYXRvclRyYWl0cz4sIHNpemU+IDogcHVi
bGljIEZpdHM8aW50LCBzaXplPiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBz
aXplPgorc3RydWN0IEZpdHM8RUNNQU1vZGUsIHNpemU+IDogcHVibGljIEZpdHM8dWludDhfdCwg
c2l6ZT4geworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgLy8g
YSBwYWlyIG9mIChSZXN1bHRUeXBlOjpUeXBlLCBSZXN1bHRUeXBlOjpUeXBlKSAtIHRyeSB0byBm
aXQgZWFjaCB0eXBlIGludG8gNCBiaXRzCisgICAgLy8gYWRkaXRpb25hbGx5LCBlbmNvZGUgdW5r
bm93biB0eXBlcyBhcyAwIHJhdGhlciB0aGFuIHRoZSB8IG9mIGFsbCB0eXBlcworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgdHlwZVdpZHRoID0gNDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1heFR5cGUgPSAoMSA8PCB0eXBlV2lkdGgpIC0gMTsKKworICAgIHN0YXRpYyBi
b29sIGNoZWNrKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6
OmNoZWNrKGVjbWFNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBC
YXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAg
ICByZXR1cm4gQmFzZTo6Y29udmVydChlY21hTW9kZS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgRUNNQU1vZGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGVjbWFNb2Rl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShCYXNlOjpjb252ZXJ0
KGVjbWFNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCmluZGV4IDNl
M2U2NWY1OWM1MTMwMWViMmY0NGIyZDIzMWVmY2VjYTkxZWNjZjEuLjc5OTFhYzJhOGU2N2M4ODBl
YjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgSW5s
aW5lQ2FsbEZyYW1lOjpkdW1wQnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoYnJp
ZWZGdW5jdGlvbkluZm9ybWF0aW9uKCksICI6PCIsIFJhd1BvaW50ZXIoYmFzZWxpbmVDb2RlQmxv
Y2suZ2V0KCkpKTsKLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGlzSW5TdHJpY3RD
b250ZXh0KCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2RlKSIpOwogICAgIG91dC5w
cmludCgiLCAiLCBkaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRleCgpLCAiLCAiLCBzdGF0aWNfY2Fz
dDxLaW5kPihraW5kKSk7CiAgICAgaWYgKGlzQ2xvc3VyZUNhbGwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKaW5kZXggZTI5ZjM4NGQxZDA2
NzJmZWVhMDcxMjA1YmNhYTI4MWE2NDliMjIyOS4uNzVmOWJiMWE4NDY4YTYxZDdiZTk2YzNhYzli
OTFlOTUzZWEzYmY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVDYWxsRnJhbWUuaApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJh
bWUgewogICAgIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0
YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZz
ZXQoKTsgfQogICAgIHB0cmRpZmZfdCByZXR1cm5QQ09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0
YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQo
KTsgfQogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBiYXNlbGluZUNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0lu
U3RyaWN0Q29udGV4dCgpOyB9CiAKICAgICB2b2lkIGR1bXBCcmllZkZ1bmN0aW9uSW5mb3JtYXRp
b24oUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAK
aW5kZXggYzhhNGI2MGZhNTg4YjAxN2Q3OWVjZjI3MGQ5N2FiYjY4YTI0ODI0OS4uNjY1MDBlNjI3
NmJjNDY5N2JlMGVlYTFkODgxNDlmZjFhNTAxNGQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKQEAgLTM2LDggKzM2LDEwIEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQ
dXRCeUlkRmxhZ3MgZmxhZ3MpIHsKICAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKLSAgICBp
ZiAoZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpCisgICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCiAg
ICAgICAgIG91dC5wcmludChjb21tYSwgIklzRGlyZWN0Iik7CisgICAgaWYgKGZsYWdzLmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiU3RyaWN0Iik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRGbGFncy5oCmluZGV4IDVjMDQ5MjgxMGUxYzkzZmY2MTUzZTY1NmVmNDRjNzdlMmZm
OTc0OGUuLjgxZDQ2NzE4YTVmNzU5OTlhY2NlOWMxMGZmNDcxNzU2MjY2ODNlMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTcgKzI1LDM3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRUNNQU1vZGUuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVJRFRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIFB1dEJ5SWRGbGFn
cyA6IGludDMyX3QgewotICAgIFB1dEJ5SWROb25lID0gMCwKK2NsYXNzIFB1dEJ5SWRGbGFncyB7
CitwdWJsaWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeUlkRmxhZ3MgY3JlYXRlKEVDTUFN
b2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRGbGFncyhmYWxzZSwg
ZWNtYU1vZGUpOworICAgIH0KIAotICAgIC8vIFRoaXMgZmxhZyBpbmRpY2F0ZXMgdGhhdCB0aGUg
cHV0X2J5X2lkIGlzIGRpcmVjdC4gVGhhdCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0
eSB3aXRob3V0Ci0gICAgLy8gY2hlY2tpbmcgaWYgdGhlIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBz
ZXR0ZXIuCi0gICAgUHV0QnlJZElzRGlyZWN0ID0gMHgxLAotICAgIFB1dEJ5SWRQZXJzaXN0ZW50
RmxhZ3NNYXNrID0gMHgxLAorICAgIC8vIEEgZGlyZWN0IHB1dF9ieV9pZCBtZWFucyB0aGF0IHdl
IHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlmIHRoZQorICAgIC8vIHByb3Rv
dHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeUlkRmxh
Z3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFB1dEJ5SWRGbGFncyh0cnVlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgYm9vbCBpc0RpcmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAgICBFQ01BTW9kZSBlY21hTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIg
UHV0QnlJZEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6
IG1faXNEaXJlY3QoaXNEaXJlY3QpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAg
ICB7CisgICAgfQorCisgICAgYm9vbCBtX2lzRGlyZWN0OworICAgIEVDTUFNb2RlIG1fZWNtYU1v
ZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCAyY2JjYmNhYzkyMDRkNWQzMDdlMmNi
NDgzZDNlZjA4YTNhNzFlMTRkLi5mMWVkYjM4MDdlYjAyMWU0NDQ5Y2NkNjEwNjlhZjJhYjg2Mzkw
N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24pOwogICAgIAogICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKLSAgICBpZiAoIShieXRlY29kZS5tX2Zs
YWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3MuaXNE
aXJlY3QoKSkpIHsKICAgICAgICAgY29uZGl0aW9uU2V0ID0KICAgICAgICAgICAgIGdlbmVyYXRl
Q29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSgKICAgICAgICAgICAg
ICAgICB2bSwgcHJvZmlsZWRCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHN0cnVjdHVyZSwgdWlkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IDU4OTFmMmE1YzI1NzdiOTljNTI5MjJkM2RmZGY1OTZiYTJmZTU2YmYuLjU0
ZGE1N2RhYjY5Y2EyNjFhZWZkY2ViOTM4ZmZhMGY0ZmYwMzc5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNTcs
NyArNTcsNiBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRDb2RlQmxvY2s6OnNfaW5mbyA9IHsg
IlVubGlua2VkQ29kZUJsb2NrIiwgbnVsbHB0ciwgbnVsbAogVW5saW5rZWRDb2RlQmxvY2s6OlVu
bGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNv
ZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQog
ICAgICwgbV91c2VzRXZhbChpbmZvLnVzZXNFdmFsKCkpCi0gICAgLCBtX2lzU3RyaWN0TW9kZShp
bmZvLmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGluZm8uaXNDb25zdHJ1
Y3RvcigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1faXNC
dWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBkZDIxN2I3
ZmQ0ZmVmNTZkZjhkODFjMzVjMjgxMzNkNWM4N2ExYTljLi4wMGRjNjE2MzM1ZmQzMWIwNDMyNTFl
MzQ0MDBlNTdkZWY1MzE1ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIzLDcgKzEyMyw2IEBAIHB1YmxpYzoKICAg
ICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKICAgICBib29sIGlzQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KLSAgICBib29sIGlz
U3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1
c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KICAgICBib29sIGlz
QXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShw
YXJzZU1vZGUoKSk7IH0KQEAgLTMzNSw3ICszMzQsNiBAQCBwcml2YXRlOgogICAgIFZpcnR1YWxS
ZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsK
LSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0
cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAg
ICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgK
aW5kZXggMjEzYTNhODMyZDdlYWFhOWI5NzEwZjAxYTg2NGRhOTM1YmRkN2VhNS4uMmViOTg0YzFi
MDVhNDVlMGFhNTIwZTFmZDM3OGFkOWUyZmM5MzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgK
QEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICBKU1Bh
cnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5z
Y3JpcHRNb2RlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcigpOyB9Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KICAgICBib29sIHVzZXNFdmFsKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgp
OyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNB
cnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGNkOGJlYmY4
ZDM2NDU0NWQxODJkNzljYmY4MDY4MDY3MWY0MTE5N2YuLjBiZjMwMjhkODEwYzYxNmViMDdhZGE2
NmM1N2RhOTI5OWUxYmJjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNzEsMTAg
KzcxLDExIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0
YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAKLSAgICBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
OjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNF
dmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNv
bnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwg
cGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFs
Q29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwor
ICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhmdW5jdGlv
bi0+dXNlc0V2YWwoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBz
Y3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRh
YmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0
aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogCiAgICAgVmFyaWFibGVFbnZp
cm9ubWVudCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IGV4ZWN1dGFibGUtPnBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
dm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25Nb2RlLCAm
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gZXhlY3V0
YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2Rl
OjpzbG9wcHkoKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwg
ZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsICZwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGEwMWQ0N2Q3
ZGMwYmMxYjQ4MDE2NWJiY2QyNjZkMTFhNmMyMzJiNDUuLjYyODQxYjU2N2QwZTFmODg0ZWVhZmU3
ZjYyMGVjMWUwODkzMWM3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yOTcsMTQgKzI5NywyMSBA
QCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIHJldHVybiBQ
YXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5l
cmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1h
a2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2Rl
QmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkK
ICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1f
c2NvcGVOb2RlKHByb2dyYW1Ob2RlKQogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0
aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29kZSkKICAgICAs
IG1fdm0odm0pCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9leHByZXNz
aW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCisgICAg
LCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxz
ZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9ncmFtTm9kZS0+dXNlc0Fycm93RnVu
Y3Rpb24oKSB8fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBh
cmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCkBAIC0zMzgsMTQgKzM0NSwxNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSog
cHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5l
cmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1h
a2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2Rl
QmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkK
ICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1f
c2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKICAgICAsIG1fY29kZVR5cGUoRnVuY3Rpb25Db2RlKQog
ICAgICwgbV92bSh2bSkKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBmbGFnCisgICAg
LCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxz
ZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2NrLT5pc0J1aWx0aW5GdW5jdGlv
bigpKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYg
IWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSB0YWlsIGNhbGwgZWxpbWluYXRpb24gd2l0aCB0
aGUgcHJvZmlsZXIKICAgICAvLyBlbmFibGVkLiBUaGlzIGlzIGN1cnJlbnRseSBub3QgcG9zc2li
bGUgYmVjYXVzZSB0aGUgcHJvZmlsZXIgZXhwZWN0cwogICAgIC8vIG9wX3dpbGxfY2FsbCAvIG9w
X2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBhcmUgbm90CkBA
IC0zNTMsOCArMzYzLDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgIC8vCiAgICAgLy8g
Tm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZW5hYmxlIHRhaWwgY2FsbCBmb3IgbmFrZWQgY29u
c3RydWN0b3JzIHNpbmNlIGl0IGRvZXMgbm90IGhhdmUgc3BlY2lhbCBjb2RlIGZvciAicmV0dXJu
Ii4KLSAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlz
Q29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUgJiYgaXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVz
ZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgLCBtX2hh
c0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJy
b3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1
bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAg
LCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQog
ewogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNy
ZWF0ZShtX3ZtKTsKQEAgLTQzNyw3ICs0NDksNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5j
dGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOwogICAgICAgICBBU1NFUlQoIWlz
QXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSk7Ci0gICAgICAgIGJvb2wgaXNE
eW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNF
dmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBib29sIGlzRHluYW1p
Y1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgp
LCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1
cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJv
b2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1
cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKQEAgLTQ4Nyw3ICs0OTks
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICBtX2FyZ3VtZW50c1JlZ2lzdGVy
LT5yZWYoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRzICYmICFjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgeworICAgIGlmIChu
ZWVkc0FyZ3VtZW50cyAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSAmJiBpc1NpbXBsZVBhcmFtZXRl
ckxpc3QpIHsKICAgICAgICAgLy8gSWYgd2UgY2FwdHVyZWQgYW55IGZvcm1hbCBwYXJhbWV0ZXIg
YnkgbmFtZSwgdGhlbiB3ZSB1c2UgU2NvcGVkQXJndW1lbnRzLiBPdGhlcndpc2Ugd2UKICAgICAg
ICAgLy8gdXNlIERpcmVjdEFyZ3VtZW50cy4gV2l0aCBTY29wZWRBcmd1bWVudHMsIHdlIGxpZnQg
YWxsIG9mIG91ciBhcmd1bWVudHMgaW50byB0aGUKICAgICAgICAgLy8gYWN0aXZhdGlvbi4KQEAg
LTUxNiw3ICs1MjgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAg
ICAgICBlbnRyeS5kaXNhYmxlV2F0Y2hpbmcobV92bSk7CiAgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIGVudHJ5KTsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRo
aXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIFVJTlRfTUFYLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RG
b3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0
aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3Rl
ciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsKKyAgICAg
ICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3RlciwgVUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhp
cygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIElu
aXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIGVjbWFNb2RlKSwgU3ltYm9sVGFi
bGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxl
Q29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gVGhpcyBjcmVhdGVzIGEgc2NvcGVkIGFyZ3VtZW50cyBv
YmplY3QgYW5kIGNvcGllcyB0aGUgb3ZlcmZsb3cgYXJndW1lbnRzIGludG8gdGhlCkBAIC01NTQs
MTEgKzU2NiwxMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IEJpbmRpbmdOb2RlKj4ocGFyYW1ldGVycy5hdChpKS5maXJzdCktPmJv
dW5kUHJvcGVydHkoKTsKICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xv
Y2tpbmdOZWNlc3NhcnksIG5hbWUsIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNldCkp
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1f
bGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIGFkZENvbnN0YW50KGlkZW50KSwgdmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5mbyhUaHJvd0lm
Tm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFs
aXphdGlvbiksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVn
aXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQoKSk7Cisg
ICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3RlciwgYWRkQ29uc3RhbnQoaWRlbnQpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9z
dXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBlY21hTW9kZSks
IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBz
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQoKSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRzICYmIChjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpIHx8ICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpKSB7CisgICAgaWYgKG5lZWRzQXJn
dW1lbnRzICYmIChlY21hTW9kZS5pc1N0cmljdCgpIHx8ICFpc1NpbXBsZVBhcmFtZXRlckxpc3Qp
KSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgY2xvbmVkIGFyZ3VtZW50cyBvYmplY3QuCiAgICAg
ICAgIE9wQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOjplbWl0KHRoaXMsIG1fYXJndW1lbnRzUmVnaXN0
ZXIpOwogICAgIH0KQEAgLTcxMiw3ICs3MjQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRUb1RoaXMgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2st
PnVzZXNFdmFsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVRo
aXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlRXZhbCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRW1pdFRvVGhpcyA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKChmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkg
fHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyUHJvcGVydHko
KSkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoKGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVydHkoKSB8fCBtX3Njb3BlTm9k
ZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpKSAmJiAhZWNtYU1v
ZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBlbWl0
IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0IG1vZGUgYmVjYXVzZSB3ZQogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb252ZXJ0IHx0aGlzfCB0byBhbiBvYmplY3QsIGFu
ZCB0aGF0IG9iamVjdCBtYXkgYmUgcGFzc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0
byBhIHN0cmljdCBmdW5jdGlvbiBhcyB8dGhpc3wuIFRoaXMgaXMgb2JzZXJ2YWJsZSBiZWNhdXNl
IHRoYXQKQEAgLTgzMywxNSArODQ1LDIxIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
cHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGlt
aXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFs
aXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVC
bG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5v
ZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCiAg
ICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUo
Y29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCiAgICAgLCBt
X3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9j
b2RlVHlwZShFdmFsQ29kZSkKICAgICAsIG1fdm0odm0pCi0gICAgLCBtX3VzZXNOb25TdHJpY3RF
dmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVw
KGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKKyAgICAsIG1fdXNlc05v
blN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFlY21hTW9kZS5pc1N0cmljdCgp
KQorICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFi
bGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29u
dGV4dChldmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBldmFsTm9kZS0+dXNlc0V2YWwo
KSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlw
ZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIG1fY29kZUJsb2NrLT5z
ZXROdW1QYXJhbWV0ZXJzKDEpOwpAQCAtODkxLDE1ICs5MDksMjEgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtl
ZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGlt
aXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIs
IHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1
bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9k
dWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2Nr
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBl
Y21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2Vs
aW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5l
cmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShtb2R1bGVQ
cm9ncmFtTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAgLCBtX3ZtKHZtKQor
ICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAo
ZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogICAgICwgbV91c2VzTm9u
U3RyaWN0RXZhbChmYWxzZSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCisgICAgLCBt
X2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRl
QXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9u
KCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2VjbWFNb2RlKGVj
bWFNb2RlKQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFw
YXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIApAQCAtMjM5NSw3ICsyNDE5LDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGcm9tU2NvcGUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzY28KICAgICAgICAgICAgIGtpbGwoZHN0KSwKICAgICAgICAg
ICAgIHNjb3BlLAogICAgICAgICAgICAgYWRkQ29uc3RhbnQodmFyaWFibGUuaWRlbnQoKSksCi0g
ICAgICAgICAgICBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCB2YXJpYWJsZS5vZmZzZXQoKS5pc1Nj
b3BlKCkgPyBMb2NhbENsb3N1cmVWYXIgOiByZXNvbHZlVHlwZSgpLCBJbml0aWFsaXphdGlvbk1v
ZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwKKyAgICAgICAgICAgIEdldFB1dEluZm8ocmVzb2x2ZU1v
ZGUsIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExvY2FsQ2xvc3VyZVZhciA6IHJlc29s
dmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIGVjbWFNb2Rl
KCkpLAogICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoKCksCiAgICAgICAgICAgICB2YXJpYWJs
ZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyB2YXJpYWJsZS5vZmZzZXQoKS5zY29wZU9mZnNldCgpLm9m
ZnNldCgpIDogMCk7CiAgICAgICAgIHJldHVybiBkc3Q7CkBAIC0yNDIyLDExICsyNDQ2LDExIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29wZShSZWdpc3RlcklE
KiBzY29wZSwgY29uc3QgVmFyaWFibGUmCiAgICAgICAgIFNjb3BlT2Zmc2V0IG9mZnNldDsKICAg
ICAgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSkgewogICAgICAgICAgICAgb2Zm
c2V0ID0gdmFyaWFibGUub2Zmc2V0KCkuc2NvcGVPZmZzZXQoKTsKLSAgICAgICAgICAgIGdldFB1
dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBMb2NhbENsb3N1cmVWYXIsIGluaXRpYWxp
emF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNvbHZl
TW9kZSwgTG9jYWxDbG9zdXJlVmFyLCBpbml0aWFsaXphdGlvbk1vZGUsIGVjbWFNb2RlKCkpOwog
ICAgICAgICAgICAgc3ltYm9sVGFibGVPclNjb3BlRGVwdGggPSBTeW1ib2xUYWJsZU9yU2NvcGVE
ZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgdmFyaWFibGUuc3ltYm9sVGFibGVD
b25zdGFudEluZGV4KCkgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
cmVzb2x2ZVR5cGUoKSAhPSBMb2NhbENsb3N1cmVWYXIpOwotICAgICAgICAgICAgZ2V0UHV0SW5m
byA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBlKCksIGluaXRpYWxpemF0aW9u
TW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwg
cmVzb2x2ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlLCBlY21hTW9kZSgpKTsKICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnNj
b3BlRGVwdGgobG9jYWxTY29wZURlcHRoKCkpOwogICAgICAgICB9CiAgICAgICAgIE9wUHV0VG9T
Y29wZTo6ZW1pdCh0aGlzLCBzY29wZSwgYWRkQ29uc3RhbnQodmFyaWFibGUuaWRlbnQoKSksIHZh
bHVlLCBnZXRQdXRJbmZvLCBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwgISFvZmZzZXQgPyBvZmZz
ZXQub2Zmc2V0KCkgOiAwKTsKQEAgLTI1MDcsNyArMjUzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNlLCBwcm9w
ZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0QnlJZDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eUlu
ZGV4LCB2YWx1ZSwgUHV0QnlJZE5vbmUpOyAvLyBpcyBub3QgZGlyZWN0CisgICAgT3BQdXRCeUlk
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBQdXRCeUlkRmxhZ3M6OmNy
ZWF0ZShlY21hTW9kZSgpKSk7IC8vIGlzIG5vdCBkaXJlY3QKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKQEAgLTI1MTcsNyArMjU0MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsCiAKICAgICB1
bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQocHJvcGVydHkpOwogCi0gICAgT3BQ
dXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eUluZGV4
LCB2YWx1ZSk7CisgICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1Zh
bHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAKICAgICByZXR1cm4gdmFs
dWU7CiB9CkBAIC0yNTMwLDcgKzI1NTQsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZgogCiAg
ICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZSwgcHJvcGVydHlJbmRleCk7
CiAKLSAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBlID09IFByb3BlcnR5Tm9kZTo6S25v
d25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJv
dG8pID8gUHV0QnlJZElzRGlyZWN0IDogUHV0QnlJZE5vbmU7CisgICAgUHV0QnlJZEZsYWdzIHR5
cGUgPSAocHV0VHlwZSA9PSBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0IHx8IHByb3BlcnR5ICE9
IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSA/IFB1dEJ5SWRGbGFnczo6Y3Jl
YXRlRGlyZWN0KGVjbWFNb2RlKCkpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUoKSk7
CiAgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCB0
eXBlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTkwLDcgKzI2MTQsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JGaWVsZHMoUmVnaXN0ZXJJRCog
bmV4dEZ1bmN0aW9uKQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0
ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSkKIHsKLSAgICBPcERlbEJ5SWQ6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBhZGRD
b25zdGFudChwcm9wZXJ0eSkpOworICAgIE9wRGVsQnlJZDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2Us
IGFkZENvbnN0YW50KHByb3BlcnR5KSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0K
IApAQCAtMjYzNCwyNSArMjY1OCwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUgogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5
VmFsOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQdXRCeVZhbDo6
ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAgIHJldHVy
biB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZh
bChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsV2l0aFRoaXM6OmVt
aXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIE9wUHV0QnlW
YWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSwg
ZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQdXRCeVZhbERpcmVj
dDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwogICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
dGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5KQogewotICAgIE9wRGVsQnlWYWw6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0
eSk7CisgICAgT3BEZWxCeVZhbDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5LCBlY21h
TW9kZSgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0zMjQ2LDcgKzMyNzAsMTAgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogZnVuYywgRXhwZWMKICAgICAvLyBFbWl0IGNhbGwuCiAgICAgQVNTRVJUKGRzdCk7
CiAgICAgQVNTRVJUKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpOwotICAgIENhbGxPcDo6ZW1pdCh0
aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
KSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpKTsKKyAgICBpZiBjb25zdGV4cHIgKG9wY29k
ZUlEID09IG9wX2NhbGxfZXZhbCkKKyAgICAgICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRzdCwgZnVu
YywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1l
bnRzLnN0YWNrT2Zmc2V0KCksIGVjbWFNb2RlKCkpOworICAgIGVsc2UKKyAgICAgICAgQ2FsbE9w
OjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCkpOwogICAgIAogICAgIGlmIChl
eHBlY3RlZEZ1bmN0aW9uICE9IE5vRXhwZWN0ZWRGdW5jdGlvbikKICAgICAgICAgZW1pdExhYmVs
KGRvbmUuZ2V0KCkpOwpAQCAtMzc4OSw3ICszODE2LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwg
UmUKICAgICB1bnNpZ25lZCBudW1WYXJzID0gbV9jb2RlQmxvY2stPm51bVZhcnMoKTsKICAgICBw
dXNoTGV4aWNhbFNjb3BlSW50ZXJuYWwobmFtZVNjb3BlRW52aXJvbm1lbnQsIFREWkNoZWNrT3B0
aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0
ciwgVERaUmVxdWlyZW1lbnQ6Ok5vdFVuZGVyVERaLCBTY29wZVR5cGU6OkZ1bmN0aW9uTmFtZVNj
b3BlLCBTY29wZVJlZ2lzdGVyVHlwZTo6VmFyKTsKICAgICBBU1NFUlRfVU5VU0VEKG51bVZhcnMs
IG1fY29kZUJsb2NrLT5udW1WYXJzKCkgPT0gc3RhdGljX2Nhc3Q8aW50PihudW1WYXJzICsgMSkp
OyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNyZWF0ZWQgb25lIG5ldyAidmFyIiBmb3IgdGhlIGZ1bmN0
aW9uIG5hbWUgc2NvcGUuCi0gICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlhYmxlID0g
aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4aWNhbFZhcmlhYmxlID0g
ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgIFZhcmlhYmxlIGZ1bmN0aW9uVmFyID0gdmFyaWFi
bGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5
bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBwcm9wZXJ0eS5pbXBsKCkpLCBtX2xl
eGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgc2hvdWxk
VHJlYXRBc0xleGljYWxWYXJpYWJsZSk7CiAgICAgZW1pdFB1dFRvU2NvcGUobV9sZXhpY2FsU2Nv
cGVTdGFjay5sYXN0KCkubV9zY29wZSwgZnVuY3Rpb25WYXIsIGNhbGxlZSwgVGhyb3dJZk5vdEZv
dW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKIH0KQEAgLTM5NzIs
NyArMzk5OSw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlv
bklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKIHsKICAgICAvLyBJZiB3ZSdyZSBp
biBzdHJpY3QgbW9kZSwgd2UgYWx3YXlzIHRocm93LgogICAgIC8vIElmIHdlJ3JlIG5vdCBpbiBz
dHJpY3QgbW9kZSwgd2UgdGhyb3cgZm9yICJjb25zdCIgdmFyaWFibGVzIGJ1dCBub3QgdGhlIGZ1
bmN0aW9uIGNhbGxlZS4KLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkgfHwgdmFyaWFibGUuaXNDb25z
dCgpKSB7CisgICAgaWYgKGVjbWFNb2RlKCkuaXNTdHJpY3QoKSB8fCB2YXJpYWJsZS5pc0NvbnN0
KCkpIHsKICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKElkZW50aWZpZXI6OmZyb21TdHJpbmco
bV92bSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtNTA1NSw3ICs1MDgyLDcgQEAgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
OjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKCkKIHsKLSAg
ICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgIE9wVG9U
aGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSwgZWNtYU1vZGUoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDI5ODkzNzQwYTg1YTU4NDllMzk3
Mjg4NTY1MDMyYWU3NGJhZmY1NWIuLjcwNzU5NmE0OTc3MjAxY2VlNzQxZTMyYTE3ODczNmQ1NGEx
NjI3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM4MCwxMyArMzgwLDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBmcmllbmQgY2xhc3MgRmluYWxseUNvbnRleHQ7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJl
Rm9ySW5Db250ZXh0OworICAgICAgICBmcmllbmQgY2xhc3MgU3RyaWN0TW9kZVNjb3BlOwogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
ayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3Jh
bU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwotICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCop
OwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9n
cmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlv
bk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAg
IEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9n
cmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwog
CiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigpOwogICAgICAgICAKQEAgLTQwNiwxNCArNDA3
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9CiAKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTm9kZSwgdHlwZW5hbWUgVW5saW5rZWRDb2RlQmxvY2s+Ci0gICAgICAgIHN0YXRpYyBQ
YXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCkKKyAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdl
bmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwg
VW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IGVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgewogICAgICAgICAgICAg
TW9ub3RvbmljVGltZSBiZWZvcmU7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAgICAgICAgICAgICAgYmVmb3JlID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5o
ZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5
dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0
aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRv
ciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVC
bG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVz
KCkpKSB7CkBAIC0xMDE5LDcgKzEwMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSBjb25zdCB7IHJldHVybiBtX2NvZGVHZW5l
cmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2VuZXJhdGlvbk1vZGU6OlR5cGVQcm9maWxlcik7IH0K
ICAgICAgICAgYm9vbCBzaG91bGRFbWl0Q29udHJvbEZsb3dQcm9maWxlckhvb2tzKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlR2VuZXJhdGlvbk1vZGUuY29udGFpbnMoQ29kZUdlbmVyYXRpb25Nb2Rl
OjpDb250cm9sRmxvd1Byb2ZpbGVyKTsgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBpc1N0cmlj
dE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAg
ICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9CiAg
ICAgICAgIHZvaWQgc2V0VXNlc0NoZWNrcG9pbnRzKCkgeyBtX2NvZGVCbG9jay0+c2V0SGFzQ2hl
Y2twb2ludHMoKTsgfQogCiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KQEAgLTEyOTcsOCArMTI5OCw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24geyBm
YWxzZSB9OwogICAgICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWwgeyBmYWxzZSB9OwogICAg
ICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBmYWxzZSB9OwotICAgICAgICBib29sIG1fbmVl
ZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwogICAgICAgICBib29sIG1faGFzQ2FjaGVk
VmFyaWFibGVzVW5kZXJURFogeyBmYWxzZSB9OworICAgICAgICBib29sIG1fbmVlZHNUb1VwZGF0
ZUFycm93RnVuY3Rpb25Db250ZXh0IDogMTsKKyAgICAgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsK
ICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lIH07CiAKICAgICAgICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5k
bGUgbV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWjsKQEAgLTEzMTIsNiArMTMxNCwyNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhdGNoRW50cnk+IG1fZXhjZXB0aW9uSGFuZGxl
cnNUb0VtaXQ7CiAgICAgfTsKIAorICAgIGNsYXNzIFN0cmljdE1vZGVTY29wZSB7CisgICAgcHVi
bGljOgorICAgICAgICBTdHJpY3RNb2RlU2NvcGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
cikKKyAgICAgICAgICAgIDogbV9nZW5lcmF0b3IoZ2VuZXJhdG9yKQorICAgICAgICAgICAgLCBt
X3ByZXZpb3VzRUNNQU1vZGUoZ2VuZXJhdG9yLm1fZWNtYU1vZGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fZ2VuZXJhdG9yLm1fZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICB+U3RyaWN0TW9kZVNjb3BlKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9nZW5lcmF0b3IubV9lY21hTW9kZSA9IG1fcHJldmlvdXNFQ01BTW9kZTsKKyAgICAgICAg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3ImIG1fZ2VuZXJhdG9y
OworICAgICAgICBFQ01BTW9kZSBtX3ByZXZpb3VzRUNNQU1vZGU7CisgICAgfTsKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDY0MGIyNDk3NTVlMTBl
Y2RkOWE4M2I5ZTE0YjA5N2FiMzlmZDA5NGYuLmJkMzNiOGEwZjliYjIyMjM2N2Q2OTQ3ZmYyYmI4
NDQxODk3Zjc3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI5MDMsNyArMjkwMyw3IEBAIFJlZ2lzdGVySUQqIEFz
c2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgaWYgKGdlbmVy
YXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdl
bmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgaWYgKG1fYXNzaWdu
bWVudENvbnRleHQgPT0gQXNzaWdubWVudENvbnRleHQ6OkFzc2lnbm1lbnRFeHByZXNzaW9uKQpA
QCAtMjkyMCw3ICsyOTIwLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgUmVnaXN0ZXJJRCogcmV0dXJuUmVzdWx0ID0gcmVzdWx0LmdldCgpOwogICAgIGlmICgh
aXNSZWFkT25seSkgewotICAgICAgICByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFB1dFRv
U2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RN
b2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6
YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQobV9hc3NpZ25tZW50Q29udGV4dCkpOworICAg
ICAgICByZXR1cm5SZXN1bHQgPSBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCks
IHZhciwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhy
b3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIGluaXRpYWxpemF0aW9uTW9kZUZv
ckFzc2lnbm1lbnRDb250ZXh0KG1fYXNzaWdubWVudENvbnRleHQpKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZShyZXN1bHQuZ2V0KCksIHZhciwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICB9CiAKQEAgLTMxNDAsNyArMzE0MCw3IEBAIFJlZ2lzdGVySUQqIEVtcHR5
TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzCiAgICAgfSBlbHNlIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZh
ciwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3Vu
ZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0
aW9uKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIs
IHZhbHVlLmdldCgpLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5v
dEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlh
bGl6YXRpb24pOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgp
LCB2YXIsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50Lmxlbmd0aCgpKTsgCiAgICAg
fQogCkBAIC0zMzUwLDEzICszMzUwLDEzIEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0TG9vcEhlYWRl
cihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBwcm9wZXJ0CiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7
CiAgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShsb2NhbCwgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisg
ICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBpZiAodmFyLmlzUmVhZE9ubHkoKSkKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsK
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVz
b2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcHJvcGVydHlOYW1l
LCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93
SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcHJvcGVy
dHlOYW1lLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5k
IDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6
YXRpb24pOwogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJv
cGVydHlOYW1lLCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHItPnBvc2l0aW9uKCkg
KyBpZGVudC5sZW5ndGgoKSk7CiAgICAgfTsKQEAgLTM2MDcsMTMgKzM2MDcsMTMgQEAgdm9pZCBG
b3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlF
eGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGxv
Y2FsLCB2YWx1ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChn
ZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAg
ICAgICAgICAgICBpZiAodmFyLmlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
bnVsbHB0ciwgdmFyKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0
b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3Vu
ZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CisgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5l
cmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJv
d0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwg
dmFyLCBtX2xleHByLT5wb3NpdGlvbigpLCBtX2xleHByLT5wb3NpdGlvbigpICsgaWRlbnQubGVu
Z3RoKCkpOwogICAgICAgICB9IGVsc2UgaWYgKG1fbGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkp
IHsKQEAgLTQzOTcsNiArNDM5Nyw4IEBAIHZvaWQgQ2xhc3NEZWNsTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiBSZWdpc3RlcklE
KiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIFN0cmljdE1vZGVTY29wZSBzdHJpY3RNb2RlU2Nv
cGUoZ2VuZXJhdG9yKTsKKwogICAgIGlmIChtX25lZWRzTGV4aWNhbFNjb3BlKQogICAgICAgICBn
ZW5lcmF0b3IucHVzaExleGljYWxTY29wZSh0aGlzLCBCeXRlY29kZUdlbmVyYXRvcjo6VERaQ2hl
Y2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBCeXRlY29kZUdlbmVyYXRvcjo6TmVzdGVkU2NvcGVU
eXBlOjpJc05lc3RlZCk7CiAKQEAgLTQ4MzEsNyArNDgzMyw3IEBAIHZvaWQgQmluZGluZ05vZGU6
OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1
ZSkgY29uCiAgICAgICAgICAgICBnZW5lcmF0b3IubGlmdFREWkNoZWNrSWZQb3NzaWJsZSh2YXIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2Rl
KCkpCisgICAgaWYgKGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTQ4NDEsNyArNDg0
Myw3IEBAIHZvaWQgQmluZGluZ05vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1ZSkgY29uCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVh
ZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJh
dG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91
bmQsIGluaXRpYWxpemF0aW9uTW9kZUZvckFzc2lnbm1lbnRDb250ZXh0KG1fYmluZGluZ0NvbnRl
eHQpKTsKKyAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFs
dWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBE
b05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRl
eHQobV9iaW5kaW5nQ29udGV4dCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFs
dWUsIHZhciwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBpZiAobV9iaW5kaW5nQ29u
dGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQgfHwgbV9iaW5k
aW5nQ29udGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6Q29uc3REZWNsYXJhdGlvblN0YXRlbWVu
dCkKICAgICAgICAgZ2VuZXJhdG9yLmxpZnRURFpDaGVja0lmUG9zc2libGUodmFyKTsKQEAgLTQ4
NzksNyArNDg4MSw3IEBAIHZvaWQgQXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3Bl
ID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgbnVsbHB0ciwgc2NvcGUuZ2V0KCkp
OwpAQCAtNDg5MCw3ICs0ODkyLDcgQEAgdm9pZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAgICB9
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgaWYgKCFpc1JlYWRPbmx5KSB7Ci0gICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdl
bmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5v
dEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2Vu
ZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhy
b3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIHZhciwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9hc3NpZ25tZW50
VGFyZ2V0LT5pc0RvdEFjY2Vzc29yTm9kZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCAzOWNiZjgyZTIxMTMy
MDViNTZmM2E3ZDY4NzYzNWYwYzNlNzBmMTdhLi5mNDVlMDFkMDY3MTkzMDc2MmZjMDcwODU1MGYz
ZTQ3YmNhM2M0YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTIxMiw5ICsyMTIsOSBAQCBKU1ZhbHVlIERlYnVn
Z2VyQ2FsbEZyYW1lOjp0aGlzVmFsdWUoVk0mIHZtKSBjb25zdAogICAgIGlmICghdGhpc1ZhbHVl
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIEVDTUFNb2RlIGVjbWFNb2Rl
ID0gTm90U3RyaWN0TW9kZTsKLSAgICBpZiAoY29kZUJsb2NrICYmIGNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpCi0gICAgICAgIGVjbWFNb2RlID0gU3RyaWN0TW9kZTsKKyAgICBFQ01BTW9kZSBl
Y21hTW9kZSA9IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBpZiAoY29kZUJsb2NrICYmIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCisgICAgICAgIGVj
bWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwogICAgIHJldHVybiB0aGlzVmFsdWUudG9UaGlz
KG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLCBlY21hTW9kZSk7
CiB9CiAKQEAgLTI1Myw3ICsyNTMsOCBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNPYgogICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgSlNTY29wZTo6Y29sbGVj
dENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3BlKCksIHZhcmlhYmxlc1Vu
ZGVyVERaKTsKIAotICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFtZS0+Y2FsbGVyU291cmNl
T3JpZ2luKHZtKSksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+dW5saW5r
ZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRD
b2RlQmxvY2soKS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZh
cmlhYmxlc1VuZGVyVERaKTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkg
OiBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5j
YWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5k
ZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkt
PmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lk
ZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFos
IGVjbWFNb2RlKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkpIHsK
ICAgICAgICAgZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKTsKICAgICAgICAgY2F0
Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDc3MWQ5MmU4
MjM5ZTQzYWIyNWZkYjY2ZmNmMTA1OTllYWFjYTM5NDYuLmMxODcwNjY3NTE4ZjRiYjA4YjJjNjM5
YzQ4NGY2ZjYwMGYwYzM1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE4NiwxMCArMTg2LDEw
IEBAIGVudW0gY2xhc3MgVG9UaGlzUmVzdWx0IHsKICAgICBHbG9iYWxUaGlzLAogICAgIER5bmFt
aWMsCiB9OwotaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBi
b29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JOb2RlKQoraW5saW5lIFRv
VGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBFQ01BTW9kZSBlY21hTW9kZSwg
QWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JOb2RlKQogewogICAgIC8vIFdlIGxvb2sgYXQgdGhlIHR5
cGUgZmlyc3Qgc2luY2UgdGhhdCB3aWxsIGNvdmVyIG1vc3QgY2FzZXMgYW5kIGRvZXMgbm90IHJl
cXVpcmUgaXRlcmF0aW5nIGFsbCB0aGUgc3RydWN0dXJlcy4KLSAgICBpZiAoaXNTdHJpY3RNb2Rl
KSB7CisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgaWYgKHZhbHVlRm9y
Tm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYgU3BlY09iamVjdE90aGVyKSkK
ICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwogICAgIH0gZWxzZSB7
CkBAIC0yMDMsMjAgKzIwMywyMCBAQCBpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVu
dGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJgogICAgICAgICAg
ICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNPYmplY3Q6OnRvVGhpcykKICAgICAgICAgICAgICAg
ICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKICAgICAgICAgICAgIGlmICh0b1RoaXNN
ZXRob2QgPT0gJkpTU2NvcGU6OnRvVGhpcykgewotICAgICAgICAgICAgICAgIGlmIChpc1N0cmlj
dE1vZGUpCisgICAgICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKICAgICAgICAgICAg
ICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKChpc1N0cmljdE1vZGUgfHwgKHZhbHVlRm9yTm9kZS5t
X3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYgflNwZWNPYmplY3QpKSkgJiYgdmFsdWVG
b3JOb2RlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKKyAgICBpZiAoKGVjbWFNb2RlLmlzU3Ry
aWN0KCkgfHwgKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYg
flNwZWNPYmplY3QpKSkgJiYgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsK
ICAgICAgICAgYm9vbCBhbGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSA9ICF2YWx1ZUZvck5vZGUubV9z
dHJ1Y3R1cmUuaXNDbGVhcigpOwogICAgICAgICBib29sIG92ZXJyaWRlc1RvVGhpcyA9IGZhbHNl
OwogICAgICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCk7CiAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8
IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8
fCB0eXBlLnR5cGUoKSA9PSBCaWdJbnRUeXBlKTsKLSAgICAgICAgICAgIGlmICghaXNTdHJpY3RN
b2RlKQorICAgICAgICAgICAgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICAgICAg
ICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBzaW5jZSBlaXRoZXI6CiAgICAg
ICAgICAgICAvLyAxKSBXZSBhcmUgaW4gc3RyaWN0IG1vZGUgYW5kIHN0cmluZ3Mvc3ltYm9scyBh
cmUgbm90IHdyYXBwZWQKQEAgLTIzMCw3ICsyMzAsNyBAQCBpbmxpbmUgVG9UaGlzUmVzdWx0IGlz
VG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVl
JgogICAgICAgICBpZiAoIW92ZXJyaWRlc1RvVGhpcykKICAgICAgICAgICAgIHJldHVybiBUb1Ro
aXNSZXN1bHQ6OklkZW50aXR5OwogICAgICAgICBpZiAoYWxsU3RydWN0dXJlc0FyZUpTU2NvcGUp
IHsKLSAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpCisgICAgICAgICAgICBpZiAoZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRl
ZmluZWQ7CiAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzOwogICAg
ICAgICB9CkBAIC0yNzMwLDkgKzI3MzAsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
IGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGZv
ck5vZGUobm9kZSk7Ci0gICAgICAgIGJvb2wgc3RyaWN0TW9kZSA9IG1fZ3JhcGguaXNTdHJpY3RN
b2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2Rl
ID0gbm9kZS0+ZWNtYU1vZGUoKTsKIAotICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNU
b1RoaXNBbklkZW50aXR5KG1fdm0sIHN0cmljdE1vZGUsIHNvdXJjZSk7CisgICAgICAgIFRvVGhp
c1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV92bSwgZWNtYU1vZGUsIHNvdXJj
ZSk7CiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CiAgICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0
OjpJZGVudGl0eToKICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xk
aW5nKHRydWUpOwpAQCAtMjc0Niw3ICsyNzQ2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uLnNldFR5cGUobV9ncmFwaCwgU3BlY09iamVjdCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OkR5bmFtaWM6Ci0g
ICAgICAgICAgICBpZiAoc3RyaWN0TW9kZSkKKyAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0
cmljdCgpKQogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLm1ha2VIZWFwVG9wKCk7CiAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXgg
OWRkNGI5YWE0OGM4MGMwNmRmMDRjMGUxZjNhZjMzMDVlZWRhZDEyYi4uZmI5Y2FkMWM1MWNlYmZm
MjA0OTQ2OTQwODAyN2JmOTFhZTY0NDBlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI0NiwxMyArMjQ2LDEzIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBoYW5kbGVHZXRCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGlu
YXRpb24sIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeVN0YXR1cywgQWNjZXNzVHlwZSwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25TaXplKTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKAotICAgICAgICBOb2Rl
KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5SWRT
dGF0dXMmLCBib29sIGlzRGlyZWN0KTsKKyAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgTm9kZSogdmFsdWUsICBjb25zdCBQdXRCeUlkU3RhdHVzJiwgYm9vbCBpc0RpcmVj
dCwgRUNNQU1vZGUpOwogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSog
dmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAotICAgICAgICBib29sIGlzRGlyZWN0LCB1bnNp
Z25lZCBpbnRydWN0aW9uU2l6ZSk7CisgICAgICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGlu
dHJ1Y3Rpb25TaXplLCBFQ01BTW9kZSk7CiAKICAgICB2b2lkIGhhbmRsZURlbGV0ZUJ5SWQoCi0g
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMpOwor
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzLCBF
Q01BTW9kZSk7CiAgICAgCiAgICAgLy8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBvciBl
bWl0IGEgY2hlY2sgZm9yIHRoaXMgY29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQogICAg
IC8vIGNvbmRpdGlvbiBubyBsb25nZXIgaG9sZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVhc29uYWJs
ZSBjaGVjayBjYW4gYmUgZW1pdHRlZC4KQEAgLTg1MCwxOCArODUwLDE4IEBAIHByaXZhdGU6CiAg
ICAgfQogICAgIAogICAgIE5vZGUqIGFkZENhbGwoCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQsIE5vZGVUeXBlIG9wLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBO
b2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAorICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSog
Y2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIGlmIChvcCA9PSBUYWlsQ2FsbCkg
ewogICAgICAgICAgICAgaWYgKGFsbElubGluZUZyYW1lc0FyZVRhaWxDYWxscygpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQob3AsIE9wSW5mbyhz
aWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQob3AsIG9w
SW5mbywgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKICAgICAg
ICAgICAgIG9wID0gVGFpbENhbGxJbmxpbmVkQ2FsbGVyOwogICAgICAgICB9CiAKIAogICAgICAg
ICBOb2RlKiBjYWxsID0gYWRkQ2FsbFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAg
b3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwg
T3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgIG9wLCBvcEluZm8sIGNhbGxlZSwgYXJn
Q291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAgICBpZiAo
cmVzdWx0LmlzVmFsaWQoKSkKICAgICAgICAgICAgIHNldChyZXN1bHQsIGNhbGwpOwogICAgICAg
ICByZXR1cm4gY2FsbDsKQEAgLTEzNDgsNyArMTM0OCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJt
aW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICAgICAgfQogICAgIH0KICAg
ICAKLSAgICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgbnVsbHB0ciwgY2Fs
bFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVk
aWN0aW9uKTsKKyAgICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZv
KCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNl
dCwgcHJlZGljdGlvbik7CiAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFy
YXJncyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKICAgICBy
ZXR1cm4gY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwgPyBUZXJtaW5hbCA6IE5vblRlcm1pbmFs
OwogfQpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRp
b25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIE5vZGUqIG15Q2Fs
bFRhcmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVnKTsKICAgICBpZiAoY291bGRUYWtlU2xv
d1BhdGgpIHsKICAgICAgICAgYWRkQ2FsbCgKLSAgICAgICAgICAgIHJlc3VsdCwgY2FsbE9wLCBu
dWxscHRyLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKKyAg
ICAgICAgICAgIHJlc3VsdCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiAgICAgICAgIFZFUkJPU0VfTE9HKCJXZSBhZGRlZCBhIGNhbGwgaW4gdGhlIHNs
b3cgcGF0aFxuIik7CiAgICAgfSBlbHNlIHsKQEAgLTM2NjAsNyArMzY2MCw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIDw9IEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNfSU5DTFVESU5H
X1RISVMsICJDdXJyZW50bHkgQ2FsbERPTSBkb2VzIG5vdCBzdXBwb3J0IGFuIGFyYml0cmFyeSBs
ZW5ndGggYXJndW1lbnRzLiIpOwogCiAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgYWRkQ2FsbChy
ZXN1bHQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICBhZGRDYWxsKHJlc3VsdCwg
Q2FsbCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTQ2MjAsMTEgKzQ2MjAsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlJZCgKIAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwKLSAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1
cyBkZWxldGVCeVN0YXR1cykKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVC
eVN0YXR1cyBkZWxldGVCeVN0YXR1cywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYgKCFk
ZWxldGVCeVN0YXR1cy5pc1NpbXBsZSgpIHx8ICFkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNp
emUoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBzZXQoZGVz
dGluYXRpb24sCi0gICAgICAgICAgICBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVu
dGlmaWVyKSwgYmFzZSkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcElu
Zm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNDYzMyw3ICs0NjMzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlRGVsZXRlQnlJZCgKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCku
c2l6ZSgpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkp
IHsKICAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwKLSAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgYmFzZSkpOworICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8oZWNt
YU1vZGUpLCBiYXNlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDcx
NywyMiArNDcxNywyMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAog
fQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKLSAgICBOb2RlKiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlk
U3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0KQorICAgIE5vZGUqIGJhc2UsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRT
dGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQog
ewogICAgIGlmIChpc0RpcmVjdCkKLSAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkRGlyZWN0LCBP
cEluZm8oaWRlbnRpZmllciksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgYWRkVG9HcmFwaChQdXRC
eUlkRGlyZWN0LCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UsIHZh
bHVlKTsKICAgICBlbHNlCi0gICAgICAgIGFkZFRvR3JhcGgocHV0QnlJZFN0YXR1cy5tYWtlc0Nh
bGxzKCkgPyBQdXRCeUlkRmx1c2ggOiBQdXRCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2Us
IHZhbHVlKTsKKyAgICAgICAgYWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/
IFB1dEJ5SWRGbHVzaCA6IFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFN
b2RlKSwgYmFzZSwgdmFsdWUpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eUlkKAogICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsCi0gICAgY29uc3QgUHV0QnlJZFN0
YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25T
aXplKQorICAgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJl
Y3QsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAg
aWYgKCFwdXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkgfHwgIXB1dEJ5SWRTdGF0dXMubnVtVmFyaWFu
dHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBpZiAoIXB1
dEJ5SWRTdGF0dXMuaXNTZXQoKSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0
KTsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRT
dGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwg
dmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCkBAIC00NzQwLDcgKzQ3NDAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkgfHwg
cHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQ
b2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMu
bnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0
U2l6ZSgpKSB7Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1
ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFz
ZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NzQ5LDcgKzQ3
NDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAgICAg
ICAgIGlmIChwdXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0ua2luZCgpICE9IFB1dEJ5SWRWYXJp
YW50OjpUcmFuc2l0aW9uKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICBpZiAoIWNoZWNrKHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25kaXRpb25T
ZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1
cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgp
KSksIGJhc2UpOwogICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7
Ci0gICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRp
ZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDg1OSw3ICs0ODU5LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKIAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9
IGxvYWQoU3BlY0NlbGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAg
ICAgICAgIGlmICghbG9hZGVkVmFsdWUpIHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2Us
IGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAg
ICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNE
aXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKQEAgLTQ5MDMsNyArNDkwMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5
SWQoCiAgICAgfQogICAgIAogICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgZW1pdFB1dEJ5SWQoYmFz
ZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAg
ZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0LCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IH0KIH0KQEAgLTUwNzUsNyAr
NTA3NSw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7CiAgICAgICAgICAgICBO
b2RlKiBvcDEgPSBnZXRUaGlzKCk7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigp
OworICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1
Y3R1cmUgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQpAQCAt
NTA4Niw3ICs1MDg3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAgICAgICAg
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZENhY2hlKQogICAgICAgICAgICAgICAgIHx8IChvcDEtPm9wKCkgPT0gR2V0TG9j
YWwgJiYgb3AxLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c3RydWN0dXJlQ2hlY2tIb2lzdGluZ0Zh
aWxlZCgpKSkgewotICAgICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChUb1RoaXMsIE9w
SW5mbygpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CisgICAgICAgICAgICAgICAg
c2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBP
cEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIENoZWNrU3RydWN0
dXJlLApAQCAtNTkyNiw3ICs1OTI3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHRoaXNWYWx1ZSk7
CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CiAgICAgICAgICAgICBhZGRW
YXJBcmdDaGlsZCh2YWx1ZSk7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywg
UHV0QnlWYWxXaXRoVGhpcywgT3BJbmZvKDApLCBPcEluZm8oMCkpOworICAgICAgICAgICAgYWRk
VG9HcmFwaChOb2RlOjpWYXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbyhieXRlY29kZS5t
X2VjbWFNb2RlKSwgT3BJbmZvKDApKTsKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0
X2J5X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CkBAIC01OTk2LDE0ICs1OTk3LDE0IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBb
Ynl0ZWNvZGUubV9wcm9wZXJ0eV07CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotICAgICAgICAgICAg
Ym9vbCBkaXJlY3QgPSAhIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KTsKKyAg
ICAgICAgICAgIGJvb2wgZGlyZWN0ID0gYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpOwogCiAg
ICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1f
Z3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywgdWlkKSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGRp
cmVjdCwgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCkpOworICAgICAgICAgICAgaGFuZGxlUHV0
QnlJZChiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpLCBpZGVu
dGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBjdXJyZW50SW5zdHJ1
Y3Rpb24tPnNpemUoKSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3B1dF9ieV9pZCk7CiAgICAgICAgIH0KIApAQCAtNjAxNCw4ICs2MDE1
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRp
ZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwogICAgICAgICAgICAgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKLQot
ICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7
CisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21h
TW9kZSksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIApAQCAtNjA1NSw3ICs2MDU1LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAg
ICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLCB1aWQpOwotICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5tX2Rz
dCwgYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMpOwor
ICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwgaWRlbnRp
ZmllciwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMsIGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X2lkKTsKICAgICAgICAgfQog
CkBAIC02MDg1LDEzICs2MDg1LDEzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkp
OwogCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUJ5SWQoYnl0ZWNvZGUubV9kc3Qs
IGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIGRlbGV0ZUJ5U3RhdHVzKTsKKyAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwg
aWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMsIGJ5dGVjb2RlLm1f
ZWNtYU1vZGUpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRDb21waWxlQXNEZWxldGVCeUlk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICghc2hvdWxkQ29tcGlsZUFzRGVsZXRlQnlJZCkKLSAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIGJhc2UsIHByb3BlcnR5KSk7Cisg
ICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5VmFs
LCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIGJhc2UsIHByb3BlcnR5KSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfdmFsKTsKICAgICAgICAgfQogCkBAIC02NjE0LDcg
KzY2MTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDYWxsRXZhbD4oKTsKICAgICAgICAgICAgIGlu
dCByZWdpc3Rlck9mZnNldCA9IC1ieXRlY29kZS5tX2FyZ3Y7Ci0gICAgICAgICAgICBhZGRDYWxs
KGJ5dGVjb2RlLm1fZHN0LCBDYWxsRXZhbCwgbnVsbHB0ciwgZ2V0KGJ5dGVjb2RlLm1fY2FsbGVl
KSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAg
ICAgICAgICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENhbGxFdmFsLCBPcEluZm8oYnl0ZWNv
ZGUubV9lY21hTW9kZSksIGdldChieXRlY29kZS5tX2NhbGxlZSksIGJ5dGVjb2RlLm1fYXJnYywg
cmVnaXN0ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9jYWxsX2V2YWwpOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTY5NjMsNyArNjk2
Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICBpZiAobmVlZHNEeW5hbWljTG9va3VwKHJlc29sdmVUeXBlLCBvcF9wdXRfdG9f
c2NvcGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXJOdW1iZXIgIT0gVUlO
VF9NQVgpOwogICAgICAgICAgICAgICAgIHVpbnQ2NF90IG9wSW5mbzEgPSBtYWtlRHluYW1pY1Zh
ck9wSW5mbyhpZGVudGlmaWVyTnVtYmVyLCBnZXRQdXRJbmZvLm9wZXJhbmQoKSk7Ci0gICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZvMSksIE9wSW5m
bygpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChQdXREeW5hbWljVmFyLCBPcEluZm8ob3BJbmZvMSksIE9w
SW5mbyhnZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChi
eXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X3Rv
X3Njb3BlKTsKICAgICAgICAgICAgIH0KIApAQCAtNjk4NSw3ICs2OTg1LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBp
ZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0
dXNbMF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlCiAgICAgICAgICAgICAgICAg
ICAgIHx8IHN0YXR1c1swXS5zdHJ1Y3R1cmUoKS5zaXplKCkgIT0gMSkgewotICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCB1aWQpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNvZGUu
bV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5m
byhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZvKGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQo
Ynl0ZWNvZGUubV92YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IHdlYWtKU0NvbnN0YW50KGds
b2JhbE9iamVjdCk7CkBAIC03NjMxLDggKzc2MzEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgIiBmb3IgaW5saW5pbmcgYXQgIiwgQ29k
ZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVFR5cGU6OkRGR0pJVCksCiAgICAgICAg
ICAgICAgICAgIiAiLCBpbmxpbmVDYWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyKTsKICAgICAgICAg
fQotICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIiwgaXNTdHJpY3RNb2RlID0gIiwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCksICJcbiIpOworICAgICAg
ICBkYXRhTG9nTG4oKTsKICAgICAgICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKS0+ZHVt
cEJ5dGVjb2RlKCk7CiAgICAgfQogICAgIApAQCAtNzczOSw3ICs3NzM4LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGlu
c3RydWN0aW9uU2l6ZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJ
ZCkKLSAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmll
ck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBpbnN0cnVjdGlvblNpemUp
OworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0aW9uU2l6ZSwg
Ynl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJ
ZCkgewpAQCAtNzc1MCw3ICs3NzQ5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSkKICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8g
TGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
MCk7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpW
YXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5
TW9kZS5hc1dvcmQoKSksIE9wSW5mbygwKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFy
QXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAgICBtX2V4
aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVh
dGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBt
YWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDkxMWRkOWIxZTc3YWNi
NTU4YTg2MzBlZjJjMTgxMDA2MGYxZWRjMmYuLmZiNDU3MDlmZTUxNjI4MmY0ODQ3NWMzMDcxMjdh
MGEyMzI4NGNiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC03NzQsNyArNzc0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1RoaXM6IHsKLSAgICAgICAgICAgICAg
ICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwg
bV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7CisgICAgICAgICAgICAgICAgVG9UaGlzUmVzdWx0IHJl
c3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX2dyYXBoLm1fdm0sIG5vZGUtPmVjbWFNb2RlKCks
IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpOwogICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpJZGVudGl0eSkgewogICAgICAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4
IDJjMzc2ODAzYzRjYTZkZjRmMmZkMmJlMDVjMTRlMDY0M2Q0ODM1N2MuLjFhNGRlY2RhMGMyZDcz
Njg3ZWZjZjM4OGI4NDgyZmIwZWM2NDdjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjgzNyw3ICsyODM3LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZml4dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIGJvb2wgaXNTdHJp
Y3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCk7
CiAKICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewogICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAppbmRleCAyYzI1MTk2ZmIwNWM0OTc3OTRiNWRkZmM2NjFkYzc3ZmYxYTBlMGFj
Li43YmQxODgwNjZhZDA2ZDdiZThhZjI1ZjM4YWIxNDg5N2VlZmRlZjIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC00NDEsNyArNDQxLDcgQEAgcHVibGljOgogICAgIEpT
T2JqZWN0KiBnbG9iYWxUaGlzT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbik7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1ldGhvZFRh
YmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBvYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUobV92bSktPnRv
VGhpcyhvYmplY3QsIG9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAgICAgfQogICAgIAog
ICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVGb3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUpCkBAIC00NjksMTggKzQ2OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdp
biwgbV9wcm9maWxlZEJsb2NrKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdE1vZGVG
b3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgaWYgKCFjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKTsKLSAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCkt
PmlzU3RyaWN0TW9kZSgpOwotICAgIH0KLSAgICAKLSAgICBFQ01BTW9kZSBlY21hTW9kZUZvcihD
b2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RNb2Rl
Rm9yKGNvZGVPcmlnaW4pID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7Ci0gICAgfQotICAg
IAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICB7CiAgICAgICAgIHJldHVybiBnbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
KCktPmlzU3RpbGxWYWxpZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBh
YWMzYTYzN2EwOTQxNjY0NTQ0YzkxOWJiNzQ2ZTBhZDU3YjlmNDMxLi4wYjg1MGYwYzgwNzQwOTUw
NWE5MGE1OTg5NmU0NTg5NzM1M2E1OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aApAQCAtMjIyMyw2ICsyMjIzLDUzIEBAIHB1YmxpYzoKICAgICAgICAgbV9vcEluZm8gPSBhcnJh
eU1vZGUuYXNXb3JkKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKworICAgIGJvb2wg
aGFzRUNNQU1vZGUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNh
c2UgQ2FsbEV2YWw6CisgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBEZWxl
dGVCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICBjYXNlIFB1dEJ5SWREaXJl
Y3Q6CisgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICBjYXNlIFB1dEJ5SWRXaXRo
VGhpczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFz
OgorICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0
aFRoaXM6CisgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKKyAgICAgICAgY2FzZSBUb1RoaXM6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEVDTUFNb2RlIGVjbWFNb2Rl
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNFQ01BTW9kZSgpKTsKKyAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgQ2FsbEV2YWw6CisgICAgICAgIGNhc2UgRGVsZXRlQnlW
YWw6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2FzZSBUb1RoaXM6
CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4
X3Q+KCkpOworICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZDoK
KyAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoK
KyAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0QnlWYWw6Cisg
ICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoK
KyAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICAgICAgcmV0dXJuIEVDTUFNb2Rl
Ojpmcm9tQnl0ZShtX29wSW5mbzIuYXM8dWludDhfdD4oKSk7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0
dXJuIEVDTUFNb2RlOjpzdHJpY3QoKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICBib29s
IGhhc0FyaXRoTW9kZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgK
aW5kZXggNDVlN2FjM2RiNThmNjViNzhhYjYwMmU3OGU0YTMxYzQ0NTgzYzljNy4uMGU0YzMxYmYw
ZDdlNTg1OGJiZGI3NDQyMzBhNjM2N2M0ZmEwYjYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wSW5mby5oCkBAIC00Nyw2ICs0Nyw3IEBAIHN0cnVjdCBPcEluZm8gewogICAgIGV4cGxp
Y2l0IE9wSW5mbyhSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgOiBtX3ZhbHVlKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdHJ1Y3R1cmUpKSkgeyB9
CiAgICAgZXhwbGljaXQgT3BJbmZvKE9wZXJhbmQgb3ApIDogbV92YWx1ZShvcC5hc0JpdHMoKSkg
eyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikg
OiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLnJhd0JpdHMoKSkpIHsg
fQorICAgIGV4cGxpY2l0IE9wSW5mbyhFQ01BTW9kZSBlY21hTW9kZSkgOiBtX3ZhbHVlKGVjbWFN
b2RlLnZhbHVlKCkpIHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgZXhwbGlj
aXQgT3BJbmZvKFQqIHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCmluZGV4IDA4Y2U1NDM1ZDNmNzE5MDYzY2ZjMDlmZmE3N2RjZjYxMWZmOGY5OTguLmNj
NTc4MDk3Yjc0YThmNjVkNmEwM2E5ZTk2N2NmZDA3NmQ1Y2UwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjk4LDcgKzI5OCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTMwNyw3ICszMDcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmlj
dE1vZGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwogfQogCiBK
U0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkKQEAgLTMzODUsNyAr
MzM4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90
eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIGlmICh0aGlz
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKaW5kZXggMzYxODFhMjgyMTMzOWU4OGI2NjNjNjU4NzFj
MGRhM2NjNDRkZThhMi4uYmFhMjFjMGJiZmEyYWNmYmE1MGQ1YThmOTkzMmQzMTRkYjU0NDlmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9i
YmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxD
bG9iYmVyaXplLmgKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3V0ZXJtb3N0IGFy
Z3VtZW50cywgZXhjZXB0IHRoaXMsIGFyZSByZWFkIGluIHNsb3BweSBtb2RlLgotICAgICAgICAg
ICAgaWYgKCFtX2dyYXBoLm1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAg
ICAgaWYgKCFtX2dyYXBoLm1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmlj
dENvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgu
bV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAg
bV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKSk7CiAgICAg
ICAgICAgICB9CkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBSZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50cyBhbmQgY2FsbCBmcmFtZSBo
ZWFkZXJzIHRoYXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4KICAgICAgICAgICAgIGZvciAo
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWUoKTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBp
bmxpbmVDYWxsRnJhbWUtPmdldENhbGxlcklubGluZUZyYW1lU2tpcHBpbmdUYWlsQ2FsbHMoKSkg
ewotICAgICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKSkg
eworICAgICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0luU3RyaWN0Q29udGV4
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpKS5vZmZzZXQoKSkp
OwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggOGYxOTI2MDgw
NTY2OTQ3YmFiYTAyZjE3NzZiNTQwOTRiMTBlMGJlMy4uMjEwMDNlZDVmZDNmYmMzODE2MmM4OTJi
MzRjODQ3YjkyNzY4M2ZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUwNiw3ICs1MDYs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7CiAgICAg
ICAgICAgICAvLyBUb1RoaXMgaW4gbWV0aG9kcyBmb3IgcHJpbWl0aXZlIHR5cGVzIHNob3VsZCBz
cGVjdWxhdGUgcHJpbWl0aXZlIHR5cGVzIGluIHN0cmljdCBtb2RlLgotICAgICAgICAgICAgYm9v
bCBpc1N0cmljdE1vZGUgPSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCk7CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0Jvb2xlYW4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCBjYWE0YmFiNDEwZTZkNTM0ZTA2YTU5NTc2MTlkMzljOWM4N2VjMDlkLi44ZDUzZjM0MWJk
NjU1MzNkMTYyNjFmYjQyNDk3YWZkNDU4YjczOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjExOSw3ICsyMTE5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUsIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kJiBiYXMKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCi0g
ICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAg
ICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1
dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRE
b3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICA6
IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxE
aXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFs
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVn
KSk7CkBAIC0zMTUwLDI0ICszMTUwLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAg
ICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZUdQUikpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAg
ICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRp
b25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LAorICAgICAgICAg
ICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1
bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWVHUFIp
KTsKICAgICAgICAgfQogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhp
cywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1
dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1
bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlLCBKU1ZhbHVlUmVncyhwcm9wZXJ0
eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVHUFIpKSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAg
ICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmlj
dCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QsCiAg
ICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHkpLCBKU1ZhbHVlUmVncyh2YWx1
ZVRhZ0dQUiwgdmFsdWVHUFIpKSk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzI5OSw3ICszMjk5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJp
bmcoTm9kZSogbm9kZSwgRWRnZSYgY2hpbGQxLAogICAgIHNwZWN1bGF0ZVN0cmluZyhjaGlsZDIs
IGFyZzJHUFIpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1f
aml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0
QnlWYWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3Ry
aWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1Jl
Z3MpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3Bl
cmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3Ry
aW5nTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQ
UiwgYXJnM1JlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3Vs
dChub2RlKTsKQEAgLTMzMTgsNyArMzMxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeVZhbEZvckNlbGxXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIEVkZ2UmIGNoaWxkMSwKICAg
ICBzcGVjdWxhdGVTeW1ib2woY2hpbGQyLCBhcmcyR1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVj
bWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMTMyOSw3ICsxMTMyOSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBv
cGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJh
dGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBz
Y29wZUdQUiwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIo
KSksIG5vZGUtPmdldFB1dEluZm8oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjE1LDcgKzEyMjE1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgY2Fj
aGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2Ny
YXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1i
bGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEy
MjMwLDcgKzEyMjMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9k
ZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hH
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0KTsKKyAgICBjYWNoZWRQ
dXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNo
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1v
ZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEyMjQ1LDcgKzEyMjQ1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9kZSkKICAg
ICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgRGlyZWN0KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jl
c3VsdChub2RlKTsKIH0KQEAgLTEyMjYwLDcgKzEyMjYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlk
V2l0aFRoaXMsCisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkg
PyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRo
aXMsCiAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1Jl
Z3MsIHZhbHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CiAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMTI2MjksNyArMTI2MjksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQubW92
ZVZhbHVlUmVncyh0aGlzVmFsdWVSZWdzLCB0ZW1wUmVncyk7CiAKICAgICBKX0pJVE9wZXJhdGlv
bl9HSiBmdW5jdGlvbjsKLSAgICBpZiAobV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpCisgICAgaWYgKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAg
ICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAgZWxzZQogICAgICAgICBm
dW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKQEAgLTEzODI1LDcgKzEzODI1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1
bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBH
UFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5k
IHB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3Ms
IEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtp
bmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lzdGVyU2V0
IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9k
ZSA9PSBEb250U3BpbGwpIHsKQEAgLTEzODM3LDcgKzEzODM3LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BS
LCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVy
LAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywK
LSAgICAgICAgc2NyYXRjaEdQUiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiksIHB1dEtp
bmQpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCk7CiAKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlM2Y2N2UxNTkyYzhlZjljNzBiYmQwNjI3MmVkMzc2
YTNiOWNkMzJhLi5kM2U4ZTdkNTlkOWVlZjk3MjNlOGUyYWYxOWU0NTI5OTM1NGVlOTExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MTcs
NyArNzE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUNoZWNrTmV1dGVyZWQoTm9kZSop
OwogCiAgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAg
dm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRL
aW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1w
KCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZFB1
dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywg
R1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2Rl
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCks
IFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hlZEdldEJ5
VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBK
U1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiODdmNjg3MjI3NTgwM2I5NTViOGRhMGRiNmI3Nzlj
OTQ1ZDZmNmI5Li5hYzg4ZmY4MzIwN2U4YzdmZWYzN2JkYmZiMDYzNjQ2ZTMyOWI4ODY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
QEAgLTc2MCw3ICs3NjAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlKQogICAgICAgICB1bnNpZ25lZCByZXF1aXJlZEJ5dGVzID0gc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpICsgc2l6ZW9mKENhbGxGcmFtZSopICogMjsKICAgICAgICAgcmVxdWlyZWRCeXRlcyA9
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVk
Qnl0ZXMpOwogICAgICAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMp
LCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSwgR1BS
SW5mbzo6cmVnVDEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25DYWxsRXZhbCk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2Jh
bE9iamVjdCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIHByZXBh
cmVGb3JFeHRlcm5hbENhbGwoKTsKICAgICAgICAgbV9qaXQuYXBwZW5kQ2FsbChvcGVyYXRpb25D
YWxsRXZhbCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0yNzI1LDkgKzI3
MjYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBHUFJSZWcgYXJnM0dQUiA9IGFyZzMuZ3ByKCk7CiAgICAgICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpCi0g
ICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBh
cmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFy
ZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFy
ZzJHUFIsIGFyZzNHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0yODA5LDcgKzI4MTAs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBpZiAoYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2UsIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRC
eVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgTm9S
ZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywg
dmFsdWVSZWcpKTsKQEAgLTI4OTMsNyArMjg5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmICghc2xvd0Nhc2VzLmVtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgbV9q
aXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJl
Y3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlC
b3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6IChub2RlLT5vcCgpID09IFB1
dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05v
blN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAog
ICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwpAQCAtMzg5Nyw3ICszODk4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcg
dmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsV2l0aFRoaXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCB0aGlzVmFs
dWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmlj
dCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC01
NDY3LDcgKzU0NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChO
b2RlKiBub2RlKQogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpOwogCiAgICAgICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93
UGF0aC5nZXQoKSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKQEAgLTU0ODYsNyArNTQ4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVE
ZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtNTUyNSw3ICs1NTI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywg
VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogCiAgICAgICAgIG1faml0
LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC01NTQ1LDcgKzU1NDYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBudWxscHRyLCBiYXNlUmVncywga2V5UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAzNWQ4Y2U2NjkxMzc4NzZkYmQx
OWQyMmQwMjZjMjk2MjQ5ZWY4ZDcyLi5jNjNiYmQ3NTVkZGZiZmUyYTI3OTg5MGQxNTdkNzU4ODli
ZGRiYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIEpfSklUT3BlcmF0
aW9uX0dKIGZ1bmN0aW9uOwotICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkpCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0cmljdDsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7CkBA
IC0zNjg2LDcgKzM2ODYsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKIAotICAgICAgICB2bUNhbGwoVm9pZCwgbV9ncmFw
aC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0
QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAorICAgICAgICB2
bUNhbGwoVm9pZCwgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRC
eUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCiAgICAgICAgICAg
ICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlLCBtX291
dC5jb25zdEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpKTsK
ICAgICB9CiAKQEAgLTM2OTgsNyArMzY5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBw
cm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKICAg
ICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgMykpOwogCi0gICAgICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fbm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmlj
dCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsCiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQog
ICAgIApAQCAtMzk3MSw3ICszOTcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHByZXBhcmVQ
YXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0ZSogc3Rh
dGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBtX2dyYXBoLmV4
ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZWNtYU1vZGUoKTsKKyAgICAgICAg
RUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogICAgICAgICAKICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTQ4MzEs
MTIgKzQ4MzEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWX0pJVE9wZXJhdGlvbl9H
Q0NKIG9wZXJhdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMi51c2VL
aW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9w
KCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RD
ZWxsU3RyaW5nU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2Vs
bFN0cmluZ05vblN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0g
b3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlv
blB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdDsKQEAgLTQ4NDcsMTIgKzQ4NDcsMTIgQEAgcHJp
dmF0ZToKIAogICAgICAgICAgICAgICAgIGlmIChjaGlsZDIudXNlS2luZCgpID09IFN5bWJvbFVz
ZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFN0cmljdDsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xOb25TdHJpY3Q7
CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFs
Q2VsbFN5bWJvbFN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1i
b2xOb25TdHJpY3Q7CkBAIC00ODY0LDEyICs0ODY0LDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgIFZfSklUT3BlcmF0aW9uX0dKSkogb3BlcmF0aW9uOwogICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAg
ICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdDsKICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0Tm9uU3RyaWN0OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAobV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKQor
ICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Q7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRCeVZhbE5vblN0cmljdDsKQEAgLTQ5MTUsNyArNDkxNSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnRpZ3Vv
dXNQdXRCeVZhbE91dE9mQm91bmRzKAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmlzU3Ry
aWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAg
bV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8g
KG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91
bmRzU3RyaWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1
dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05v
blN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAog
ICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNvbnRpbnVh
dGlvbik7CkBAIC00OTQxLDcgKzQ5NDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjb250aWd1b3VzUHV0QnlWYWxPdXRP
ZkJvdW5kcygKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IChtX25vZGUtPm9wKCkg
PT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFy
cmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5k
c1N0cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG1fbm9kZS0+b3AoKSA9PSBQdXRC
eVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3Vu
ZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9u
U3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3RvcmFnZSwgaW5kZXgsIHZhbHVl
LCBjb250aW51YXRpb24pOwpAQCAtNDk4MSw3ICs0OTgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIExWYWx1ZSBpc091dE9mQm91bmRzID0gbV9vdXQuYWJvdmVPckVxdWFsKAogICAgICAgICAg
ICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hlYXBzLkFy
cmF5U3RvcmFnZV92ZWN0b3JMZW5ndGgpKTsKIAotICAgICAgICAgICAgYXV0byBzbG93UGF0aEZ1
bmN0aW9uID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
CisgICAgICAgICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSBtX25vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKQogICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERp
cmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAgICAgICAg
IDogKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFy
cmF5Qm91bmRzTm9uU3RyaWN0KTsKICAgICAgICAgICAgIGlmICghYXJyYXlNb2RlLmlzT3V0T2ZC
b3VuZHMoKSkgewpAQCAtNTI0Niw3ICs1MjQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0
dXJuR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0KS5jYWxsKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdp
biwgc2xvd1BhdGhDYWxsKTsKQEAgLTUyNzUsNyArNTI3NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk3CiAg
ICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgTFZhbHVlIGJh
c2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgc2V0Qm9vbGVh
bihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJp
Yywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFzZSwgbV9v
dXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKSkp
KTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwg
b3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1f
b3V0LmludFB0clplcm8sIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNTMx
Niw3ICs1MzE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKTsKLSAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJ
bnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBzdWJzY3JpcHQpKSk7CisgICAgICAgICAgICBz
ZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsR2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywg
YmFzZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+ZWNtYU1vZGUoKS52YWx1
ZSgpKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05OTA5LDcgKzk5
MDksOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlcXVpcmVkQnl0ZXMg
PSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBzaXplb2YoQ2FsbEZyYW1lKikgKiAyOwogICAg
ICAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3Rh
Y2tBbGlnbm1lbnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgICAgICAgICBqaXQu
c3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBDQ2FsbEhl
bHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQUklu
Zm86OnJlZ1QxKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAg
ICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFs
KT4oZ2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAg
ICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5v
bkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uUHJl
c2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTM0NTUsNyArMTM0
NTYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtt
X25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKFZv
aWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9w
ZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3Ry
aWN0LAorICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXRE
eW5hbWljVmFyTm9uU3RyaWN0LAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigp
KSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmdldFB1
dEluZm8oKSkpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDA4MGZhZWRlODFh
MjI2ODIyMWQxYzUwODk0MWQ5ZWYyNzEyNzlhMjAuLjk3YmZiMjAyZTVmNzQ4NGU2Y2E0YjQ5ZDE0
YmFjN2YzMTYzZGNiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgSlNW
YWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamUKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGpz
Q2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9UaGlzKGds
b2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nh
c3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVGhpcyhnbG9i
YWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgIHJldHVybiBqc1N0cmluZyh2bSwg
SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUob2JqZWN0KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDUxODhj
MDIzOWRmNDZlMDAyZGM5ZTJhMWIzNzIxYjVkMGIwYzBmOGUuLmM0ZDljNzI3ZTA3MThlZWFlZjAw
NjgyODQ0YzU0NzNkYjIyYmJmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogCiAgICAgRGlyZWN0RXZh
bEV4ZWN1dGFibGUqIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmRpcmVjdEV2YWxDb2RlQ2FjaGUo
KS50cnlHZXQocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ2FsbFNpdGVJbmRleCk7CiAgICAgaWYgKCFl
dmFsKSB7Ci0gICAgICAgIGlmICghY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewor
ICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgICAgIGlmIChwcm9n
cmFtU291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hh
cj4gcHJlcGFyc2VyKGdsb2JhbE9iamVjdCwgcHJvZ3JhbVNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBw
cm9ncmFtU291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OLCBjYWxsZXJDb2RlQmxvY2spOwog
ICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlM
aXRlcmFsUGFyc2UoKSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIAogICAg
ICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICBKU1Nj
b3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZh
cmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVC
bG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBjYWxsZXJDb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29k
ZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOworICAgICAg
ICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VT
b3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigp
LT5zb3VyY2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2Rl
QmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUp
OwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwp
OwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
QEAgLTEwNTcsNyArMTA1Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4
ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAgdW5zaWdu
ZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMgPSBldmFsLT5udW1GdW5jdGlvbkhvaXN0
aW5nQ2FuZGlkYXRlcygpOwogCiAgICAgSlNTY29wZSogdmFyaWFibGVPYmplY3Q7Ci0gICAgaWYg
KChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSAmJiBldmFsLT5pc1N0
cmljdE1vZGUoKSkgeworICAgIGlmICgobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rp
b25EZWNscykgJiYgZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkgewogICAgICAgICBzY29wZSA9
IFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c3RyaWN0RXZh
bEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSwgc2NvcGUpOwogICAgICAgICB2YXJpYWJsZU9iamVjdCA9
IHNjb3BlOwogICAgIH0gZWxzZSB7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sg
PSBjb2RlQmxvY2stPnVubGlua2VkRXZhbENvZGVCbG9jaygpOwogCiAgICAgLy8gV2UgY2FuJ3Qg
ZGVjbGFyZSBhICJ2YXIiLyJmdW5jdGlvbiIgdGhhdCBvdmVyd3JpdGVzIGEgZ2xvYmFsICJsZXQi
LyJjb25zdCIvImNsYXNzIiBpbiBhIHNsb3BweS1tb2RlIGV2YWwuCi0gICAgaWYgKHZhcmlhYmxl
T2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpICYmICFldmFsLT5pc1N0cmljdE1vZGUoKSAmJiAobnVt
VmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKKyAgICBpZiAodmFyaWFi
bGVPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkg
JiYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpKSB7CiAgICAgICAg
IEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2YXJpYWJsZU9iamVjdCktPmdsb2JhbExleGljYWxFbnZp
cm9ubWVudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFibGVz
OyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gdW5saW5rZWRD
b2RlQmxvY2stPnZhcmlhYmxlKGkpOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWwKIAogICAgIGlmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlv
bkRlY2xzIHx8IG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKSB7CiAgICAgICAgIEJhdGNo
ZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXplcih2bSwgdmFyaWFibGVPYmplY3QpOwotICAg
ICAgICBpZiAodmFyaWFibGVPYmplY3QtPm5leHQoKSAmJiAhZXZhbC0+aXNTdHJpY3RNb2RlKCkp
CisgICAgICAgIGlmICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpICYmICFldmFsLT5pc0luU3RyaWN0
Q29udGV4dCgpKQogICAgICAgICAgICAgdmFyaWFibGVPYmplY3QtPmdsb2JhbE9iamVjdCh2bSkt
PnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+ZmlyZUFsbCh2bSwgIkV4ZWN1dGVkIGV2YWwsIGZp
cmVkIFZhckluamVjdGlvbiB3YXRjaHBvaW50Iik7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytpKSB7CkBAIC0xMTQ0LDcgKzExNDQsNyBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBpZiAoZXZhbC0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgaWYgKGV2YWwtPmlz
SW5TdHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHM7ICsraSkgewogICAgICAgICAgICAgICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAg
ICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh2YXJpYWJsZU9iamVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDkw
YTlkYjVjNWE5ZmIwMjU2YzU3ZDFkNmNlNDk5YTdmZTczMWUwODUuLjY0NTM5MTI3YjhjNzRjODIw
MjliMmJiNjE4MGU2OTY5NzFhNjRiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0xNTAsNyArMTUwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICB9OwogCi0g
ICAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisgICAgSlNWYWx1
ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRUNNQU1vZGUpOwogCiAgICAgaW5s
aW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1l
LCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKaW5kZXggZTk1ZjhmZTM1ZGMxZGFhOWU2NTA1NDZlMWIzNTA5MTcxYWNjZDkwYy4uMzU2
ZGExYjE2MjgyZWFkMWI3MmM4OGUxMWIwYTQxNDVkODAwNzAzNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNDcyLDE5ICsxNDcyLDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N0cmljdE1vZGVGb3IoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0g
ICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOwotICAgICAgICBy
ZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5pc1N0cmljdE1vZGUoKTsKLSAgICB9Ci0gICAgCi0gICAg
RUNNQU1vZGUgZWNtYU1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGlzU3RyaWN0TW9kZUZvcihjb2RlT3JpZ2luKSA/IFN0cmljdE1vZGUgOiBOb3RT
dHJpY3RNb2RlOwotICAgIH0KLSAgICAKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZUZv
cihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBiMmJmY2U2MzM3ZDliZTAyZDYxZjM4OTVj
ZTVlY2EzYTBkNzgzMjA2Li5lMWU1NjVkYzUyNDlmNmFjZmRhYTI0YmZmYjQ0NzFmZmNiMjBiODY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTEzOCw3ICsxMzgsOCBA
QCBib29sIEpJVDo6Y29tcGlsZUNhbGxFdmFsKGNvbnN0IE9wQ2FsbEV2YWwmIGJ5dGVjb2RlKQog
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2Nr
KSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKLSAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHJl
Z1QxKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkp
LCByZWdUMik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsRXZhbCwgbV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpLCByZWdUMSwgcmVnVDIpOwogCiAgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoSWZFbXB0eShyZWdUMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDk4Zjk0YTI2ODgzMTY5MWY2Nzk1
YjI3OWYxYjcwOWQxYWQxMWU0MGYuLjIyNmU2Yjc5ODUxYjYxYmNjYmQ1MTA3Y2ZhNWZjYzMwMjYw
ZTc5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBKSVRQdXRCeUlkR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3Bl
cmF0aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7
Ci0gICAgaWYgKG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgeworICAgIGlmIChtX2VjbWFNb2Rl
LmlzU3RyaWN0KCkpIHsKICAgICAgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwogICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGE2NDdj
NDViM2Y0ZTNiNDNkYjVkNDYwNTVkZjc1OGI2YjkyZWY4ZWEuLmYwM2UwOTI1Mzg1NDFmYjAzNDBm
MTJjNmJhOGE2MTExMWYzMzY3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTEyOCw3ICsxMjgsOSBAQCBwdWJsaWM6
CiAKIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7
CiBwdWJsaWM6Ci0gICAgSklUUHV0QnlJZEdlbmVyYXRvcigpIHsgfQorICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IoKQorICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQorICAg
IHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDIzZmY1YzgxYzFjMDMyMjJmOTEyYTQ5OTMxZjI4MzZk
YWRjZmFjYjcuLjdkY2JlOGZhM2FlNTY4Y2JhYTY1Y2E0MWU1ZTFiYTI3NTY1NTMzZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0xNjYsNyArMTY2LDcgQEAgQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmUKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Nsb3dD
YXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgVmly
dHVhbFJlZ2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1t
ZWRpYXRlKHJlZykpCisgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkKICAg
ICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogfQogCkBAIC00OTYsNyArNDk2LDcgQEAgaW5saW5l
IHZvaWQgSklUOjplbWl0U3RvcmUoVmlydHVhbFJlZ2lzdGVyIHJlZywgY29uc3QgSlNWYWx1ZSBj
b25zdGFudCwgUmVnaXN0ZXIKIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5p
c0tub3duTm90SW1tZWRpYXRlKHJlZykpIHsKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3du
Q2VsbChyZWcpKSB7CiAgICAgICAgIGlmIChyZWcuaXNDb25zdGFudCgpKQogICAgICAgICAgICAg
YWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgZWxzZQpAQCAtNTA2LDcgKzUwNiw3IEBAIGlu
bGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdpc3Rl
ciByZWcpCiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZp
cnR1YWxSZWdpc3RlciByZWcsIFJlZ2lzdGVySUQgdGFnKQogewotICAgIGlmICghbV9jb2RlQmxv
Y2stPmlzS25vd25Ob3RJbW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9jb2RlQmxvY2stPmlz
S25vd25DZWxsKHJlZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAg
ICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC02MDAsNyArNjAwLDcg
QEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJl
Z2lzdGVySUQgcmVnKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCByZWcsIFZpcnR1YWxSZWdpc3RlciB2UmVnKQogewotICAg
IGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUodlJlZykpCisgICAgaWYgKCFt
X2NvZGVCbG9jay0+aXNLbm93bkNlbGwodlJlZykpCiAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAppbmRleCBkYTgyZjMxZTFiOGM4Y2FiNDEyNzE4MGU1OWExNThkZjQzMjFkM2Vm
Li4xNWQwNjcwNDdkZGUyZTVlMzY3ZTgwMWE5Y2FmM2U3ZTQ3MWUwNzlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudGlmaWVyLCBzbG90LCAq
c3R1YkluZm8sIERpcmVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KQorc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTcxNywxMiArNzE3LDEyIEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAKICAgICAgICAg
ICAgIGJ5VmFsSW5mby0+YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PnB1dEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBjb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRC
eUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgZWNtYU1vZGUuaXNTdHJpY3Qo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGdsb2JhbE9iamVjdCwgaSwgdmFs
dWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBiYXNlVmFsdWUucHV0QnlJ
bmRleChnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzSW50MzIoKSkgewogICAgICAg
ICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CkBAIC03MzgsMTUgKzczOCwxNCBAQCBz
dGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlVmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgIGJhc2VWYWx1ZS5w
dXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQogCi1zdGF0
aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0
LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3N0YXRpYyB2b2lkIGRpcmVj
dFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYm9vbCBp
c1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwogCiAgICAgaWYgKExJS0VM
WShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwg
SlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hl
ZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgpAQCAt
NzY4LDcgKzc2Nyw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIH0KIAogICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4
KGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJ
bmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CisgICAgICAg
IGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCAw
LCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERp
cmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03
NzgsNyArNzc3LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAgICAgaWYgKHN1YnNj
cmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNV
SW50MzIpKSB7CiAgICAgICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAg
ICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRE
aXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwgMCwgaXNT
dHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hv
dWxkTm90VGhyb3cpOworICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGVjbWFNb2RlLmlzU3RyaWN0
KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RU
aHJvdyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC03OTAsNyAr
Nzg5LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICBpZiAoT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50
b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGJh
c2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFs
dWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJl
Y3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgZWNtYU1vZGUuaXNTdHJp
Y3QoKSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5v
dFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzk4LDcgKzc5Nyw3IEBAIHN0
YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0g
dHJ1ZTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VP
YmplY3QsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGly
ZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1
ZSwgc2xvdCk7CiB9CiAKQEAgLTg4NCw3ICs4ODMsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVz
dWx0IHRyeVB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bAogICAgIHJldHVybiBvcHRpbWl6YXRpb25SZXN1bHQ7CiB9CiAKLXZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwpAQCAtOTAyLDcgKzkwMSw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAg
Y3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9B
RERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKICAgICB9Ci0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZh
bHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZh
bHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CiAKIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1
bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBv
YmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAtOTc0LDcgKzk3Myw3IEBAIHN0YXRpYyBPcHRpbWl6
YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0CiAgICAgcmV0dXJuIG9wdGltaXphdGlvblJlc3VsdDsKIH0KIAotdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVj
bWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC05OTUsMTAgKzk5NCwx
MCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVy
bkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIG9iamVjdCwgc3Vi
c2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1ZSwg
YnlWYWxJbmZvLCBlY21hTW9kZSkpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC0xMDA4LDExICsxMDA3LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiAg
ICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogCi0g
ICAgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbyk7CisgICAgcHV0QnlWYWwoZ2xvYmFsT2Jq
ZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwog
fQogCiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1
YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTEwMjIsMTAgKzEwMjEsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBSRUxFQVNFX0FT
U0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3Jp
cHQsIHZhbHVlLCBieVZhbEluZm8pOworICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwg
YXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9k
ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEwMzUsNyArMTAzNCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsCiAgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVGcmFtZS0+Z3Vh
cmFudGVlZEpTVmFsdWVDYWxsZWUoKSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWwo
Z2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsKGds
b2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGVjbWFNb2RlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMTYzLDcgKzIxNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmpl
Y3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9w
ZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRl
QnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Vk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxNzMsMTIgKzIxNzIs
MTIgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYg
ZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4gY291bGRE
ZWxldGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxl
SWRlbnRpZmllcikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxl
SWRlbnRpZmllciwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTIxOTIsMjEgKzIxOTEsMjEgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFMKICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAgICBJZGVudGlmaWVy
IGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CiAKLSAg
ICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBz
bG90LCBiYXNlVmFsdWUsIGlkZW50KTsKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xv
YmFsT2JqZWN0LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBpZGVudCwgZWNtYU1vZGUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmICghcGFyc2VJbmRleChpZGVudCkpIHsK
ICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsKICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVC
bG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVudGlmaWVyKSkKLSAgICAgICAg
ICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJh
c2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6
Tm9ybWFsKTsKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1
YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVh
YmxlSWRlbnRpZmllcikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlm
aWVyLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMjIxNCwxMCArMjIxMywxMCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxl
dGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdAogICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIGlkZW50KTsK
KyAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLCBpZGVudCwgZWNtYU1vZGUpOwogfQogCi1zdGF0aWMgYm9vbCBk
ZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgSlNW
YWx1ZSBrZXkpCitzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBK
U1ZhbHVlIGtleSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMjM2LDEyICsyMjM1LDEyIEBAIHN0YXRpYyBib29s
IGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBWTSYKICAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3Qp
OwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgaWYg
KCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkK
KyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlF
cnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1zaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVDTUFNb2RlIGVjbWFNb2RlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMjUzLDcgKzIyNTIsNyBAQCBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7CiAKLSAg
ICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwg
c2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQpOworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlW
YWwoZ2xvYmFsT2JqZWN0LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGVjbWFNb2Rl
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0Nh
Y2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKQEAgLTIyNjQsMjAgKzIyNjMsMjAg
QEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoc3Vi
c2NyaXB0LmFzQ2VsbCgpKTsKICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNo
aW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBpZGVudGlm
aWVyKSkKLSAgICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1Yklu
Zm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxl
dGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1
cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCwgZWNtYU1v
ZGUpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCitzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwg
c2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRTdWJzY3JpcHQpKTsKKyAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCB2bSwg
c2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRTdWJzY3JpcHQpLCBlY21hTW9kZSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
Y3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCkBAIC0yNTQ0LDcg
KzI1NDMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24o
Z2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOworICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KHNjb3BlLCBnZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlT
bG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxp
emF0aW9uTW9kZSgpKSk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBn
bG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB2b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCA1YzFmYzM3NjE2MGI0NGE3NjgwYzM2NzVjMDViODRkNjI3MTYy
ZmY0Li44ZWZiNWI1YWM5ODBhZWU2YzU1MjM0NDM3YzkwMjg5NTg5MDIyNjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNjQsNiArNjQsNyBAQCBjbGFz
cyBWTTsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAKIHN0cnVjdCBCeVZhbEluZm87CitzdHJ1Y3Qg
RUNNQU1vZGU7CiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwogc3RydWN0IEluc3RydWN0aW9uOwog
CkBAIC0xODcsMTEgKzE4OCwxMiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlUwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5B
TDsKIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsK
LXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZh
bEluZm8qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5B
TDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9k
ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CisK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhSZXR1
cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKENhbGxGcmFtZSos
IEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwogU2xvd1BhdGhS
ZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENhbGwoQ2FsbEZyYW1lKiwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CkBAIC0yNTAsMTAg
KzI1MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFs
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3Bl
cnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRy
X3QpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RG
X0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBi
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90LCBFQ01BTW9kZSkg
V1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIHVpbnRwdHJfdCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdl
dCwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01BTW9kZSkgV1RG
X0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVl
IG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
c2hXaXRoU2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBj
dXJyZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCmluZGV4IGMzNTQzZGFlN2QwODJlYmRlYzYxZDBiY2Q1YjhmODc1MjA0
MGJlNzQuLmE0MDgwNTkzNjUwYTZlYzU2OGFhNjEwNjkxN2ZlOTdiMzhmMTMzOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yODcs
NyArMjg3LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNo
ZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVy
YXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCks
IHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qx
KSwgcmVnVDIsIGJ5dGVjb2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRo
b3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBV
bmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVj
ZSBjb2RlIHNpemUuCkBAIC0zMTEsMTEgKzMxMSwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
UwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWU7CisgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBF
Q01BTW9kZTo6c3RyaWN0KCk7CiAKICAgICBhdXRvIGxvYWQgPSBbJl0oYXV0byBieXRlY29kZSkg
ewogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKKyAg
ICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgIH07CiAKICAgICBpZiAo
aXNEaXJlY3QpCkBAIC0zMzEsNyArMzMzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2
YWx1ZSwgcmVnVDIpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6
ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVn
VDEsIHJlZ1QyLCBieVZhbEluZm8pOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNE
aXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlW
YWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBy
ZWdUMCwgcmVnVDEsIHJlZ1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1
ZSgpKSk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbklu
ZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbklu
Zm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpAQCAtNDI3
LDcgKzQyOSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1Qw
KTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1
YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOworICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBy
ZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhy
ZWdUMCkpOwpAQCAtNDc3LDcgKzQ3OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7
CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIAogICAg
IGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC02NTQsNyArNjU2LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BQdXRCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWVWUmVnID0gYnl0ZWNvZGUubV92YWx1ZTsK
LSAgICBib29sIGRpcmVjdCA9ICEhKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3Qp
OworICAgIGJvb2wgZGlyZWN0ID0gYnl0ZWNvZGUubV9mbGFncy5pc0RpcmVjdCgpOwogICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KSk7CiAKICAgICAvLyBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHBhdGNoIGJv
dGggdGhlIFN0cnVjdHVyZSwgYW5kIHRoZSBvYmplY3Qgb2Zmc2V0LCB3ZSBzdG9yZSBvbmUgcG9p
bnRlciwKQEAgLTY2OCw3ICs2NzAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBtX2NvZGVC
bG9jay0+ZWNtYU1vZGUoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMSksIHJlZ1QyLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksCiAgICAgICAgIGRp
cmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggOGQxODgwMzZhMjM1OWRmMGIxZTFhZjFhYjRkODc3ZmM2
YzYwYzlhYS4uNTM1NDg2Y2Q4ZjE1MzJhZDFiZWI1MTVhODZiOTA4YWJjODM2OTZlMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBlbWl0
TG9hZChiYXNlLCByZWdUMiwgcmVnVDEpOwogICAgIGVtaXRMb2FkKHByb3BlcnR5LCByZWdUMywg
cmVnVDApOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwotICAgIENhbGwgY2Fs
bCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLCBKU1ZhbHVlUmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8pOworICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXpl
IDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
LCBKU1ZhbHVlUmVncyhyZWdUMiwgcmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUNSwgcmVnVDQpLCBieVZhbEluZm8sIGJ5dGVjb2RlLm1faXNTdHJpY3RN
b2RlKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5k
ZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5m
b1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAwOGZhYmQ1NjQyODY4YzBjNmZkNjk3Njcx
YzFmOWU2MGQwOTRhZDcwLi44YmJlM2NiOTNlNDBjODc5NTk2MjFmZTBmYTZiMGJiNmFlY2QzZTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTczOCw3ICs3MzgsNyBA
QCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdl
bmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCi1zdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIg
cHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCkKK3N0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVs
QnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CkBAIC03NzEsNyArNzcx
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQobmV3
T2Zmc2V0KSk7CiAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRl
KHZtLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5l
d1N0cnVjdHVyZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAg
ICAgICAgaWYgKHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKICAgICAgICAgICAgICAgICBuZXdD
YXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0
ZU5vbkNvbmZpZ3VyYWJsZSwgcHJvcGVydHlOYW1lLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1
cmUsIHsgfSwgbnVsbHB0cik7CiAgICAgICAgICAgICBlbHNlCkBAIC03OTIsMTIgKzc5MiwxMiBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVw
Tm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lkIHJlcGF0
Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQordm9pZCByZXBhdGNoRGVs
ZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7
CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGlmICh0cnlDYWNoZURlbGV0ZUJ5KGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgeworICAgIGlmICh0
cnlDYWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUs
IG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1vZGUpID09
IEdpdmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VX
aXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkp
LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAg
IGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgK
aW5kZXggZTVjZTQ2ODcxMTQ2MzkyZTRlNzJlNjE0YTJmNWU1OGVhNjc0OTk0NS4uZDg5MGZkNzBh
YWNkODJmZmJmNGRhOGZiMjRlMWYzZGZmNTc0OWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgZW51bSBjbGFzcyBEZWxCeUtpbmQgewogdm9pZCBy
ZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUg
YmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdl
dEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQp
Owogdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFs
dWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3BlcnR5U2xv
dCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Ci12b2lkIHJlcGF0Y2hEZWxldGVCeShK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUs
IFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVs
QnlLaW5kKTsKK3ZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQsIEVDTUFNb2RlKTsKIHZvaWQg
cmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJl
U3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSos
IENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAzZGIyM2JhZTA1ZDU4MDI5YzUwMzlmNTcyM2I5
ZDk5NjVmNDJiNDJjLi44ZGVhN2YyNzhlNzY2MmU1MDMxNGNlYjliMDgzMzlmODdiZmRhNDk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAg
LTgzNiwxMCArODM2LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQpCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlVmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0
QnlJZENvbnRleHQoKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBieXRl
Y29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29u
dGV4dCgpKTsKIAogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLmlzQ2Vs
bCgpID8gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pIDogbnVsbHB0cjsKLSAgICBp
ZiAoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkKKyAgICBpZiAoYnl0ZWNvZGUu
bV9mbGFncy5pc0RpcmVjdCgpKQogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdp
dGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBpZGVudCwgZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpLCBzbG90KTsKICAgICBlbHNlCiAg
ICAgICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpZGVudCwgZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpLCBzbG90KTsKQEAgLTg4OCw3ICs4ODgsNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUt
PmlkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBz
bG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fbmV3U3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShieXRlY29kZS5tX2ZsYWdzLmlzRGly
ZWN0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbiA9IG5ld1N0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBhc09i
amVjdChiYXNlQ2VsbCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
Y2hhaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVj
dHVyZUNoYWluLnNldCh2bSwgY29kZUJsb2NrLCBjaGFpbik7CkBAIC05MjcsNyArOTI3LDcgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gSlNDZWxsOjpkZWxldGVQcm9w
ZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRl
Y29kZS5tX3Byb3BlcnR5KSk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYg
KCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291
bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3Bl
cnR5RXJyb3IpKTsKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CiB9
CkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0
X2J5X3ZhbCkKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX2Jhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVy
YW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUg
PSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0
ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwogICAgIAogICAgIGlmIChMSUtFTFkoc3Vic2Ny
aXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50
MzIoKTsKQEAgLTEwNTgsNyArMTA1OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5p
c09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwor
ICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOwog
ICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIC8vIERlc3Bp
dGUgaXRzIG5hbWUsIEpTVmFsdWU6OmlzVUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25seSBmb3Ig
cG9zaXRpdmUgYm94ZWQgaW50MzJfdDsgYWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQgYXJyYXkg
aW5kaWNlcy4KICAgICAgICAgQVNTRVJUKGlzSW5kZXgoc3Vic2NyaXB0LmFzVUludDMyKCkpKTsK
QEAgLTExMTIsNyArMTExMiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxf
YnlfdmFsKQogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIAotICAgIGlmICgh
Y291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0
eUVycm9yKSk7CiAgICAgCiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkp
OwpAQCAtMTczOCw3ICsxNzM4LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25D
YWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24KICAgICBpZiAo
IWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwgQ29k
ZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpKTsKICAgICAKLSAgICB2bS5ob3N0Q2FsbFJldHVyblZh
bHVlID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lKTsKKyAgICB2bS5ob3N0Q2FsbFJl
dHVyblZhbHVlID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBieXRlY29kZS5tX2Vj
bWFNb2RlKTsKICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1l
LCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0aW9uUHRy
VGFnKTsKIH0KICAgICAKQEAgLTE4NzQsNyArMTg3NCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAgICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5y
ZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVydHkpCiAgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2JqZWN0LCBp
ZGVudCkpOwogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6
YXRpb24obWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9k
ZSgpLmlzU3RyaWN0KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlh
bGl6YXRpb24obWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CiAg
ICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmplY3QsIGlkZW50
LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgQ29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRv
U2NvcGVHbG9iYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJ5dGVjb2RlLCBzY29wZSwgc2xv
dCwgaWRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCmluZGV4IDA3ZDhlOGM4MjFjNDZmNGJjZGNjYjkzZWQwODIwMjEyZmRlNWQ3NDku
LmFkZTU0OTU5ZmI2ZmIyN2I1ZDljYWFiNzdlOTkxNDUzMDc2M2M5NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwog
CiAgICAgLy8gMS4gTGV0IGFycmF5IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBv
biB0aGUgdGhpcyB2YWx1ZS4KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50
b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtNjgzLDcgKzY4Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNzgxLDcgKzc4MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8gYmUgPyBUb09iamVjdCh0aGlzIHZhbHVlKS4KLSAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVl
KCk7CkBAIC04NjYsNyArODY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1BvcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpKQogICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1
ZSktPnBvcChnbG9iYWxPYmplY3QpKSk7CkBAIC05MDEsNyArOTAxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2EKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2Rl
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIGlmIChMSUtFTFkoaXNK
U0FycmF5KHRoaXNWYWx1ZSkgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0gMSkpIHsK
ICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNWYWx1ZSk7CkBAIC05NDIsNyAr
OTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVy
c2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBF
WENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1
ZSgpOwpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1NoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxP
YmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlz
T2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKQEAgLTEwNjYsNyArMTA2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
CiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90
eXBlLnNsaWNlCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRp
b24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTExMjYsNyArMTEyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBl
bmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8g
MTUuNC40LjEzCiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Zh
bHVlKCk7CkBAIC0xMzU2LDcgKzEzNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4x
NAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAt
MTM5NCw3ICsxMzk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY0xhc3RJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxNS40LjQuMTUKLSAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVO
TElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCAyMjZiNDgzNTQ2MmQ4YzQ1
ZTYxOWY2NjgwMGJlOTk3YTkxYWU4OGExLi44MDJmMjAyZjkyOWIwMDgwMzRmYTdkNmViODEwOTBh
YjczMzBkMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCkBAIC0xODE4LDcgKzE4MTgsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFVubGlua2VkTWV0
YWRhdGFUYWJsZT4gbWV0YWRhdGEoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9t
ZXRhZGF0YS5kZWNvZGUoZGVjb2Rlcik7IH0KIAogICAgIHVuc2lnbmVkIHVzZXNFdmFsKCkgY29u
c3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQotICAgIHVuc2lnbmVkIGlzU3RyaWN0TW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgdW5zaWduZWQgaXNDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIHVuc2lnbmVkIGhhc0Nh
cHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsg
fQogICAgIHVuc2lnbmVkIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1
aWx0aW5GdW5jdGlvbjsgfQpAQCAtMTg1MSw3ICsxODUwLDYgQEAgcHJpdmF0ZToKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwogCiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6
IDE7Ci0gICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXND
b25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7
CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CkBAIC0yMDQ4LDcgKzIwNDYs
NiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhE
ZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiAgICAgLCBtX3Njb3BlUmVnaXN0ZXIoY2FjaGVk
Q29kZUJsb2NrLnNjb3BlUmVnaXN0ZXIoKSkKIAogICAgICwgbV91c2VzRXZhbChjYWNoZWRDb2Rl
QmxvY2sudXNlc0V2YWwoKSkKLSAgICAsIG1faXNTdHJpY3RNb2RlKGNhY2hlZENvZGVCbG9jay5p
c1N0cmljdE1vZGUoKSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihjYWNoZWRDb2RlQmxvY2suaXND
b25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhjYWNoZWRDb2RlQmxv
Y2suaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY2Fj
aGVkQ29kZUJsb2NrLmlzQnVpbHRpbkZ1bmN0aW9uKCkpCkBAIC0yMjM0LDcgKzIyMzEsNiBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIG1fdGhpc1JlZ2lzdGVyID0gY29kZUJsb2NrLm1f
dGhpc1JlZ2lzdGVyOwogICAgIG1fc2NvcGVSZWdpc3RlciA9IGNvZGVCbG9jay5tX3Njb3BlUmVn
aXN0ZXI7CiAgICAgbV91c2VzRXZhbCA9IGNvZGVCbG9jay5tX3VzZXNFdmFsOwotICAgIG1faXNT
dHJpY3RNb2RlID0gY29kZUJsb2NrLm1faXNTdHJpY3RNb2RlOwogICAgIG1faXNDb25zdHJ1Y3Rv
ciA9IGNvZGVCbG9jay5tX2lzQ29uc3RydWN0b3I7CiAgICAgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyA9IGNvZGVCbG9jay5tX2hhc0NhcHR1cmVkVmFyaWFibGVzOwogICAgIG1faXNCdWlsdGluRnVu
Y3Rpb24gPSBjb2RlQmxvY2subV9pc0J1aWx0aW5GdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IGY2OTk5ZTczNDg0
ZTJhYmQ4ODE0NTRmMTE0ODMxMGMwMmQ0ZjJhNzQuLjg5NmVkODExNzNmYmI3Nzc4NjFiM2I5NTYx
MTlmNGFkYTJhMWU1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgQ2xvbmVkQXJndW1l
bnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhCiAKICAgICBpZiAoIXRoaXNPYmplY3QtPnNwZWNpYWxzTWF0ZXJpYWxpemVkKCkpIHsK
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KHRoaXNPYmplY3QtPm1fY2FsbGVlLT5leGVjdXRhYmxlKCkpOwotICAgICAg
ICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpOworICAgICAg
ICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCk7CiAK
ICAgICAgICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSkgewogICAgICAg
ICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgQ2xvbmVk
QXJndW1lbnRzOjptYXRlcmlhbGl6ZVNwZWNpYWxzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIAogICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2Nh
bGxlZS0+ZXhlY3V0YWJsZSgpKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUt
PmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJ
blN0cmljdENvbnRleHQoKTsKICAgICAKICAgICBpZiAoaXNTdHJpY3RNb2RlKQogICAgICAgICBw
dXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwg
dGhpcy0+Z2xvYmFsT2JqZWN0KHZtKS0+dGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRD
YWxsZXJHZXR0ZXJTZXR0ZXIoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggZmEzY2Qz
MjZiY2Q1Yjk3ODlhMjQyN2U2MTNhYzk1NDhiMmZiM2FlMi4uOWUxNzJiNmFlYTc0YjA2MmRlOWZm
ZWY4ZGE1NmQ0OTM0Zjk0ZDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCkBAIC05MSwxMSArOTEsMTEgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
ICAgICAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCkgfCBh
cnJvd0NvbnRleHRGZWF0dXJlLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgcm9v
dE5vZGUtPmxhc3RMaW5lKCksIGVuZENvbHVtbik7CiAKICAgICBib29sIHVzZXNFdmFsID0gcm9v
dE5vZGUtPmZlYXR1cmVzKCkgJiBFdmFsRmVhdHVyZTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9
IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmU7CisgICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNN
QU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0
YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikKICAgICAgICAgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOwot
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBpc1N0cmljdE1vZGUs
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJz
ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOworICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hl
VHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5
cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBm
YWxzZSwgZXZhbENvbnRleHRUeXBlKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5s
aW5rZWRDb2RlQmxvY2sgPSBVbmxpbmtlZENvZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwgZXhlY3V0
YWJsZUluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxvY2stPnJl
Y29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSwgbGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7CkBAIC0xMDQsNyArMTA0LDcg
QEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChW
TSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5z
b3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIHVubGlua2VkQ29k
ZUJsb2NrLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5z
b3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkpOwogCi0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJs
b2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBlcnJvciA9
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwg
dW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgdmFyaWFibGVzVW5kZXJURFos
IGVjbWFNb2RlKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggZTNiZWQ4OGQ4M2FiZWVmMTliODY4ZTk3MzIzMTdjNTIyZDkwOGUzZC4u
YjhkZTk2NTU4MmY3ZDkxMjcxMzM3ZDU0MzE5MDNlODMxOGMyNmY0NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNzksNyAr
Mzc5LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgLy8gZGlmZmVy
ZW50IG9iamVjdCB0aGF0IHN0aWxsIGhhcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgb24gdGhlIGZhc3Qg
cGF0aCBzaW5jZSBpdCdsbCBwcm9kdWNlCiAgICAgLy8gdGhlIHNhbWUgU3BlY3VsYXRlZFR5cGUu
IFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB2YWx1ZSBwcm9maWxpbmcg
b24gdGhlCiAgICAgLy8gZmFzdCBwYXRoLgotICAgIGF1dG8gdmFsdWUgPSB2MS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0
cmljdE1vZGUpOworICAgIGF1dG8gdmFsdWUgPSB2MS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBieXRl
Y29kZS5tX2VjbWFNb2RlKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVj
b2RlLm1fc3JjRHN0LCB2YWx1ZSwgUFJPRklMRV9WQUxVRSh2YWx1ZSkpOwogfQogCkBAIC05ODgs
NyArOTg4LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAgfQog
ICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIAotICAgIGlmICghY291bGREZWxldGUgJiYgY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGJ5dGVjb2Rl
Lm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CiAgICAgCiAgICAgUkVU
VVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOwpAQCAtMTMwNSw3ICsxMzA1LDcgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWwgPSBHRVRfQyhieXRlY29kZS5tX3RoaXNWYWx1ZSkuanNWYWx1ZSgpOwogICAgIEpTVmFs
dWUgcHV0VmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX3ZhbHVlKS5qc1ZhbHVlKCk7Ci0gICAgUHV0
UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbCwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29k
ZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
VmFsLCBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCksIGNvZGVCbG9jay0+cHV0QnlJZENv
bnRleHQoKSk7CiAgICAgYmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBw
dXRWYWx1ZSwgc2xvdCk7CiAgICAgRU5EKCk7CiB9CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgCiAgICAgYXV0
byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
VmFsdWUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgYmFzZVZhbHVlLnB1
dChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgRU5EKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJ
bmxpbmVzLmgKaW5kZXggMzdhZmE3NmM0MDU3NTkzNTUwNmU1OWI4NGQyYjVmMWU4MDlhZmZmMy4u
YmI1NDc0MDdjMTc1NzVlYWM0NGRhZWMxZjRiN2UwNzE5OWRjNDY0NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaApA
QCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCiAg
ICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
cyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZl
VHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KICAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAg
ICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dl
dFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1
dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBu
ZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
LCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTYxLDcgKzYxLDcgQEAgaW5saW5l
IHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKAogICAgICAgICAgICAgU3ltYm9sVGFibGVF
bnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0
KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwot
ICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5t
X2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0
UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dl
dFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgp
LCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBtZXRh
ZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAg
ICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3Qo
KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDksNyArMTA5LDcgQEAgaW5saW5lIHZvaWQg
dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdS
ZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAg
ICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGlu
ZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3
UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNt
YU1vZGUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhS
T1VHSDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZUdldEZyb21TY29w
ZUdsb2JhbCgKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAg
ICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1f
Z2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2Rl
KCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25N
b2RlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyht
ZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0g
ZW50cnkud2F0Y2hwb2ludFNldCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFy
aWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBj
ODNiOTA1ZTM4MzUxYzFiYTBlZTE1ODQyZDk4M2ZhNjI5ZDcxMmZkLi5iMmY4ZmZkYTFmNzgxNjc3
YzVhZDEzNDQ5NGFhYjRjY2ZjNWQ4Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEpTVmFsdWUgZXZhbHVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1ZhbHVlCiAKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkKICAgICAgICAgdGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0OwotICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IE5vdFN0cmljdE1vZGUpKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVj
dCo+KHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlUHJvZ3JhbShzb3Vy
Y2UsIGdsb2JhbE9iamVjdCwgdGhpc09iaik7CiAKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcAppbmRleCAxYTcyYmZiNDdlZmVmYTU1MGRlZjk4MzU2NjU0YWY2NDkwNzc5
NzM1Li43YzE5Yjc1YzYyYzgwNDEzNjJkZDllYjEyZWRhNTk3OTI1MTE1ZGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUu
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EaXJlY3RFdmFsRXhl
Y3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRl
eHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNV
bmRlclREWikKK0RpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlw
ZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1Vu
ZGVyVERaLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDUs
MTEgKzQ1LDExIEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGds
b2JhbE9iamVjdCwgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBl
LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4o
dm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21h
TW9kZS5pc1N0cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24s
IGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwog
CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3Ry
aWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CisgICAgSlNQYXJzZXJTdHJpY3RN
b2RlIHN0cmljdE1vZGUgPSBlY21hTW9kZS5pc1N0cmljdCgpID8gSlNQYXJzZXJTdHJpY3RNb2Rl
OjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRl
ZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKIAogICAgIC8vIFdlIGRvbid0IGJvdGhlciB3aXRo
IENvZGVDYWNoZSBoZXJlIGJlY2F1c2UgZGlyZWN0IGV2YWwgdXNlcyBhIHNwZWNpYWxpemVkIERp
cmVjdEV2YWxDb2RlQ2FjaGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAppbmRleCA0NzgyNmJmMzIwYzFjMTdkNTgzMTM5YzQ2
ZTUzZTZkYWVkYWJiZDQ5Li4yNDA3NWE3ZjVhMzZjNzNmZWJhNDA3ZTcxMDlhNmZjMzNmMjcwZDRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERp
cmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1
dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVk
Q29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5
cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiBwcml2YXRlOgogICAg
IERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYs
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFNb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0VDTUFNb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDQ0ZGUyOGZmZjE2ZWI3YjEw
ZjYyYTY3ZTk3YzIwMDFmMDE2YTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRUNNQU1vZGUuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkVDTUFNb2RlLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgRUNNQU1vZGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKK3sKKyAgICBpZiAoaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50KCJTdHJpY3RN
b2RlIik7CisgICAgZWxzZQorICAgICAgICBvdXQucHJpbnQoIk5vdFN0cmljdE1vZGUiKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FQ01BTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQU1v
ZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZmYxYjExYTY2ZWE5MTdkN2UzZDNjZDE5YTU3OTIyYjU5ZTc3YzE2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQU1v
ZGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFByaW50
U3RyZWFtOworfTsKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBFQ01BTW9kZSB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFN0cmljdE1vZGUgPSAwOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDhfdCBTbG9wcHlNb2RlID0gMTsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dGV4cHIgRUNNQU1vZGUgZnJvbUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVybiBFQ01BTW9kZShi
eXRlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgc3RyaWN0KCkgeyByZXR1cm4g
RUNNQU1vZGUoU3RyaWN0TW9kZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEVDTUFNb2RlIHNs
b3BweSgpIHsgcmV0dXJuIEVDTUFNb2RlKFNsb3BweU1vZGUpOyB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNTdHJpY3QoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IFN0cmljdE1vZGU7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CisKKyAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2
YXRlOgorICAgIGNvbnN0ZXhwciBFQ01BTW9kZSh1aW50OF90IHZhbHVlKQorICAgICAgICA6IG1f
dmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV92YWx1ZSA9PSBTdHJpY3RNb2Rl
IHx8IG1fdmFsdWUgPT0gU2xvcHB5TW9kZSwgbV92YWx1ZSk7CisgICAgfQorCisgICAgdWludDhf
dCBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA2MDViMmVmZmIxZDdiODJlNWNk
YjdjNjQ1M2RjNWRlNzFmMzAyNjc2Li42N2U2OWM4NjI5YmEzZmIzODExNDgxMTM2YjhlN2U5OTQ4
MGVkNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRh
YmxlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0g
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0
VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6
OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9
CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0
aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1GdW5j
dGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDQ0M2JiMzhhNjVjYjgwNDc0NTY4
NTdjZDhkMjc2YWRlOWY3YTZiNWMuLmJhZGU5ODczNWY5OWRjNDdlN2E2ZGM3ODdjNTc5NzExY2U1
MTVlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
Ly8gUGVyIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWZvcmJpZGRlbi1leHRl
bnNpb25zLCBvbmx5IHNsb3BweS1tb2RlIG5vbi1idWlsdGluIGZ1bmN0aW9ucyBpbiBvbGQtc3R5
bGUgKHByZS1FUzYpIHN5bnRhY3RpYyBmb3JtcyBjYW4gY29udGFpbgogICAgICAgICAvLyAiY2Fs
bGVyIiBhbmQgImFyZ3VtZW50cyIuCi0gICAgICAgIHJldHVybiAhaXNTdHJpY3RNb2RlKCkgJiYg
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgJiYgIWlz
Q2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiAhaXNJblN0cmljdENv
bnRleHQoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9u
TW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsKICAgICB9CiAgICAgYm9vbCBo
YXNQcm90b3R5cGVQcm9wZXJ0eSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXRQdXRJbmZvLmNwcAppbmRleCBkNmU3MWVkODQ4YTdjNTdiY2U4OWY5MjQ0
ODI5MjFlMzk1ODQwYzhjLi4xNTA4YTYwMTdjOWIxYWU1ZTcwMTg5Mjk3YjI2M2VjMTYyNWY2MjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmNwcApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBHZXRQdXRJbmZvOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG9wZXJhbmQoKSwgIjwiLCBy
ZXNvbHZlTW9kZSgpLCAifCIsIHJlc29sdmVUeXBlKCksICJ8IiwgaW5pdGlhbGl6YXRpb25Nb2Rl
KCksICI+Iik7CisgICAgb3V0LnByaW50KG9wZXJhbmQoKSwgIjwiLCByZXNvbHZlTW9kZSgpLCAi
fCIsIHJlc29sdmVUeXBlKCksICJ8IiwgaW5pdGlhbGl6YXRpb25Nb2RlKCksICJ8IiwgZWNtYU1v
ZGUoKSwgIj4iKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXRQdXRJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJ
bmZvLmgKaW5kZXggMDZmZmQ0M2EwMjVmMGI1ZWNiNGUwMTBlMjcxOGQwNmMwMWI0NTlkZS4uZGU1
MTUwODliMmM1Zjg1OWUwMTk4NDgxZmZkODBkMDlkNWE2OTUxNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJFQ01BTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1
ZWRTdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjAyLDE4ICsyMDMsMjAgQEAg
Y2xhc3MgR2V0UHV0SW5mbyB7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBPcGVyYW5kOwogcHVibGlj
OgogICAgIC8vIEdpdmUgZWFjaCBmaWVsZCAxMCBiaXRzIGZvciBzaW1wbGljaXR5LgotICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmQpICogOCA+IDMwLCAiTm90IGVub3VnaCBiaXRzIGZv
ciBHZXRQdXRJbmZvIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3BlcmFuZCkgKiA4ID4g
MzEsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1dEluZm8iKTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGlzU3RyaWN0U2hpZnQgPSAzMDsKICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG1vZGVTaGlmdCA9IDIwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW5p
dGlhbGl6YXRpb25TaGlmdCA9IDEwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdHlw
ZUJpdHMgPSAoMSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSAtIDE7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBpbml0aWFsaXphdGlvbkJpdHMgPSAoKDEgPDwgbW9kZVNoaWZ0KSAtIDEp
ICYgfnR5cGVCaXRzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbW9kZUJpdHMgPSAo
KDEgPDwgMzApIC0gMSkgJiB+aW5pdGlhbGl6YXRpb25CaXRzICYgfnR5cGVCaXRzOwotICAgIHN0
YXRpY19hc3NlcnQoKG1vZGVCaXRzICYgaW5pdGlhbGl6YXRpb25CaXRzICYgdHlwZUJpdHMpID09
IDB4MCwgIlRoZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNvbHZlTW9k
ZSBSZXNvbHZlVHlwZSBhbmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBpc1N0cmljdEJpdCA9IDEgPDwgMzA7CisgICAgc3RhdGljX2Fzc2VydCgo
bW9kZUJpdHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0cyAmIGlzU3RyaWN0Qml0KSA9
PSAweDAsICJUaGVyZSBzaG91bGQgYmUgbm8gaW50ZXJzZWN0aW9uIGJldHdlZW4gUmVzb2x2ZU1v
ZGUgUmVzb2x2ZVR5cGUgYW5kIEluaXRpYWxpemF0aW9uTW9kZSIpOwogCiAgICAgR2V0UHV0SW5m
bygpID0gZGVmYXVsdDsKIAotICAgIEdldFB1dEluZm8oUmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUs
IFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRp
b25Nb2RlKQotICAgICAgICA6IG1fb3BlcmFuZCgocmVzb2x2ZU1vZGUgPDwgbW9kZVNoaWZ0KSB8
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2RlKSA8PCBpbml0aWFsaXph
dGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQorICAgIEdldFB1dEluZm8oUmVzb2x2ZU1vZGUgcmVz
b2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGUgaW5p
dGlhbGl6YXRpb25Nb2RlLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX29wZXJhbmQo
KGVjbWFNb2RlLmlzU3RyaWN0KCkgPDwgaXNTdHJpY3RTaGlmdCkgfCAocmVzb2x2ZU1vZGUgPDwg
bW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2RlKSA8
PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQogICAgIHsKICAgICB9CiAKQEAg
LTIyNSw2ICsyMjgsNyBAQCBwdWJsaWM6CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4obV9vcGVyYW5kICYgdHlwZUJp
dHMpOyB9CiAgICAgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEluaXRpYWxpemF0aW9uTW9kZT4oKG1fb3BlcmFuZCAmIGlu
aXRpYWxpemF0aW9uQml0cykgPj4gaW5pdGlhbGl6YXRpb25TaGlmdCk7IH0KICAgICBSZXNvbHZl
TW9kZSByZXNvbHZlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc29sdmVNb2Rl
PigobV9vcGVyYW5kICYgbW9kZUJpdHMpID4+IG1vZGVTaGlmdCk7IH0KKyAgICBFQ01BTW9kZSBl
Y21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZCAmIGlzU3RyaWN0Qml0ID8gRUNNQU1v
ZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOyB9CiAgICAgdW5zaWduZWQgb3BlcmFu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFuZDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcAppbmRleCA1ZjlmODVlMWVjZGM4MTM0N2Q4OTc0MDZlNjIxMTRkMDY1NDcyNzkzLi42
NmNjNzUwNzM5MGJhNDFlMDg4OWNkNmI2YzUwMGU3NmIwMjE2MGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
Ym9vbCBjYWxsU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlck9i
aiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwogCiAgICAgaWYgKGdldHRl
clNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSwgUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVjbWFNb2RlLmlzU3RyaWN0KCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKIAog
ICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBnZXR0ZXJTZXR0ZXJPYmotPnNldHRlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1
dGFibGUuY3BwCmluZGV4IDIwMDMxOTI5MGYwYmUwZjk3MzE0MWJmZTk0OTlmM2JhZTg5Nzg4NjIu
LjE0ZjdmYWI1YzNkNGVhYTg3OTQyYmNmMzMyYTQ1ZjFjNTA2ZGFlN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUu
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCitJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTQ1LDE1ICs0NSwxNCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGlyZWN0RXZh
bEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7
CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEluZGly
ZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2Jh
bE9iamVjdCwgc291cmNlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0p
OwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmlj
dE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6
U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZh
dWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAgICAgCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiB1bmxpbmtlZEV2YWxDb2RlID0gdm0uY29kZUNhY2hlKCktPmdldFVubGlua2VkRXZhbENvZGVC
bG9jaygKLSAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBzdHJp
Y3RNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUpOworICAg
ICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyU3RyaWN0
TW9kZTo6Tm90U3RyaWN0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5
cGUpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSkKICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7
CkBAIC02OCw4ICs2NywxMCBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVybiBl
eGVjdXRhYmxlOwogfQogCi1JbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNl
LCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vKQorY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFsc2U7Citjb25zdGV4cHIg
Ym9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CitJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2Us
IGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IGMxOTkyZmRiMWE0
MjUwNTRhZTliYzQ1NzUxMjhlNmY1MDg2Y2E5YmMuLjQ5OGI1Yzg3MDk4YWIzNzQ3OTdhMjViZjQ4
MTYzN2NmYmI5MmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZh
bEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUq
IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4
dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIHBy
aXZhdGU6Ci0gICAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CisgICAgSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJp
dmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRU
eXBlKTsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEluZGlyZWN0RXZhbEV4ZWN1dGFibGUp
ID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJkYjJlNTc3MDJiM2NiYzM2OTkz
NjlkNzdjOTQzMzBkNC4uNWRiN2NkM2ZkMTllODliZDgxZDU5MDI1M2U5OTFiOGJlYTA4ZDJkOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMTEsNyArMTExLDcg
QEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBBU1NFUlQoIWlzQ2VsbCgpKTsKIAot
ICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgIGlmIChlY21hTW9kZS5pc1N0cmlj
dCgpKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91
YmxlKCkpCkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHkKIAogICAg
ICAgICAgICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7CiAgICAgICAgICAg
ICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCAqdGhpcywgZ3MsIHZhbHVlLCBz
bG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpKTsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xvYmFsT2Jq
ZWN0LCAqdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gRUNNQU1vZGU6OnN0
cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAKICAgICAgICAgICAgIGlmIChncy5pc0N1
c3RvbUdldHRlclNldHRlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBjYWxsQ3VzdG9tU2V0
dGVyKGdsb2JhbE9iamVjdCwgZ3MsIGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDBiY2FiNDBiOGQ5MjFkMmM3MzRh
MjlhMTRkYzAyMWM3MmQyMzBhMzQuLjQyYzUzNzc3Y2NkZWM1ZmNkNGRiODEwZDE4NTRmYTYwYzlm
NDgxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAg
LTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw2ICsyMiw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRUNNQU1vZGUuaCIKICNpbmNsdWRlICJK
U0V4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgIlB1cmVOYU4uaCIKICNpbmNsdWRlIDxmdW5jdGlv
bmFsPgpAQCAtODAsOCArODEsNyBAQCB1c2luZyBXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3QgPSB0
eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtubwogICAgIER1bWJW
YWx1ZVRyYWl0czxUPiwgRHVtYlB0clRyYWl0czxUPgogPjo6dHlwZTsKIAotZW51bSBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmlu
ZyB9OwotZW51bSBFQ01BTW9kZSB7IFN0cmljdE1vZGUsIE5vdFN0cmljdE1vZGUgfTsKK2VudW0g
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSA6IHVpbnQ4X3QgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51
bWJlciwgUHJlZmVyU3RyaW5nIH07CiAKIGVudW0gY2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZDsK
IHN0cnVjdCBDYWxsRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
CmluZGV4IDJmZWEyYjViOGVkODA5MzdhMDkwZmM1YzFhZjViNTkyZDMzNTgzM2EuLjEzOTBjNzYx
OWFjYzdhOTQ0OWFmZTNjODc3YmQ5OTM1MGY1NDA2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNDZWxsOjpkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1CiAKIEpTVmFsdWUgSlNDZWxsOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAgICBpZiAoZWNtYU1v
ZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAg
cmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDA5
YWJhZTM4YmUwZmUzNDZmZDVkMzhiMjJiZGE0N2JmOWU2NmNhMzUuLjUxOTAzY2E3ODcxZDM3MmUy
NmI4ZWNlMGUzYWUwYTNmMTQ2Yjg1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cnVjdHVyZSogSlNGdW5jdGlv
bjo6c2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0CiAgICAgYm9vbCBpc0J1aWx0aW4gPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigp
OwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+YXJyb3dGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwotICAgIGlm
IChleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNJblN0
cmljdENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaWN0RnVuY3Rp
b25TdHJ1Y3R1cmUoaXNCdWlsdGluKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zbG9wcHlG
dW5jdGlvblN0cnVjdHVyZShpc0J1aWx0aW4pOwogfQpAQCAtNDMwLDcgKzQzMCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJh
dG9yV3JhcHBlck1ldGhvZE1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
cldyYXBwZXJNZXRob2RNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpJbnN0YW5jZUZp
ZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBpZiAoIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlmICghZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgp
LT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWxsZXIpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBz
dHJpY3QgY2FsbGVyIl9zKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDliYThjNzBk
NzZhNzQyZWViNTcxNjc4Y2M5M2RiYWNiNDc5Mzk0NGUuLmNhOTQ4OWMwZTBlZmRjODZiMGY0MjJm
ZjI4ODZlZjQ4ZDE5M2E5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTUwNyw3ICs1MDcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHBhcnNlZE9iamVjdCk7CiAKICAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luID0gY2FsbEZy
YW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0g
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShz
LCBzb3VyY2VPcmlnaW4pLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwg
RXZhbENvbnRleHRUeXBlOjpOb25lKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291
cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRU
eXBlOjpOb25lKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IWV2YWwpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CkBAIC03MTQsNyArNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jUHJvdG9HZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9i
amVjdEVycm9yKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CiAKQEAgLTczNSw3ICs3MzUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYg
KHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5k
ZWZpbmVkRXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKaW5kZXggMjcxZTgxYzFhNzAwMDkyMzcxOWUxYTliODk0MzU2M2NmNjgwNGEzZC4uMWIyNGYx
MWVjNzg4ZjU0ODRkY2JhZDI2MTRiODg0YzQxYjZhZjk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtODEwLDcgKzgxMCw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OnB1dElubGluZVNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLT5zdHJ1Y3R1cmUodm0pLT5p
c0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0
ZXIob2JqLCBvZmZzZXQpOwogCi0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0
dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFsdWUoKSwgZ3MsIHZhbHVlLCBzbG90LmlzU3Ry
aWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOworICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gY2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHNsb3QudGhpc1ZhbHVlKCks
IGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVD
TUFNb2RlOjpzbG9wcHkoKSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICB9CkBAIC0xODE4LDcgKzE4MTgsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRo
Q3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAg
IHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRT
ZXQsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCJf
cyk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGds
b2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CisgICAgQVNTRVJUKG1ldGhvZFRh
YmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSA9
PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pID09IHByb3Rv
dHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCmluZGV4IDZkNWFiNjgyYzY4MzkxNGY2OWYzZTVjMjI4Mzg0ZmVmZTQ2NTc3
YzguLmIzYzI3MjAyMjgwNmI4MTE0MzU3ZDgxZGU5ZjNiNWZjMTAzNTRkOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC00MTEsNyArNDExLDcgQEAgU3lt
Ym9sVGFibGUqIEpTU2NvcGU6OnN5bWJvbFRhYmxlKFZNJiB2bSkKIAogSlNWYWx1ZSBKU1Njb3Bl
Ojp0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUg
ZWNtYU1vZGUpCiB7Ci0gICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVj
bWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJl
dHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBhYWVlOGVlN2E3N2VlYTZkZWZjNzU3YTg3ZDIz
YjNlY2JhODZmMjFmLi4wZjIwN2EzYjY4NmFlYTdiNTdkNDk1Y2Q3MDI5YWQ4YTgzODZkYmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC00MTcsNyAr
NDE3LDcgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogCiBKU1ZhbHVlIEpTU3RyaW5nOjp0b1RoaXMoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAg
ICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3Qo
KSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRl
KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhjZWxsKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4
IDY5NzZmNzA1ZDM0MDRlMzdhMjFkODkyYjEyM2NiYzM4MDQyMzZkNWIuLjUzNTIzNzE4ZGM5Yjlk
MjIxMmI4YjgyMTE3NjM2OGY0ODQyMTgyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC05MzMsNyArOTMzLDcgQEAgSlNWYWx1ZSBM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQg
dG8gcmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5Il9zOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8g
bV9udWxsT3JDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpIDogZmFsc2UpOworICAgICAgICAgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8g
bV9udWxsT3JDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgp
IDogZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5sYXN0KCkucHV0KG1f
Z2xvYmFsT2JqZWN0LCBpZGVudCwgbGFzdFZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChpZGVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA0NjU0NjIwMDRmMzdlMjAx
MmQ3MjE2OGM2MjA5ZTUwNTE3YzEyMDU1Li4wOTlkODk5YWQ1ZTYzYTc0MzM1OGUyYWJiMjBhYjM0
ZjU5Yjk2MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAg
ICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6
TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVF
dmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29u
dGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
aygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uY3BwCmluZGV4IDEwZjg4NzI1YWMwMDJkMjUzYTljODYzNzFkNDUzOTg1MGRmY2FhMjkuLjQx
NGNiOGNlZmRmZjgzMGY1N2JmZmQ4MjY5NDQ1MGEyZjM5Mzg5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcApAQCAtMzcs
NiArMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IENsYXNzSW5mbyBOdWxsU2V0dGVyRnVu
Y3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShOdWxsU2V0dGVyRnVuY3Rpb24pIH07CiAKIAorI2lm
IEFTU0VSVF9FTkFCTEVECisKIGNsYXNzIEdldENhbGxlclN0cmljdG5lc3NGdW5jdG9yIHsKIHB1
YmxpYzoKICAgICBHZXRDYWxsZXJTdHJpY3RuZXNzRnVuY3RvcigpCkBAIC01Miw3ICs1NCw5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCiAg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJsb2NrKCk7Ci0gICAg
ICAgIG1fY2FsbGVySXNTdHJpY3QgPSBjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKTsKKyAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGF0IHdl
IG1pZ2h0IGhhdmUgYW4gc3RyaWN0IG9wY29kZSBpbiBhIG5vbi1zdHJpY3QgY29udGV4dCwgYnV0
IHRoYXQncworICAgICAgICAvLyBvayBzaW5jZSB3ZSBhc3NlcnQgYmVsb3cgdGhhdCB0aGlzIGZ1
bmN0aW9uIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgZnJvbSBhbnkga2luZCBzdHJpY3QgY29udGV4
dC4KKyAgICAgICAgbV9jYWxsZXJJc1N0cmljdCA9IGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpOwogICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpEb25lOwogICAgIH0KIApAQCAtNzAsMTQgKzc0LDE2IEBAIHN0YXRpYyBib29s
IGNhbGxlcklzU3RyaWN0KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJu
IGl0ZXIuY2FsbGVySXNTdHJpY3QoKTsKIH0KIAorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECisK
IG5hbWVzcGFjZSBOdWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbCB7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0KLSAgICBpZiAoY2FsbGVySXNTdHJpY3Qodm0sIGNhbGxGcmFtZSkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNl
dHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIl9zKSk7CisjaWYgIUFTU0VS
VF9FTkFCTEVECisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7CisjZW5kaWYKKyAgICBBU1NFUlQoIWNhbGxlcklzU3RyaWN0KGdsb2Jh
bE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4IGNiYzc5YTMwMDhjMTMyYjZkMzY5ZGU3MmY1Y2Q2
MjZiODA1YTM5YmQuLjQxY2U4YWFmMWRiMmNkNzA3MGUxNWI2YTZkMzFiNzU0MTc1MmM4NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cApAQCAtODEsNyArODEsNyBAQCBPYmplY3RQcm90b3R5cGUqIE9iamVjdFByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmlj
dE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIEpTT2JqZWN0KiB2
YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJ
S0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTk0
LDcgKzk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNI
YXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkp
OwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbAogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogICAgIEpT
T2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNPYmopKQpAQCAtMTUwLDcgKzE1MCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2Rl
KS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGdldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CkBAIC0xNzgsNyArMTc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKQEAg
LTIwNiw3ICsyMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY0xvb2t1cEdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlL
ZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTI2OSw3ICsyNjksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNF
bnVtZXJhYmxlKEpTR2xvYmFsT2JqZWN0KgogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
U3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpA
QCAtMjkwLDcgKzI5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgLy8gMi4gSW52
b2tlKFYsICJ0b1N0cmluZyIpCiAKICAgICAvLyBMZXQgTyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgVG9PYmplY3QgcGFzc2luZyB0aGUgdGhpcyB2YWx1ZSBhcyB0aGUgYXJndW1lbnQuCi0gICAg
SlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RN
b2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlz
VmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgLy8gTGV0IHRvU3RyaW5nIGJlIHRoZSBPLltbR2V0XV0oInRvU3RyaW5n
IiwgVikKQEAgLTMxNSw3ICszMTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZCgpID8g
dm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVjdFN0cmluZygpIDogdm0uc21hbGxTdHJpbmdz
Lm51bGxPYmplY3RTdHJpbmcoKSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFs
dWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAppbmRleCBhOGYwYjVmODk5NDJiMzdkYWU5
ZTdhMzAyOTJkNDE4ZmI4N2U4OTMzLi4yYjMyZjVhMDRhMjAxMjM2YTk3YmJhZWRjNDM0NjJjZDI4
OGUzMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFt
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0
YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoK
ICAgICBBU1NFUlQoJmdsb2JhbE9iamVjdC0+dm0oKSA9PSAmdm0pOwogCiAgICAgUGFyc2VyRXJy
b3IgZXJyb3I7Ci0gICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBpc1N0cmljdE1v
ZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3Q7CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBpc0luU3RyaWN0
Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1v
ZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2Vu
ZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsK
ICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0uY29k
ZUNhY2hlKCktPmdldFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaygKICAgICAgICAgdm0sIHRoaXMs
IHNvdXJjZSgpLCBzdHJpY3RNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yKTsKQEAgLTEz
Niw3ICsxMzYsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9i
YWxQcm9wZXJ0aWVzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICBib29sIGhh
c1Byb3BlcnR5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5oYXNQcm9wZXJ0eShnbG9iYWxP
YmplY3QsIGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKGhhc1Byb3BlcnR5KSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAmJiAhdm0u
Z2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNTdHJpY3RNb2RlKCkp
KSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAm
JiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNJblN0cmlj
dENvbnRleHQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBhbGxvdyAiY29u
c3QiIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbnMgdW5kZXIgdGhpcyBzZXR0aW5nLgogICAgICAgICAg
ICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgd2UgZG9uJ3QgImxldCIgdmFyaWFibGVzIHRvIGJl
IG92ZXJyaWRkZW4gYnkgImNvbnN0IiB2YXJpYWJsZXMuCiAgICAgICAgICAgICAgICAgICAgIGlm
IChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmlzQ29uc3RWYXJpYWJsZShlbnRyeS5rZXkuZ2V0
KCkpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5p
dGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAg
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1i
b2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxl
LT5tX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGV4aWNhbERlY2xhcmF0aW9u
cykgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAmJiAh
dm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNTdHJpY3RNb2Rl
KCkpKSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYm
ICF2bS5nbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc0luU3RyaWN0
Q29udGV4dCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+Y29udGFpbnMo
bG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCkpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9n
cmFtRXhlY3V0YWJsZS5oCmluZGV4IDI5Y2EwMTMyMDU2MWIxNDZhNjI5YzZmYjVmYTE4OGZmNThj
M2RiMWYuLmI4NzE1YWE3MmJiY2I3MzM5ZDZlMzQxM2FjNTljNzQ0MTE3YjgyYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAt
NzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5
cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZh
bCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRN
b2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBl
OjpOb25lKTsgfQogCiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0
TWFwKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmNwcAppbmRleCBiMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVlZTllNWY5MGM2NjYwLi42ZDEx
YjQxYmE0MDYxODE1NTIyZGFiM2ViZmUzMWM3NzZlN2VlNzczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC01NDcsNyArNTQ3LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAg
YXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6U3RyaWN0TW9kZSkp
OworICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGFy
Z0FycmF5KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0
LCBhcHBseU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgK
aW5kZXggMTA2Y2YyNWY2MzFmMDQxYjliYzYzMTk0MDBmNDY2N2IwN2IzOWNmYy4uMGRkNDRlY2I4
NDM3MWQ0NzczNDYwY2Q0YzBhYWU1NWZlM2NkMjMyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaApAQCAtNjAsMTIgKzYwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEV2
YWxGZWF0dXJlOyB9CiAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9m
ZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KLSAgICBi
b29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RNb2Rl
RmVhdHVyZTsgfQogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENv
bnRleHRUeXBlKTsgfQogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFdmFsQ29udGV4dFR5cGU+KG1fZXZhbENvbnRleHRUeXBl
KTsgfQorICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1
cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29u
c3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsg
fQotICAgICAgICAKICAgICB2b2lkIHNldE5ldmVySW5saW5lKGJvb2wgdmFsdWUpIHsgbV9uZXZl
cklubGluZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXROZXZlck9wdGltaXplKGJvb2wgdmFsdWUp
IHsgbV9uZXZlck9wdGltaXplID0gdmFsdWU7IH0KICAgICB2b2lkIHNldE5ldmVyRlRMT3B0aW1p
emUoYm9vbCB2YWx1ZSkgeyBtX25ldmVyRlRMT3B0aW1pemUgPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcApp
bmRleCA4NWMxY2YzNDMzODE4NDc4ODM4ODQ1NmViMzZhZWEyZmZiNjM0MWZhLi4zZmQ2MDA2ZTFl
ODQ1ZmFlZWQyNmQwZTcyODNjNTNmNmMxMGYzMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcApAQCAtMjAzLDcgKzIw
Myw3IEBAIGJvb2wgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFyCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyA/IFN0cmljdE1v
ZGUgOiBOb3RTdHJpY3RNb2RlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxs
U2V0dGVyKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3Vs
ZFRocm93ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpKSk7CiB9CiAK
IEpTVmFsdWUgU3BhcnNlQXJyYXlFbnRyeTo6Z2V0Tm9uU3BhcnNlTW9kZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXgg
MWJiNWNkZmZhNzZhNzdkZTIyNDNjYjYyMWMyMjQ1YmI4ZTA1MTJkYy4uNTRkMWM5ZDI2ZTBlOTQ1
MDI3ZGFlNDYxZDdhMGEwYzg3Y2U0ODNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNjI2LDcgKzYyNiw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVu
RGF0YWJhc2VCb2R5KEpTCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTRE9NV2luZG93KiBJRExPcGVy
YXRpb248SlNET01XaW5kb3c+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gdG9KU0RPTVdpbmRvdyhs
ZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxl
eGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKKyAgICByZXR1cm4gdG9KU0RPTVdp
bmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1Ro
aXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnNsb3BweSgpKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
T3BlbkRhdGFiYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1
c3RvbS5oCmluZGV4IDA5Mjg1MTc2M2NhMGQxYWNhMWJjNzM0NjUzNTBiNmUyYzBlZWU1MDYuLjM3
NjhiZjI5MWM1OWRhZTg5OWRiMGYxNTBhMWIwY2EwOGM3ZGMyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgY2Fs
bEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpOb3RT
dHJpY3RNb2RlKSk7CisgICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0
KHZtLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmpl
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCAiRXZlbnRUYXJnZXQiLCBvcGVyYXRpb25OYW1lKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCBkYjlhYzFiYzdhZTE4YTRkZGYwZGI1OGIzOTlhNGJlNDBmNmJhMjVkLi43NzMxMDYzZmZm
NmIwM2ZmOTlhNmMzNzE5ZjYwYWZhZTI1ZDFkNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDU5MSw3ICs0NTkxLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIGRlY29kZWRUaGlzVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKGRlY29kZWRUaGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KS50b1RoaXMoJmxleGljYWxH
bG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWUoJmxleGljYWxHbG9i
YWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgp
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0
aW5nRnVuY3Rpb24odm0sIGRlY29kZWRUaGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NjA3LDcgKzQ2
MDcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICMgRklYTUU6IE1h
a2UgY29uc2lzdGVudCBJRExBdHRyaWJ1dGU8Pjo6Y2FzdCBhbmQgSURMT3BlcmF0aW9uPD46OmNh
c3QgaW4gY2FzZSBvZiBDdXN0b21Qcm94eVRvSlNPYmplY3QuCiAgICAgICAgIG15ICRjYXN0aW5n
RnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRv
SlNPYmplY3R9ID8gInRvJHtjbGFzc05hbWV9IiA6IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2Jq
ZWN0KCRpbnRlcmZhY2UpOwotICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJjYWxsRnJhbWUudGhp
c1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSIgOiAi
Y2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKKyAgICAgICAgbXkgJHRoaXNWYWx1ZSA9ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAiY2FsbEZy
YW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNs
b3BweSgpKSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1ZSgpIjsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAke2NsYXNzTmFtZX0qIElETE9wZXJhdGlvbjwke2Ns
YXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUmIGNhbGxGcmFtZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlv
bihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJHRoaXNWYWx1ZSk7XG4iKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAzNTY2MWEwM2EwMWIxZjdhMjQzNDczNjY0MzAyMWU4MGFlOTFmMzY3Li41ZjY0MzhlNjg4
YjJhZjhiMmZmYzlhNzIyYzE1MGUxNjhjZjk1YWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjAtMDQtMDYgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Tm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0aW9uIHN0YXRlbWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NTc4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIHRlc3Qgc2luY2UgaXQgY29udGFpbmVk
IGluY29ycmVjdCBjb2RlLgorCisgICAgICAgICoganMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1l
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1t
ZXRob2QtbmFtZXMuanM6CisKIDIwMjAtMDQtMDYgIEphY29iIFVwaG9mZiAgPGphY29iX3VwaG9m
ZkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBdIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVh
ay1pbi1jb25zdHJ1Y3Rvci1iZWZvcmUtc3VwZXIuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3Rl
ZC50eHQKaW5kZXggN2YxNDkyNGYzZDNhZDc2OWQ5OTgxYjQ1Y2FiNDZlZWVmOTc2ZDc1Yy4uODg4
Y2QyZDIyNTJhOGYzOWNjM2YyZWUzMDE3NDZiOTA1OGJjYTljOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LW1ldGhvZC1uYW1lcy1leHBlY3RlZC50eHQKQEAgLTU2
LDkgKzU2LDkgQEAgUEFTUyBBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2Zvbycs
IDIxNSk7IChuZXcgQSlbJ2ZvbyddKCkgaXMgMjE1CiBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhJ
bnN0YW5jZU1ldGhvZCgnZm9vJywgMjE2KTsgQiA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0
aG9kKCdiYXInLCAyMTcpOyBbKG5ldyBBKVsnZm9vJ10oKSwgKG5ldyBCKVsnYmFyJ10oKV0gaXMg
WzIxNiwgMjE3XQogUEFTUyB4ID0gMjE4OyBjbGFzcyBBIHsgW3grK10oKSB7IHJldHVybiB4OyB9
IH07IChuZXcgQSlbMjE4XSgpIGlzIDIxOQogUEFTUyB4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsg
Wyh4PTIyMCkgJiYgJ2ZvbyddKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpLmZvbygpIGlzIDIy
MAotUEFTUyB4ID0gMjIxOyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7
IH0gWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAo
bmV3IEEpWzIyMl0oKV0gaXMgWzIyMSwgMjIyXQorUEFTUyB2YXIgeCA9IDIyMSwgeDEsIHgyOyBj
bGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7IH0gWyh4Mj14KSAmJiB4Kytd
KCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgpLCAobmV3IEEpWzIyMl0oKV0gaXMg
WzIyMSwgMjIyXQogUEFTUyB4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArIHgrK10oKSB7IHJldHVy
biAyMjM7IH0gWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBbKG5ldyBBKS5mb28x
KCksIChuZXcgQSkuZm9vMigpXSBpcyBbMjIzLCAyMjRdCi1QQVNTIHggPSAxOyBjbGFzcyBBIHsg
Wydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsgeCsrXSgp
IHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSkuZm9vMigpXSBpcyBbMiwgMywgMjI2
XQorUEFTUyB2YXIgeCA9IDEsIHgxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJu
IDIyNTsgfSBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEs
IHgsIChuZXcgQSkuZm9vMigpXSBpcyBbMiwgMywgMjI2XQogCiBTdGF0aWMgbWV0aG9kcyB3aXRo
IGNvbXB1dGVkIG5hbWVzCiBQQVNTIGNsYXNzIEEgeyBzdGF0aWMgWydhJyArICdiJ10oKSB7IHJl
dHVybiAzMTE7IH0gfTsgQS5hYigpIGlzIDMxMQpAQCAtNjksOSArNjksOSBAQCBQQVNTIEEgPSBj
cmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNSk7IEFbJ2ZvbyddKCkgaXMgMzE1
CiBQQVNTIEEgPSBjcmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNik7IEIgPSBj
cmVhdGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2JhcicsIDMxNyk7IFtBWydmb28nXSgpLCBCWydi
YXInXSgpXSBpcyBbMzE2LCAzMTddCiBQQVNTIHggPSAyMTg7IGNsYXNzIEEgeyBzdGF0aWMgW3gr
K10oKSB7IHJldHVybiB4OyB9IH07IEFbMjE4XSgpIGlzIDIxOQogUEFTUyB4ID0gdW5kZWZpbmVk
OyBjbGFzcyBBIHsgc3RhdGljIFsoeD0yMjApICYmICdmb28nXSgpIHsgcmV0dXJuIHg7IH0gfTsg
QS5mb28oKSBpcyAyMjAKLVBBU1MgeCA9IDIyMTsgY2xhc3MgQSB7IHN0YXRpYyBbKHgxPXgpICYm
IHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0aWMgWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4g
eDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0oKV0gaXMgWzIyMSwgMjIyXQorUEFTUyB2YXIgeCA9
IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJu
IHgxOyB9IHN0YXRpYyBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFd
KCksIEFbMjIyXSgpXSBpcyBbMjIxLCAyMjJdCiBQQVNTIHggPSAxOyBjbGFzcyBBIHsgc3RhdGlj
IFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjM7IH0gc3RhdGljIFsnZm9vJyArIHgrK10oKSB7
IHJldHVybiAyMjQ7IH0gfTsgW0EuZm9vMSgpLCBBLmZvbzIoKV0gaXMgWzIyMywgMjI0XQotUEFT
UyB4ID0gMTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9
IHN0YXRpYyBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEs
IHgsIEEuZm9vMigpXSBpcyBbMiwgMywgMjI2XQorUEFTUyB2YXIgeCA9IDEsIHgxOyBjbGFzcyBB
IHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFsoeDE9eCkg
JiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28yKCldIGlz
IFsyLCAzLCAyMjZdCiAKIEluc3RhbmNlIG1ldGhvZHMgd2l0aCBkdXBsaWNhdGVkIG5hbWVzCiBQ
QVNTIGNsYXNzIEEgeyBhYigpIHsgcmV0dXJuIDQwMSB9IGFiKCkgeyByZXR1cm4gNDAyOyB9IH07
IChuZXcgQSkuYWIoKSBpcyA0MDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMuanMKaW5kZXggMTQyYmIwNWIzYjQwOWQ5
MDEyYWE0OWFkNDI1MjNkZTk3MTUzYzZhNi4uMWJiZTkwMzU4NmU4NTQ3MjI0ZGQzYmJjZjRhOTBl
ZjgyNDQzYjkwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNz
LXN5bnRheC1tZXRob2QtbmFtZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMuanMKQEAgLTU3LDkgKzU3LDkgQEAgc2hvdWxkQmUo
IkEgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnZm9vJywgMjE1KTsgKG5ldyBBKVsn
Zm9vJ10oKSIsICIyMTUKIHNob3VsZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRo
b2QoJ2ZvbycsIDIxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnYmFyJywg
MjE3KTsgWyhuZXcgQSlbJ2ZvbyddKCksIChuZXcgQilbJ2JhciddKCldIiwgIlsyMTYsIDIxN10i
KTsKIHNob3VsZEJlKCJ4ID0gMjE4OyBjbGFzcyBBIHsgW3grK10oKSB7IHJldHVybiB4OyB9IH07
IChuZXcgQSlbMjE4XSgpIiwgIjIxOSIpOwogc2hvdWxkQmUoInggPSB1bmRlZmluZWQ7IGNsYXNz
IEEgeyBbKHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IChuZXcgQSkuZm9vKCki
LCAiMjIwIik7Ci1zaG91bGRCZSgieCA9IDIyMTsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgp
IHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3
IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKK3Nob3VsZEJlKCJ2
YXIgeCA9IDIyMSwgeDEsIHgyOyBjbGFzcyBBIHsgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4g
eDE7IH0gWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgWyhuZXcgQSlbMjIxXSgp
LCAobmV3IEEpWzIyMl0oKV0iLCAiWzIyMSwgMjIyXSIpOwogc2hvdWxkQmUoInggPSAxOyBjbGFz
cyBBIHsgWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyMzsgfSBbJ2ZvbycgKyB4KytdKCkgeyBy
ZXR1cm4gMjI0OyB9IH07IFsobmV3IEEpLmZvbzEoKSwgKG5ldyBBKS5mb28yKCldIiwgIlsyMjMs
IDIyNF0iKTsKLXNob3VsZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJl
dHVybiAyMjU7IH0gWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsg
W3gxLCB4LCAobmV3IEEpLmZvbzIoKV0iLCAiWzIsIDMsIDIyNl0iKTsKK3Nob3VsZEJlKCJ2YXIg
eCA9IDEsIHgxOyBjbGFzcyBBIHsgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBbKHgx
PXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIChuZXcgQSku
Zm9vMigpXSIsICJbMiwgMywgMjI2XSIpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnU3RhdGljIG1l
dGhvZHMgd2l0aCBjb21wdXRlZCBuYW1lcycpOwpAQCAtNzIsOSArNzIsOSBAQCBzaG91bGRCZSgi
QSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE1KTsgQVsnZm9vJ10oKSIs
ICIzMTUiKTsKIHNob3VsZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdmb28n
LCAzMTYpOyBCID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdiYXInLCAzMTcpOyBbQVsn
Zm9vJ10oKSwgQlsnYmFyJ10oKV0iLCAiWzMxNiwgMzE3XSIpOwogc2hvdWxkQmUoInggPSAyMTg7
IGNsYXNzIEEgeyBzdGF0aWMgW3grK10oKSB7IHJldHVybiB4OyB9IH07IEFbMjE4XSgpIiwgIjIx
OSIpOwogc2hvdWxkQmUoInggPSB1bmRlZmluZWQ7IGNsYXNzIEEgeyBzdGF0aWMgWyh4PTIyMCkg
JiYgJ2ZvbyddKCkgeyByZXR1cm4geDsgfSB9OyBBLmZvbygpIiwgIjIyMCIpOwotc2hvdWxkQmUo
InggPSAyMjE7IGNsYXNzIEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7
IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFtBWzIyMV0oKSwg
QVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDIyMSwgeDEsIHgy
OyBjbGFzcyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRp
YyBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgp
XSIsICJbMjIxLCAyMjJdIik7CiBzaG91bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBzdGF0aWMgWydm
b28nICsgeCsrXSgpIHsgcmV0dXJuIDIyMzsgfSBzdGF0aWMgWydmb28nICsgeCsrXSgpIHsgcmV0
dXJuIDIyNDsgfSB9OyBbQS5mb28xKCksIEEuZm9vMigpXSIsICJbMjIzLCAyMjRdIik7Ci1zaG91
bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIy
NTsgfSBzdGF0aWMgWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsg
W3gxLCB4LCBBLmZvbzIoKV0iLCAiWzIsIDMsIDIyNl0iKTsKK3Nob3VsZEJlKCJ2YXIgeCA9IDEs
IHgxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3Rh
dGljIFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwg
QS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7CiAKIGRlYnVnKCcnKTsKIGRlYnVnKCdJbnN0YW5j
ZSBtZXRob2RzIHdpdGggZHVwbGljYXRlZCBuYW1lcycpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1MjM5ZTg5NmMyZGQ4ZTVkYjU3MDgz
N2QzNjYxYTI5OGEwNzhkNmFlLi4zYjhiYjQ2OTNkYTRjYjVmYWQ5ODIxY2QzM2JmZDNiZmEwZWI4
YTlmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTA2ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgorCisgICAgICAgIE5vdCB1c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4gQ2xhc3NE
ZWNsYXJhdGlvbiBzdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNTU3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1ODk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mv
c3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAoZi50
cnkuYyk6CisgICAgICAgIChmKToKKwogMjAyMC0wNC0wNiAgUmljayBXYWxkcm9uICA8d2FsZHJv
bi5yaWNrQGdtYWlsLmNvbT4gYW5kIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBUZXN0MjYyIGhhcm5lc3MgZmlsZSBh
bmQgaW1wbGVtZW50ICQyNjIuSXNIVE1MRERBCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9z
dXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3N1cGVy
Y2xhc3MtZXhwcmVzc2lvbi1zdHJpY3RuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3ZWE2ODQ3OWM5NzNm
M2M2MjBhY2ZiZjFmMDE5YWJlZGE5MmEyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcwpAQCAtMCwwICsxLDU5IEBA
CitmdW5jdGlvbiBmKCkgeworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgY2xhc3MgYyBleHRlbmRzKGQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4ge307CisgICAgICAgICAgICB9LCBkKSB7fQorICAgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0gIkNhbid0IGZpbmQgdmFyaWFibGU6IGQiKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IHNob3VsZCBoYXZlIHRocm93biBhIHJlZmVy
ZW5jZSBlcnJvciIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAg
ICB2YXIgb2JqID0ge307CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICd4Jywg
eyBjb25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZTogMSB9KTsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGNsYXNzIGMgZXh0ZW5kcyhkZWxldGUgb2JqLngsICgpPT57fSkge30KKyAgICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJVbmFibGUgdG8gZGVsZXRlIHByb3Bl
cnR5LiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhy
b3duIGEgdHlwZSBlcnJvciIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOwor
ICAgICAgICB2YXIgb2JqID0ge307CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmos
ICd4JywgeyBjb25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZTogMSB9KTsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGNsYXNzIGMgZXh0ZW5kcyhldmFsKCdkZWxldGUgb2JqLngnKSwgY2xhc3N7
fSkge30KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJVbmFibGUg
dG8gZGVsZXRlIHByb3BlcnR5LiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qg
c2hvdWxkIGhhdmUgdGhyb3duIGEgdHlwZSBlcnJvciIpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgdmFyIG8gPSB7fTsKKyAgICAgICAgby5fX2RlZmluZUdldHRlcl9fKCJ4IiwgZnVuY3Rpb24g
KCkgeyByZXR1cm4gNDI7IH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3MgYyBl
eHRlbmRzIChvLnggPSAxMywgY2xhc3MgeyB9KSB7IH0KKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlcnJvciB8
fCBlcnJvci5tZXNzYWdlICE9ICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3Bl
cnR5LiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhy
b3duIGEgdHlwZSBlcnJvciIpOworICAgIH0KK30KKworIGZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykKKyAgICBmKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395722</attachid>
            <date>2020-04-07 12:24:34 -0700</date>
            <delta_ts>2020-04-07 12:53:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205578-20200407122433.patch</filename>
            <type>text/plain</type>
            <size>261115</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YjI0ZTMzNmQ0ZDBkZjRiY2QzYTI3NWI1Y2MzYTI0OTZkM2IwNzlhLi45NjI0NGI4YjkxMGIyN2E1
NTFkMGQxYjE0ZTUzYjMzZWE3OTA2YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODUgQEAKKzIwMjAtMDQtMDcgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFdlIGNvcnJlY3RseSBzZXQg
c3RyaWN0IG1vZGUgd2hlbiBwYXJzaW5nIGNsYXNzZXMsIGJ1dCB3ZSBkaWQgbm90IHNldCBpdCB3
aGVuIGVtaXR0aW5nIGJ5dGVjb2RlLgorICAgICAgICBIb3dldmVyLCB0aGF0IG1lYW5zIHRoYXQg
d2UgY2FuIG5vdyBoYXZlIGEgc3Vic2V0IG9mIGEgY29kZSBibG9jaydzIGJ5dGVjb2RlIHRoYXQg
bXVzdCBiZSBydW4gaW4KKyAgICAgICAgc3RyaWN0IG1vZGUsIGV2ZW4gd2hlbiB0aGUgY29kZSBi
bG9jayBpdHNlbGYgaXMgbm90IHN0cmljdC4gQXMgaXQgdHVybnMgb3V0LCB0aGVyZSBhcmUgb25s
eSB0ZW4KKyAgICAgICAgb3Bjb2RlcyB0aGF0IG5lZWQgdG8gYmUgYXdhcmUgb2Ygc3RyaWN0bmVz
cywgc28gYW4gZXh0cmEgYG1vZGVgIG9wZXJhbmQgd2FzIGFkZGVkIHRvIHRoZXNlIG9wY29kZXMu
CisgICAgICAgIFRoZSBtb2RlIHRoZW4gbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0aHJvdWdoIGJh
c2VsaW5lLCBERkcgYW5kIEZUTC4KKworICAgICAgICAqIEFQSS9BUElDYWxsYmFja0Z1bmN0aW9u
Lmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwpOgorICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Y2FsbCk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6
CisgICAgICAgIChKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QpOgorICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlw
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omlz
Q29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25DZWxs
KToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6dXNlc0V2YWwgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVD
YWxsRnJhbWU6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGlu
ZUNhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmlzSW5TdHJpY3RD
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwOgorICAg
ICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuaDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpQdXRCeUlkRmxhZ3M6OmNyZWF0ZURpcmVjdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRGbGFn
czo6aXNEaXJlY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmVjbWFNb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpQdXRCeUlkRmxhZ3MpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENv
ZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQ29uc3RydWN0b3IgY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBj
b25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnJvbVNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
ZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
Y21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVTY29wZTo6U3RyaWN0TW9k
ZVNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAg
ICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkVtcHR5TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5O
b2RlOjplbWl0TG9vcEhlYWRlcik6CisgICAgICAgIChKU0M6OkZvck9mTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ05vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFz
c2lnbm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBkZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
Ojp0aGlzVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZh
bHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZvcik6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFQ01BTW9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5n
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
Q2VsbFdpdGhTeW1ib2wpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxl
dGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0
ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1p
Y1Zhcik6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0
b3JOYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlI
ZWxwZXJzLmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlv
bik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAq
IGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RK
U0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlRGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAo
SlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90
b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3Rv
RnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgor
ICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAgICAgICAqIHJ1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRz
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Om1h
dGVyaWFsaXplU3BlY2lhbHMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAg
IChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToK
KyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQU1vZGUuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcC4K
KyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
RUNNQU1vZGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRGbGFncy5oLgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6ZnJvbUJ5dGUpOgorICAgICAg
ICAoSlNDOjpFQ01BTW9kZTo6c3RyaWN0KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OnNsb3Bw
eSk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjppc1N0cmljdCBjb25zdCk6CisgICAgICAgIChK
U0M6OkVDTUFNb2RlOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpFQ01B
TW9kZSk6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlND
OjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZXRQdXRJbmZvLmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0UHV0SW5mbzo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9HZXRQdXRJbmZvLmg6CisgICAgICAgIChKU0M6OkdldFB1dEluZm86OkdldFB1dEluZm8p
OgorICAgICAgICAoSlNDOjpHZXRQdXRJbmZvOjplY21hTW9kZSBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAg
ICAgICAgKiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFs
dWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpzZWxlY3RTdHJ1Y3R1cmVGb3JOZXdGdW5jRXhwKToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y0V2YWwpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpOgorICAgICAgICAo
SlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAgICAgICogcnVu
dGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9UaGlzKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhp
cyk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpHZXRDYWxsZXJTdHJpY3RuZXNzRnVuY3Rvcjo6b3BlcmF0
b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6Ok51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdFBy
b3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q2FsbCk6CisgICAgICAgICog
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OmlzQXJyb3dGdW5jdGlvbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRF
eGVjdXRhYmxlOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6
cHV0KToKKwogMjAyMC0wNC0wNiAgUmljayBXYWxkcm9uICA8d2FsZHJvbi5yaWNrQGdtYWlsLmNv
bT4gYW5kIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBUZXN0MjYyIGhhcm5lc3MgZmlsZSBhbmQgaW1wbGVtZW50ICQy
NjIuSXNIVE1MRERBCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMxMDc1NWJiN2JlOGNiYjRmMjUzNDI1MzUyMGFj
MjIyODBkZmExZi4uODZhZWZkODYxZjU4OGU2YmE5YjYxMTk3Mjk5OGEzYmRlMWM5OTBiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA0LTA3ICBUYWRldSBaYWdhbGxvICA8dHph
Z2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIE5vdCB1c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4g
Q2xhc3NEZWNsYXJhdGlvbiBzdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTU3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1
ODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUZXN0
OiBKU1Rlc3RzLyBzdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3QpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJh
dGlvbjxKU0V2ZW50VGFyZ2V0Pjo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwog
MjAyMC0wNC0wNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
J2N1cnJlbnRjb2xvcicgZG9lc24ndCBuZWVkIHNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9w
ZXJ0aWVzIG1hcmtpbmcgYW55bW9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SUNhbGxiYWNrRnVuY3Rpb24uaAppbmRleCBjOTkxMDUzYTE5MTlmOGUxYmE0ZWE5OGI3N2Q4ZTFh
OWQxYjdkZGU4Li5kNTY1YjQxMjg5ZTdmNjg2MWY4ZjlmOWI3ZWFkYjA5MTY5NmVhNDYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaApAQCAt
NDgsNyArNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVu
Y3Rpb246OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVm
KGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihq
c0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVm
KGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogCiAgICAgaW50IGFyZ3VtZW50Q291bnQgPSBz
dGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBWZWN0b3I8
SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggMDJjZWRjNzk2NmJlYzBh
NTNhOWJjMDJhOWYzNzgzZTc5ZjczMmUyZi4uMDNhMThkYzkwMzZiNjY3ODQxOTJlZjUwYzkyMDQ1
ZWQzNTM4YjY3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUyMyw3ICs1MjMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbAogCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9iYWxPYmpl
Y3QpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2Jq
ZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJp
Y3RNb2RlKSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNP
YmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzbG9wcHkoKSkpKTsKICAgICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGpz
Q2FzdDxKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qPih0b0pTKGZ1bmN0aW9uUmVmKSktPmNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0ganND
bGFzcy0+Y2FsbEFzRnVuY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UmVmLmNwcAppbmRleCAyMjJhNGVlMjBkY2JhZGIwN2I3YmM2NTRkY2Y4YWE4MGNmMmMxMmJl
Li4yNDAxNzkxNmU3NTE3NmI4M2UzNWQ5ZWQwMjg4MjgzMjUyMTZjNzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgSlNP
YmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0p
OwogCi0gICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGdsb2JhbE9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIE5vdFN0cmlj
dE1vZGUpKSk7CisgICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGdsb2JhbE9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzbG9wcHkoKSkpKTsKIH0KIAogSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0
R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBiNTdhMDI3NmIzYjNkOTU1YjJiZmEyNTljYTRhM2I3ZWEwOTE1MGEzLi45OTBhZTk5MDg2
ZGU5MGM2ZDE3NWRkYWFmNWI2ZWM1NmIxNTQ4MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC04MjIsNiArODIyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaAogICAgIHJ1bnRp
bWUvRGlzYWxsb3dWTVJlZW50cnkuaAogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuaAorICAgIHJ1
bnRpbWUvRUNNQU1vZGUuaAogICAgIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaAogICAg
IHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKICAgICBydW50aW1lL0Vycm9yLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDY1Mzk1YWQwZmZiYmM5ZmE0YzlkMGY1Mzk4MjcwM2Mx
OWRmOTg1MC4uODNlNDg2Mjc0MDQyYjk0MzJmY2EwNTUwNWRhNjYxOWNiYWRmZTMzZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5OCw2ICs3OTgsNyBAQAogCQkxNDUwRkExQzIz
NTdCREJFMDA5M0NENEQgLyogV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEM1QUQ2QjIyRjMzRkMwMDBGMUZCODMg
LyogV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ1MEZBMUYyMzU3QkVDOTAwOTNDRDREIC8qIFdhc21MTElu
dFRpZXJVcENvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0NTBGQTFFMjM1N0JFQzQwMDkzQ0Q0RCAvKiBXYXNtTExJbnRUaWVyVXBDb3VudGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ1
NzIyODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NTcyMjg1MTQzN0UxNDAwMDVGREUyNiAv
KiBTdHJvbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMTQ1RkYyQzgyNDNCQjlENjAwNTY5RTcxIC8qIEVDTUFNb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDVGRjJDNzI0M0JCOTlB
MDA1NjlFNzEgLyogRUNNQU1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxNDZDMzg0QjIxNzdBQ0RGMDA3OUY2RDkgLyogVW5saW5rZWRNZXRh
ZGF0YVRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDJENTJCRTIxNzYyOTU4MDAyREIwODYgLyogVW5saW5rZWRNZXRhZGF0YVRhYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ3MTQ4MzAy
MEQzMjNEMzAwOTBFNjMwIC8qIEpTV3JhcHBlck1hcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3MTQ4MkYyMEQzMjM2NTAwOTBFNjMwIC8q
IEpTV3JhcHBlck1hcFRlc3RzLm1tICovOyB9OwogCQkxNDczNDFDQzFEQzAyRDcyMDBBQTI5QkEg
LyogRXhlY3V0YWJsZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NzM0MUNCMURDMDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMzM5LDYg
KzMzNDAsOCBAQAogCQkxNDUzNDg1NzIyOTE3MzdGMDBCMUMyRUIgLyogdGVzdGFwaS5lbnRpdGxl
bWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0aCA9IHRlc3RhcGku
ZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDU3MjI4NTE0MzdF
MTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJvbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
NDVGRjJDNjI0M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRUNNQU1vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDVGRjJDNzI0
M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQU1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ2QUFCMkEwQjY2QTg0OTAwRTU1RjE2IC8q
IEpTU3RyaW5nUmVmQ0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3Ry
aW5nUmVmQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ2QUFCMzcwQjY2QTk0
NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTU3RyaW5nUmVmQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNDZCMTREQjEyRUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc2VydmF0aXZlUm9vdHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzExNCw2ICs3MTE3LDggQEAKIAkJCQlF
M0ZDMjUxMTIyNTZFQ0Y0MDA1ODM1MTggLyogRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50Lmgg
Ki8sCiAJCQkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywK
IAkJCQlBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuaCAqLywKKwkJCQkx
NDVGRjJDNjI0M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuY3BwICovLAorCQkJCTE0NUZGMkM3
MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5oICovLAogCQkJCUZFMzE4RkREMUNBQzhDNTMw
MERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLywKIAkJCQlG
RTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9u
cy5oICovLAogCQkJCUZFMzRFRTIyMjQzOThCODUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZl
SGVyZS5jcHAgKi8sCkBAIC05NDI5LDYgKzk0MzQsNyBAQAogCQkJCUUzNUNBMTU0MURCQzNBNUMw
MEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTA3MDhB
MURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMTQ1RkYyQzgyNDNCQjlENjAwNTY5RTcxIC8qIEVDTUFNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5h
bEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkND
IC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzRFRTIx
MjQzOThBQUUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNzE2ZmU0NzlhZDQ5ZGViN2IyMWU4ZTYx
YTcwOGNmNTQ4Y2FkMDBlNy4uMDhmZjhmZTdiYjFjN2M0OWUxODcwOGUzZDU5MTFhOTEyNWQyMTZi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNzY1LDYgKzc2NSw3IEBAIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCiBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNw
cAogcnVudGltZS9Eb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0R1bXBD
b250ZXh0LmNwcAorcnVudGltZS9FQ01BTW9kZS5jcHAKIHJ1bnRpbWUvRUNNQVNjcmlwdFNwZWNJ
bnRlcm5hbEZ1bmN0aW9ucy5jcHAKIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwCiBy
dW50aW1lL0Vycm9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAKaW5kZXggZDM3MjM2ZjQwYWE4OTkxMjdjNzQ5ZWJkYjk4Njk2Yzc3
ODVkOGNiMy4uZDkxMDYyY2Y3YTM1NGYwNmEyYzYyZjQ0ZjQxODM0NDk1ZDY4MzE3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgotI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNs
dWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggOWYyYWJhMzlmMmNlNzA4ZDMxM2I4
ZDk0MGNmOTZmYmE0MmZjYzk0ZS4uZmRhYWE2OTQ1ZmYwZTlkNTE1MWFhYTg5YTdhOTkyMDdhYzFj
MjllZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICAgICAgICAgICAgICAgICAg
c2NvcGUsIC8vIHNjb3BlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllcklu
ZGV4LCAvLyBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQsIC8vIHZhbHVl
Ci0gICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExv
Y2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIC8v
IGluZm8KKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3Vu
ZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
LCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFNb2RlKCkpLCAvLyBpbmZvCiAgICAgICAgICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0
ZXIgeyBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB9KSwgLy8gc3ltYm9sIHRhYmxl
IGNvbnN0YW50IGluZGV4CiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQu
b2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAgICAgICAgICAgICAgICAgKTsKQEAgLTI2OSw3ICsy
NjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kLCAvLyBkc3QKICAgICAgICAgICAgICAgICAgICAgc2NvcGUsIC8v
IHNjb3BlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBp
ZGVudGlmaWVyCi0gICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbiksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93
SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uLCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFNb2RlKCkpLCAvLyBpbmZvCiAgICAg
ICAgICAgICAgICAgICAgIDAsIC8vIGxvY2FsIHNjb3BlIGRlcHRoCiAgICAgICAgICAgICAgICAg
ICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAgICAgICAg
ICAgICAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjZDc1NDY4MGMxMjZhMGY3Mjc1MzZmMWJlMzdjNGUuLjFm
NTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4ZjdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMjcsNiArMjcsNyBAQCB0
eXBlcyBbCiAgICAgOkJhc2ljQmxvY2tMb2NhdGlvbiwKICAgICA6Qm91bmRMYWJlbCwKICAgICA6
RGVidWdIb29rVHlwZSwKKyAgICA6RUNNQU1vZGUsCiAgICAgOkVycm9yVHlwZSwKICAgICA6R2V0
QnlJZE1vZGUsCiAgICAgOkdldEJ5SWRNb2RlTWV0YWRhdGEsCkBAIC0xNzQsNiArMTc1LDcgQEAg
b3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRvX3RoaXMsCiAgICAgYXJnczogewogICAgICAgICBz
cmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVy
ZUlELApAQCAtNTIyLDYgKzUyNCw3IEBAIG9wIDpwdXRfYnlfaWRfd2l0aF90aGlzLAogICAgICAg
ICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVk
LAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNN
QU1vZGUsCiAgICAgfQogCiBvcCA6ZGVsX2J5X2lkLApAQCAtNTI5LDYgKzUzMiw3IEBAIG9wIDpk
ZWxfYnlfaWQsCiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBiYXNlOiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKKyAgICAgICAgZWNt
YU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOmdldF9ieV92YWwsCkBAIC01NDgsNiArNTUy
LDcgQEAgb3AgOnB1dF9ieV92YWwsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAg
ICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCkBAIC01NTksNiArNTY0
LDcgQEAgb3AgOnB1dF9ieV92YWxfd2l0aF90aGlzLAogICAgICAgICB0aGlzVmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
dmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAg
IH0KIAogb3AgOnB1dF9ieV92YWxfZGlyZWN0LApAQCAtNTY2LDYgKzU3Miw3IEBAIG9wIDpwdXRf
YnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBw
cm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewog
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKQEAgLTU3Niw2ICs1ODMsNyBAQCBv
cCA6ZGVsX2J5X3ZhbCwKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJh
c2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOnB1dF9nZXR0ZXJfYnlf
aWQsCkBAIC03NzgsNiArNzg2LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICAgICAgY2FsbGVlOiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGFyZ2M6IHVuc2lnbmVkLAogICAgICAgICBhcmd2OiB1
bnNpZ25lZCwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYTFhZDM3NjY5YWYx
MjAwMzAyMzUxNTAyZTM0YzkwYzI0MTg4NGU3Ni4uNjBiNDBjZmRhN2IzZTY1YzdmN2FmYWQ3YjFi
MmYzMDA1NGMyODhmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5n
SklUVHlwZShQcmludFN0cmVhbSYgb3V0LCBKSVRUeXBlIGppdFR5cGUpIGNvbnN0CiAgICAgICAg
IG91dC5wcmludCgiIChOZXZlckZUTE9wdGltaXplKSIpOwogICAgIGlmIChvd25lckV4ZWN1dGFi
bGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKQogICAgICAgICBvdXQucHJpbnQoIiAoRGlkVHJ5
VG9FbnRlckluTG9vcCkiKTsKLSAgICBpZiAob3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9k
ZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKICAg
ICAgICAgb3V0LnByaW50KCIgKFN0cmljdE1vZGUpIik7CiAgICAgaWYgKG1fZGlkRmFpbEpJVENv
bXBpbGF0aW9uKQogICAgICAgICBvdXQucHJpbnQoIiAoSklURmFpbCkiKTsKQEAgLTYxOSw3ICs2
MTksNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgICAgICAgICBBU1NFUlQoIWlz
SW5pdGlhbGl6YXRpb24oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KSk7CiAgICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkg
PT0gTG9jYWxDbG9zdXJlVmFyKSB7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xv
c3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1
dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9k
ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApAQCAtNjI3LDkg
KzYyNyw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBSZXNvbHZlT3Ag
b3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVj
b2RlLm1fbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgYnl0ZWNvZGUubV9nZXRQ
dXRJbmZvLnJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1
dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBv
cC50eXBlLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIGlmIChvcC50eXBlID09
IE1vZHVsZVZhcikKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQ
dXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBi
eXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAg
ICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwg
b3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0Owog
ICAgICAgICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQpAQCAtNjYxLDcgKzY2MSw3IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3Bl
OjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fc3ltYm9s
VGFibGVPclNjb3BlRGVwdGguc2NvcGVEZXB0aCgpLCBzY29wZSwgaWRlbnQsIFB1dCwgYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKIAotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0
UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0
ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlv
bk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAg
aWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9
PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAg
ICAgZWxzZSBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyIHx8IG9wLnR5cGUgPT0gQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCBkM2IwNmE4OTFhZWZjNmM3OTRkNzVlMWMwZDAwNDZlMTkyMzhl
ODI2Li5lMTExMzlkNWEzODQzNWEwNmRlMjY3NzVmZmYzMTAwMTVlY2M0NGM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yMjIsOSArMjIyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkdW1wTWF0aElDU3RhdHMoKTsKIAotICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmlzU3RyaWN0TW9kZSgpOyB9
CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUt
PmlzQ29uc3RydWN0b3IoKTsgfQotICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1
cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsgfQogICAgIENv
ZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvZGVUeXBl
KCk7IH0KIAogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZENvZGUtPnNjcmlwdE1vZGUoKTsgfQpAQCAtMjMyLDExICsyMzAsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNJbnN0YWxsZWRWTVRyYXBCcmVha3BvaW50cygpIGNvbnN0Owog
ICAgIGJvb2wgaW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRzKCk7CiAKLSAgICBpbmxpbmUgYm9vbCBp
c0tub3duTm90SW1tZWRpYXRlKFZpcnR1YWxSZWdpc3RlciByZWcpCisgICAgaW5saW5lIGJvb2wg
aXNLbm93bkNlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZykKICAgICB7Ci0gICAgICAgIGlmIChyZWcg
PT0gdGhpc1JlZ2lzdGVyKCkgJiYgIWlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0KICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICByZXR1
cm4gZ2V0Q29uc3RhbnQocmVnKS5pc0NlbGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA3N2YxOTI5MDY5MDgzMzZlYmQwMDhk
Y2YwYzM2ZjRhYzZlOWU3NWQ0Li40OWVkZDUyODVkNWMyYzI4YjFjOWE0YmNlZWY0NTE3MTk5MGJl
OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJs
ZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUlu
Zm8uaApAQCAtMzYsOSArMzYsOCBAQCBlbnVtIGNsYXNzIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2Vy
TW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5p
emVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwog
c3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFs
LCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBKU1BhcnNlclNjcmlwdE1v
ZGUgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSkKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29s
IGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29s
IGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAgICAg
ICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCi0gICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJp
Y3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQogICAgICAg
ICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9j
b25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCkBA
IC01Nyw3ICs1Niw2IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgfQogCiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBpc0Nv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBp
c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0K
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTcyLDcg
KzcwLDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIAogcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAg
dW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJjMmM2NjlmN2NhZDg4ODNkZWNm
MzUxMzI3ODQ0OWM4MjRmLi4wZDk1NzA5MjZhYjE0NzM3OGVjMzE3MjgzOGRiMjM1ODgyZGI3YmNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RydWN0IEZpdHM7CiAKIC8vIEltcGxpY2l0IGNvbnZlcnNpb24gZm9yIHR5cGVzIG9mIHRoZSBz
YW1lIHNpemUKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIE9wY29kZVNpemUgc2l6ZT4KLXN0cnVjdCBG
aXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKFQpID09IHNpemUsIHN0ZDo6dHJ1
ZV90eXBlPj4geworc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2Yo
VCkgPT0gc2l6ZSAmJiBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlLCBzdGQ6OnRydWVf
dHlwZT4+IHsKICAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXpl
Pjo6dW5zaWduZWRUeXBlOwogCiAgICAgc3RhdGljIGJvb2wgY2hlY2soVCkgeyByZXR1cm4gdHJ1
ZTsgfQpAQCAtMTc0LDE4ICsxNzQsMjAgQEAgc3RydWN0IEZpdHM8R2V0UHV0SW5mbywgc2l6ZSwg
c3RkOjplbmFibGVfaWZfdDxzaXplICE9IE9wY29kZVNpemU6OldpZGUzMiwgc3RkOjoKICAgICAv
LyAxMyBSZXNvbHZlIFR5cGVzCiAgICAgLy8gMyBJbml0aWFsaXphdGlvbiBNb2RlcwogICAgIC8v
IDIgUmVzb2x2ZSBNb2RlcworICAgIC8vIDEgYml0IGlzU3RyaWN0IGZsYWcKICAgICAvLwogICAg
IC8vIFRyeSB0byBlbmNvZGUgZW5jb2RlIGFzCiAgICAgLy8KLSAgICAvLyAgICAgICAgICAgaW5p
dGlhbGl6YXRpb24gbW9kZQotICAgIC8vICAgICAgICAgICAgICAgICAgICB2Ci0gICAgLy8gZnJl
ZSBiaXQtPiAwfDAwMDB8MDB8MAotICAgIC8vICAgICAgICAgICAgICAgICBeICAgIF4KLSAgICAv
LyAgICByZXNvbHZlICB0eXBlICAgcmVzb2x2ZSBtb2RlCisgICAgLy8gICAgICAgICAgICBpbml0
aWFsaXphdGlvbiBtb2RlCisgICAgLy8gICAgICAgICAgICAgICAgICAgICB2CisgICAgLy8gaXNT
dHJpY3QgLT4gMHwwMDAwfDAwfDAKKyAgICAvLyAgICAgICAgICAgICAgICAgIF4gICAgXgorICAg
IC8vICAgICAgcmVzb2x2ZSAgdHlwZSAgICByZXNvbHZlIG1vZGUKICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBzX3Jlc29sdmVUeXBlTWF4ID0gMSA8PCA0OwogICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlTWF4ID0gMSA8PCAyOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IHNfcmVzb2x2ZU1vZGVNYXggPSAxIDw8IDE7CiAKKyAgICBzdGF0aWMgY29uc3RleHBy
IGludCBzX2lzU3RyaWN0Qml0ID0gMSA8PCA3OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNf
cmVzb2x2ZVR5cGVCaXRzID0gKHNfcmVzb2x2ZVR5cGVNYXggLSAxKSA8PCAzOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlQml0cyA9IChzX2luaXRpYWxpemF0
aW9uTW9kZU1heCAtIDEpIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19yZXNvbHZl
TW9kZUJpdHMgPSAoc19yZXNvbHZlTW9kZU1heCAtIDEpOwpAQCAtMjA2LDcgKzIwOCw4IEBAIHN0
cnVjdCBGaXRzPEdldFB1dEluZm8sIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZSAhPSBPcGNv
ZGVTaXplOjpXaWRlMzIsIHN0ZDo6CiAgICAgICAgIGF1dG8gcmVzb2x2ZVR5cGUgPSBzdGF0aWNf
Y2FzdDx1aW50OF90PihncGkucmVzb2x2ZVR5cGUoKSk7CiAgICAgICAgIGF1dG8gaW5pdGlhbGl6
YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLmluaXRpYWxpemF0aW9uTW9kZSgp
KTsKICAgICAgICAgYXV0byByZXNvbHZlTW9kZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5y
ZXNvbHZlTW9kZSgpKTsKLSAgICAgICAgcmV0dXJuIChyZXNvbHZlVHlwZSA8PCAzKSB8IChpbml0
aWFsaXphdGlvbk1vZGUgPDwgMSkgfCByZXNvbHZlTW9kZTsKKyAgICAgICAgYXV0byBpc1N0cmlj
dCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAg
ICAgICByZXR1cm4gKGlzU3RyaWN0IDw8IDcpIHwgKHJlc29sdmVUeXBlIDw8IDMpIHwgKGluaXRp
YWxpemF0aW9uTW9kZSA8PCAxKSB8IHJlc29sdmVNb2RlOwogICAgIH0KIAogICAgIHN0YXRpYyBH
ZXRQdXRJbmZvIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCkBAIC0yMTQsMTAgKzIxNyw0NSBAQCBz
dHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemUgIT0gT3Bj
b2RlU2l6ZTo6V2lkZTMyLCBzdGQ6OgogICAgICAgICBhdXRvIHJlc29sdmVUeXBlID0gc3RhdGlj
X2Nhc3Q8UmVzb2x2ZVR5cGU+KChncGkgJiBzX3Jlc29sdmVUeXBlQml0cykgPj4gMyk7CiAgICAg
ICAgIGF1dG8gaW5pdGlhbGl6YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25N
b2RlPigoZ3BpICYgc19pbml0aWFsaXphdGlvbk1vZGVCaXRzKSA+PiAxKTsKICAgICAgICAgYXV0
byByZXNvbHZlTW9kZSA9IHN0YXRpY19jYXN0PFJlc29sdmVNb2RlPihncGkgJiBzX3Jlc29sdmVN
b2RlQml0cyk7Ci0gICAgICAgIHJldHVybiBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCByZXNvbHZl
VHlwZSwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRp
Y19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOworICAgICAgICByZXR1cm4gR2V0UHV0
SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUsIGluaXRpYWxpemF0aW9uTW9kZSwgaXNTdHJp
Y3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpOwogICAgIH0KIH07
CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywg
c2l6ZT4geworICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+
Ojp1bnNpZ25lZFR5cGU7CisKKyAgICAvLyBQdXRCeUlkRmxhZ3MgaXMganVzdCB0d28gYm9vbGVh
biB2YWx1ZXMgZW5jb2RlZCBhcworICAgIC8vCisgICAgLy8gICAgICAgIGlzU3RyaWN0CisgICAg
Ly8gICAgICAgICAgIHYKKyAgICAvLyAgICAwMDAwMDB8MHwwCisgICAgLy8gICAgICAgICAgICAg
XgorICAgIC8vICAgICAgICAgaXNEaXJlY3QKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lz
RGlyZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0g
MjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5SWRGbGFncykKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoUHV0
QnlJZEZsYWdzIGZsYWdzKQorICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpKTsKKyAgICAg
ICAgcmV0dXJuIChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OworICAgIH0KKworICAgIHN0YXRp
YyBQdXRCeUlkRmxhZ3MgY29udmVydChUYXJnZXRUeXBlIGdwaSkKKyAgICB7CisgICAgICAgIGF1
dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKKyAg
ICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RC
aXQpOworICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0
KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgICAgIHJldHVybiBpc0RpcmVjdCA/IFB1dEJ5
SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVj
bWFNb2RlKTsKKyAgICB9Cit9OwogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXpl
Pgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6
ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZp
dHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBG
aXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpAQCAtMzI3LDQgKzM2NSwyNCBA
QCBzdHJ1Y3QgRml0czxHZW5lcmljQm91bmRMYWJlbDxHZW5lcmF0b3JUcmFpdHM+LCBzaXplPiA6
IHB1YmxpYyBGaXRzPGludCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNp
emUgc2l6ZT4KK3N0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1YmxpYyBGaXRzPHVpbnQ4
X3QsIHNpemU+IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXplPjsKKworICAg
IHN0YXRpYyBib29sIGNoZWNrKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEJhc2U6OmNoZWNrKGVjbWFNb2RlLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB0
eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAg
eworICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChlY21hTW9kZS52YWx1ZSgpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgRUNNQU1vZGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBl
IGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShCYXNl
Ojpjb252ZXJ0KGVjbWFNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3Bw
CmluZGV4IDNlM2U2NWY1OWM1MTMwMWViMmY0NGIyZDIzMWVmY2VjYTkxZWNjZjEuLjc5OTFhYzJh
OGU2N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wQnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQ
cmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBvdXQu
cHJpbnQoYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCksICI6PCIsIFJhd1BvaW50ZXIoYmFzZWxp
bmVDb2RlQmxvY2suZ2V0KCkpKTsKLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGlz
SW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2RlKSIpOwog
ICAgIG91dC5wcmludCgiLCAiLCBkaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRleCgpLCAiLCAiLCBz
dGF0aWNfY2FzdDxLaW5kPihraW5kKSk7CiAgICAgaWYgKGlzQ2xvc3VyZUNhbGwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKaW5kZXggZTI5
ZjM4NGQxZDA2NzJmZWVhMDcxMjA1YmNhYTI4MWE2NDliMjIyOS4uNzVmOWJiMWE4NDY4YTYxZDdi
ZTk2YzNhYzliOTFlOTUzZWEzYmY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0cnVjdCBJbmxp
bmVDYWxsRnJhbWUgewogICAgIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6Y2FsbGVy
RnJhbWVPZmZzZXQoKTsgfQogICAgIHB0cmRpZmZfdCByZXR1cm5QQ09mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxGcmFtZTo6cmV0dXJu
UENPZmZzZXQoKTsgfQogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBi
YXNlbGluZUNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAgICBib29sIGlzSW5TdHJpY3RD
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpOyB9CiAKICAgICB2b2lkIGR1bXBCcmllZkZ1bmN0aW9u
SW5mb3JtYXRpb24oUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRG
bGFncy5jcHAKaW5kZXggYzhhNGI2MGZhNTg4YjAxN2Q3OWVjZjI3MGQ5N2FiYjY4YTI0ODI0OS4u
NjY1MDBlNjI3NmJjNDY5N2JlMGVlYTFkODgxNDlmZjFhNTAxNGQ0NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKQEAgLTM2LDggKzM2LDEw
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBQdXRCeUlkRmxhZ3MgZmxhZ3MpIHsKICAgICBDb21tYVByaW50ZXIgY29tbWEoInwi
KTsKLSAgICBpZiAoZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpCisgICAgaWYgKGZsYWdzLmlzRGly
ZWN0KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklzRGlyZWN0Iik7CisgICAgaWYgKGZs
YWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiU3Ry
aWN0Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCmluZGV4IDVjMDQ5MjgxMGUxYzkzZmY2MTUzZTY1NmVm
NDRjNzdlMmZmOTc0OGUuLjgxZDQ2NzE4YTVmNzU5OTlhY2NlOWMxMGZmNDcxNzU2MjY2ODNlMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3Mu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
MTcgKzI1LDM3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRUNNQU1vZGUuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIFB1
dEJ5SWRGbGFncyA6IGludDMyX3QgewotICAgIFB1dEJ5SWROb25lID0gMCwKK2NsYXNzIFB1dEJ5
SWRGbGFncyB7CitwdWJsaWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeUlkRmxhZ3MgY3Jl
YXRlKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRGbGFn
cyhmYWxzZSwgZWNtYU1vZGUpOworICAgIH0KIAotICAgIC8vIFRoaXMgZmxhZyBpbmRpY2F0ZXMg
dGhhdCB0aGUgcHV0X2J5X2lkIGlzIGRpcmVjdC4gVGhhdCBtZWFucyB0aGF0IHdlIHN0b3JlIHRo
ZSBwcm9wZXJ0eSB3aXRob3V0Ci0gICAgLy8gY2hlY2tpbmcgaWYgdGhlIHByb3RvdHlwZSBjaGFp
biBoYXMgYSBzZXR0ZXIuCi0gICAgUHV0QnlJZElzRGlyZWN0ID0gMHgxLAotICAgIFB1dEJ5SWRQ
ZXJzaXN0ZW50RmxhZ3NNYXNrID0gMHgxLAorICAgIC8vIEEgZGlyZWN0IHB1dF9ieV9pZCBtZWFu
cyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlmIHRoZQorICAg
IC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCisgICAgY29uc3RleHByIHN0YXRpYyBQ
dXRCeUlkRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRGbGFncyh0cnVlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgYm9v
bCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAgICBFQ01BTW9kZSBl
Y21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KKworcHJpdmF0ZToKKyAgICBj
b25zdGV4cHIgUHV0QnlJZEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQor
ICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisgICAgICAgICwgbV9lY21hTW9kZShlY21h
TW9kZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2lzRGlyZWN0OworICAgIEVDTUFNb2Rl
IG1fZWNtYU1vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCAyY2JjYmNhYzkyMDRk
NWQzMDdlMmNiNDgzZDNlZjA4YTNhNzFlMTRkLi5mMWVkYjM4MDdlYjAyMWU0NDQ5Y2NkNjEwNjlh
ZjJhYjg2MzkwN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIEJ5dGVjb2Rl
CiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24pOwogICAgIAogICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKLSAgICBpZiAoIShieXRl
Y29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgIGlmICghKGJ5dGVjb2RlLm1f
ZmxhZ3MuaXNEaXJlY3QoKSkpIHsKICAgICAgICAgY29uZGl0aW9uU2V0ID0KICAgICAgICAgICAg
IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSgKICAg
ICAgICAgICAgICAgICB2bSwgcHJvZmlsZWRCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHN0cnVjdHVy
ZSwgdWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCmluZGV4IDU4OTFmMmE1YzI1NzdiOTljNTI5MjJkM2RmZGY1OTZiYTJm
ZTU2YmYuLjU0ZGE1N2RhYjY5Y2EyNjFhZWZkY2ViOTM4ZmZhMGY0ZmYwMzc5MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cApAQCAtNTcsNyArNTcsNiBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRDb2RlQmxvY2s6OnNf
aW5mbyA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwgbnVsbHB0ciwgbnVsbAogVW5saW5rZWRDb2Rl
QmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENv
ZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQogICAgICwgbV91c2VzRXZhbChpbmZvLnVzZXNFdmFsKCkpCi0gICAgLCBtX2lzU3Ry
aWN0TW9kZShpbmZvLmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGluZm8u
aXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAg
ICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRl
eCBkZDIxN2I3ZmQ0ZmVmNTZkZjhkODFjMzVjMjgxMzNkNWM4N2ExYTljLi4wMGRjNjE2MzM1ZmQz
MWIwNDMyNTFlMzQ0MDBlNTdkZWY1MzE1ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIzLDcgKzEyMyw2IEBAIHB1
YmxpYzoKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKICAgICBi
b29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KLSAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAg
ICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBh
cnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KQEAgLTMzNSw3ICszMzQsNiBAQCBwcml2YXRlOgogICAg
IFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKICAgICB1bnNpZ25lZCBtX3VzZXNF
dmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQg
bV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yLmgKaW5kZXggMjEzYTNhODMyZDdlYWFhOWI5NzEwZjAxYTg2NGRhOTM1YmRkN2VhNS4u
MmViOTg0YzFiMDVhNDVlMGFhNTIwZTFmZDM3OGFkOWUyZmM5MzIyMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0K
ICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KICAgICBib29sIHVz
ZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KICAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBh
cnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJldHVybiBtX2NvZGVC
bG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4
IGNkOGJlYmY4ZDM2NDU0NWQxODJkNzljYmY4MDY4MDY3MWY0MTE5N2YuLjBiZjMwMjhkODEwYzYx
NmViMDdhZGE2NmM1N2RhOTI5OWUxYmJjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApA
QCAtNzEsMTAgKzcxLDExIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5l
cmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlzQ2xhc3NDb250ZXh0
ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rp
b24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1
dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJp
bmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhl
Y3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250
ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlv
bk1vZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5m
byhmdW5jdGlvbi0+dXNlc0V2YWwoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlv
bktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9y
S2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2Rl
LCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5
cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogCiAgICAgVmFy
aWFibGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IGV4ZWN1dGFibGUtPnBh
cmVudFNjb3BlVERaVmFyaWFibGVzKCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRp
b25Nb2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIEVDTUFNb2RlIGVjbWFNb2Rl
ID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1v
ZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9y
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IGEwMWQ0N2Q3ZGMwYmMxYjQ4MDE2NWJiY2QyNjZkMTFhNmMyMzJiNDUuLjYyODQxYjU2N2QwZTFm
ODg0ZWVhZmU3ZjYyMGVjMWUwODkzMWM3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yOTcsMTQg
KzI5NywyMSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAg
IHJldHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dy
YW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0
b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxv
Y2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkK
ICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2Fs
bEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29k
ZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwg
bV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFs
c2UpCisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQorICAgICwgbV9pblRhaWxQb3Np
dGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAg
ICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9ncmFtTm9kZS0+dXNl
c0Fycm93RnVuY3Rpb24oKSB8fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNt
YU1vZGUoZWNtYU1vZGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCkBAIC0zMzgsMTQgKzM0
NSwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9n
cmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0
b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxv
Y2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkK
ICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKICAgICAsIG1fY29kZVR5cGUoRnVuY3Rp
b25Db2RlKQogICAgICwgbV92bSh2bSkKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBm
bGFnCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9leHByZXNzaW9uVG9v
RGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2NrLT5pc0J1aWx0
aW5GdW5jdGlvbigpKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNF
dmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX3VzZXNOb25TdHJp
Y3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSB0YWlsIGNhbGwgZWxpbWluYXRp
b24gd2l0aCB0aGUgcHJvZmlsZXIKICAgICAvLyBlbmFibGVkLiBUaGlzIGlzIGN1cnJlbnRseSBu
b3QgcG9zc2libGUgYmVjYXVzZSB0aGUgcHJvZmlsZXIgZXhwZWN0cwogICAgIC8vIG9wX3dpbGxf
Y2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjYWxsLCB3aGljaCBh
cmUgbm90CkBAIC0zNTMsOCArMzYzLDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgIC8v
CiAgICAgLy8gTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZW5hYmxlIHRhaWwgY2FsbCBmb3Ig
bmFrZWQgY29uc3RydWN0b3JzIHNpbmNlIGl0IGRvZXMgbm90IGhhdmUgc3BlY2lhbCBjb2RlIGZv
ciAicmV0dXJuIi4KLSAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxz
KCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9w
dGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGVjbWFNb2RlLmlzU3RyaWN0KCkpCisg
ICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVkc1Rv
VXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlv
bigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1v
ZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0
VHlwZSgpKQogewogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9s
VGFibGU6OmNyZWF0ZShtX3ZtKTsKQEAgLTQzNyw3ICs0NDksNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVu
dCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAgICBBU1NFUlQocGFy
c2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOwogICAgICAgICBB
U1NFUlQoIWlzQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSk7Ci0gICAgICAg
IGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxv
Y2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBib29s
IGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51
c2VzRXZhbCgpLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9u
TmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAg
ICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9u
TmFtZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGZ1bmN0aW9u
Tm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1cmVkKTsKQEAgLTQ4
Nyw3ICs0OTksNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICBtX2FyZ3VtZW50
c1JlZ2lzdGVyLT5yZWYoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRzICYm
ICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewor
ICAgIGlmIChuZWVkc0FyZ3VtZW50cyAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSAmJiBpc1NpbXBs
ZVBhcmFtZXRlckxpc3QpIHsKICAgICAgICAgLy8gSWYgd2UgY2FwdHVyZWQgYW55IGZvcm1hbCBw
YXJhbWV0ZXIgYnkgbmFtZSwgdGhlbiB3ZSB1c2UgU2NvcGVkQXJndW1lbnRzLiBPdGhlcndpc2Ug
d2UKICAgICAgICAgLy8gdXNlIERpcmVjdEFyZ3VtZW50cy4gV2l0aCBTY29wZWRBcmd1bWVudHMs
IHdlIGxpZnQgYWxsIG9mIG91ciBhcmd1bWVudHMgaW50byB0aGUKICAgICAgICAgLy8gYWN0aXZh
dGlvbi4KQEAgLTUxNiw3ICs1MjgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAg
ICAgICAgICAgICAgICBlbnRyeS5kaXNhYmxlV2F0Y2hpbmcobV92bSk7CiAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUs
IGVudHJ5KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgT3BQdXRUb1Njb3Bl
OjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIFVJTlRfTUFYLCB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRo
cm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdElu
aXRpYWxpemF0aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1
YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgp
KTsKKyAgICAgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52
aXJvbm1lbnRSZWdpc3RlciwgVUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5j
bHVkaW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1
cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24sIGVjbWFNb2RlKSwg
U3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5
bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhpcyBjcmVhdGVzIGEgc2NvcGVkIGFy
Z3VtZW50cyBvYmplY3QgYW5kIGNvcGllcyB0aGUgb3ZlcmZsb3cgYXJndW1lbnRzIGludG8gdGhl
CkBAIC01NTQsMTEgKzU2NiwxMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEJpbmRpbmdOb2RlKj4ocGFyYW1ldGVycy5hdChpKS5m
aXJzdCktPmJvdW5kUHJvcGVydHkoKTsKICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUt
PnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0
KG9mZnNldCkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgT3BQdXRUb1Njb3BlOjplbWl0
KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIGFkZENvbnN0YW50KGlkZW50KSwg
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBpKSwgR2V0UHV0SW5m
byhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpO
b3RJbml0aWFsaXphdGlvbiksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShW
aXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZz
ZXQoKSk7CisgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywgbV9sZXhpY2FsRW52
aXJvbm1lbnRSZWdpc3RlciwgYWRkQ29uc3RhbnQoaWRlbnQpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwg
TG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uLCBl
Y21hTW9kZSksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVn
aXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5vZmZzZXQoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRzICYmIChjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpIHx8ICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpKSB7CisgICAgaWYg
KG5lZWRzQXJndW1lbnRzICYmIChlY21hTW9kZS5pc1N0cmljdCgpIHx8ICFpc1NpbXBsZVBhcmFt
ZXRlckxpc3QpKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgY2xvbmVkIGFyZ3VtZW50cyBvYmpl
Y3QuCiAgICAgICAgIE9wQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOjplbWl0KHRoaXMsIG1fYXJndW1l
bnRzUmVnaXN0ZXIpOwogICAgIH0KQEAgLTcxMiw3ICs3MjQsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRUb1RoaXMgPSBmYWxz
ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBj
b2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0
aW9uc1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNl
RXZhbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRW1pdFRvVGhpcyA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclBy
b3BlcnR5KCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVy
UHJvcGVydHkoKSkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoKGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVydHkoKSB8fCBt
X3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpKSAm
JiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ug
bXVzdCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0IG1vZGUgYmVjYXVzZSB3
ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb252ZXJ0IHx0aGlzfCB0byBhbiBv
YmplY3QsIGFuZCB0aGF0IG9iamVjdCBtYXkgYmUgcGFzc2VkCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB0byBhIHN0cmljdCBmdW5jdGlvbiBhcyB8dGhpc3wuIFRoaXMgaXMgb2JzZXJ2YWJs
ZSBiZWNhdXNlIHRoYXQKQEAgLTgzMywxNSArODQ1LDIxIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxp
bmtlCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRp
b246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91
bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBj
b2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNt
YU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJh
dGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUp
CiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQog
ICAgICwgbV9jb2RlVHlwZShFdmFsQ29kZSkKICAgICAsIG1fdm0odm0pCi0gICAgLCBtX3VzZXNO
b25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSkKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAgLCBtX2V4cHJlc3Np
b25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKKyAgICAs
IG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFlY21hTW9kZS5p
c1N0cmljdCgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2Fj
aGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1
bmN0aW9uQ29udGV4dChldmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBldmFsTm9kZS0+
dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRD
b250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIG1fY29k
ZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwpAQCAtODkxLDE1ICs5MDksMjEgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2Rl
LCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpD
aGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQs
IG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1O
b2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFt
Tm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
Y29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1v
ZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBF
Q01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVl
PFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjps
bGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBt
X2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9k
ZShtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhp
c0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAgLCBt
X3ZtKHZtKQorICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAsIG1fZXhwcmVzc2lv
blRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogICAgICwg
bV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2Up
CisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAgICwgbV9uZWVk
c1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJv
d0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2Vj
bWFNb2RlKGVjbWFNb2RlKQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIApAQCAtMjM5NSw3ICsy
NDE5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGcm9tU2NvcGUo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY28KICAgICAgICAgICAgIGtpbGwoZHN0KSwK
ICAgICAgICAgICAgIHNjb3BlLAogICAgICAgICAgICAgYWRkQ29uc3RhbnQodmFyaWFibGUuaWRl
bnQoKSksCi0gICAgICAgICAgICBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCB2YXJpYWJsZS5vZmZz
ZXQoKS5pc1Njb3BlKCkgPyBMb2NhbENsb3N1cmVWYXIgOiByZXNvbHZlVHlwZSgpLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwKKyAgICAgICAgICAgIEdldFB1dEluZm8o
cmVzb2x2ZU1vZGUsIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExvY2FsQ2xvc3VyZVZh
ciA6IHJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24s
IGVjbWFNb2RlKCkpLAogICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoKCksCiAgICAgICAgICAg
ICB2YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyB2YXJpYWJsZS5vZmZzZXQoKS5zY29wZU9m
ZnNldCgpLm9mZnNldCgpIDogMCk7CiAgICAgICAgIHJldHVybiBkc3Q7CkBAIC0yNDIyLDExICsy
NDQ2LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29wZShS
ZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmCiAgICAgICAgIFNjb3BlT2Zmc2V0IG9m
ZnNldDsKICAgICAgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSkgewogICAgICAg
ICAgICAgb2Zmc2V0ID0gdmFyaWFibGUub2Zmc2V0KCkuc2NvcGVPZmZzZXQoKTsKLSAgICAgICAg
ICAgIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBMb2NhbENsb3N1cmVWYXIs
IGluaXRpYWxpemF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5m
byhyZXNvbHZlTW9kZSwgTG9jYWxDbG9zdXJlVmFyLCBpbml0aWFsaXphdGlvbk1vZGUsIGVjbWFN
b2RlKCkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGVPclNjb3BlRGVwdGggPSBTeW1ib2xUYWJs
ZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsgdmFyaWFibGUuc3lt
Ym9sVGFibGVDb25zdGFudEluZGV4KCkgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBBU1NFUlQocmVzb2x2ZVR5cGUoKSAhPSBMb2NhbENsb3N1cmVWYXIpOwotICAgICAgICAgICAg
Z2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBlKCksIGluaXRp
YWxpemF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhyZXNv
bHZlTW9kZSwgcmVzb2x2ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlLCBlY21hTW9kZSgpKTsK
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gU3ltYm9sVGFibGVPclNjb3Bl
RGVwdGg6OnNjb3BlRGVwdGgobG9jYWxTY29wZURlcHRoKCkpOwogICAgICAgICB9CiAgICAgICAg
IE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBzY29wZSwgYWRkQ29uc3RhbnQodmFyaWFibGUuaWRl
bnQoKSksIHZhbHVlLCBnZXRQdXRJbmZvLCBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwgISFvZmZz
ZXQgPyBvZmZzZXQub2Zmc2V0KCkgOiAwKTsKQEAgLTI1MDcsNyArMjUzMSw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBwCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChi
YXNlLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0QnlJZDo6ZW1pdCh0aGlzLCBiYXNlLCBw
cm9wZXJ0eUluZGV4LCB2YWx1ZSwgUHV0QnlJZE5vbmUpOyAvLyBpcyBub3QgZGlyZWN0CisgICAg
T3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCBQdXRCeUlk
RmxhZ3M6OmNyZWF0ZShlY21hTW9kZSgpKSk7IC8vIGlzIG5vdCBkaXJlY3QKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKQEAgLTI1MTcsNyArMjU0MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFs
CiAKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQocHJvcGVydHkpOwog
Ci0gICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9w
ZXJ0eUluZGV4LCB2YWx1ZSk7CisgICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFz
ZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTMwLDcgKzI1NTQsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRl
bnRpZgogCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZSwgcHJvcGVy
dHlJbmRleCk7CiAKLSAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBlID09IFByb3BlcnR5
Tm9kZTo6S25vd25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRl
cnNjb3JlUHJvdG8pID8gUHV0QnlJZElzRGlyZWN0IDogUHV0QnlJZE5vbmU7CisgICAgUHV0QnlJ
ZEZsYWdzIHR5cGUgPSAocHV0VHlwZSA9PSBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0IHx8IHBy
b3BlcnR5ICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSA/IFB1dEJ5SWRG
bGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNt
YU1vZGUoKSk7CiAgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgs
IHZhbHVlLCB0eXBlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTkwLDcgKzI2MTQsNyBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JGaWVsZHMoUmVn
aXN0ZXJJRCogbmV4dEZ1bmN0aW9uKQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERlbGV0ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBPcERlbEJ5SWQ6OmVtaXQodGhpcywgZHN0LCBi
YXNlLCBhZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAgIE9wRGVsQnlJZDo6ZW1pdCh0aGlzLCBk
c3QsIGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJu
IGRzdDsKIH0KIApAQCAtMjYzNCwyNSArMjY1OCwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwg
UgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAg
ICBPcFB1dEJ5VmFsOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQ
dXRCeVZhbDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOwog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lz
dGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsV2l0
aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAg
IE9wUHV0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5
LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5
VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQdXRC
eVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkp
OwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHByb3BlcnR5KQogewotICAgIE9wRGVsQnlWYWw6OmVtaXQodGhpcywgZHN0LCBiYXNl
LCBwcm9wZXJ0eSk7CisgICAgT3BEZWxCeVZhbDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3Bl
cnR5LCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0zMjQ2LDcgKzMyNzAs
MTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWMKICAgICAvLyBFbWl0IGNhbGwuCiAgICAgQVNT
RVJUKGRzdCk7CiAgICAgQVNTRVJUKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpOwotICAgIENhbGxP
cDo6ZW1pdCh0aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpKTsKKyAgICBpZiBjb25zdGV4
cHIgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkKKyAgICAgICAgQ2FsbE9wOjplbWl0KHRoaXMs
IGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBj
YWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCksIGVjbWFNb2RlKCkpOworICAgIGVsc2UKKyAgICAg
ICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCkpOwogICAgIAog
ICAgIGlmIChleHBlY3RlZEZ1bmN0aW9uICE9IE5vRXhwZWN0ZWRGdW5jdGlvbikKICAgICAgICAg
ZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwpAQCAtMzc4OSw3ICszODE2LDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eSwgUmUKICAgICB1bnNpZ25lZCBudW1WYXJzID0gbV9jb2RlQmxvY2stPm51bVZhcnMo
KTsKICAgICBwdXNoTGV4aWNhbFNjb3BlSW50ZXJuYWwobmFtZVNjb3BlRW52aXJvbm1lbnQsIFRE
WkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3Rl
ZCwgbnVsbHB0ciwgVERaUmVxdWlyZW1lbnQ6Ok5vdFVuZGVyVERaLCBTY29wZVR5cGU6OkZ1bmN0
aW9uTmFtZVNjb3BlLCBTY29wZVJlZ2lzdGVyVHlwZTo6VmFyKTsKICAgICBBU1NFUlRfVU5VU0VE
KG51bVZhcnMsIG1fY29kZUJsb2NrLT5udW1WYXJzKCkgPT0gc3RhdGljX2Nhc3Q8aW50PihudW1W
YXJzICsgMSkpOyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNyZWF0ZWQgb25lIG5ldyAidmFyIiBmb3Ig
dGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUuCi0gICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4aWNhbFZh
cmlhYmxlID0gaXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBzaG91bGRUcmVhdEFzTGV4aWNhbFZh
cmlhYmxlID0gZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgIFZhcmlhYmxlIGZ1bmN0aW9uVmFy
ID0gdmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBtX2xleGljYWxTY29wZVN0YWNrLmxh
c3QoKS5tX3N5bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBwcm9wZXJ0eS5pbXBs
KCkpLCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlQ29uc3RhbnRJbmRl
eCwgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSk7CiAgICAgZW1pdFB1dFRvU2NvcGUobV9s
ZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSwgZnVuY3Rpb25WYXIsIGNhbGxlZSwgVGhy
b3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKIH0K
QEAgLTM5NzIsNyArMzk5OSw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25s
eUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKIHsKICAgICAvLyBJ
ZiB3ZSdyZSBpbiBzdHJpY3QgbW9kZSwgd2UgYWx3YXlzIHRocm93LgogICAgIC8vIElmIHdlJ3Jl
IG5vdCBpbiBzdHJpY3QgbW9kZSwgd2UgdGhyb3cgZm9yICJjb25zdCIgdmFyaWFibGVzIGJ1dCBu
b3QgdGhlIGZ1bmN0aW9uIGNhbGxlZS4KLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkgfHwgdmFyaWFi
bGUuaXNDb25zdCgpKSB7CisgICAgaWYgKGVjbWFNb2RlKCkuaXNTdHJpY3QoKSB8fCB2YXJpYWJs
ZS5pc0NvbnN0KCkpIHsKICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKElkZW50aWZpZXI6OmZy
b21TdHJpbmcobV92bSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtNTA1NSw3ICs1MDgyLDcgQEAgdm9pZCBTdGF0aWNQcm9wZXJ0
eUFuYWx5c2lzOjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlz
KCkKIHsKLSAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlcikpOwor
ICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSwgZWNtYU1vZGUo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDI5ODkzNzQwYTg1
YTU4NDllMzk3Mjg4NTY1MDMyYWU3NGJhZmY1NWIuLmVhY2FjNjI1OGJiNTI4MjNlZGZiNTRiMzg2
ODM3MmYxMzNiZjAxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM4MCwxMyArMzgwLDE0IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgRmluYWxseUNvbnRleHQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBmcmllbmQgY2xhc3Mg
U3RydWN0dXJlRm9ySW5Db250ZXh0OworICAgICAgICBmcmllbmQgY2xhc3MgU3RyaWN0TW9kZVNj
b3BlOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwotICAgICAgICBC
eXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCopOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5s
aW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBN
b2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7Cisg
ICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0m
LCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7
CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBN
b2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiwgRUNN
QU1vZGUpOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigpOwogICAgICAgICAKQEAgLTQw
NiwxNCArNDA3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9CiAKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgVW5saW5rZWRDb2RlQmxvY2s+Ci0gICAgICAg
IHN0YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCkKKyAgICAgICAgc3RhdGljIFBhcnNl
ckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqIGVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgewogICAg
ICAgICAgICAgTW9ub3RvbmljVGltZSBiZWZvcmU7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAgICAgICAgICAgICAg
YmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVyR0MgZGVm
ZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtl
VW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAgICAgYXV0byBieXRlY29k
ZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxp
bmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCwgZWNtYU1vZGUp
OwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUo
KTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29t
cGlsZVRpbWVzKCkpKSB7CkBAIC0xMDE5LDcgKzEwMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVHZW5lcmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2VuZXJhdGlvbk1vZGU6OlR5cGVQcm9m
aWxlcik7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0Q29udHJvbEZsb3dQcm9maWxlckhvb2tz
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlR2VuZXJhdGlvbk1vZGUuY29udGFpbnMoQ29kZUdlbmVy
YXRpb25Nb2RlOjpDb250cm9sRmxvd1Byb2ZpbGVyKTsgfQogICAgICAgICAKLSAgICAgICAgYm9v
bCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCk7IH0KKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFN
b2RlOyB9CiAgICAgICAgIHZvaWQgc2V0VXNlc0NoZWNrcG9pbnRzKCkgeyBtX2NvZGVCbG9jay0+
c2V0SGFzQ2hlY2twb2ludHMoKTsgfQogCiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KQEAgLTEyOTcs
OCArMTI5OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1faXNCdWlsdGluRnVu
Y3Rpb24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWwgeyBmYWxz
ZSB9OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBmYWxzZSB9OwotICAgICAgICBi
b29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwogICAgICAgICBib29sIG1f
aGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFogeyBmYWxzZSB9OworICAgICAgICBib29sIG1fbmVl
ZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0IDogMTsKKyAgICAgICAgRUNNQU1vZGUgbV9l
Y21hTW9kZTsKICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBl
IHsgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lIH07CiAKICAgICAgICAgQ29tcGFjdFZhcmlhYmxl
TWFwOjpIYW5kbGUgbV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWjsKQEAgLTEzMTIsNiArMTMxNCwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhdGNoRW50cnk+IG1fZXhjZXB0
aW9uSGFuZGxlcnNUb0VtaXQ7CiAgICAgfTsKIAorICAgIGNsYXNzIFN0cmljdE1vZGVTY29wZSA6
IHByaXZhdGUgU2V0Rm9yU2NvcGU8RUNNQU1vZGU+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFN0
cmljdE1vZGVTY29wZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQorICAgICAgICAgICAg
OiBTZXRGb3JTY29wZShnZW5lcmF0b3IubV9lY21hTW9kZSwgRUNNQU1vZGU6OnN0cmljdCgpKQor
ICAgICAgICB7CisgICAgICAgIH0KKyAgICB9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFt
ZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNjQwYjI0OTc1NWUxMGVjZGQ5YTgzYjllMTRiMDk3YWIz
OWZkMDk0Zi4uYmQzM2I4YTBmOWJiMjIyMzY3ZDY5NDdmZjJiYjg0NDE4OTdmNzc2NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjkwMyw3ICsyOTAzLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgp
KQorICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICBpZiAobV9hc3NpZ25tZW50Q29udGV4dCA9PSBBc3Np
Z25tZW50Q29udGV4dDo6QXNzaWdubWVudEV4cHJlc3Npb24pCkBAIC0yOTIwLDcgKzI5MjAsNyBA
QCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiBy
ZXR1cm5SZXN1bHQgPSByZXN1bHQuZ2V0KCk7CiAgICAgaWYgKCFpc1JlYWRPbmx5KSB7Ci0gICAg
ICAgIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwg
dmFyLCByZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RG
b3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25t
ZW50Q29udGV4dChtX2Fzc2lnbm1lbnRDb250ZXh0KSk7CisgICAgICAgIHJldHVyblJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0KCks
IGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05v
dFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQo
bV9hc3NpZ25tZW50Q29udGV4dCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KHJlc3VsdC5nZXQoKSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KIApA
QCAtMzE0MCw3ICszMTQwLDcgQEAgUmVnaXN0ZXJJRCogRW1wdHlMZXRFeHByZXNzaW9uOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXMKICAgICB9IGVsc2Ug
ewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgZ2Vu
ZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUuZ2V0KCksIGdlbmVy
YXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93
SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIHZhciwgcG9zaXRpb24oKSwg
cG9zaXRpb24oKSArIG1faWRlbnQubGVuZ3RoKCkpOyAKICAgICB9CiAKQEAgLTMzNTAsMTMgKzMz
NTAsMTMgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHByb3BlcnQKICAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5tb3ZlKGxvY2FsLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGlmIChnZW5l
cmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICAgICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVyYXRvci5pc1N0cmlj
dE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVyYXRvci5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RG
b3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgIH0K
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5hbWUsIHZhciwgbV9s
ZXhwci0+cG9zaXRpb24oKSwgbV9sZXhwci0+cG9zaXRpb24oKSArIGlkZW50Lmxlbmd0aCgpKTsK
ICAgICB9OwpAQCAtMzYwNywxMyArMzYwNywxMyBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKHZh
cik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUobG9jYWwsIHZhbHVlKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgICAgIGlmICh2YXIu
aXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5
RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRv
U2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/
IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1v
ZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCB2YXIsIG1fbGV4cHItPnBvc2l0
aW9uKCksIG1fbGV4cHItPnBvc2l0aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAobV9sZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewpAQCAtNDM5Nyw2ICs0Mzk3
LDggQEAgdm9pZCBDbGFzc0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiB7CisgICAgU3RyaWN0TW9kZVNjb3BlIHN0cmljdE1vZGVTY29wZShnZW5lcmF0b3IpOworCiAg
ICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNh
bFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0
aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIApA
QCAtNDgzMSw3ICs0ODMzLDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKSBjb24KICAgICAgICAgICAg
IGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3NpYmxlKHZhcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZ2VuZXJh
dG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIs
IHZhcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNDg0MSw3ICs0ODQzLDcgQEAgdm9pZCBCaW5kaW5n
Tm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IHZhbHVlKSBjb24KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVl
ZGVkKHZhcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRU
b1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkg
PyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25N
b2RlRm9yQXNzaWdubWVudENvbnRleHQobV9iaW5kaW5nQ29udGV4dCkpOworICAgIGdlbmVyYXRv
ci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5k
LCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2JpbmRpbmdDb250ZXh0
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChtX2JpbmRpbmdDb250ZXh0ID09IEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCB8fCBtX2JpbmRpbmdDb250ZXh0ID09IEFzc2ln
bm1lbnRDb250ZXh0OjpDb25zdERlY2xhcmF0aW9uU3RhdGVtZW50KQogICAgICAgICBnZW5lcmF0
b3IubGlmdFREWkNoZWNrSWZQb3NzaWJsZSh2YXIpOwpAQCAtNDg3OSw3ICs0ODgxLDcgQEAgdm9p
ZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkpCisgICAgICAg
IGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNr
SWZOZWNlc3NhcnkodmFyLCBudWxscHRyLCBzY29wZS5nZXQoKSk7CkBAIC00ODkwLDcgKzQ4OTIs
NyBAQCB2b2lkIEFzc2lnbm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgICAgICBpZiAoIWlzUmVhZE9ubHkpIHsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9k
ZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0
aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuZWNtYU1vZGUoKS5p
c1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRp
YWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2Fzc2lnbm1lbnRUYXJnZXQtPmlzRG90QWNjZXNz
b3JOb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDM5Y2JmODJlMjExMzIwNWI1NmYzYTdkNjg3NjM1ZjBj
M2U3MGYxN2EuLmY0NWUwMWQwNjcxOTMwNzYyZmMwNzA4NTUwZjNlNDdiY2EzYzRiNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcApAQCAtMjEyLDkgKzIxMiw5IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNW
YWx1ZShWTSYgdm0pIGNvbnN0CiAgICAgaWYgKCF0aGlzVmFsdWUpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBOb3RTdHJpY3RNb2RlOwot
ICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAg
ZWNtYU1vZGUgPSBTdHJpY3RNb2RlOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6
OnNsb3BweSgpOworICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKKyAgICAgICAgZWNtYU1vZGUgPSBFQ01BTW9kZTo6
c3RyaWN0KCk7CiAgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFt
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIApAQCAtMjUzLDcgKzI1
Myw4IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU09iCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2
YXJpYWJsZXNVbmRlclREWjsKICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1Vu
ZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgYXV0
byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtl
U291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJp
dmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlz
QXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOwor
ICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJ
blN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHko
KTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxP
YmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2
bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgp
LCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigp
LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOwogICAgIGlm
IChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24g
PSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNzcxZDkyZTgyMzllNDNhYjI1ZmRiNjZmY2Yx
MDU5OWVhYWNhMzk0Ni4uYzE4NzA2Njc1MThmNGJiMDhiMmM2MzljNDg0ZjZmNjAwZjBjMzUzZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMTg2LDEwICsxODYsMTAgQEAgZW51bSBjbGFzcyBUb1Ro
aXNSZXN1bHQgewogICAgIEdsb2JhbFRoaXMsCiAgICAgRHluYW1pYywKIH07Ci1pbmxpbmUgVG9U
aGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBB
YnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCitpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlz
QW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1
ZUZvck5vZGUpCiB7CiAgICAgLy8gV2UgbG9vayBhdCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0
IHdpbGwgY292ZXIgbW9zdCBjYXNlcyBhbmQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxs
IHRoZSBzdHJ1Y3R1cmVzLgotICAgIGlmIChpc1N0cmljdE1vZGUpIHsKKyAgICBpZiAoZWNtYU1v
ZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZh
bHVlRm9yTm9kZS5tX3R5cGUgJiBTcGVjT2JqZWN0T3RoZXIpKQogICAgICAgICAgICAgcmV0dXJu
IFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgfSBlbHNlIHsKQEAgLTIwMywyMCArMjAzLDIw
IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZNJiB2bSwgYm9vbCBp
c1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9k
ID09ICZKU09iamVjdDo6dG9UaGlzKQogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1
bHQ6OklkZW50aXR5OwogICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNTY29wZTo6
dG9UaGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAg
ICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFRvVGhpc1Jlc3VsdDo6VW5kZWZpbmVkOwogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNS
ZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoKGlzU3RyaWN0TW9kZSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9y
Tm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUu
aXNGaW5pdGUoKSkgeworICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JO
b2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2
YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICBib29sIGFsbFN0
cnVjdHVyZXNBcmVKU1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7
CiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9y
Tm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSkgewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsK
ICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3Ry
aW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJp
Z0ludFR5cGUpOwotICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCisgICAgICAgICAgICBp
ZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNP
YmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0
cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKICAgICAgICAgICAgIC8vIDEpIFdlIGFy
ZSBpbiBzdHJpY3QgbW9kZSBhbmQgc3RyaW5ncy9zeW1ib2xzIGFyZSBub3Qgd3JhcHBlZApAQCAt
MjMwLDcgKzIzMCw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZN
JiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGlmICghb3Zl
cnJpZGVzVG9UaGlzKQogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7
CiAgICAgICAgIGlmIChhbGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSkgewotICAgICAgICAgICAgaWYg
KGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKICAgICAgICAgICAg
IHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgIH0KQEAgLTI3MzAsOSAr
MjczMCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBUb1RoaXM6IHsKICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsKLSAgICAg
ICAgYm9vbCBzdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgp
OwogCi0gICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV92
bSwgc3RyaWN0TW9kZSwgc291cmNlKTsKKyAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlz
VG9UaGlzQW5JZGVudGl0eShtX3ZtLCBlY21hTW9kZSwgc291cmNlKTsKICAgICAgICAgc3dpdGNo
IChyZXN1bHQpIHsKICAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgogICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7CkBAIC0yNzQ2
LDcgKzI3NDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgZGVzdGlu
YXRpb24uc2V0VHlwZShtX2dyYXBoLCBTcGVjT2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6RHluYW1pYzoKLSAgICAgICAgICAgIGlmIChzdHJp
Y3RNb2RlKQorICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAg
ICAgICAgZGVzdGluYXRpb24ubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA5ZGQ0YjlhYTQ4YzgwYzA2ZGYw
NGMwZTFmM2FmMzMwNWVlZGFkMTJiLi5mYjljYWQxYzUxY2ViZmYyMDQ5NDY5NDA4MDI3YmY5MWFl
NjQ0MGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtMjQ2LDEzICsyNDYsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUdl
dEJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgU3BlY3VsYXRlZFR5
cGUsIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsIEdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUp
OwogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCi0gICAgICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYsIGJvb2wgaXNEaXJl
Y3QpOworICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBOb2RlKiB2YWx1
ZSwgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01BTW9kZSk7CiAgICAg
dm9pZCBoYW5kbGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJ
ZFN0YXR1cyYsCi0gICAgICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGludHJ1Y3Rpb25TaXpl
KTsKKyAgICAgICAgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW50cnVjdGlvblNpemUsIEVDTUFN
b2RlKTsKIAogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKLSAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cyk7CisgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMsIEVDTUFNb2RlKTsKICAgICAKICAg
ICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBjaGVjayBmb3IgdGhp
cyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29uZGl0aW9uIG5vIGxv
bmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNrIGNhbiBiZSBlbWl0
dGVkLgpAQCAtODUwLDE4ICs4NTAsMTggQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgTm9k
ZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgTm9kZVR5cGUgb3As
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFy
Z0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3Vu
dCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBpZiAo
YWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwg
YXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgb3BJbmZvLCBjYWxsZWUsIGFyZ0Nv
dW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOwogICAgICAgICAgICAgb3AgPSBUYWlsQ2Fs
bElubGluZWRDYWxsZXI7CiAgICAgICAgIH0KIAogCiAgICAgICAgIE5vZGUqIGNhbGwgPSBhZGRD
YWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgT3BJbmZvKHNpZ25hdHVy
ZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikp
OworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZz
ZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaXNWYWxpZCgpKQog
ICAgICAgICAgICAgc2V0KHJlc3VsdCwgY2FsbCk7CiAgICAgICAgIHJldHVybiBjYWxsOwpAQCAt
MTM0OCw3ICsxMzQ4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVDYWxsKAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIE5vZGUqIGNhbGxO
b2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIE5vZGUq
IGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAg
ICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxWYXJhcmdzICYmIGNhbGxOb2RlLT5v
cCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgIHJldHVybiBjYWxsTm9kZS0+b3Ao
KSA9PSBUYWlsQ2FsbCA/IFRlcm1pbmFsIDogTm9uVGVybWluYWw7CiB9CkBAIC0yMTg2LDcgKzIx
ODYsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERp
cmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgewogICAgICAgICBh
ZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0LCBjYWxsT3AsIG51bGxwdHIsIG15Q2FsbFRhcmdl
dE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAgICAgcmVzdWx0LCBj
YWxsT3AsIE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICAgICAg
VkVSQk9TRV9MT0coIldlIGFkZGVkIGEgY2FsbCBpbiB0aGUgc2xvdyBwYXRoXG4iKTsKICAgICB9
IGVsc2UgewpAQCAtMzY2MCw3ICszNjYwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
RE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LAogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gSlNDX0RP
TUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUywgIkN1cnJlbnRseSBD
YWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBhcmd1bWVudHMuIik7
CiAKICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICBhZGRDYWxsKHJlc3VsdCwgQ2FsbCwgc2lnbmF0
dXJlLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOworICAgIGFkZENhbGwocmVzdWx0LCBDYWxsLCBPcEluZm8oc2lnbmF0
dXJlKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zm
c2V0LCBwcmVkaWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDYyMCwxMSArNDYy
MCwxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogCiB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5h
dGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzKQor
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3Rh
dHVzLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBpZiAoIWRlbGV0ZUJ5U3RhdHVzLmlzU2lt
cGxlKCkgfHwgIWRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpIHx8ICFPcHRpb25zOjp1
c2VBY2Nlc3NJbmxpbmluZygpKSB7CiAgICAgICAgIHNldChkZXN0aW5hdGlvbiwKLSAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBiYXNlKSk7Cisg
ICAgICAgICAgICBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJ
bmZvKGVjbWFNb2RlKSwgYmFzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjMz
LDcgKzQ2MzMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAg
ICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQogICAg
ICAgICAgICAgfHwgZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgPiBPcHRpb25zOjpt
YXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgewogICAgICAgICAgICAgc2V0
KGRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJ
bmZvKGlkZW50aWZpZXIpLCBiYXNlKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxl
dGVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NzE3LDIyICs0NzE3LDIyIEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQoCiB9CiAKIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmVtaXRQdXRCeUlkKAotICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0
dXMsIGJvb2wgaXNEaXJlY3QpCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1
cywgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgaWYgKGlzRGlyZWN0
KQotICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhpZGVudGlmaWVyKSwg
YmFzZSwgdmFsdWUpOworICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwgdmFsdWUpOwogICAgIGVsc2UKLSAg
ICAgICAgYWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IFB1dEJ5SWRGbHVz
aCA6IFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgYmFzZSwgdmFsdWUpOworICAgICAgICBh
ZGRUb0dyYXBoKHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gUHV0QnlJZEZsdXNoIDogUHV0
QnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8oZWNtYU1vZGUpLCBiYXNlLCB2YWx1ZSk7
CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgTm9kZSogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBOb2RlKiB2YWx1ZSwKLSAgICBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVz
LCBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpCisgICAgY29uc3QgUHV0
QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25TaXplLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBpZiAoIXB1dEJ5SWRTdGF0dXMu
aXNTaW1wbGUoKSB8fCAhcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1
c2VBY2Nlc3NJbmxpbmluZygpKSB7CiAgICAgICAgIGlmICghcHV0QnlJZFN0YXR1cy5pc1NldCgp
KQogICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwotICAgICAgICBlbWl0UHV0
QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwor
ICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1
cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAg
LTQ3NDAsNyArNDc0MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAg
ICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2Vz
Q2FsbHMoKQogICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmcoKQogICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0
aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKLSAgICAgICAg
ICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBp
c0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1
ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ3NDksNyArNDc0OSw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgICAgICAgICAgaWYgKHB1dEJ5SWRTdGF0
dXNbdmFyaWFudEluZGV4XS5raW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmICghY2hlY2so
cHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhdLmNvbmRpdGlvblNldCgpKSkgewotICAgICAgICAg
ICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0
YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBp
ZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTQ3OTIsNyArNDc5Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5
SWQoCiAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAg
IGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKLSAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7
CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJ
ZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC00ODU5LDcgKzQ4NTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKAogCiAgICAgICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90aGVy
LCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAgICAgICAgaWYgKCFsb2FkZWRW
YWx1ZSkgewotICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgdmFsdWUs
IHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2Us
IGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgZWNtYU1vZGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDkwMyw3ICs0OTAz
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgCiAg
ICAgZGVmYXVsdDogewotICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1
ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBp
ZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0gfQogfQpAQCAtNTA3NSw3ICs1MDc1LDggQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRoaXMo
KTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFRvVGhpcz4oKS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7CisgICAgICAgICAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgICAgICAgICBT
dHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
SUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IG51bGxwdHI7CiAg
ICAgICAgICAgICBpZiAoY2FjaGVkU3RydWN0dXJlSUQpCkBAIC01MDg2LDcgKzUwODcsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xv
d0Nhc2UobV9jdXJyZW50SW5kZXgpCiAgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpCiAg
ICAgICAgICAgICAgICAgfHwgKG9wMS0+b3AoKSA9PSBHZXRMb2NhbCAmJiBvcDEtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKCksIE9wSW5mbyhnZXRQ
cmVkaWN0aW9uKCkpLCBvcDEpKTsKKyAgICAgICAgICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgo
VG9UaGlzLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIE9wSW5mbyhnZXRQcmVkaWN0aW9u
KCkpLCBvcDEpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaCgKICAgICAgICAgICAgICAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsCkBAIC01OTI2LDcgKzU5
MjcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodGhpc1ZhbHVlKTsKICAgICAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKHByb3BlcnR5KTsKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsK
LSAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBQdXRCeVZhbFdpdGhUaGlzLCBP
cEluZm8oMCksIE9wSW5mbygwKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFy
ZywgUHV0QnlWYWxXaXRoVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpLCBPcEluZm8o
MCkpOwogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7
CiAgICAgICAgIH0KQEAgLTU5OTYsMTQgKzU5OTcsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQo
Ynl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIg
PSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5
XTsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKClbaWRlbnRpZmllck51bWJlcl07Ci0gICAgICAgICAgICBib29sIGRpcmVjdCA9ICEhKGJ5
dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpOworICAgICAgICAgICAgYm9vbCBkaXJl
Y3QgPSBieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCk7CiAKICAgICAgICAgICAgIFB1dEJ5SWRT
dGF0dXMgcHV0QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAogICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCiAg
ICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5pZGVudGlmaWVycygp
W2lkZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaGFuZGxlUHV0
QnlJZChiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpLCBpZGVu
dGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBjdXJyZW50SW5zdHJ1
Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCksIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVl
LCBwdXRCeUlkU3RhdHVzLCBkaXJlY3QsIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpLCBieXRl
Y29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0
X2J5X2lkKTsKICAgICAgICAgfQogCkBAIC02MDE0LDggKzYwMTUsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUu
bV9wcm9wZXJ0eV07CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFw
aC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotCi0gICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssIHVpZCkpLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoUHV0QnlJZFdpdGhUaGlzLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywgdWlkKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSwgdGhpc1Zh
bHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWRfd2l0aF90
aGlzKTsKICAgICAgICAgfQogCkBAIC02MDU1LDcgKzYwNTUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGN1cnJlbnRD
b2RlT3JpZ2luKCkpOwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3Jh
cGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKICAgICAgICAgICAgIGF1dG8gaWRl
bnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCk7Ci0gICAg
ICAgICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVy
LCBpZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cyk7CisgICAgICAgICAgICBoYW5kbGVE
ZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVt
YmVyLCBkZWxldGVCeVN0YXR1cywgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwogICAgICAgICB9CiAKQEAgLTYwODUsMTMgKzYwODUs
MTMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CiAKLSAgICAgICAgICAgICAg
ICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwgaWRlbnRpZmllciwg
aWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBo
YW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlm
aWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cywgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFzaG91bGRDb21waWxl
QXNEZWxldGVCeUlkKQotICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9H
cmFwaChEZWxldGVCeVZhbCwgYmFzZSwgcHJvcGVydHkpKTsKKyAgICAgICAgICAgICAgICBzZXQo
Ynl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIE9wSW5mbyhieXRlY29kZS5t
X2VjbWFNb2RlKSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2RlbF9ieV92YWwpOwogICAgICAgICB9CiAKQEAgLTY2MTQsNyArNjYxNCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3Bf
Y2FsbF9ldmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcENhbGxFdmFsPigpOwogICAgICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0g
LWJ5dGVjb2RlLm1fYXJndjsKLSAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNvZGUubV9kc3QsIENh
bGxFdmFsLCBudWxscHRyLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpLCBieXRlY29kZS5tX2FyZ2Ms
IHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYWRkQ2FsbChi
eXRlY29kZS5tX2RzdCwgQ2FsbEV2YWwsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgZ2V0
KGJ5dGVjb2RlLm1fY2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rlck9mZnNldCwgZ2V0
UHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNjk2Myw3ICs2OTYzLDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGlmIChuZWVk
c0R5bmFtaWNMb29rdXAocmVzb2x2ZVR5cGUsIG9wX3B1dF90b19zY29wZSkpIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoaWRlbnRpZmllck51bWJlciAhPSBVSU5UX01BWCk7CiAgICAgICAgICAg
ICAgICAgdWludDY0X3Qgb3BJbmZvMSA9IG1ha2VEeW5hbWljVmFyT3BJbmZvKGlkZW50aWZpZXJO
dW1iZXIsIGdldFB1dEluZm8ub3BlcmFuZCgpKTsKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KFB1dER5bmFtaWNWYXIsIE9wSW5mbyhvcEluZm8xKSwgT3BJbmZvKCksIGdldChieXRlY29kZS5t
X3Njb3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dER5bmFtaWNWYXIsIE9wSW5mbyhvcEluZm8xKSwgT3BJbmZvKGdldFB1dEluZm8uZWNt
YU1vZGUoKSksIGdldChieXRlY29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfdG9fc2NvcGUpOwogICAgICAgICAg
ICAgfQogCkBAIC02OTg1LDcgKzY5ODUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFu
dHMoKSAhPSAxCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5raW5kKCkgIT0gUHV0
QnlJZFZhcmlhbnQ6OlJlcGxhY2UKICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVzWzBdLnN0
cnVjdHVyZSgpLnNpemUoKSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
UHV0QnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkp
LCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVj
bWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBOb2RlKiBiYXNlID0gd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2JqZWN0KTsKQEAgLTc2
MzEsOCArNzYzMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAg
ICAgICAgICAgICAgICAiIGZvciBpbmxpbmluZyBhdCAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZSht
X2NvZGVCbG9jaywgSklUVHlwZTo6REZHSklUKSwKICAgICAgICAgICAgICAgICAiICIsIGlubGlu
ZUNhbGxGcmFtZSgpLT5kaXJlY3RDYWxsZXIpOwogICAgICAgICB9Ci0gICAgICAgIGRhdGFMb2co
Ci0gICAgICAgICAgICAiLCBpc1N0cmljdE1vZGUgPSAiLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5pc1N0cmljdE1vZGUoKSwgIlxuIik7CisgICAgICAgIGRhdGFMb2dMbigpOwogICAg
ICAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNvZGUoKTsKICAgICB9
CiAgICAgCkBAIC03NzM5LDcgKzc3MzgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAgICAgICAgaGFu
ZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0
QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0aW9uU2l6ZSk7CisgICAgICAgICAgICBoYW5k
bGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRC
eUlkU3RhdHVzLCBpc0RpcmVjdCwgaW5zdHJ1Y3Rpb25TaXplLCBieXRlY29kZS5tX2VjbWFNb2Rl
KTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7CkBAIC03NzUwLDcgKzc3
NDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRl
Y29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogICAgICAgICBhZGRWYXJBcmdDaGlsZCh2
YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBwcm9w
ZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBm
b3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQ
dXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJ
bmZvKDApKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0
QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5m
byhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1
dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9i
YmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggOTExZGQ5YjFlNzdhY2I1NThhODYzMGVmMmMxODEwMDYw
ZjFlZGMyZi4uZmI0NTcwOWZlNTE2MjgyZjQ4NDc1YzMwNzEyN2EwYTIzMjg0Y2I5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAgICAgICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1
bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3ZtLCBtX2dyYXBoLmlzU3RyaWN0TW9k
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpKTsKKyAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklk
ZW50aXR5KG1fZ3JhcGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBUb1RoaXNSZXN1
bHQ6OklkZW50aXR5KSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50
aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMmMzNzY4MDNjNGNhNmRmNGYy
ZmQyYmUwNWMxNGUwNjQzZDQ4MzU3Yy4uMWE0ZGVjZGEwYzJkNzM2ODdlZmNmMzg4Yjg0ODJmYjBl
YzY0N2M0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0yODM3LDcgKzI4MzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaXh1cFRvVGhpcyhO
b2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBtX2dyYXBoLmlz
U3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKIAogICAgICAgICBpZiAoaXNT
dHJpY3RNb2RlKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUJvb2xlYW4oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDJj
MjUxOTZmYjA1YzQ5Nzc5NGI1ZGRmYzY2MWRjNzdmZjFhMGUwYWMuLjdiZDE4ODA2NmFkMDZkN2Jl
OGFmMjVmMzhhYjE0ODk3ZWVmZGVmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIGdsb2JhbFRoaXNP
YmplY3RGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIG9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsKLSAgICAgICAgcmV0
dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUobV92bSktPnRvVGhpcyhv
YmplY3QsIG9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgICAgICByZXR1cm4ganNDYXN0PEpT
T2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlzKG9iamVjdCwgb2JqZWN0
LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICB9CiAgICAgCiAgICAgU2NyaXB0RXhlY3V0YWJs
ZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKQEAgLTQ2
OSwxOCArNDY5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tG
b3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBtX3Byb2ZpbGVkQmxvY2sp
OwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3RyaWN0TW9kZUZvcihDb2RlT3JpZ2luIGNvZGVP
cmlnaW4pCi0gICAgewotICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCkp
Ci0gICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwotICAgICAg
ICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKS0+aXNTdHJpY3RNb2RlKCk7Ci0g
ICAgfQotICAgIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlRm9yKENvZGVPcmlnaW4gY29kZU9yaWdp
bikKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdE1vZGVGb3IoY29kZU9yaWdpbikgPyBT
dHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCBtYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZChjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+aXNTdGlsbFZhbGlkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGFhYzNhNjM3YTA5NDE2NjQ1NDRj
OTE5YmI3NDZlMGFkNTdiOWY0MzEuLjBiODUwZjBjODA3NDA5NTA1YTkwYTU5ODk2ZTQ1ODk3MzUz
YTU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0yMjIzLDYgKzIyMjMs
NTMgQEAgcHVibGljOgogICAgICAgICBtX29wSW5mbyA9IGFycmF5TW9kZS5hc1dvcmQoKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCisgICAgYm9vbCBoYXNFQ01BTW9kZSgpCisgICAg
eworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBDYWxsRXZhbDoKKyAgICAg
ICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgorICAgICAgICBj
YXNlIFB1dEJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAgY2FzZSBQ
dXRCeUlkRmx1c2g6CisgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNl
IFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CisgICAgICAgIGNhc2UgUHV0
QnlWYWxEaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2Fz
ZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgRUNNQU1vZGUgZWNtYU1vZGUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGhhc0VDTUFNb2RlKCkpOworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAg
Y2FzZSBDYWxsRXZhbDoKKyAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKKyAgICAgICAgY2FzZSBQ
dXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAgICAgICAgIHJldHVy
biBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4oKSk7CisgICAgICAgIGNh
c2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICBjYXNlIFB1dEJ5
SWREaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICBjYXNlIFB1dEJ5
SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgorICAgICAgICBjYXNlIFB1dER5
bmFtaWNWYXI6CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZv
Mi5hczx1aW50OF90PigpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OnN0cmlj
dCgpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGJvb2wgaGFzQXJpdGhNb2RlKCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCA0NWU3YWMzZGI1OGY2
NWI3OGFiNjAyZTc4ZTRhMzFjNDQ1ODNjOWM3Li4wZTRjMzFiZjBkN2U1ODU4YmJkYjc0NDIzMGE2
MzY3YzRmYTBiNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKQEAgLTQ3
LDYgKzQ3LDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJbmZvKFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkpKSB7IH0KICAgICBleHBsaWNpdCBPcElu
Zm8oT3BlcmFuZCBvcCkgOiBtX3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAgICBleHBsaWNpdCBP
cEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFsdWUoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGlkZW50aWZpZXIucmF3Qml0cygpKSkgeyB9CisgICAgZXhwbGljaXQgT3BJ
bmZvKEVDTUFNb2RlIGVjbWFNb2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFsdWUoKSkgeyB9CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcEluZm8oVCogcHRyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMDhjZTU0
MzVkM2Y3MTkwNjNjZmMwOWZmYTc3ZGNmNjExZmY4Zjk5OC4uY2M1NzgwOTdiNzRhOGY2NWQ2YTAz
YTllOTY3Y2ZkMDc2ZDVjZTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Ub1RoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2QK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Ub1RoaXNTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wKQpAQCAtMzA3LDcgKzMwNyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7CiB9CiAKIEpTQXJyYXkqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uT2JqZWN0S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT2JqZWN0KQpAQCAtMzM4NSw3ICszMzg1LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWMKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJp
emUuaAppbmRleCAzNjE4MWEyODIxMzM5ZTg4YjY2M2M2NTg3MWMwZGEzY2M0NGRlOGEyLi5iYWEy
MWMwYmJmYTJhY2ZiYTUwZDVhOGY5OTMyZDMxNGRiNTQ0OWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMjM5
LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDogewog
ICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3QgYXJndW1lbnRzLCBleGNlcHQgdGhp
cywgYXJlIHJlYWQgaW4gc2xvcHB5IG1vZGUuCi0gICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9j
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9j
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpOyBpLS07KQogICAgICAgICAgICAgICAgICAgICBtX3JlYWQodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKICAgICAgICAgICAgIH0KQEAgLTI1MCw3
ICsyNTAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgICAgIC8vIFJlYWQgYWxsIG9m
IHRoZSBpbmxpbmUgYXJndW1lbnRzIGFuZCBjYWxsIGZyYW1lIGhlYWRlcnMgdGhhdCB3ZSBkaWRu
J3QgYWxyZWFkeSBjYXB0dXJlLgogICAgICAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgp
OyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+Z2V0
Q2FsbGVySW5saW5lRnJhbWVTa2lwcGluZ1RhaWxDYWxscygpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRo
Rml4dXAuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1
YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA4ZjE5MjYwODA1NjY5NDdiYWJhMDJmMTc3NmI1
NDA5NGIxMGUwYmUzLi4yMTAwM2VkNWZkM2ZiYzM4MTYyYzg5MmIzNGM4NDdiOTI3NjgzZmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTA2LDcgKzUwNiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgICAgIC8vIFRvVGhpcyBp
biBtZXRob2RzIGZvciBwcmltaXRpdmUgdHlwZXMgc2hvdWxkIHNwZWN1bGF0ZSBwcmltaXRpdmUg
dHlwZXMgaW4gc3RyaWN0IG1vZGUuCi0gICAgICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG1f
Z3JhcGguaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAg
ICBib29sIGlzU3RyaWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKICAgICAg
ICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewogICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQm9vbGVhbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGNhYTRiYWI0MTBlNmQ1
MzRlMDZhNTk1NzYxOWQzOWM5Yzg3ZWMwOWQuLjhkNTNmMzQxYmQ2NTUzM2QxNjI2MWZiNDI0OTdh
ZmQ0NThiNzM4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC0yMTE5LDcgKzIxMTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRG91YmxlUHV0QnlWYWwoTm9kZSogbm9kZSwgU3BlY3VsYXRlQ2VsbE9wZXJhbmQmIGJh
cwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywKLSAgICAgICAgICAgICAgICBtX2pp
dC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAg
IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICA/IChub2Rl
LT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RC
ZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJy
YXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91
bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05v
blN0cmljdCksCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKQEAgLTMxNTAsMjQgKzMx
NTAsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRB
cnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnQKICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gUHV0QnlWYWxEaXJlY3QpIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0aGlzLAotICAgICAg
ICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5v
blN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9u
U3RyaWN0LAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlR1BSKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1v
ZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZUdQUikpOwogICAgICAgICB9CiAjZWxz
ZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlW
YWxEaXJlY3QpIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAg
IG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9u
UHV0QnlWYWxEaXJlY3RDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsTm9u
U3RyaWN0LAorICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
Q2VsbE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2UsIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eSks
IEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3Ry
aWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxs
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsTm9uU3RyaWN0LAorICAgICAgICAgICAgICAg
IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmlj
dCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jl
c3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIEpTVmFsdWVSZWdzKHByb3Bl
cnR5VGFnR1BSLCBwcm9wZXJ0eSksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikp
KTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0zMjk5LDcgKzMyOTksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiBub2RlLCBFZGdl
JiBjaGlsZDEsCiAgICAgc3BlY3VsYXRlU3RyaW5nKGNoaWxkMiwgYXJnMkdQUik7CiAKICAgICBm
bHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7CisgICAgY2FsbE9wZXJh
dGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbENlbGxT
dHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25TdHJpY3QsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMzMxOCw3
ICszMzE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdp
dGhTeW1ib2woTm9kZSogbm9kZSwgRWRnZSYgY2hpbGQxLAogICAgIHNwZWN1bGF0ZVN5bWJvbChj
aGlsZDIsIGFyZzJHUFIpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9s
Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwg
YXJnM1JlZ3MpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
ID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsU3ltYm9sTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwg
YXJnMkdQUiwgYXJnM1JlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBu
b1Jlc3VsdChub2RlKTsKQEAgLTExMzI5LDcgKzExMzI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNW
YXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgdmFsdWVS
ZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1
dEluZm8oKSk7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkg
PyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5v
blN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3Ms
IGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5m
bygpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQpAQCAtMTIyMTUsNyArMTIyMTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdw
cigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9u
dFNwaWxsKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQ
UiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5v
dERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNw
aWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTIyMzAsNyArMTIyMzAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2RlKQogICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBOb3REaXJlY3QpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQpAQCAtMTIyNDUsNyArMTIyNDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZERpcmVjdChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVl
UmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBEaXJlY3QpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
R1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAt
MTIyNjAsNyArMTIyNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZFdp
dGhUaGlzKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNW
YWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbiht
X2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1
dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKKyAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5SWRX
aXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKICAgICAgICAgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgdmFsdWVSZWdzLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogCkBAIC0xMjYyOSw3ICsxMjYyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVUb1RoaXMoTm9kZSogbm9kZSkKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKHRoaXNWYWx1
ZVJlZ3MsIHRlbXBSZWdzKTsKIAogICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAg
IGlmIChtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICBp
ZiAobm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBmdW5jdGlvbiA9IG9wZXJh
dGlvblRvVGhpc1N0cmljdDsKICAgICBlbHNlCiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9u
VG9UaGlzOwpAQCAtMTM4MjUsNyArMTM4MjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHJvZmlsZVR5cGUoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9k
ZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0
ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRo
aXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoc3BpbGxNb2RlID09IERvbnRTcGlsbCkgewpA
QCAtMTM4MzcsNyArMTM4MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlk
KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdp
biwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BS
LCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2luZCk7CisgICAgICAgIHNjcmF0
Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IGUzZjY3ZTE1OTJjOGVmOWM3MGJiZDA2MjcyZWQzNzZhM2I5Y2QzMmEuLmQzZThlN2Q1
OWQ5ZWVmOTcyM2U4ZTJhZjE5ZTQ1Mjk5MzU0ZWU5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTcxNyw3ICs3MTcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlQ2hlY2tOZXV0ZXJlZChOb2RlKik7CiAKICAgICB2b2lkIGNhY2hl
ZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5SWQo
Q29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVn
IHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNN
b2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2Rl
ID0gTmVlZFRvU3BpbGwpOwogICAgIHZvaWQgY2FjaGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IGI4N2Y2ODcyMjc1ODAzYjk1NWI4ZGEwZGI2Yjc3OWM5NDVkNmY2YjkuLmFjODhmZjgz
MjA3ZThjN2ZlZjM3YmRiZmIwNjM2NDZlMzI5Yjg4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNzYwLDcgKzc2MCw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIHVuc2ln
bmVkIHJlcXVpcmVkQnl0ZXMgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBzaXplb2YoQ2Fs
bEZyYW1lKikgKiAyOwogICAgICAgICByZXF1aXJlZEJ5dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVxdWlyZWRCeXRlcyk7CiAgICAgICAgIG1f
aml0LnN1YlB0cihUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIEpJVENvbXBpbGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
Z2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgp
OwogICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbkNhbGxFdmFsKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTI3MjUsOSArMjcyNiw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBhcmczR1BS
ID0gYXJnMy5ncHIoKTsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkKLSAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5v
blN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFy
ZzNHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5p
c1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIs
IGFyZzJHUFIsIGFyZzNHUFIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykg
PyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7Cisg
ICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkg
PyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CiAg
ICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTI4MDksNyArMjgxMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNP
dXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywKLSAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6IChu
b2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlv
bmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3Vu
ZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwpAQCAtMjg5
Myw3ICsyODk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgaWYgKCFzbG93Q2FzZXMuZW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0g
UHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRz
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKICAgICAg
ICAgICAgICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgICAg
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcsIHZhbHVlUmVnKSk7CkBAIC0zODk3LDcgKzM4OTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdw
cigpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
bV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25Q
dXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIs
IHZhbHVlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxXaXRoVGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHRoaXNWYWx1
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTU0NjcsNyArNTQ2OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9w
dGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtNTQ4Niw3ICs1
NDg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9k
ZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRy
LCBiYXNlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBA
IC01NTI1LDcgKzU1MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlW
YWwoTm9kZSogbm9kZSkKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5
UmVncyk7CisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xv
d1BhdGgpKTsKQEAgLTU1NDUsNyArNTU0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVy
aWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VS
ZWdzLCBrZXlSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2Vu
ZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFz
ZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCmluZGV4IDM1ZDhjZTY2OTEzNzg3NmRiZDE5ZDIyZDAyNmMyOTYyNDllZjhk
NzIuLmM2M2JiZDc1NWRkZmJmZTJhMjc5ODkwZDE1N2Q3NTg4OWJkZGJhYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTIxMjQsNyArMjEy
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2Fz
ZSwgY29udGludWF0aW9uKTsKICAgICAgICAgSl9KSVRPcGVyYXRpb25fR0ogZnVuY3Rpb247Ci0g
ICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
YykpCisgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAg
ICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKQEAgLTM2ODYsNyArMzY4Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+
Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQzKCkpOwogCi0gICAgICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3Qg
OiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCisgICAgICAgIHZtQ2FsbChWb2lkLCBtX25vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6
IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSkpOwogICAgIH0KIApAQCAtMzY5OCw3
ICszNjk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1
ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOwogICAgICAgICBMVmFsdWUgdmFsdWUg
PSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CiAKLSAgICAgICAg
dm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bFdpdGhUaGlzLAorICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxXaXRoVGhpcywKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2Us
IHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKICAgICB9CiAgICAgCkBAIC0zOTcxLDcgKzM5
NzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwot
ICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5lY21hTW9kZSgpOworICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAgIAogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDgzMSwxMiArNDgzMSwxMiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIFZfSklUT3BlcmF0aW9uX0dDQ0ogb3BlcmF0aW9uID0gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQyLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2Up
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpbmdTdHJpY3Q7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0Owog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENl
bGxTdHJpbmdTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5n
Tm9uU3RyaWN0OwpAQCAtNDg0NywxMiArNDg0NywxMiBAQCBwcml2YXRlOgogCiAgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkMi51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU3RyaWN0OwogICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5vblN0cmljdDsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0
TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0Owog
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdDsKQEAgLTQ4
NjQsMTIgKzQ4NjQsMTIgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgVl9KSVRPcGVyYXRpb25f
R0pKSiBvcGVyYXRpb247CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFs
RGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21h
TW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0OwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3Q7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3Ry
aWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgaWYg
KG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAgICAgICBvcGVy
YXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbFN0cmljdDsKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0
OwpAQCAtNDkxNSw3ICs0OTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3Vu
ZHMoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1
dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAg
ICAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgICAg
IGJhc2UsIHN0b3JhZ2UsIGluZGV4LCB2YWx1ZSwgY29udGludWF0aW9uKTsKQEAgLTQ5NDEsNyAr
NDk0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKAotICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
YykKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAg
ICAgICAgICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/
IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBv
cGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0
aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAg
ICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNvbnRpbnVhdGlvbik7CkBA
IC00OTgxLDcgKzQ5ODEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGlzT3V0T2ZC
b3VuZHMgPSBtX291dC5hYm92ZU9yRXF1YWwoCiAgICAgICAgICAgICAgICAgaW5kZXgsIG1fb3V0
LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9yYWdlX3ZlY3Rvckxl
bmd0aCkpOwogCi0gICAgICAgICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSBtX2dyYXBoLmlz
U3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgIGF1dG8g
c2xvd1BhdGhGdW5jdGlvbiA9IG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAg
ICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5
b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5k
c05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3Qp
OwogICAgICAgICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKSB7CkBAIC01MjQ2
LDcgKzUyNDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpA
QCAtNTI3NSw3ICs1Mjc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTcKICAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2
bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBtX291dC5jb25zdEludFB0cihtX25v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpKSkpOworICAgICAgICAgICAgc2V0
Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlk
R2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50UHRyWmVybywgYmFz
ZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0
cygpKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC01MzE2LDcgKzUzMTYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIExW
YWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExW
YWx1ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAg
ICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxl
dGVCeVZhbEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1fb3V0LmludFB0clpl
cm8sIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90
WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBzdWJzY3JpcHQsIG1f
b3V0LmNvbnN0SW50MzIobV9ub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTk5MDksNyArOTkwOSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSArIHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAgICAgICAgICAgICAgcmVxdWly
ZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCks
IHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9iamVjdCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgICAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0
aW9uQ2FsbEV2YWwpKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKICAg
ICAgICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQ
UjAsIE9wZXJhdGlvblB0clRhZyk7CkBAIC0xMzQ1NSw3ICsxMzQ1Niw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51
bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoVm9pZCwgbV9ncmFwaC5pc1N0cmlj
dE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0RHluYW1pY1Zh
clN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsCisgICAgICAgIHNldEpT
VmFsdWUodm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0
aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3Qs
CiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludFB0
cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2V0UHV0SW5mbygpKSkpOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggMDgwZmFlZGU4MWEyMjY4MjIxZDFjNTA4OTQxZDll
ZjI3MTI3OWEyMC4uOTdiZmIyMDJlNWY3NDg0ZTZjYTRiNDlkMTRiYWM3ZjMxNjNkY2JjMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0
SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJp
Y3RNb2RlKSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnNsb3BweSgpKSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBKU09iamVjdDo6Y2FsY3VsYXRl
ZENsYXNzTmFtZShvYmplY3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggNTE4OGMwMjM5ZGY0NmUwMDJkYzllMmEx
YjM3MjFiNWQwYjBjMGY4ZS4uYzRkOWM3MjdlMDcxOGVlYWVmMDA2ODI4NDRjNTQ3M2RiMjJiYmZj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTVmFsdWUg
ZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K0pTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0
OCw3ICsxNDgsNyBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKICAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZSogZXZhbCA9
IGNhbGxlckNvZGVCbG9jay0+ZGlyZWN0RXZhbENvZGVDYWNoZSgpLnRyeUdldChwcm9ncmFtU291
cmNlLCBjYWxsZXJDYWxsU2l0ZUluZGV4KTsKICAgICBpZiAoIWV2YWwpIHsKLSAgICAgICAgaWYg
KCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIGlmICghZWNtYU1v
ZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgaWYgKHByb2dyYW1Tb3VyY2UuaXM4Qml0KCkp
IHsKICAgICAgICAgICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVwYXJzZXIoZ2xvYmFs
T2JqZWN0LCBwcm9ncmFtU291cmNlLmNoYXJhY3RlcnM4KCksIHByb2dyYW1Tb3VyY2UubGVuZ3Ro
KCksIE5vblN0cmljdEpTT04sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgICAgICAgICAgICAgaWYg
KEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKQpAQCAt
MTY1LDcgKzE2NSw3IEBAIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgCiAgICAgICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJl
VmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVzVW5kZXJURFopOwot
ICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92
aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCks
IGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNhbGxlckNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29u
dGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgIGV2YWwgPSBEaXJlY3RFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9ncmFtU291cmNl
LCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdpbigpKSwg
ZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+bmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250
ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAgICAgICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgICAgIGlmICghZXZh
bCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTA1Nyw3ICsxMDU3LDcg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0
aW5nQ2FuZGlkYXRlcyA9IGV2YWwtPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7CiAK
ICAgICBKU1Njb3BlKiB2YXJpYWJsZU9iamVjdDsKLSAgICBpZiAoKG51bVZhcmlhYmxlcyB8fCBu
dW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpICYmIGV2YWwtPmlzU3RyaWN0TW9kZSgpKSB7CisgICAg
aWYgKChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSAmJiBldmFsLT5p
c0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAgICAgIHNjb3BlID0gU3RyaWN0RXZhbEFjdGl2YXRp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVy
ZSgpLCBzY29wZSk7CiAgICAgICAgIHZhcmlhYmxlT2JqZWN0ID0gc2NvcGU7CiAgICAgfSBlbHNl
IHsKQEAgLTExMDQsNyArMTEwNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZh
bEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAgVW5s
aW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNvZGVCbG9jay0+dW5saW5r
ZWRFdmFsQ29kZUJsb2NrKCk7CiAKICAgICAvLyBXZSBjYW4ndCBkZWNsYXJlIGEgInZhciIvImZ1
bmN0aW9uIiB0aGF0IG92ZXJ3cml0ZXMgYSBnbG9iYWwgImxldCIvImNvbnN0Ii8iY2xhc3MiIGlu
IGEgc2xvcHB5LW1vZGUgZXZhbC4KLSAgICBpZiAodmFyaWFibGVPYmplY3QtPmlzR2xvYmFsT2Jq
ZWN0KCkgJiYgIWV2YWwtPmlzU3RyaWN0TW9kZSgpICYmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9w
TGV2ZWxGdW5jdGlvbkRlY2xzKSkgeworICAgIGlmICh2YXJpYWJsZU9iamVjdC0+aXNHbG9iYWxP
YmplY3QoKSAmJiAhZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSAmJiAobnVtVmFyaWFibGVzIHx8
IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KHZhcmlhYmxlT2JqZWN0KS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkgewogICAgICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSB1bmxpbmtlZENvZGVCbG9jay0+dmFyaWFibGUo
aSk7CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbAogCiAgICAg
aWYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMgfHwgbnVtRnVuY3Rp
b25Ib2lzdGluZ0NhbmRpZGF0ZXMpIHsKICAgICAgICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXIgb3B0aW1pemVyKHZtLCB2YXJpYWJsZU9iamVjdCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZU9i
amVjdC0+bmV4dCgpICYmICFldmFsLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaWYgKHZhcmlh
YmxlT2JqZWN0LT5uZXh0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAg
ICAgICB2YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+dmFySW5qZWN0aW9uV2F0Y2hw
b2ludCgpLT5maXJlQWxsKHZtLCAiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0aW9uIHdh
dGNocG9pbnQiKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFi
bGVzOyArK2kpIHsKQEAgLTExNDQsNyArMTE0NCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChldmFsLT5p
c1N0cmljdE1vZGUoKSkgeworICAgICAgICBpZiAoZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSkg
ewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRvcExldmVsRnVuY3Rp
b25EZWNsczsgKytpKSB7CiAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICAgICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHZhcmlhYmxlT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggOTBhOWRiNWM1YTlmYjAyNTZjNTdk
MWQ2Y2U0OTlhN2ZlNzMxZTA4NS4uNjQ1MzkxMjdiOGM3NGM4MjAyOWIyYmI2MTgwZTY5Njk3MWE2
NGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZiAvLyBFTkFC
TEUoQ09NUFVURURfR09UT19PUENPREVTKQogICAgIH07CiAKLSAgICBKU1ZhbHVlIGV2YWwoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7CiAKICAgICBpbmxpbmUgQ2FsbEZyYW1lKiBjYWxs
ZWVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIG51bVVzZWRT
dGFja1Nsb3RzLCB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCBlOTVmOGZl
MzVkYzFkYWE5ZTY1MDU0NmUxYjM1MDkxNzFhY2NkOTBjLi4zNTZkYTFiMTYyODJlYWQxYjcyYzg4
ZTExYjBhNDE0NWQ4MDA3MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKQEAgLTE0NzIsMTkgKzE0NzIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBjb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwogICAgIH0KICAgICAK
LSAgICBib29sIGlzU3RyaWN0TW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewot
ICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSgpOwotICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgICAgIHJldHVybiBj
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgICAgIHJldHVybiBpbmxpbmVDYWxsRnJh
bWUtPmlzU3RyaWN0TW9kZSgpOwotICAgIH0KLSAgICAKLSAgICBFQ01BTW9kZSBlY21hTW9kZUZv
cihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RN
b2RlRm9yKGNvZGVPcmlnaW4pID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7Ci0gICAgfQot
ICAgIAogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4pOwogICAgIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3Io
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCmluZGV4IGIyYmZjZTYzMzdkOWJlMDJkNjFmMzg5NWNlNWVjYTNhMGQ3ODMyMDYuLmUx
ZTU2NWRjNTI0OWY2YWNmZGFhMjRiZmZiNDQ3MWZmY2IyMGI4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIGJvb2wgSklUOjpjb21waWxl
Q2FsbEV2YWwoY29uc3QgT3BDYWxsRXZhbCYgYnl0ZWNvZGUpCiAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3IobV9jb2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVy
KSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tT
dGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2Fs
bEV2YWwsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcmVnVDEpOworICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIHJlZ1QyKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCks
IHJlZ1QxLCByZWdUMik7CiAKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1QwKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKaW5kZXggOThmOTRhMjY4ODMxNjkxZjY3OTViMjc5ZjFiNzA5ZDFhZDExZTQw
Zi4uMjI2ZTZiNzk4NTFiNjFiY2NiZDUxMDdjZmE1ZmNjMzAyNjBlNzk1YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
QEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBpZiAobV9lY21hTW9k
ZSA9PSBTdHJpY3RNb2RlKSB7CisgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAg
ICAgICBpZiAobV9wdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25Q
dXRCeUlkU3RyaWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggYTY0N2M0NWIzZjRlM2I0M2RiNWQ0NjA1
NWRmNzU4YjZiOTJlZjhlYS4uZjAzZTA5MjUzODU0MWZiMDM0MGYxMmM2YmE4YTYxMTExZjMzNjc3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaApAQCAtMTI4LDcgKzEyOCw5IEBAIHB1YmxpYzoKIAogY2xhc3MgSklUUHV0QnlJ
ZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yKCkgeyB9CisgICAgSklUUHV0QnlJZEdlbmVyYXRvcigpCisgICAgICAg
IDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCisgICAgeyB9CiAKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSlNWYWx1ZVJlZ3MgYmFzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
aW5kZXggMjNmZjVjODFjMWMwMzIyMmY5MTJhNDk5MzFmMjgzNmRhZGNmYWNiNy4uN2RjYmU4ZmEz
YWU1NjhjYmFhNjVjYTQxZTVlMWJhMjc1NjU1MzNmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVS
ZQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnKQog
ewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUocmVnKSkKKyAgICBp
ZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcpKQogICAgICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CiB9CiAKQEAgLTQ5Niw3ICs0OTYsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9y
ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBjb25zdCBKU1ZhbHVlIGNvbnN0YW50LCBSZWdpc3Rlcgog
CiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChWaXJ0dWFsUmVn
aXN0ZXIgcmVnKQogewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUo
cmVnKSkgeworICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJlZykpIHsKICAgICAg
ICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkp
OwogICAgICAgICBlbHNlCkBAIC01MDYsNyArNTA2LDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZykKIAogaW5saW5lIHZv
aWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZywg
UmVnaXN0ZXJJRCB0YWcpCiB7Ci0gICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVk
aWF0ZShyZWcpKSB7CisgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkgewog
ICAgICAgICBpZiAocmVnLmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGp1
bXAoKSk7CiAgICAgICAgIGVsc2UKQEAgLTYwMCw3ICs2MDAsNyBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCByZWcpCiAKIEFM
V0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3Rl
cklEIHJlZywgVmlydHVhbFJlZ2lzdGVyIHZSZWcpCiB7Ci0gICAgaWYgKCFtX2NvZGVCbG9jay0+
aXNLbm93bk5vdEltbWVkaWF0ZSh2UmVnKSkKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3du
Q2VsbCh2UmVnKSkKICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGRh
ODJmMzFlMWI4YzhjYWI0MTI3MTgwZTU5YTE1OGRmNDMyMWQzZWYuLjE1ZDA2NzA0N2RkZTJlNWUz
NjdlODAxYTljYWYzZTdlNDcxZTA3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhCiAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNl
T2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsK
IH0KIAotc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlw
dCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCitzdGF0aWMgdm9pZCBwdXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNW
YWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01B
TW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzE3LDEyICs3MTcsMTIg
QEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKIAogICAgICAgICAgICAgYnlWYWxJbmZvLT5hcnJh
eVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAg
ICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgob2JqZWN0LCBnbG9i
YWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYmFz
ZVZhbHVlLnB1dEJ5SW5kZXgoZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSk7CisgICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGdsb2JhbE9iamVjdCwg
aSwgdmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfSBl
bHNlIGlmIChzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Ns
b3dQYXRoID0gdHJ1ZTsKQEAgLTczOCwxNSArNzM4LDE0IEBAIHN0YXRpYyB2b2lkIHB1dEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1Zh
bHVlCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKIAogICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwg
ZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgYmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
U09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvKQorc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUgc3Vic2Ny
aXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1v
ZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCk7CiAKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQz
MigpKSkgewogICAgICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3
aWxsIHJldHVybiB0cnVlIG9ubHkgZm9yIHBvc2l0aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0aG9z
ZSB2YWx1ZXMgYXJlIHZhbGlkIGFycmF5IGluZGljZXMuCkBAIC03NjgsNyArNzY3LDcgQEAgc3Rh
dGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAgICAgfQogCiAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRl
eCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQ
dXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAgICAgYmFzZU9iamVjdC0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIDAsIGVjbWFNb2RlLmlzU3RyaWN0
KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RU
aHJvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3OCw3ICs3NzcsNyBAQCBzdGF0
aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSgogICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vi
c2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKICAgICAgICAg
ICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9i
amVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJl
Y3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CisgICAg
ICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlw
dEFzVUludDMyLCB2YWx1ZSwgMCwgZWNtYU1vZGUuaXNTdHJpY3QoKSA/IFB1dERpcmVjdEluZGV4
U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTc5MCw3ICs3ODksNyBAQCBzdGF0aWMgdm9p
ZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSgogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5KSkgewogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7
CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2Rl
ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhy
b3cpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGlu
ZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8gUHV0RGlyZWN0SW5k
ZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03OTgsNyArNzk3LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEoKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgZWNtYU1vZGUuaXNT
dHJpY3QoKSk7CiAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGds
b2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKIH0KIApAQCAt
ODg0LDcgKzg4Myw3IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5UHV0QnlWYWxPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAgcmV0dXJuIG9wdGlt
aXphdGlvblJlc3VsdDsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZh
bEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC05MDIsNyArOTAxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2QKICAgICAgICAgYnlW
YWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVy
bkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25Q
dXRCeVZhbEdlbmVyaWMpOwogICAgIH0KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1
dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFs
dWUsIGJ5VmFsSW5mbykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlWYWwo
Z2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNt
YU1vZGUpKTsKIH0KIAogc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlEaXJlY3RQdXRCeVZh
bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIG9iamVjdCwgSlNWYWx1ZSBzdWJz
Y3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCkBAIC05NzQsNyArOTczLDcgQEAgc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlEaXJl
Y3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICByZXR1
cm4gb3B0aW1pemF0aW9uUmVzdWx0OwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2Ny
aXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTk5NSwxMCArOTk0LDEwIEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRy
ZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJp
Yyk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkaXJlY3RQdXRCeVZh
bChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZh
bEluZm8pKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFsKGds
b2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2Rl
KSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1v
ZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTEwMDgsMTEg
KzEwMDcsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAKLSAgICBwdXRCeVZhbChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1
ZSwgYnlWYWxJbmZvKTsKKyAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vi
c2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKIAotdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTAyMiwxMCArMTAyMSwxMCBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09i
amVjdCgpKTsKLSAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCksIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5m
byk7CisgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUp
LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMTAzNSw3ICsxMDM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAg
ICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUZyYW1lLT5ndWFyYW50ZWVkSlNWYWx1ZUNhbGxl
ZSgpLCBnbG9iYWxGdW5jRXZhbCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxl
ZUZyYW1lKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVG
cmFtZSwgZWNtYU1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTIxNjMsNyArMjE2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9iYWxP
YmplY3QsIGluZGV4LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJv
cGVydHkpKSk7CiB9CiAgICAgCi1zdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3N0
YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZt
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE3MywxMiArMjE3MiwxMiBAQCBzdGF0aWMgYm9vbCBk
ZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBWTSYgdgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBjb3VsZERlbGV0ZSA9
IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFs
T2JqZWN0LCBpZGVudCwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwotICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNT
dHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBlY21hTW9kZS5pc1N0cmljdCgp
KQogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBVbmFibGVUb0Rl
bGV0ZVByb3BlcnR5RXJyb3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQorc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyLCBFQ01BTW9k
ZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjE5MiwyMSAr
MjE5MSwyMSBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwogICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJh
d0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKIAotICAgIGJvb2wgcmVzdWx0ID0gZGVs
ZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgaWRl
bnQpOworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIHZtLCBzbG90
LCBiYXNlVmFsdWUsIGlkZW50LCBlY21hTW9kZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkp
IHsKICAgICAgICAgaWYgKCFwYXJzZUluZGV4KGlkZW50KSkgewogICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3Ry
dWN0dXJlT3JOdWxsKCksIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxl
dGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1
cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICAg
ICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFz
ZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpO
b3JtYWwsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQorc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIsIEVDTUFNb2RlIGVjbWFN
b2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMjE0LDEwICsyMjEzLDEw
IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVh
YmxlSWRlbnRpZmllcik7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21V
aWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owot
ICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgaWRlbnQpOworICAgIHJldHVybiBkZWxldGVC
eUlkKGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSks
IGlkZW50LCBlY21hTW9kZSk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKK3N0YXRpYyBi
b29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5LCBFQ01BTW9k
ZSBlY21hTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKQEAgLTIyMzYsMTIgKzIyMzUsMTIgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgICAg
ICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
YmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxl
dGUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4g
Y291bGREZWxldGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTIyNTMsNyArMjI1Miw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKIAotICAgIGJvb2wgcmVzdWx0ID0gZGVs
ZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1
YnNjcmlwdCk7CisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIHZt
LCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgZWNtYU1vZGUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGJhc2VWYWx1ZS5p
c09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNl
bGwoc3Vic2NyaXB0KSkgewpAQCAtMjI2NCwyMCArMjI2MywyMCBAQCBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCk7CiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOwog
ICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2Nr
LCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCksIGlkZW50aWZpZXIpKQotICAgICAgICAgICAg
ICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZh
bHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3Jt
YWxCeVZhbCk7CisgICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0
dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICByZXR1cm4gZGVs
ZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpOworICAg
IHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCksIGVjbWFN
b2RlKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBF
bmNvZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkKQEAgLTI1NDQsNyArMjU0Myw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IEluc3RyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgUHV0UHJvcGVydHlT
bG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxp
emF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGdldFB1dElu
Zm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0
LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAg
ICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQs
IHZhbHVlLCBzbG90KTsKICAgICAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4
IDVjMWZjMzc2MTYwYjQ0YTc2ODBjMzY3NWMwNWI4NGQ2MjcxNjJmZjQuLjhlZmI1YjVhYzk4MGFl
ZTZjNTUyMzQ0MzdjOTAyODk1ODkwMjI2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIFZNOwogY2xhc3MgV2F0Y2hw
b2ludFNldDsKIAogc3RydWN0IEJ5VmFsSW5mbzsKK3N0cnVjdCBFQ01BTW9kZTsKIHN0cnVjdCBJ
bmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKQEAgLTE4NywxMSArMTg4LDEy
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCi12b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5B
TDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKKworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSos
IEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25MaW5rQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5r
SW5mbyopIFdURl9JTlRFUk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBD
YWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WaXJ0dWFsQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENh
bGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKQEAgLTI1MCwxMCArMjUyLDEwIEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJf
dCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7Ci1zaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRhcmdldCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QsIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CitzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90LCBF
Q01BTW9kZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01BTW9kZSkgV1RGX0lO
VEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQsIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpT
T2JqZWN0KiBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRQTmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5k
ZXggYzM1NDNkYWU3ZDA4MmViZGVjNjFkMGJjZDViOGY4NzUyMDQwYmU3NC4uYTQwODA1OTM2NTBh
NmVjNTY4YWE2MTA2OTE3ZmU5N2IzOGYxMzM4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBKSVRQdXRC
eUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQ
dXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMSksIHJlZ1QyLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2luZCk7CisgICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUu
bV9lY21hTW9kZSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBp
ZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJh
cnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTMx
MSwxMSArMzExLDEzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5OwogICAgIFZpcnR1YWxSZWdp
c3RlciB2YWx1ZTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsK
IAogICAgIGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2RlKSB7CiAgICAgICAgIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
ICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworICAgICAgICBlY21hTW9kZSA9IGJ5
dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTMzMSw3
ICszMzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHks
IHJlZ1QxKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7Ci0gICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVnVDIsIGJ5VmFsSW5m
byk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVnVDIs
IGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpKTsKIAogICAgIG1fYnlW
YWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0
ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CkBAIC00MjcsNyArNDI5LDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2wKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1
ZSgpKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsK
IAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC00NzcsNyAr
NDc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHks
IHJlZ1QxKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
Z2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTY1NCw3ICs2NTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgIGJvb2wgZGlyZWN0ID0g
ISEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCk7CisgICAgYm9vbCBkaXJlY3Qg
PSBieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCk7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAog
ICAgIC8vIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gcGF0Y2ggYm90aCB0aGUgU3RydWN0dXJlLCBh
bmQgdGhlIG9iamVjdCBvZmZzZXQsIHdlIHN0b3JlIG9uZSBwb2ludGVyLApAQCAtNjY4LDcgKzY3
MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
ICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLAor
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5
dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwKICAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90
RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApp
bmRleCA4ZDE4ODAzNmEyMzU5ZGYwYjFlMWFmMWFiNGQ4NzdmYzZjNjBjOWFhLi41MzU0ODZjZDhm
MTUzMmFkMWJlYjUxNWE4NmI5MDhhYmM4MzY5NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTQyMyw3ICs0MjMs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QyLCBy
ZWdUMSk7CiAgICAgZW1pdExvYWQocHJvcGVydHksIHJlZ1QzLCByZWdUMCk7CiAgICAgZW1pdExv
YWQodmFsdWUsIHJlZ1Q1LCByZWdUNCk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihp
c0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJl
Z1QyLCByZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q1
LCByZWdUNCksIGJ5VmFsSW5mbyk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0Rp
cmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZh
bE9wdGltaXplLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1Qy
LCByZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q1LCBy
ZWdUNCksIGJ5VmFsSW5mbywgYnl0ZWNvZGUubV9pc1N0cmljdE1vZGUpOwogCiAgICAgbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQg
PSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlv
bkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCmluZGV4IDA4ZmFiZDU2NDI4NjhjMGM2ZmQ2OTc2NzFjMWY5ZTYwZDA5NGFkNzAuLjhi
YmUzY2I5M2U0MGM4Nzk1OTYyMWZlMGZhNmIwYmI2YWVjZDNlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgcmVwYXRjaFB1dEJ5
SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpT
VmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlv
bihzbG90LCBwdXRLaW5kKSk7CiB9CiAKLXN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kKQorc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFs
dWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQsIEVDTUFNb2RlIGVj
bWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKQEAgLTc3MSw3ICs3NzEsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvYwogICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7
CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQpKTsKICAgICAgICAg
ICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNvZGVCbG9jaywgcHJv
cGVydHlOYW1lLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKLSAgICAg
ICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICB9IGVs
c2UgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc05v
bmNvbmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpj
cmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlLCBw
cm9wZXJ0eU5hbWUsIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsK
ICAgICAgICAgICAgIGVsc2UKQEAgLTc5MiwxMiArNzkyLDEyIEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jCiAgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2Fj
aGUgOiBSZXRyeUNhY2hlTGF0ZXI7CiB9CiAKLXZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgRGVsQnlLaW5kIGtpbmQpCit2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hl
YWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8s
IERlbEJ5S2luZCBraW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogCi0gICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZv
LCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKSB7CisgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9w
ZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewog
ICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFs
dWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21V
aWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlL
aW5kOjpOb3JtYWwpCiAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdl
bmVyaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCBlNWNlNDY4NzExNDYz
OTJlNGU3MmU2MTRhMmY1ZTU4ZWE2NzQ5OTQ1Li5kODkwZmQ3MGFhY2Q4MmZmYmY0ZGE4ZmIyNGUx
ZjNkZmY1NzQ5ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDksNyAr
NDksNyBAQCBlbnVtIGNsYXNzIERlbEJ5S2luZCB7CiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlcGF0Y2hQdXRC
eUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1Yklu
Zm8mLCBQdXRLaW5kKTsKLXZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwordm9pZCByZXBh
dGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNs
b3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVT
dHViSW5mbyYsIERlbEJ5S2luZCwgRUNNQU1vZGUpOwogdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xv
YmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBi
b29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwog
dm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFs
dWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2Fz
Rm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29k
ZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IDNkYjIzYmFlMDVkNTgwMjljNTAzOWY1NzIzYjlkOTk2NWY0MmI0MmMuLjhkZWE3
ZjI3OGU3NjYyZTUwMzE0Y2ViOWIwODMzOWY4N2JmZGE0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtODM2LDEwICs4MzYsMTAgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX2Jhc2UpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1v
ZGUoKS5pc1N0cmljdCgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOwogCiAgICAgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZSh2bSkgOiBudWxscHRyOwotICAgIGlmIChieXRlY29kZS5tX2ZsYWdz
ICYgUHV0QnlJZElzRGlyZWN0KQorICAgIGlmIChieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCkp
CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxP
YmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIGlkZW50LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV92YWx1ZSksIHNsb3QpOwogICAgIGVsc2UKICAgICAgICAgYmFzZVZhbHVlLnB1
dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV92YWx1ZSksIHNsb3QpOwpAQCAtODg4LDcgKzg4OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9
IG5ld1N0cnVjdHVyZS0+aWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShi
eXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3MuaXNEaXJlY3QoKSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3U3RydWN0
dXJlLT5wcm90b3R5cGVDaGFpbihnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VDZWxsKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uc2V0KHZtLCBj
b2RlQmxvY2ssIGNoYWluKTsKQEAgLTkyNyw3ICs5MjcsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfZGVsX2J5X2lkKQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAg
IGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsK
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBieXRlY29k
ZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikpOwogICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKIH0KQEAgLTEwMjUsNyArMTAyNSw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CiAg
ICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9w
cm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX3ZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlz
U3RyaWN0KCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsK
ICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwpAQCAtMTA1OCw3ICsx
MDU4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0
KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92
YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICBib29sIGlzU3Ry
aWN0TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmljdE1v
ZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYgKExJS0VMWShzdWJz
Y3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1
ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQz
Ml90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAgICBB
U1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOwpAQCAtMTExMiw3ICsxMTEyLDcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAgfQogICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUu
bV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKICAgICAKICAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CkBAIC0xNzM4LDcgKzE3Mzgs
NyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbgogICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2Fs
bGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNW
YWx1ZSkpOwogICAgIAotICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGdsb2JhbE9i
amVjdCwgY2FsbGVlRnJhbWUpOworICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGds
b2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwogICAgIExMSU5U
X0NBTExfUkVUVVJOKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIExMSW50OjpnZXRDb2RlUHRy
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcpOwogfQogICAgIApAQCAt
MTg3NCw3ICsxODc0LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19z
Y29wZSkKICAgICBpZiAobWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhy
b3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0eSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRl
VW5kZWZpbmVkVmFyaWFibGVFcnJvcihnbG9iYWxPYmplY3QsIGlkZW50KSk7CiAKLSAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgUHV0UHJv
cGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihtZXRhZGF0YS5tX2dl
dFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChzY29wZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0
UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihtZXRhZGF0YS5t
X2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFi
bGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAg
ICAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYnl0ZWNvZGUsIHNjb3BlLCBzbG90LCBpZGVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMDdk
OGU4YzgyMWM0NmY0YmNkY2NiOTNlZDA4MjAyMTJmZGU1ZDc0OS4uYWRlNTQ5NTlmYjZmYjI3YjVk
OWNhYWI3N2U5OTE0NTMwNzYzYzk0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNjAwLDcgKzYwMCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICAvLyAxLiBMZXQgYXJy
YXkgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZhbHVlLgog
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CkBAIC02ODMsNyArNjgzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CkBAIC03ODEsNyArNzgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2EKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAx
LiBMZXQgTyBiZSA/IFRvT2JqZWN0KHRoaXMgdmFsdWUpLgotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RN
b2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNj
b3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNP
YmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTg2Niw3ICs4NjYs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAg
ICBpZiAoaXNKU0FycmF5KHRoaXNWYWx1ZSkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVlKS0+cG9wKGdsb2JhbE9iamVj
dCkpKTsKQEAgLTkwMSw3ICs5MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jUHVzaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c3RyaWN0KCkpOwogCiAgICAgaWYgKExJS0VMWShpc0pTQXJyYXkodGhpc1ZhbHVlKSAm
JiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSkgewogICAgICAgICBKU0FycmF5KiBh
cnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKQEAgLTk0Miw3ICs5NDIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0
TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFz
Y29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlz
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMDM5LDcgKzEw
MzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJ
T05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTA2
Niw3ICsxMDY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc2xpY2UKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTEy
Niw3ICsxMTI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1NwbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYg
KFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBA
IC0xMjI0LDcgKzEyMjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jVW5TaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxNS40LjQuMTMKIAotICAgIEpT
T2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEzNTYsNyAr
MTM1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRl
eE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE0Ci0gICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0
cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJU
KCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMzk0LDcgKzEzOTQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNQotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IDIyNmI0ODM1NDYyZDhjNDVlNjE5ZjY2ODAwYmU5OTdhOTFh
ZTg4YTEuLjgwMmYyMDJmOTI5YjAwODAzNGZhN2Q2ZWI4MTA5MGFiNzMzMGQyYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MTgsNyAr
MTgxOCw2IEBAIHB1YmxpYzoKICAgICBSZWY8VW5saW5rZWRNZXRhZGF0YVRhYmxlPiBtZXRhZGF0
YShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmRlY29kZShkZWNv
ZGVyKTsgfQogCiAgICAgdW5zaWduZWQgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNF
dmFsOyB9Ci0gICAgdW5zaWduZWQgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0
cmljdE1vZGU7IH0KICAgICB1bnNpZ25lZCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgdW5zaWduZWQgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBj
b25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAgdW5zaWduZWQgaXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CkBA
IC0xODUxLDcgKzE4NTAsNiBAQCBwcml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3Bl
UmVnaXN0ZXI7CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBt
X2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAg
ICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lz
QnVpbHRpbkZ1bmN0aW9uIDogMTsKQEAgLTIwNDgsNyArMjA0Niw2IEBAIEFMV0FZU19JTkxJTkUg
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKERlY29kZXImIGRlY29kZXIsIFN0
cnVjdHVyZSoKICAgICAsIG1fc2NvcGVSZWdpc3RlcihjYWNoZWRDb2RlQmxvY2suc2NvcGVSZWdp
c3RlcigpKQogCiAgICAgLCBtX3VzZXNFdmFsKGNhY2hlZENvZGVCbG9jay51c2VzRXZhbCgpKQot
ICAgICwgbV9pc1N0cmljdE1vZGUoY2FjaGVkQ29kZUJsb2NrLmlzU3RyaWN0TW9kZSgpKQogICAg
ICwgbV9pc0NvbnN0cnVjdG9yKGNhY2hlZENvZGVCbG9jay5pc0NvbnN0cnVjdG9yKCkpCiAgICAg
LCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGNhY2hlZENvZGVCbG9jay5oYXNDYXB0dXJlZFZhcmlh
YmxlcygpKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjYWNoZWRDb2RlQmxvY2suaXNCdWls
dGluRnVuY3Rpb24oKSkKQEAgLTIyMzQsNyArMjIzMSw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBD
YWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zCiAgICAgbV90aGlzUmVnaXN0ZXIgPSBjb2RlQmxvY2subV90aGlzUmVnaXN0ZXI7CiAgICAg
bV9zY29wZVJlZ2lzdGVyID0gY29kZUJsb2NrLm1fc2NvcGVSZWdpc3RlcjsKICAgICBtX3VzZXNF
dmFsID0gY29kZUJsb2NrLm1fdXNlc0V2YWw7Ci0gICAgbV9pc1N0cmljdE1vZGUgPSBjb2RlQmxv
Y2subV9pc1N0cmljdE1vZGU7CiAgICAgbV9pc0NvbnN0cnVjdG9yID0gY29kZUJsb2NrLm1faXND
b25zdHJ1Y3RvcjsKICAgICBtX2hhc0NhcHR1cmVkVmFyaWFibGVzID0gY29kZUJsb2NrLm1faGFz
Q2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgbV9pc0J1aWx0aW5GdW5jdGlvbiA9IGNvZGVCbG9jay5t
X2lzQnVpbHRpbkZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggZjY5OTllNzM0ODRlMmFiZDg4MTQ1NGYxMTQ4MzEw
YzAyZDRmMmE3NC4uODk2ZWQ4MTE3M2ZiYjc3Nzg2MWIzYjk1NjExOWY0YWRhMmExZTVjYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3Bw
CkBAIC0xNzgsNyArMTc4LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGlmICgh
dGhpc09iamVjdC0+c3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSkgewogICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpc09i
amVjdC0+bV9jYWxsZWUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKTsKIAogICAgICAgICBpZiAoaWRlbnQg
PT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlKSB7CiAgICAgICAgICAgICBpZiAoaXNTdHJpY3RN
b2RlKSB7CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBDbG9uZWRBcmd1bWVudHM6Om1hdGVyaWFs
aXplU3BlY2lhbHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG1fY2FsbGVlLT5leGVjdXRhYmxlKCkp
OwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCk7Cisg
ICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpOwog
ICAgIAogICAgIGlmIChpc1N0cmljdE1vZGUpCiAgICAgICAgIHB1dERpcmVjdEFjY2Vzc29yKGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlLCB0aGlzLT5nbG9iYWxPYmplY3Qo
dm0pLT50aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcigp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBmYTNjZDMyNmJjZDViOTc4OWEyNDI3ZTYx
M2FjOTU0OGIyZmIzYWUyLi45ZTE3MmI2YWVhNzRiMDYyZGU5ZmZlZjhkYTU2ZDQ5MzRmOTRkNTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTkx
LDExICs5MSwxMSBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgICAgICBleGVjdXRhYmxl
LT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSB8IGFycm93Q29udGV4dEZlYXR1cmUs
IHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+bGFzdExpbmUoKSwg
ZW5kQ29sdW1uKTsKIAogICAgIGJvb2wgdXNlc0V2YWwgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAm
IEV2YWxGZWF0dXJlOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gcm9vdE5vZGUtPmZlYXR1cmVz
KCkgJiBTdHJpY3RNb2RlRmVhdHVyZTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IHJvb3ROb2Rl
LT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmUgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBF
Q01BTW9kZTo6c2xvcHB5KCk7CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0RXZh
bEV4ZWN1dGFibGU+KQogICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1
dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7Ci0gICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGlzU3RyaWN0TW9kZSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBD
YWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRl
eHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8odXNlc0V2YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3Jp
cHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVC
bG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5
cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IFVu
bGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlSW5mbywgY29kZUdlbmVy
YXRpb25Nb2RlKTsKICAgICB1bmxpbmtlZENvZGVCbG9jay0+cmVjb3JkUGFyc2Uocm9vdE5vZGUt
PmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBsaW5lQ291bnQs
IHVubGlua2VkRW5kQ29sdW1uKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBVbmxpbmtlZENvZGVCbG9j
a1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgcwogICAgIGlmICghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1hcHBpbmdVUkxEaXJl
Y3RpdmUoKS5pc051bGwoKSkKICAgICAgICAgdW5saW5rZWRDb2RlQmxvY2stPnNldFNvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1hcHBpbmdVUkxEaXJl
Y3RpdmUoKSk7CiAKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwg
cm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9u
TW9kZSwgdmFyaWFibGVzVW5kZXJURFopOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywg
Y29kZUdlbmVyYXRpb25Nb2RlLCB2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOwogCiAgICAg
aWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBlM2Jl
ZDg4ZDgzYWJlZWYxOWI4NjhlOTczMjMxN2M1MjJkOTA4ZTNkLi5iOGRlOTY1NTgyZjdkOTEyNzEz
MzdkNTQzMTkwM2U4MzE4YzI2ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfdG9fdGhpcykKICAgICAvLyBkaWZmZXJlbnQgb2JqZWN0IHRoYXQgc3Rp
bGwgaGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBvbiB0aGUgZmFzdCBwYXRoIHNpbmNlIGl0J2xsIHBy
b2R1Y2UKICAgICAvLyB0aGUgc2FtZSBTcGVjdWxhdGVkVHlwZS4gVGhlcmVmb3JlLCB3ZSBkb24n
dCBuZWVkIHRvIHdvcnJ5IGFib3V0IHZhbHVlIHByb2ZpbGluZyBvbiB0aGUKICAgICAvLyBmYXN0
IHBhdGguCi0gICAgYXV0byB2YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxPYmplY3QsIGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgYXV0
byB2YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxPYmplY3QsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOwog
ICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHZhbHVl
LCBQUk9GSUxFX1ZBTFVFKHZhbHVlKSk7CiB9CiAKQEAgLTk4OCw3ICs5ODgsNyBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICB9CiAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgCi0gICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmlj
dCgpKQogICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVU
b0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKICAgICAKICAgICBSRVRVUk4oanNCb29sZWFuKGNvdWxk
RGVsZXRlKSk7CkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVj
b2RlLm1fYmFzZSkuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdGhpc1ZhbCA9IEdFVF9DKGJ5dGVj
b2RlLm1fdGhpc1ZhbHVlKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBwdXRWYWx1ZSA9IEdFVF9D
KGJ5dGVjb2RlLm1fdmFsdWUpLmpzVmFsdWUoKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzVmFsLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250
ZXh0KCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGJ5dGVjb2RlLm1fZWNt
YU1vZGUuaXNTdHJpY3QoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBiYXNl
VmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKICAg
ICBFTkQoKTsKIH0KQEAgLTEzMjEsNyArMTMyMSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAKICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2Ny
aXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsK
LSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwgYnl0ZWNvZGUubV9l
Y21hTW9kZS5pc1N0cmljdCgpKTsKICAgICBiYXNlVmFsdWUucHV0KGdsb2JhbE9iamVjdCwgcHJv
cGVydHksIHZhbHVlLCBzbG90KTsKICAgICBFTkQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaAppbmRleCAzN2Fm
YTc2YzQwNTc1OTM1NTA2ZTU5Yjg0ZDJiNWYxZTgwOWFmZmYzLi5iYjU0NzQwN2MxNzU3NWVhYzQ0
ZGFlYzFmNGI3ZTA3MTk5ZGM0NjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIGlu
bGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICAgICAgICAgIFJlc29sdmVU
eXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUp
ID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7
CiAgICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxv
dyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5t
X2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9k
ZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9u
TW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8o
bWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRh
ZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IEZBTExUSFJPVUdIOwpAQCAtNjEsNyArNjEsNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRv
U2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1wbCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0
YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZl
TW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBt
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIG1ldGFkYXRhLm1fZ2V0
UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNl
dCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFu
ZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQt
PnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEwOSw3ICsxMDksNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZUdldEZyb21TY29w
ZUdsb2JhbCgKICAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CiAgICAgICAgICAgICByZXNvbHZlVHlwZSA9
IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNr
IGluLgogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1l
dGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRh
dGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6
YXRpb25Nb2RlKCksIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwpAQCAtMTIzLDcgKzEy
Myw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKAogICAgICAgICAg
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3lt
Ym9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5
LmlzTnVsbCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0
SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUs
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAg
ICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAg
ICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0
KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3Bl
T2Zmc2V0KCkpLnNsb3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGM4M2I5MDVlMzgzNTFjMWJhMGVl
MTU4NDJkOTgzZmE2MjlkNzEyZmQuLmIyZjhmZmRhMWY3ODE2NzdjNWFkMTM0NDk0YWFiNGNjZmM1
ZDhjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
CkBAIC0xMzksNyArMTM5LDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUKIAogICAgIGlmICgh
dGhpc1ZhbHVlIHx8IHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICB0aGlz
VmFsdWUgPSBnbG9iYWxPYmplY3Q7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNP
YmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOwor
ICAgIEpTT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVQcm9ncmFtKHNvdXJjZSwgZ2xvYmFsT2JqZWN0LCB0
aGlzT2JqKTsKIAogICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4
IDFhNzJiZmI0N2VmZWZhNTUwZGVmOTgzNTY2NTRhZjY0OTA3Nzk3MzUuLjdjMTliNzVjNjJjODA0
MTM2MmRkOWViMTJlZGE1OTc5MjUxMTVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQorRGlyZWN0RXZh
bEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlz
SW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIEVDTUFNb2RlIGVj
bWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NSwxMSArNDUsMTEgQEAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYXV0byog
ZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRh
YmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2Us
IGlzSW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24sIGV2YWxDb250ZXh0VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZh
bEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFNb2RlLmlzU3RyaWN0KCksIGRl
cml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlKTsK
ICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICBQYXJzZXJFcnJvciBl
cnJvcjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlz
U3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdDsKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGVj
bWFNb2RlLmlzU3RyaWN0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9u
TW9kZSgpOwogCiAgICAgLy8gV2UgZG9uJ3QgYm90aGVyIHdpdGggQ29kZUNhY2hlIGhlcmUgYmVj
YXVzZSBkaXJlY3QgZXZhbCB1c2VzIGEgc3BlY2lhbGl6ZWQgRGlyZWN0RXZhbENvZGVDYWNoZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0
YWJsZS5oCmluZGV4IDQ3ODI2YmYzMjBjMWMxN2Q1ODMxMzljNDZlNTNlNmRhZWRhYmJkNDkuLjI0
MDc1YTdmNWEzNmM3M2ZlYmE0MDdlNzEwOWE2ZmMzM2YyNzBkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEs
NyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGlyZWN0RXZhbEV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBEaXJl
Y3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29k
ZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCopOworICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIHByaXZhdGU6CiAgICAgRGlyZWN0RXZhbEV4ZWN1dGFi
bGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRl
eHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2
YWxDb250ZXh0VHlwZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRUNNQU1vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQU1v
ZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc0NDRkZTI4ZmZmMTZlYjdiMTBmNjJhNjdlOTdjMjAwMWYwMTZh
NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01B
TW9kZS5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRUNNQU1vZGUu
aCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
dm9pZCBFQ01BTW9kZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmIChp
c1N0cmljdCgpKQorICAgICAgICBvdXQucHJpbnQoIlN0cmljdE1vZGUiKTsKKyAgICBlbHNlCisg
ICAgICAgIG91dC5wcmludCgiTm90U3RyaWN0TW9kZSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFNb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BTW9kZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVm
ZjFiMTFhNjZlYTkxN2Q3ZTNkM2NkMTlhNTc5MjJiNTllNzdjMTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BTW9kZS5oCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdt
YSBvbmNlCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgUHJpbnRTdHJlYW07Cit9OworCituYW1l
c3BhY2UgSlNDIHsKKworc3RydWN0IEVDTUFNb2RlIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgU3RyaWN0TW9kZSA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFNsb3Bw
eU1vZGUgPSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBFQ01BTW9kZSBmcm9t
Qnl0ZSh1aW50OF90IGJ5dGUpIHsgcmV0dXJuIEVDTUFNb2RlKGJ5dGUpOyB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBFQ01BTW9kZSBzdHJpY3QoKSB7IHJldHVybiBFQ01BTW9kZShTdHJpY3RNb2Rl
KTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgc2xvcHB5KCkgeyByZXR1cm4gRUNN
QU1vZGUoU2xvcHB5TW9kZSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1N0cmljdCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gU3RyaWN0TW9kZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIHZvaWQg
ZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3RleHBy
IEVDTUFNb2RlKHVpbnQ4X3QgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3ZhbHVlID09IFN0cmljdE1vZGUgfHwgbV92YWx1ZSA9PSBTbG9w
cHlNb2RlLCBtX3ZhbHVlKTsKKyAgICB9CisKKyAgICB1aW50OF90IG1fdmFsdWU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFs
RXhlY3V0YWJsZS5oCmluZGV4IDYwNWIyZWZmYjFkN2I4MmU1Y2RiN2M2NDUzZGM1ZGU3MWYzMDI2
NzYuLjY3ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZiOGU3ZTk5NDgwZWQ3NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQ
YXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxD
b250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250
ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51
bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJs
ZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRh
dGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlLmgKaW5kZXggNDQzYmIzOGE2NWNiODA0NzQ1Njg1N2NkOGQyNzZhZGU5ZjdhNmI1
Yy4uYmFkZTk4NzM1Zjk5ZGM0N2U3YTZkYzc4N2M1Nzk3MTFjZTUxNWVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTE0
Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBQZXIgaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZm9yYmlkZGVuLWV4dGVuc2lvbnMsIG9ubHkgc2xvcHB5
LW1vZGUgbm9uLWJ1aWx0aW4gZnVuY3Rpb25zIGluIG9sZC1zdHlsZSAocHJlLUVTNikgc3ludGFj
dGljIGZvcm1zIGNhbiBjb250YWluCiAgICAgICAgIC8vICJjYWxsZXIiIGFuZCAiYXJndW1lbnRz
Ii4KLSAgICAgICAgcmV0dXJuICFpc1N0cmljdE1vZGUoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVu
Y3Rpb24oKTsKKyAgICAgICAgcmV0dXJuICFpc0luU3RyaWN0Q29udGV4dCgpICYmIHBhcnNlTW9k
ZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlICYmICFpc0NsYXNzQ29u
c3RydWN0b3JGdW5jdGlvbigpOwogICAgIH0KICAgICBib29sIGhhc1Byb3RvdHlwZVByb3BlcnR5
KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXRQdXRJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dElu
Zm8uY3BwCmluZGV4IGQ2ZTcxZWQ4NDhhN2M1N2JjZTg5ZjkyNDQ4MjkyMWUzOTU4NDBjOGMuLjE1
MDhhNjAxN2M5YjFhZTVlNzAxODkyOTdiMjYzZWMxNjI1ZjYyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiB2b2lkIEdldFB1dEluZm86OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIHsKLSAgICBvdXQucHJpbnQob3BlcmFuZCgpLCAiPCIsIHJlc29sdmVNb2RlKCksICJ8Iiwg
cmVzb2x2ZVR5cGUoKSwgInwiLCBpbml0aWFsaXphdGlvbk1vZGUoKSwgIj4iKTsKKyAgICBvdXQu
cHJpbnQob3BlcmFuZCgpLCAiPCIsIHJlc29sdmVNb2RlKCksICJ8IiwgcmVzb2x2ZVR5cGUoKSwg
InwiLCBpbml0aWFsaXphdGlvbk1vZGUoKSwgInwiLCBlY21hTW9kZSgpLCAiPiIpOwogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaAppbmRleCAwNmZmZDQz
YTAyNWYwYjVlY2I0ZTAxMGUyNzE4ZDA2YzAxYjQ1OWRlLi5kZTUxNTA4OWIyYzVmODU5ZTAxOTg0
ODFmZmQ4MGQwOWQ1YTY5NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXRQdXRJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0
UHV0SW5mby5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkVDTUFNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0yMDIsMTggKzIwMywyMCBAQCBjbGFzcyBHZXRQdXRJbmZvIHsK
ICAgICB0eXBlZGVmIHVuc2lnbmVkIE9wZXJhbmQ7CiBwdWJsaWM6CiAgICAgLy8gR2l2ZSBlYWNo
IGZpZWxkIDEwIGJpdHMgZm9yIHNpbXBsaWNpdHkuCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
T3BlcmFuZCkgKiA4ID4gMzAsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1dEluZm8iKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kKSAqIDggPiAzMSwgIk5vdCBlbm91Z2ggYml0
cyBmb3IgR2V0UHV0SW5mbyIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaXNTdHJp
Y3RTaGlmdCA9IDMwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbW9kZVNoaWZ0ID0g
MjA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsaXphdGlvblNoaWZ0ID0g
MTA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB0eXBlQml0cyA9ICgxIDw8IGluaXRp
YWxpemF0aW9uU2hpZnQpIC0gMTsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluaXRp
YWxpemF0aW9uQml0cyA9ICgoMSA8PCBtb2RlU2hpZnQpIC0gMSkgJiB+dHlwZUJpdHM7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtb2RlQml0cyA9ICgoMSA8PCAzMCkgLSAxKSAmIH5p
bml0aWFsaXphdGlvbkJpdHMgJiB+dHlwZUJpdHM7Ci0gICAgc3RhdGljX2Fzc2VydCgobW9kZUJp
dHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0cykgPT0gMHgwLCAiVGhlcmUgc2hvdWxk
IGJlIG5vIGludGVyc2VjdGlvbiBiZXR3ZWVuIFJlc29sdmVNb2RlIFJlc29sdmVUeXBlIGFuZCBJ
bml0aWFsaXphdGlvbk1vZGUiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGlzU3Ry
aWN0Qml0ID0gMSA8PCAzMDsKKyAgICBzdGF0aWNfYXNzZXJ0KChtb2RlQml0cyAmIGluaXRpYWxp
emF0aW9uQml0cyAmIHR5cGVCaXRzICYgaXNTdHJpY3RCaXQpID09IDB4MCwgIlRoZXJlIHNob3Vs
ZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNvbHZlTW9kZSBSZXNvbHZlVHlwZSBhbmQg
SW5pdGlhbGl6YXRpb25Nb2RlIik7CiAKICAgICBHZXRQdXRJbmZvKCkgPSBkZWZhdWx0OwogCi0g
ICAgR2V0UHV0SW5mbyhSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUpCi0gICAgICAgIDog
bV9vcGVyYW5kKChyZXNvbHZlTW9kZSA8PCBtb2RlU2hpZnQpIHwgKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpbml0aWFsaXphdGlvbk1vZGUpIDw8IGluaXRpYWxpemF0aW9uU2hpZnQpIHwgcmVzb2x2
ZVR5cGUpCisgICAgR2V0UHV0SW5mbyhSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgUmVzb2x2ZVR5
cGUgcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUsIEVD
TUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1fb3BlcmFuZCgoZWNtYU1vZGUuaXNTdHJpY3Qo
KSA8PCBpc1N0cmljdFNoaWZ0KSB8IChyZXNvbHZlTW9kZSA8PCBtb2RlU2hpZnQpIHwgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbml0aWFsaXphdGlvbk1vZGUpIDw8IGluaXRpYWxpemF0aW9uU2hp
ZnQpIHwgcmVzb2x2ZVR5cGUpCiAgICAgewogICAgIH0KIApAQCAtMjI1LDYgKzIyOCw3IEBAIHB1
YmxpYzoKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFJlc29sdmVUeXBlPihtX29wZXJhbmQgJiB0eXBlQml0cyk7IH0KICAgICBJbml0aWFs
aXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5pdGlhbGl6YXRpb25Nb2RlPigobV9vcGVyYW5kICYgaW5pdGlhbGl6YXRpb25CaXRzKSA+
PiBpbml0aWFsaXphdGlvblNoaWZ0KTsgfQogICAgIFJlc29sdmVNb2RlIHJlc29sdmVNb2RlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb2x2ZU1vZGU+KChtX29wZXJhbmQgJiBtb2Rl
Qml0cykgPj4gbW9kZVNoaWZ0KTsgfQorICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcGVyYW5kICYgaXNTdHJpY3RCaXQgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01B
TW9kZTo6c2xvcHB5KCk7IH0KICAgICB1bnNpZ25lZCBvcGVyYW5kKCkgY29uc3QgeyByZXR1cm4g
bV9vcGVyYW5kOyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCmluZGV4IDVmOWY4
NWUxZWNkYzgxMzQ3ZDg5NzQwNmU2MjExNGQwNjU0NzI3OTMuLjY2Y2M3NTA3MzkwYmE0MWUwODg5
Y2Q2YjZjNTAwZTc2YjAyMTYwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29sIGNhbGxTZXR0ZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNl
dHRlcgogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyT2JqID0ganNDYXN0PEdldHRlclNl
dHRlcio+KGdldHRlclNldHRlcik7CiAKICAgICBpZiAoZ2V0dGVyU2V0dGVyT2JqLT5pc1NldHRl
ck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBl
Y21hTW9kZSA9PSBTdHJpY3RNb2RlLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAg
ICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZWNtYU1vZGUuaXNTdHJp
Y3QoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogCiAgICAgSlNPYmplY3QqIHNldHRl
ciA9IGdldHRlclNldHRlck9iai0+c2V0dGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggMjAw
MzE5MjkwZjBiZTBmOTczMTQxYmZlOTQ5OWYzYmFlODk3ODg2Mi4uMTRmN2ZhYjVjM2Q0ZWFhODc5
NDJiY2YzMzJhNDVmMWM1MDZkYWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKK0luZGlyZWN0RXZhbEV4ZWN1dGFibGUq
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDUsMTUgKzQ1LDE0
IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZShnbG9iYWxP
YmplY3QsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlKTsKKyAgICBhdXRvKiBleGVjdXRh
YmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4o
dm0uaGVhcCkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBl
KTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUt
PmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0
cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBj
b2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1v
ZGUoKTsKICAgICAKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkRXZhbENvZGUg
PSB2bS5jb2RlQ2FjaGUoKS0+Z2V0VW5saW5rZWRFdmFsQ29kZUJsb2NrKAotICAgICAgICB2bSwg
ZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0cmljdE1vZGUsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgICAgIHZtLCBleGVjdXRhYmxl
LCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBpZiAoZ2xv
YmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpKQogICAgICAgICBnbG9iYWxPYmplY3QtPmRlYnVnZ2Vy
KCktPnNvdXJjZVBhcnNlZChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3Zp
ZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKQEAgLTY4LDggKzY3LDEwIEBA
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLUlu
ZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0
Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQotICAg
IDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwg
ZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENv
bnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pCitjb25zdGV4cHIgYm9v
bCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKK2NvbnN0ZXhwciBib29sIGluc2lkZU9yZGluYXJ5
RnVuY3Rpb24gPSBmYWxzZTsKK0luZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4
ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCisgICAg
OiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBk
ZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGluc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggYzE5OTJmZGIxYTQyNTA1NGFlOWJjNDU3NTEyOGU2
ZjUwODZjYTliYy4uNDk4YjVjODcwOThhYjM3NDc5N2EyNWJmNDgxNjM3Y2ZiYjkyZWRmNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuaApAQCAtMzEsOSArMzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFdmFsRXhlY3V0YWJsZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
KTsKKyAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOwogcHJpdmF0ZToKLSAgICBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wg
aW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKKyAgICBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOwogfTsKIAogc3RhdGlj
X2Fzc2VydChzaXplb2YoSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSkgPT0gc2l6ZW9mKEV2YWxFeGVj
dXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAppbmRleCA2NDAwZWU4YmRiMmU1NzcwMmIzY2JjMzY5OTM2OWQ3N2M5NDMzMGQ0Li41ZGI3
Y2QzZmQxOWU4OWJkODFkNTkwMjUzZTk5MWI4YmVhMDhkMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTExMSw3ICsxMTEsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6
OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVj
bWFNb2RlKQogewogICAgIEFTU0VSVCghaXNDZWxsKCkpOwogCi0gICAgaWYgKGVjbWFNb2RlID09
IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIHJldHVy
biAqdGhpczsKIAogICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKQEAgLTE4OSw3ICsx
ODksNyBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eQogCiAgICAgICAgICAgICBKU1ZhbHVlIGdz
ID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChncy5pc0dldHRlclNl
dHRlcigpKQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNl
dHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkg
PyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOworICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFs
dWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6
c2xvcHB5KCkpKTsKIAogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBn
cywgYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvciwgb2JqLCBz
bG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKaW5kZXggMGJjYWI0MGI4ZDkyMWQyYzczNGEyOWExNGRjMDIxYzcyZDIzMGEz
NC4uNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1NGZhNjBjOWY0ODFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIyLDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJFQ01BTW9kZS5oIgogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAj
aW5jbHVkZSAiUHVyZU5hTi5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CkBAIC04MCw4ICs4MSw3
IEBAIHVzaW5nIFdyaXRlQmFycmllclRyYWl0c1NlbGVjdCA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0
aW9uYWw8c3RkOjppc19zYW1lPFQsIFVua25vCiAgICAgRHVtYlZhbHVlVHJhaXRzPFQ+LCBEdW1i
UHRyVHJhaXRzPFQ+CiA+Ojp0eXBlOwogCi1lbnVtIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgeyBO
b1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07Ci1lbnVtIEVDTUFNb2Rl
IHsgU3RyaWN0TW9kZSwgTm90U3RyaWN0TW9kZSB9OworZW51bSBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlIDogdWludDhfdCB7IE5vUHJlZmVyZW5jZSwgUHJlZmVyTnVtYmVyLCBQcmVmZXJTdHJpbmcg
fTsKIAogZW51bSBjbGFzcyBDYWxsVHlwZSA6IHVuc2lnbmVkOwogc3RydWN0IENhbGxEYXRhOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggMmZlYTJiNWI4ZWQ4
MDkzN2EwOTBmYzVjMWFmNWI1OTJkMzM1ODMzYS4uMTM5MGM3NjE5YWNjN2E5NDQ5YWZlM2M4Nzdi
ZDk5MzUwZjU0MDY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
CkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHUKIAogSlNWYWx1ZSBK
U0NlbGw6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQor
ICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICByZXR1cm4gY2VsbDsKICAgICBy
ZXR1cm4gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMDlhYmFlMzhiZTBmZTM0NmZkNWQz
OGIyMmJkYTQ3YmY5ZTY2Y2EzNS4uNTE5MDNjYTc4NzFkMzcyZTI2YjhlY2UwZTNhZTBhM2YxNDZi
ODU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
QEAgLTc1LDcgKzc1LDcgQEAgU3RydWN0dXJlKiBKU0Z1bmN0aW9uOjpzZWxlY3RTdHJ1Y3R1cmVG
b3JOZXdGdW5jRXhwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBib29sIGlzQnVp
bHRpbiA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7CiAgICAgaWYgKGV4ZWN1dGFi
bGUtPmlzQXJyb3dGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hcnJv
d0Z1bmN0aW9uU3RydWN0dXJlKGlzQnVpbHRpbik7Ci0gICAgaWYgKGV4ZWN1dGFibGUtPmlzU3Ry
aWN0TW9kZSgpKQorICAgIGlmIChleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAg
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpY3RGdW5jdGlvblN0cnVjdHVyZShpc0J1aWx0
aW4pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnNsb3BweUZ1bmN0aW9uU3RydWN0dXJlKGlz
QnVpbHRpbik7CiB9CkBAIC00MzAsNyArNDMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlv
bjo6Y2FsbGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1YK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okluc3RhbmNlRmllbGRJbml0aWFsaXplck1vZGU6
Ci0gICAgICAgIGlmICghZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgaWYgKCFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0
KCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiX3MpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggOWJhOGM3MGQ3NmE3NDJlZWI1NzE2NzhjYzkz
ZGJhY2I0NzkzOTQ0ZS4uY2E5NDg5YzBlMGVmZGM4NmIwZjQyMmZmMjg4NmVmNDhkMTkzYTkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNTA3LDcgKzUwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGFyc2VkT2JqZWN0KTsKIAog
ICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9y
aWdpbih2bSk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHMsIHNvdXJjZU9yaWdpbiksIGZh
bHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5v
bmUpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmlnaW4pLCBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgaWYgKCFl
dmFsKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTcxNCw3ICs3MTQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYg
KHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUpKTsKIApAQCAtNzM1LDcgKzczNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRFcnJvcik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyNzFlODFjMWE3
MDAwOTIzNzE5ZTFhOWI4OTQzNTYzY2Y2ODA0YTNkLi4xYjI0ZjExZWM3ODhmNTQ4NGRjYmFkMjYx
NGI4ODRjNDFiNmFmOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCkBAIC04MTAsNyArODEwLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHkKICAgICAg
ICAgICAgICAgICBpZiAoIXRoaXMtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgpKQogICAg
ICAgICAgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9mZnNldCk7CiAK
LSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCBz
bG90LnRoaXNWYWx1ZSgpLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RN
b2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxs
U2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFsdWUoKSwgZ3MsIHZhbHVlLCBzbG90Lmlz
U3RyaWN0TW9kZSgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpKTsK
ICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KQEAgLTE4MTgsNyArMTgx
OCw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwgIkNhbm5vdCBzZXQgcHJv
dG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0Il9zKTsKICAgICB9CiAKLSAgICBB
U1NFUlQobWV0aG9kVGFibGUodm0pLT50b1RoaXModGhpcywgZ2xvYmFsT2JqZWN0LCBOb3RTdHJp
Y3RNb2RlKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1RoaXModGhp
cywgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpID09IHRoaXMpOwogCiAgICAgaWYg
KHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCh2bSkgPT0gcHJvdG90eXBlKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXgg
NmQ1YWI2ODJjNjgzOTE0ZjY5ZjNlNWMyMjgzODRmZWZlNDY1NzdjOC4uYjNjMjcyMDIyODA2Yjgx
MTQzNTdkODFkZTlmM2I1ZmMxMDM1NGQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKQEAgLTQxMSw3ICs0MTEsNyBAQCBTeW1ib2xUYWJsZSogSlNTY29wZTo6
c3ltYm9sVGFibGUoVk0mIHZtKQogCiBKU1ZhbHVlIEpTU2NvcGU6OnRvVGhpcyhKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKLSAgICBp
ZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+
Z2xvYmFsVGhpcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCmluZGV4IGFhZWU4ZWU3YTc3ZWVhNmRlZmM3NTdhODdkMjNiM2VjYmE4NmYyMWYuLjBmMjA3
YTNiNjg2YWVhN2I1N2Q0OTVjZDcwMjlhZDhhODM4NmRiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBKU09iamVjdCog
SlNTdHJpbmc6OnRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAK
IEpTVmFsdWUgSlNTdHJpbmc6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIGlmIChlY21hTW9kZSA9PSBT
dHJpY3RNb2RlKQorICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICByZXR1cm4g
Y2VsbDsKICAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgp
LCBnbG9iYWxPYmplY3QsIGFzU3RyaW5nKGNlbGwpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggNjk3NmY3MDVkMzQwNGUzN2Ey
MWQ4OTJiMTIzY2JjMzgwNDIzNmQ1Yi4uNTM1MjM3MThkYzliOWQyMjEyYjhiODIxMTc2MzY4ZjQ4
NDIxODJhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBh
cnNlci5jcHAKQEAgLTkzMyw3ICs5MzMsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5
cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3Rv
X18gcHJvcGVydHkiX3M7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sgPyBtX251bGxPckNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkgOiBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sgPyBtX251bGxPckNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgOiBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdFN0YWNrLmxhc3QoKS5wdXQobV9nbG9iYWxPYmplY3QsIGlkZW50
LCBsYXN0VmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS5oCmluZGV4IDQ2NTQ2MjAwNGYzN2UyMDEyZDcyMTY4YzYyMDllNTA1MTdj
MTIwNTUuLjA5OWQ4OTlhZDVlNjNhNzQzMzU4ZTJhYmIyMGFiMzRmNTliOTYwZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAK
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZl
ZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4
ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUlu
Zm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFy
c2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFy
c2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2Us
IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggMTBmODg3
MjVhYzAwMmQyNTNhOWM4NjM3MWQ0NTM5ODUwZGZjYWEyOS4uNDE0Y2I4Y2VmZGZmODMwZjU3YmZm
ZDgyNjk0NDUwYTJmMzkzODk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIE51bGxTZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAi
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKE51bGxTZXR0ZXJGdW5jdGlvbikgfTsKIAogCisjaWYgQVNTRVJUX0VOQUJMRUQKKwog
Y2xhc3MgR2V0Q2FsbGVyU3RyaWN0bmVzc0Z1bmN0b3IgewogcHVibGljOgogICAgIEdldENhbGxl
clN0cmljdG5lc3NGdW5jdG9yKCkKQEAgLTUyLDcgKzU0LDkgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKICAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxvY2soKTsKLSAgICAgICAgbV9jYWxsZXJJc1N0cmlj
dCA9IGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgICAgICAvLyBU
aGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoYXQgd2UgbWlnaHQgaGF2ZSBhbiBzdHJp
Y3Qgb3Bjb2RlIGluIGEgbm9uLXN0cmljdCBjb250ZXh0LCBidXQgdGhhdCdzCisgICAgICAgIC8v
IG9rIHNpbmNlIHdlIGFzc2VydCBiZWxvdyB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIG5ldmVy
IGJlIGNhbGxlZCBmcm9tIGFueSBraW5kIHN0cmljdCBjb250ZXh0LgorICAgICAgICBtX2NhbGxl
cklzU3RyaWN0ID0gY29kZUJsb2NrICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlz
SW5TdHJpY3RDb250ZXh0KCk7CiAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAg
ICAgfQogCkBAIC03MCwxNCArNzQsMTYgQEAgc3RhdGljIGJvb2wgY2FsbGVySXNTdHJpY3QoVk0m
IHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICByZXR1cm4gaXRlci5jYWxsZXJJc1N0cmlj
dCgpOwogfQogCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKKwogbmFtZXNwYWNlIE51bGxTZXR0
ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxSZXR1cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChjYWxsZXJJ
c1N0cmljdCh2bSwgY2FsbEZyYW1lKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGluZyBhIHByb3BlcnR5IHRo
YXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3MpKTsKKyNpZiAhQVNTRVJUX0VOQUJMRUQKKyAgICBVTlVT
RURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyNl
bmRpZgorICAgIEFTU0VSVCghY2FsbGVySXNTdHJpY3QoZ2xvYmFsT2JqZWN0LT52bSgpLCBjYWxs
RnJhbWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHAKaW5kZXggY2JjNzlhMzAwOGMxMzJiNmQzNjlkZTcyZjVjZDYyNmI4MDVhMzliZC4uNDFjZThh
YWYxZGIyY2Q3MDcwZTE1YjZhNmQzMWI3NTQxNzUyYzg1YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC04MSw3ICs4MSw3IEBA
IE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgSlNPYmplY3QqIHZhbHVlT2JqID0gdGhpc1ZhbHVl
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZU9iaikpCiAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtOTQsNyArOTQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0
TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwpAQCAtMTI2LDcgKzEyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jSXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKCFj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSB0
aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEh
c2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09i
aikpCkBAIC0xNTAsNyArMTUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKQEAgLTE3OCw3
ICsxNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0Rl
ZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNW
YWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpA
QCAtMjM2LDcgKzIzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jTG9va3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0
eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUoSlNHbG9iYWxP
YmplY3QqCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRv
UHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVj
dChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yOTAsNyArMjkwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAvLyAyLiBJbnZva2UoViwgInRvU3RyaW5nIikK
IAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBwYXNzaW5n
IHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KLSAgICBKU09iamVjdCogb2JqZWN0ID0g
dGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyBM
ZXQgdG9TdHJpbmcgYmUgdGhlIE8uW1tHZXRdXSgidG9TdHJpbmciLCBWKQpAQCAtMzE1LDcgKzMx
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAg
ICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFsbFN0cmluZ3MudW5k
ZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9iamVjdFN0cmluZygp
KTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwCmluZGV4IGE4ZjBiNWY4OTk0MmIzN2RhZTllN2EzMDI5MmQ0MThmYjg3ZTg5
MzMuLjJiMzJmNWEwNGEyMDEyMzZhOTdiYmFlZGM0MzQ2MmNkMjg4ZTMzOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAg
LTgyLDcgKzgyLDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xv
YmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIEFTU0VSVCgmZ2xvYmFs
T2JqZWN0LT52bSgpID09ICZ2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1Bh
cnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJp
Y3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKKyAgICBKU1Bh
cnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNl
clN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAg
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2Jh
bE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwogICAgIFVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bS5jb2RlQ2FjaGUoKS0+Z2V0VW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlKCksIHN0cmljdE1v
ZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIEpTT2Jq
ZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQtPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgZW50cnkua2V5Lmdl
dCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0
cik7CiAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9iYWxDb25zdFJlZGVjbGFy
YXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmljdE1vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9iYWxDb25zdFJl
ZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc0luU3RyaWN0Q29udGV4dCgpKSkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGFsbG93ICJjb25zdCIgZHVwbGljYXRlIGRlY2xh
cmF0aW9ucyB1bmRlciB0aGlzIHNldHRpbmcuCiAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBl
eGFtcGxlLCB3ZSBkb24ndCAibGV0IiB2YXJpYWJsZXMgdG8gYmUgb3ZlcnJpZGRlbiBieSAiY29u
c3QiIHZhcmlhYmxlcy4KICAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbExleGljYWxFbnZp
cm9ubWVudC0+aXNDb25zdFZhcmlhYmxlKGVudHJ5LmtleS5nZXQoKSkpCkBAIC0xODUsNyArMTg1
LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVy
dGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9s
VGFibGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAgICAg
IGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsRGVjbGFyYXRpb25zKSB7Ci0gICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9iYWxDb25zdFJlZGVj
bGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmljdE1vZGUoKSkpIHsKKyAgICAgICAgICAg
IGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmdsb2JhbENvbnN0UmVk
ZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzSW5TdHJpY3RDb250ZXh0KCkpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5jb250YWlucyhsb2NrZXIsIGVudHJ5LmtleS5n
ZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKaW5k
ZXggMjljYTAxMzIwNTYxYjE0NmE2MjljNmZiNWZhMTg4ZmY1OGMzZGIxZi4uYjg3MTVhYTcyYmJj
YjczMzlkNmUzNDEzYWM1OWM3NDQxMTdiODJhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFy
c2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxD
b250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVk
Q29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBU
ZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCmluZGV4IGIwN2UwYTAy
OTMzMjgyNjEwMzZmNDExMDZlZWVlOWU1ZjkwYzY2NjAuLjZkMTFiNDFiYTQwNjE4MTU1MjJkYWIz
ZWJmZTMxYzc3NmU3ZWU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
YwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRh
cmdldCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpTdHJpY3RNb2RlKSk7CisgICAgYXJndW1lbnRzLmFw
cGVuZChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIEFTU0VS
VCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGFwcGx5TWV0aG9kLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAppbmRleCAxMDZjZjI1ZjYzMWYw
NDFiOWJjNjMxOTQwMGY0NjY3YjA3YjM5Y2ZjLi4wZGQ0NGVjYjg0MzcxZDQ3NzM0NjBjZDRjMGFh
ZTU1ZmUzY2QyMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y3JpcHRFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5oCkBAIC02MCwxMiArNjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgdXNl
c0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1cmU7IH0KICAgICBi
b29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgQXJndW1lbnRz
RmVhdHVyZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAgICAgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFsQ29udGV4dFR5cGUpOyB9CisgICAgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RNb2RlRmVh
dHVyZTsgfQogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBpc1N0cmlj
dE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9Ci0gICAgICAgIAogICAgIHZv
aWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5lID0gdmFsdWU7IH0K
ICAgICB2b2lkIHNldE5ldmVyT3B0aW1pemUoYm9vbCB2YWx1ZSkgeyBtX25ldmVyT3B0aW1pemUg
PSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0TmV2ZXJGVExPcHRpbWl6ZShib29sIHZhbHVlKSB7IG1f
bmV2ZXJGVExPcHRpbWl6ZSA9IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCmluZGV4IDg1YzFjZjM0MzM4MTg0
Nzg4Mzg4NDU2ZWIzNmFlYTJmZmI2MzQxZmEuLjNmZDYwMDZlMWU4NDVmYWVlZDI2ZDBlNzI4M2M1
M2Y2YzEwZjMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nw
YXJzZUFycmF5VmFsdWVNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgYm9vbCBTcGFyc2VB
cnJheUVudHJ5OjpwdXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlz
VmFsdWUsIFNwYXIKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBCYXNl
OjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cgPyBFQ01BTW9kZTo6
c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0KIAogSlNWYWx1ZSBTcGFyc2VBcnJh
eUVudHJ5OjpnZXROb25TcGFyc2VNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxYmI1Y2RmZmE3NmE3N2RlMjI0
M2NiNjIxYzIyNDViYjhlMDUxMmRjLi41NGQxYzlkMjZlMGU5NDUwMjdkYWU0NjFkN2EwYTBjODdj
ZTQ4M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCkBAIC02MjYsNyArNjI2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZUJvZHkoSlMKIAog
dGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46
OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2Fs
bEZyYW1lKQogewotICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwg
Tm90U3RyaWN0TW9kZSkpOworICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxleGljYWxHbG9iYWxP
YmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKaW5kZXggMDkyODUx
NzYzY2EwZDFhY2ExYmM3MzQ2NTM1MGI2ZTJjMGVlZTUwNi4uMzc2OGJmMjkxYzU5ZGFlODk5ZGIw
ZjE1MGExYjBjYTA4YzdkYzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldEN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRUYXJnZXRDdXN0b20uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIGF1dG8g
dGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCku
dG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6Ok5vdFN0cmljdE1vZGUpKTsKKyAgICAg
ICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIGNhbGxGcmFtZS50aGlz
VmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnNsb3Bw
eSgpKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
ICJFdmVudFRhcmdldCIsIG9wZXJhdGlvbk5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGRiOWFjMWJjN2FlMThh
NGRkZjBkYjU4YjM5OWE0YmU0MGY2YmEyNWQuLjc3MzEwNjNmZmY2YjAzZmY5OWE2YzM3MTlmNjBh
ZmFlMjVkMWQ0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC00NTkxLDcgKzQ1OTEsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoZGVjb2RlZFRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKVxuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWUo
JmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3Ry
aWN0TW9kZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBk
ZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCkudG9UaGlzKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlvbih2bSwgZGVj
b2RlZFRoaXNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2MDcsNyArNDYwNyw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgIyBGSVhNRTogTWFrZSBjb25zaXN0ZW50IElETEF0
dHJpYnV0ZTw+OjpjYXN0IGFuZCBJRExPcGVyYXRpb248Pjo6Y2FzdCBpbiBjYXNlIG9mIEN1c3Rv
bVByb3h5VG9KU09iamVjdC4KICAgICAgICAgbXkgJGNhc3RpbmdGdW5jdGlvbiA9ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAidG8ke2Ns
YXNzTmFtZX0iIDogR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSk7Ci0g
ICAgICAgIG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
dXN0b21Qcm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxl
eGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpIiA6ICJjYWxsRnJhbWUudGhpc1ZhbHVl
KCkiOworICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9U
aGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpIiA6ICJjYWxsRnJh
bWUudGhpc1ZhbHVlKCkiOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4g
aW5saW5lICR7Y2xhc3NOYW1lfSogSURMT3BlcmF0aW9uPCR7Y2xhc3NOYW1lfT46OmNhc3QoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCAkdGhpc1ZhbHVlKTtcbiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1NjYxYTAzYTAxYjFm
N2EyNDM0NzM2NjQzMDIxZTgwYWU5MWYzNjcuLjhhYmNhM2RlY2JlMDQyYWVkN2VjYWVlYjRhODRl
NmMyMGU3MzNmODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNC0wNyAgVGFkZXUgWmFn
YWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBOb3QgdXNpbmcgc3RyaWN0IG1v
ZGUgd2l0aGluIENsYXNzRGVjbGFyYXRpb24gc3RhdGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU4MTk0NTg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAg
ICAgICAgRml4IHRoZSB0ZXN0IHNpbmNlIGl0IGNvbnRhaW5lZCBpbmNvcnJlY3QgY29kZS4KKwor
ICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLmpzOgorCiAy
MDIwLTA0LTA2ICBKYWNvYiBVcGhvZmYgIDxqYWNvYl91cGhvZmZAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgbWFjT1MgXSBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWstaW4tY29uc3RydWN0b3ItYmVm
b3JlLXN1cGVyLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CmluZGV4IDdmMTQ5MjRm
M2QzYWQ3NjlkOTk4MWI0NWNhYjQ2ZWVlZjk3NmQ3NWMuLjg4OGNkMmQyMjUyYThmMzljYzNmMmVl
MzAxNzQ2YjkwNThiY2E5YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRh
eC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5
bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CkBAIC01Niw5ICs1Niw5IEBAIFBBU1MgQSA9
IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28nLCAyMTUpOyAobmV3IEEpWydmb28n
XSgpIGlzIDIxNQogUEFTUyBBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2Zvbycs
IDIxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnYmFyJywgMjE3KTsgWyhu
ZXcgQSlbJ2ZvbyddKCksIChuZXcgQilbJ2JhciddKCldIGlzIFsyMTYsIDIxN10KIFBBU1MgeCA9
IDIxODsgY2xhc3MgQSB7IFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpWzIxOF0oKSBp
cyAyMTkKIFBBU1MgeCA9IHVuZGVmaW5lZDsgY2xhc3MgQSB7IFsoeD0yMjApICYmICdmb28nXSgp
IHsgcmV0dXJuIHg7IH0gfTsgKG5ldyBBKS5mb28oKSBpcyAyMjAKLVBBU1MgeCA9IDIyMTsgY2xh
c3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYgeCsrXSgp
IHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCldIGlzIFsy
MjEsIDIyMl0KK1BBU1MgdmFyIHggPSAyMjEsIHgxLCB4MjsgY2xhc3MgQSB7IFsoeDE9eCkgJiYg
eCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07
IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCldIGlzIFsyMjEsIDIyMl0KIFBBU1MgeCA9
IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjIzOyB9IFsnZm9vJyArIHgr
K10oKSB7IHJldHVybiAyMjQ7IH0gfTsgWyhuZXcgQSkuZm9vMSgpLCAobmV3IEEpLmZvbzIoKV0g
aXMgWzIyMywgMjI0XQotUEFTUyB4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJl
dHVybiAyMjU7IH0gWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsg
W3gxLCB4LCAobmV3IEEpLmZvbzIoKV0gaXMgWzIsIDMsIDIyNl0KK1BBU1MgdmFyIHggPSAxLCB4
MTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAn
Zm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0g
aXMgWzIsIDMsIDIyNl0KIAogU3RhdGljIG1ldGhvZHMgd2l0aCBjb21wdXRlZCBuYW1lcwogUEFT
UyBjbGFzcyBBIHsgc3RhdGljIFsnYScgKyAnYiddKCkgeyByZXR1cm4gMzExOyB9IH07IEEuYWIo
KSBpcyAzMTEKQEAgLTY5LDkgKzY5LDkgQEAgUEFTUyBBID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGlj
TWV0aG9kKCdmb28nLCAzMTUpOyBBWydmb28nXSgpIGlzIDMxNQogUEFTUyBBID0gY3JlYXRlQ2xh
c3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTYpOyBCID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGlj
TWV0aG9kKCdiYXInLCAzMTcpOyBbQVsnZm9vJ10oKSwgQlsnYmFyJ10oKV0gaXMgWzMxNiwgMzE3
XQogUEFTUyB4ID0gMjE4OyBjbGFzcyBBIHsgc3RhdGljIFt4KytdKCkgeyByZXR1cm4geDsgfSB9
OyBBWzIxOF0oKSBpcyAyMTkKIFBBU1MgeCA9IHVuZGVmaW5lZDsgY2xhc3MgQSB7IHN0YXRpYyBb
KHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IEEuZm9vKCkgaXMgMjIwCi1QQVNT
IHggPSAyMjE7IGNsYXNzIEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkgeyByZXR1cm4geDE7
IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFtBWzIyMV0oKSwg
QVsyMjJdKCldIGlzIFsyMjEsIDIyMl0KK1BBU1MgdmFyIHggPSAyMjEsIHgxLCB4MjsgY2xhc3Mg
QSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0aWMgWyh4Mj14
KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0oKV0gaXMgWzIy
MSwgMjIyXQogUEFTUyB4ID0gMTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2ZvbycgKyB4KytdKCkgeyBy
ZXR1cm4gMjIzOyB9IHN0YXRpYyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI0OyB9IH07IFtB
LmZvbzEoKSwgQS5mb28yKCldIGlzIFsyMjMsIDIyNF0KLVBBU1MgeCA9IDE7IGNsYXNzIEEgeyBz
dGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMgWyh4MT14KSAmJiAn
Zm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCBBLmZvbzIoKV0gaXMgWzIs
IDMsIDIyNl0KK1BBU1MgdmFyIHggPSAxLCB4MTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2ZvbycgKyAr
K3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgpICYmICdmb28nICsgeCsrXSgpIHsg
cmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSBpcyBbMiwgMywgMjI2XQogCiBJbnN0
YW5jZSBtZXRob2RzIHdpdGggZHVwbGljYXRlZCBuYW1lcwogUEFTUyBjbGFzcyBBIHsgYWIoKSB7
IHJldHVybiA0MDEgfSBhYigpIHsgcmV0dXJuIDQwMjsgfSB9OyAobmV3IEEpLmFiKCkgaXMgNDAy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LW1l
dGhvZC1uYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgt
bWV0aG9kLW5hbWVzLmpzCmluZGV4IDE0MmJiMDViM2I0MDlkOTAxMmFhNDlhZDQyNTIzZGU5NzE1
M2M2YTYuLjFiYmU5MDM1ODZlODU0NzIyNGRkM2JiY2Y0YTkwZWY4MjQ0M2I5MDYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVz
LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9k
LW5hbWVzLmpzCkBAIC01Nyw5ICs1Nyw5IEBAIHNob3VsZEJlKCJBID0gY3JlYXRlQ2xhc3NXaXRo
SW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNSk7IChuZXcgQSlbJ2ZvbyddKCkiLCAiMjE1CiBzaG91
bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28nLCAyMTYpOyBCID0g
Y3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2JhcicsIDIxNyk7IFsobmV3IEEpWydmb28n
XSgpLCAobmV3IEIpWydiYXInXSgpXSIsICJbMjE2LCAyMTddIik7CiBzaG91bGRCZSgieCA9IDIx
ODsgY2xhc3MgQSB7IFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpWzIxOF0oKSIsICIy
MTkiKTsKIHNob3VsZEJlKCJ4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgWyh4PTIyMCkgJiYgJ2Zv
byddKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpLmZvbygpIiwgIjIyMCIpOwotc2hvdWxkQmUo
InggPSAyMjE7IGNsYXNzIEEgeyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBbKHgy
PXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbKG5ldyBBKVsyMjFdKCksIChuZXcgQSlb
MjIyXSgpXSIsICJbMjIxLCAyMjJdIik7CitzaG91bGRCZSgidmFyIHggPSAyMjEsIHgxLCB4Mjsg
Y2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYgeCsr
XSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCldIiwg
IlsyMjEsIDIyMl0iKTsKIHNob3VsZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyArIHgrK10o
KSB7IHJldHVybiAyMjM7IH0gWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNDsgfSB9OyBbKG5l
dyBBKS5mb28xKCksIChuZXcgQSkuZm9vMigpXSIsICJbMjIzLCAyMjRdIik7Ci1zaG91bGRCZSgi
eCA9IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IFsoeDE9eCkg
JiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgKG5ldyBBKS5mb28y
KCldIiwgIlsyLCAzLCAyMjZdIik7CitzaG91bGRCZSgidmFyIHggPSAxLCB4MTsgY2xhc3MgQSB7
IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAnZm9vJyArIHgrK10o
KSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0iLCAiWzIsIDMsIDIy
Nl0iKTsKIAogZGVidWcoJycpOwogZGVidWcoJ1N0YXRpYyBtZXRob2RzIHdpdGggY29tcHV0ZWQg
bmFtZXMnKTsKQEAgLTcyLDkgKzcyLDkgQEAgc2hvdWxkQmUoIkEgPSBjcmVhdGVDbGFzc1dpdGhT
dGF0aWNNZXRob2QoJ2ZvbycsIDMxNSk7IEFbJ2ZvbyddKCkiLCAiMzE1Iik7CiBzaG91bGRCZSgi
QSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE2KTsgQiA9IGNyZWF0ZUNs
YXNzV2l0aFN0YXRpY01ldGhvZCgnYmFyJywgMzE3KTsgW0FbJ2ZvbyddKCksIEJbJ2JhciddKCld
IiwgIlszMTYsIDMxN10iKTsKIHNob3VsZEJlKCJ4ID0gMjE4OyBjbGFzcyBBIHsgc3RhdGljIFt4
KytdKCkgeyByZXR1cm4geDsgfSB9OyBBWzIxOF0oKSIsICIyMTkiKTsKIHNob3VsZEJlKCJ4ID0g
dW5kZWZpbmVkOyBjbGFzcyBBIHsgc3RhdGljIFsoeD0yMjApICYmICdmb28nXSgpIHsgcmV0dXJu
IHg7IH0gfTsgQS5mb28oKSIsICIyMjAiKTsKLXNob3VsZEJlKCJ4ID0gMjIxOyBjbGFzcyBBIHsg
c3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRpYyBbKHgyPXgpICYm
IHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgpXSIsICJbMjIxLCAy
MjJdIik7CitzaG91bGRCZSgidmFyIHggPSAyMjEsIHgxLCB4MjsgY2xhc3MgQSB7IHN0YXRpYyBb
KHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0aWMgWyh4Mj14KSAmJiB4KytdKCkg
eyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0oKV0iLCAiWzIyMSwgMjIyXSIpOwog
c2hvdWxkQmUoInggPSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVy
biAyMjM7IH0gc3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7IH0gfTsgW0EuZm9v
MSgpLCBBLmZvbzIoKV0iLCAiWzIyMywgMjI0XSIpOwotc2hvdWxkQmUoInggPSAxOyBjbGFzcyBB
IHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3RhdGljIFsoeDE9eCkg
JiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwgQS5mb28yKCldIiwg
IlsyLCAzLCAyMjZdIik7CitzaG91bGRCZSgidmFyIHggPSAxLCB4MTsgY2xhc3MgQSB7IHN0YXRp
YyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgpICYmICdmb28n
ICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSIsICJbMiwgMywg
MjI2XSIpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnSW5zdGFuY2UgbWV0aG9kcyB3aXRoIGR1cGxp
Y2F0ZWQgbmFtZXMnKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNTIzOWU4OTZjMmRkOGU1ZGI1NzA4MzdkMzY2MWEyOThhMDc4ZDZhZS4u
YTdiYTU5YWVlNmUxZjlmZGUxZWVkZWU3ODFhY2M3YzcwOTAyYjhjZSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMC0wNC0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAg
ICBOb3QgdXNpbmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVjbGFyYXRpb24gc3RhdGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1NzgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBzdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9u
LXN0cmljdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAoZi50cnkuYyk6CisgICAgICAgIChmKToK
KwogMjAyMC0wNC0wNiAgUmljayBXYWxkcm9uICA8d2FsZHJvbi5yaWNrQGdtYWlsLmNvbT4gYW5k
IEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92
ZSB1bm5lY2Vzc2FyeSBUZXN0MjYyIGhhcm5lc3MgZmlsZSBhbmQgaW1wbGVtZW50ICQyNjIuSXNI
VE1MRERBCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24t
c3RyaWN0bmVzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhwcmVzc2lvbi1zdHJp
Y3RuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3ZWE2ODQ3OWM5NzNmM2M2MjBhY2ZiZjFmMDE5YWJlZGE5
MmEyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdXBlcmNsYXNzLWV4cHJl
c3Npb24tc3RyaWN0bmVzcy5qcwpAQCAtMCwwICsxLDU5IEBACitmdW5jdGlvbiBmKCkgeworICAg
IHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3Mg
YyBleHRlbmRzKGQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ge307Cisg
ICAgICAgICAgICB9LCBkKSB7fQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBl
cnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3Nh
Z2UgIT0gIkNhbid0IGZpbmQgdmFyaWFibGU6IGQiKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJUZXN0IHNob3VsZCBoYXZlIHRocm93biBhIHJlZmVyZW5jZSBlcnJvciIpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB2YXIgb2JqID0ge307CisgICAg
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICd4JywgeyBjb25maWd1cmFibGU6IGZhbHNl
LCB2YWx1ZTogMSB9KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsYXNzIGMgZXh0ZW5k
cyhkZWxldGUgb2JqLngsICgpPT57fSkge30KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJv
ci5tZXNzYWdlICE9ICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgdHlwZSBlcnJvciIpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB2YXIgb2JqID0ge307
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICd4JywgeyBjb25maWd1cmFibGU6
IGZhbHNlLCB2YWx1ZTogMSB9KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsYXNzIGMg
ZXh0ZW5kcyhldmFsKCdkZWxldGUgb2JqLngnKSwgY2xhc3N7fSkge30KKyAgICAgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEg
dHlwZSBlcnJvciIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIG8gPSB7fTsKKyAgICAg
ICAgby5fX2RlZmluZUdldHRlcl9fKCJ4IiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gNDI7IH0pOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3MgYyBleHRlbmRzIChvLnggPSAxMywgY2xh
c3MgeyB9KSB7IH0KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJB
dHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgdHlwZSBlcnJvciIpOwor
ICAgIH0KK30KKworIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICBmKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395727</attachid>
            <date>2020-04-07 12:53:22 -0700</date>
            <delta_ts>2020-04-07 14:54:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205578-20200407125321.patch</filename>
            <type>text/plain</type>
            <size>261298</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YjI0ZTMzNmQ0ZDBkZjRiY2QzYTI3NWI1Y2MzYTI0OTZkM2IwNzlhLi45NjI0NGI4YjkxMGIyN2E1
NTFkMGQxYjE0ZTUzYjMzZWE3OTA2YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODUgQEAKKzIwMjAtMDQtMDcgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFdlIGNvcnJlY3RseSBzZXQg
c3RyaWN0IG1vZGUgd2hlbiBwYXJzaW5nIGNsYXNzZXMsIGJ1dCB3ZSBkaWQgbm90IHNldCBpdCB3
aGVuIGVtaXR0aW5nIGJ5dGVjb2RlLgorICAgICAgICBIb3dldmVyLCB0aGF0IG1lYW5zIHRoYXQg
d2UgY2FuIG5vdyBoYXZlIGEgc3Vic2V0IG9mIGEgY29kZSBibG9jaydzIGJ5dGVjb2RlIHRoYXQg
bXVzdCBiZSBydW4gaW4KKyAgICAgICAgc3RyaWN0IG1vZGUsIGV2ZW4gd2hlbiB0aGUgY29kZSBi
bG9jayBpdHNlbGYgaXMgbm90IHN0cmljdC4gQXMgaXQgdHVybnMgb3V0LCB0aGVyZSBhcmUgb25s
eSB0ZW4KKyAgICAgICAgb3Bjb2RlcyB0aGF0IG5lZWQgdG8gYmUgYXdhcmUgb2Ygc3RyaWN0bmVz
cywgc28gYW4gZXh0cmEgYG1vZGVgIG9wZXJhbmQgd2FzIGFkZGVkIHRvIHRoZXNlIG9wY29kZXMu
CisgICAgICAgIFRoZSBtb2RlIHRoZW4gbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0aHJvdWdoIGJh
c2VsaW5lLCBERkcgYW5kIEZUTC4KKworICAgICAgICAqIEFQSS9BUElDYWxsYmFja0Z1bmN0aW9u
Lmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwpOgorICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Y2FsbCk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6
CisgICAgICAgIChKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QpOgorICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlw
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omlz
Q29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25DZWxs
KToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6dXNlc0V2YWwgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVD
YWxsRnJhbWU6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGlu
ZUNhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmlzSW5TdHJpY3RD
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwOgorICAg
ICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuaDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpQdXRCeUlkRmxhZ3M6OmNyZWF0ZURpcmVjdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRGbGFn
czo6aXNEaXJlY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmVjbWFNb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpQdXRCeUlkRmxhZ3MpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENv
ZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQ29uc3RydWN0b3IgY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBj
b25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnJvbVNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
ZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
Y21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVTY29wZTo6U3RyaWN0TW9k
ZVNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAg
ICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkVtcHR5TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5O
b2RlOjplbWl0TG9vcEhlYWRlcik6CisgICAgICAgIChKU0M6OkZvck9mTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ05vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFz
c2lnbm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBkZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
Ojp0aGlzVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZh
bHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZvcik6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFQ01BTW9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5n
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
Q2VsbFdpdGhTeW1ib2wpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxl
dGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0
ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1p
Y1Zhcik6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0
b3JOYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlI
ZWxwZXJzLmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlv
bik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAq
IGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RK
U0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlRGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAo
SlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90
b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3Rv
RnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgor
ICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAgICAgICAqIHJ1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRz
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Om1h
dGVyaWFsaXplU3BlY2lhbHMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAg
IChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToK
KyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQU1vZGUuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcC4K
KyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
RUNNQU1vZGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRGbGFncy5oLgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6ZnJvbUJ5dGUpOgorICAgICAg
ICAoSlNDOjpFQ01BTW9kZTo6c3RyaWN0KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OnNsb3Bw
eSk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjppc1N0cmljdCBjb25zdCk6CisgICAgICAgIChK
U0M6OkVDTUFNb2RlOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpFQ01B
TW9kZSk6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlND
OjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZXRQdXRJbmZvLmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0UHV0SW5mbzo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9HZXRQdXRJbmZvLmg6CisgICAgICAgIChKU0M6OkdldFB1dEluZm86OkdldFB1dEluZm8p
OgorICAgICAgICAoSlNDOjpHZXRQdXRJbmZvOjplY21hTW9kZSBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAg
ICAgICAgKiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFs
dWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpzZWxlY3RTdHJ1Y3R1cmVGb3JOZXdGdW5jRXhwKToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y0V2YWwpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpOgorICAgICAgICAo
SlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAgICAgICogcnVu
dGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9UaGlzKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhp
cyk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpHZXRDYWxsZXJTdHJpY3RuZXNzRnVuY3Rvcjo6b3BlcmF0
b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6Ok51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdFBy
b3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q2FsbCk6CisgICAgICAgICog
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OmlzQXJyb3dGdW5jdGlvbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRF
eGVjdXRhYmxlOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6
cHV0KToKKwogMjAyMC0wNC0wNiAgUmljayBXYWxkcm9uICA8d2FsZHJvbi5yaWNrQGdtYWlsLmNv
bT4gYW5kIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBUZXN0MjYyIGhhcm5lc3MgZmlsZSBhbmQgaW1wbGVtZW50ICQy
NjIuSXNIVE1MRERBCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMxMDc1NWJiN2JlOGNiYjRmMjUzNDI1MzUyMGFj
MjIyODBkZmExZi4uODZhZWZkODYxZjU4OGU2YmE5YjYxMTk3Mjk5OGEzYmRlMWM5OTBiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA0LTA3ICBUYWRldSBaYWdhbGxvICA8dHph
Z2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIE5vdCB1c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4g
Q2xhc3NEZWNsYXJhdGlvbiBzdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTU3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1
ODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUZXN0
OiBKU1Rlc3RzLyBzdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3QpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJh
dGlvbjxKU0V2ZW50VGFyZ2V0Pjo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwog
MjAyMC0wNC0wNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
J2N1cnJlbnRjb2xvcicgZG9lc24ndCBuZWVkIHNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9w
ZXJ0aWVzIG1hcmtpbmcgYW55bW9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SUNhbGxiYWNrRnVuY3Rpb24uaAppbmRleCBjOTkxMDUzYTE5MTlmOGUxYmE0ZWE5OGI3N2Q4ZTFh
OWQxYjdkZGU4Li5kNTY1YjQxMjg5ZTdmNjg2MWY4ZjlmOWI3ZWFkYjA5MTY5NmVhNDYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaApAQCAt
NDgsNyArNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVu
Y3Rpb246OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVm
KGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihq
c0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVm
KGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogCiAgICAgaW50IGFyZ3VtZW50Q291bnQgPSBz
dGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBWZWN0b3I8
SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggMDJjZWRjNzk2NmJlYzBh
NTNhOWJjMDJhOWYzNzgzZTc5ZjczMmUyZi4uMDNhMThkYzkwMzZiNjY3ODQxOTJlZjUwYzkyMDQ1
ZWQzNTM4YjY3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUyMyw3ICs1MjMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbAogCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9iYWxPYmpl
Y3QpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2Jq
ZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJp
Y3RNb2RlKSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNP
YmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzbG9wcHkoKSkpKTsKICAgICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGpz
Q2FzdDxKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qPih0b0pTKGZ1bmN0aW9uUmVmKSktPmNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0ganND
bGFzcy0+Y2FsbEFzRnVuY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UmVmLmNwcAppbmRleCAyMjJhNGVlMjBkY2JhZGIwN2I3YmM2NTRkY2Y4YWE4MGNmMmMxMmJl
Li4yNDAxNzkxNmU3NTE3NmI4M2UzNWQ5ZWQwMjg4MjgzMjUyMTZjNzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgSlNP
YmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0p
OwogCi0gICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGdsb2JhbE9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIE5vdFN0cmlj
dE1vZGUpKSk7CisgICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGdsb2JhbE9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzbG9wcHkoKSkpKTsKIH0KIAogSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0
R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBiNTdhMDI3NmIzYjNkOTU1YjJiZmEyNTljYTRhM2I3ZWEwOTE1MGEzLi45OTBhZTk5MDg2
ZGU5MGM2ZDE3NWRkYWFmNWI2ZWM1NmIxNTQ4MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC04MjIsNiArODIyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaAogICAgIHJ1bnRp
bWUvRGlzYWxsb3dWTVJlZW50cnkuaAogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuaAorICAgIHJ1
bnRpbWUvRUNNQU1vZGUuaAogICAgIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaAogICAg
IHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKICAgICBydW50aW1lL0Vycm9yLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDY1Mzk1YWQwZmZiYmM5ZmE0YzlkMGY1Mzk4MjcwM2Mx
OWRmOTg1MC4uODNlNDg2Mjc0MDQyYjk0MzJmY2EwNTUwNWRhNjYxOWNiYWRmZTMzZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5OCw2ICs3OTgsNyBAQAogCQkxNDUwRkExQzIz
NTdCREJFMDA5M0NENEQgLyogV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEM1QUQ2QjIyRjMzRkMwMDBGMUZCODMg
LyogV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ1MEZBMUYyMzU3QkVDOTAwOTNDRDREIC8qIFdhc21MTElu
dFRpZXJVcENvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0NTBGQTFFMjM1N0JFQzQwMDkzQ0Q0RCAvKiBXYXNtTExJbnRUaWVyVXBDb3VudGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ1
NzIyODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NTcyMjg1MTQzN0UxNDAwMDVGREUyNiAv
KiBTdHJvbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMTQ1RkYyQzgyNDNCQjlENjAwNTY5RTcxIC8qIEVDTUFNb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDVGRjJDNzI0M0JCOTlB
MDA1NjlFNzEgLyogRUNNQU1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxNDZDMzg0QjIxNzdBQ0RGMDA3OUY2RDkgLyogVW5saW5rZWRNZXRh
ZGF0YVRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDJENTJCRTIxNzYyOTU4MDAyREIwODYgLyogVW5saW5rZWRNZXRhZGF0YVRhYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ3MTQ4MzAy
MEQzMjNEMzAwOTBFNjMwIC8qIEpTV3JhcHBlck1hcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3MTQ4MkYyMEQzMjM2NTAwOTBFNjMwIC8q
IEpTV3JhcHBlck1hcFRlc3RzLm1tICovOyB9OwogCQkxNDczNDFDQzFEQzAyRDcyMDBBQTI5QkEg
LyogRXhlY3V0YWJsZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NzM0MUNCMURDMDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMzM5LDYg
KzMzNDAsOCBAQAogCQkxNDUzNDg1NzIyOTE3MzdGMDBCMUMyRUIgLyogdGVzdGFwaS5lbnRpdGxl
bWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0aCA9IHRlc3RhcGku
ZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDU3MjI4NTE0MzdF
MTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJvbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
NDVGRjJDNjI0M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRUNNQU1vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDVGRjJDNzI0
M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQU1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ2QUFCMkEwQjY2QTg0OTAwRTU1RjE2IC8q
IEpTU3RyaW5nUmVmQ0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3Ry
aW5nUmVmQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ2QUFCMzcwQjY2QTk0
NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTU3RyaW5nUmVmQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNDZCMTREQjEyRUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc2VydmF0aXZlUm9vdHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzExNCw2ICs3MTE3LDggQEAKIAkJCQlF
M0ZDMjUxMTIyNTZFQ0Y0MDA1ODM1MTggLyogRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50Lmgg
Ki8sCiAJCQkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywK
IAkJCQlBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuaCAqLywKKwkJCQkx
NDVGRjJDNjI0M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuY3BwICovLAorCQkJCTE0NUZGMkM3
MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5oICovLAogCQkJCUZFMzE4RkREMUNBQzhDNTMw
MERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLywKIAkJCQlG
RTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9u
cy5oICovLAogCQkJCUZFMzRFRTIyMjQzOThCODUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZl
SGVyZS5jcHAgKi8sCkBAIC05NDI5LDYgKzk0MzQsNyBAQAogCQkJCUUzNUNBMTU0MURCQzNBNUMw
MEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTA3MDhB
MURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMTQ1RkYyQzgyNDNCQjlENjAwNTY5RTcxIC8qIEVDTUFNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5h
bEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkND
IC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzRFRTIx
MjQzOThBQUUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNzE2ZmU0NzlhZDQ5ZGViN2IyMWU4ZTYx
YTcwOGNmNTQ4Y2FkMDBlNy4uMDhmZjhmZTdiYjFjN2M0OWUxODcwOGUzZDU5MTFhOTEyNWQyMTZi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNzY1LDYgKzc2NSw3IEBAIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCiBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNw
cAogcnVudGltZS9Eb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0R1bXBD
b250ZXh0LmNwcAorcnVudGltZS9FQ01BTW9kZS5jcHAKIHJ1bnRpbWUvRUNNQVNjcmlwdFNwZWNJ
bnRlcm5hbEZ1bmN0aW9ucy5jcHAKIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwCiBy
dW50aW1lL0Vycm9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAKaW5kZXggZDM3MjM2ZjQwYWE4OTkxMjdjNzQ5ZWJkYjk4Njk2Yzc3
ODVkOGNiMy4uZDkxMDYyY2Y3YTM1NGYwNmEyYzYyZjQ0ZjQxODM0NDk1ZDY4MzE3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgotI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNs
dWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggOWYyYWJhMzlmMmNlNzA4ZDMxM2I4
ZDk0MGNmOTZmYmE0MmZjYzk0ZS4uZmRhYWE2OTQ1ZmYwZTlkNTE1MWFhYTg5YTdhOTkyMDdhYzFj
MjllZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICAgICAgICAgICAgICAgICAg
c2NvcGUsIC8vIHNjb3BlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllcklu
ZGV4LCAvLyBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQsIC8vIHZhbHVl
Ci0gICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExv
Y2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIC8v
IGluZm8KKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3Vu
ZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
LCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFNb2RlKCkpLCAvLyBpbmZvCiAgICAgICAgICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0
ZXIgeyBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB9KSwgLy8gc3ltYm9sIHRhYmxl
IGNvbnN0YW50IGluZGV4CiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQu
b2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAgICAgICAgICAgICAgICAgKTsKQEAgLTI2OSw3ICsy
NjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kLCAvLyBkc3QKICAgICAgICAgICAgICAgICAgICAgc2NvcGUsIC8v
IHNjb3BlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBp
ZGVudGlmaWVyCi0gICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbiksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93
SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uLCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFNb2RlKCkpLCAvLyBpbmZvCiAgICAg
ICAgICAgICAgICAgICAgIDAsIC8vIGxvY2FsIHNjb3BlIGRlcHRoCiAgICAgICAgICAgICAgICAg
ICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAgICAgICAg
ICAgICAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjZDc1NDY4MGMxMjZhMGY3Mjc1MzZmMWJlMzdjNGUuLjFm
NTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4ZjdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMjcsNiArMjcsNyBAQCB0
eXBlcyBbCiAgICAgOkJhc2ljQmxvY2tMb2NhdGlvbiwKICAgICA6Qm91bmRMYWJlbCwKICAgICA6
RGVidWdIb29rVHlwZSwKKyAgICA6RUNNQU1vZGUsCiAgICAgOkVycm9yVHlwZSwKICAgICA6R2V0
QnlJZE1vZGUsCiAgICAgOkdldEJ5SWRNb2RlTWV0YWRhdGEsCkBAIC0xNzQsNiArMTc1LDcgQEAg
b3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRvX3RoaXMsCiAgICAgYXJnczogewogICAgICAgICBz
cmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVy
ZUlELApAQCAtNTIyLDYgKzUyNCw3IEBAIG9wIDpwdXRfYnlfaWRfd2l0aF90aGlzLAogICAgICAg
ICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVk
LAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNN
QU1vZGUsCiAgICAgfQogCiBvcCA6ZGVsX2J5X2lkLApAQCAtNTI5LDYgKzUzMiw3IEBAIG9wIDpk
ZWxfYnlfaWQsCiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBiYXNlOiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKKyAgICAgICAgZWNt
YU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOmdldF9ieV92YWwsCkBAIC01NDgsNiArNTUy
LDcgQEAgb3AgOnB1dF9ieV92YWwsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAg
ICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCkBAIC01NTksNiArNTY0
LDcgQEAgb3AgOnB1dF9ieV92YWxfd2l0aF90aGlzLAogICAgICAgICB0aGlzVmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
dmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAg
IH0KIAogb3AgOnB1dF9ieV92YWxfZGlyZWN0LApAQCAtNTY2LDYgKzU3Miw3IEBAIG9wIDpwdXRf
YnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBw
cm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewog
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKQEAgLTU3Niw2ICs1ODMsNyBAQCBv
cCA6ZGVsX2J5X3ZhbCwKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJh
c2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOnB1dF9nZXR0ZXJfYnlf
aWQsCkBAIC03NzgsNiArNzg2LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICAgICAgY2FsbGVlOiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGFyZ2M6IHVuc2lnbmVkLAogICAgICAgICBhcmd2OiB1
bnNpZ25lZCwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYTFhZDM3NjY5YWYx
MjAwMzAyMzUxNTAyZTM0YzkwYzI0MTg4NGU3Ni4uNjBiNDBjZmRhN2IzZTY1YzdmN2FmYWQ3YjFi
MmYzMDA1NGMyODhmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5n
SklUVHlwZShQcmludFN0cmVhbSYgb3V0LCBKSVRUeXBlIGppdFR5cGUpIGNvbnN0CiAgICAgICAg
IG91dC5wcmludCgiIChOZXZlckZUTE9wdGltaXplKSIpOwogICAgIGlmIChvd25lckV4ZWN1dGFi
bGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKQogICAgICAgICBvdXQucHJpbnQoIiAoRGlkVHJ5
VG9FbnRlckluTG9vcCkiKTsKLSAgICBpZiAob3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9k
ZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKICAg
ICAgICAgb3V0LnByaW50KCIgKFN0cmljdE1vZGUpIik7CiAgICAgaWYgKG1fZGlkRmFpbEpJVENv
bXBpbGF0aW9uKQogICAgICAgICBvdXQucHJpbnQoIiAoSklURmFpbCkiKTsKQEAgLTYxOSw3ICs2
MTksNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgICAgICAgICBBU1NFUlQoIWlz
SW5pdGlhbGl6YXRpb24oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KSk7CiAgICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkg
PT0gTG9jYWxDbG9zdXJlVmFyKSB7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xv
c3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1
dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9k
ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApAQCAtNjI3LDkg
KzYyNyw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBSZXNvbHZlT3Ag
b3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVj
b2RlLm1fbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgYnl0ZWNvZGUubV9nZXRQ
dXRJbmZvLnJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1
dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBv
cC50eXBlLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIGlmIChvcC50eXBlID09
IE1vZHVsZVZhcikKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQ
dXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBi
eXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAg
ICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwg
b3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0Owog
ICAgICAgICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQpAQCAtNjYxLDcgKzY2MSw3IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3Bl
OjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fc3ltYm9s
VGFibGVPclNjb3BlRGVwdGguc2NvcGVEZXB0aCgpLCBzY29wZSwgaWRlbnQsIFB1dCwgYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKIAotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0
UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0
ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlv
bk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAg
aWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9
PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAg
ICAgZWxzZSBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyIHx8IG9wLnR5cGUgPT0gQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCBkM2IwNmE4OTFhZWZjNmM3OTRkNzVlMWMwZDAwNDZlMTkyMzhl
ODI2Li4yMDVlYzE2ZTI3ZjAwMmUxZmZkYzY4N2I0ZmYzMGUwOGMyZmU0YTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yMjIsOSArMjIyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkdW1wTWF0aElDU3RhdHMoKTsKIAotICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmlzU3RyaWN0TW9kZSgpOyB9
CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUt
PmlzQ29uc3RydWN0b3IoKTsgfQotICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1
cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsgfQogICAgIENv
ZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvZGVUeXBl
KCk7IH0KIAogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZENvZGUtPnNjcmlwdE1vZGUoKTsgfQpAQCAtMjMyLDExICsyMzAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzSW5zdGFsbGVkVk1UcmFwQnJlYWtwb2ludHMoKSBjb25zdDsK
ICAgICBib29sIGluc3RhbGxWTVRyYXBCcmVha3BvaW50cygpOwogCi0gICAgaW5saW5lIGJvb2wg
aXNLbm93bk5vdEltbWVkaWF0ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKQorICAgIGlubGluZSBib29s
IGlzS25vd25DZWxsKFZpcnR1YWxSZWdpc3RlciByZWcpCiAgICAgewotICAgICAgICBpZiAocmVn
ID09IHRoaXNSZWdpc3RlcigpICYmICFpc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotCisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBhZGRpbmcgYmFjayB0aGUgb3B0
aW1pemF0aW9uIHdoZXJlIHdlIHJldHVybiB0cnVlIGlmIGByZWdgIGlzIGB0aGlzYCBhbmQgd2Un
cmUgaW4gc2xvcHB5IG1vZGUuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTAxNDUKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnQocmVnKS5pc0NlbGwoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA3N2YxOTI5MDY5
MDgzMzZlYmQwMDhkY2YwYzM2ZjRhYzZlOWU3NWQ0Li40OWVkZDUyODVkNWMyYzI4YjFjOWE0YmNl
ZWY0NTE3MTk5MGJlOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZUluZm8uaApAQCAtMzYsOSArMzYsOCBAQCBlbnVtIGNsYXNzIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIC8vIEZJWE1FOiBUaGVzZSBm
bGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxk
IGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBKU1Bh
cnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIHVz
ZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2Rl
LCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRU
eXBlKQogICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCi0gICAgICAgICwgbV9pc1N0cmlj
dE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVj
dG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAg
ICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVj
dG9yS2luZCkpCkBAIC01Nyw3ICs1Niw2IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAg
fQogCiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9
CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGlu
RnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KQEAgLTcyLDcgKzcwLDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIAogcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9k
ZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6
IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJjMmM2Njlm
N2NhZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi4wZDk1NzA5MjZhYjE0NzM3OGVjMzE3MjgzOGRi
MjM1ODgyZGI3YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Rml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgc3RydWN0IEZpdHM7CiAKIC8vIEltcGxpY2l0IGNvbnZlcnNpb24gZm9yIHR5
cGVzIG9mIHRoZSBzYW1lIHNpemUKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIE9wY29kZVNpemUgc2l6
ZT4KLXN0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKFQpID09IHNp
emUsIHN0ZDo6dHJ1ZV90eXBlPj4geworc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVf
aWZfdDxzaXplb2YoVCkgPT0gc2l6ZSAmJiBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VD46OnZhbHVl
LCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlw
ZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwogCiAgICAgc3RhdGljIGJvb2wgY2hlY2soVCkg
eyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTc0LDE4ICsxNzQsMjAgQEAgc3RydWN0IEZpdHM8R2V0UHV0
SW5mbywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplICE9IE9wY29kZVNpemU6OldpZGUzMiwg
c3RkOjoKICAgICAvLyAxMyBSZXNvbHZlIFR5cGVzCiAgICAgLy8gMyBJbml0aWFsaXphdGlvbiBN
b2RlcwogICAgIC8vIDIgUmVzb2x2ZSBNb2RlcworICAgIC8vIDEgYml0IGlzU3RyaWN0IGZsYWcK
ICAgICAvLwogICAgIC8vIFRyeSB0byBlbmNvZGUgZW5jb2RlIGFzCiAgICAgLy8KLSAgICAvLyAg
ICAgICAgICAgaW5pdGlhbGl6YXRpb24gbW9kZQotICAgIC8vICAgICAgICAgICAgICAgICAgICB2
Ci0gICAgLy8gZnJlZSBiaXQtPiAwfDAwMDB8MDB8MAotICAgIC8vICAgICAgICAgICAgICAgICBe
ICAgIF4KLSAgICAvLyAgICByZXNvbHZlICB0eXBlICAgcmVzb2x2ZSBtb2RlCisgICAgLy8gICAg
ICAgICAgICBpbml0aWFsaXphdGlvbiBtb2RlCisgICAgLy8gICAgICAgICAgICAgICAgICAgICB2
CisgICAgLy8gaXNTdHJpY3QgLT4gMHwwMDAwfDAwfDAKKyAgICAvLyAgICAgICAgICAgICAgICAg
IF4gICAgXgorICAgIC8vICAgICAgcmVzb2x2ZSAgdHlwZSAgICByZXNvbHZlIG1vZGUKICAgICBz
dGF0aWMgY29uc3RleHByIGludCBzX3Jlc29sdmVUeXBlTWF4ID0gMSA8PCA0OwogICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlTWF4ID0gMSA8PCAyOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZU1vZGVNYXggPSAxIDw8IDE7CiAKKyAgICBzdGF0
aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMSA8PCA3OwogICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IHNfcmVzb2x2ZVR5cGVCaXRzID0gKHNfcmVzb2x2ZVR5cGVNYXggLSAxKSA8PCAz
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlQml0cyA9IChz
X2luaXRpYWxpemF0aW9uTW9kZU1heCAtIDEpIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgc19yZXNvbHZlTW9kZUJpdHMgPSAoc19yZXNvbHZlTW9kZU1heCAtIDEpOwpAQCAtMjA2LDcg
KzIwOCw4IEBAIHN0cnVjdCBGaXRzPEdldFB1dEluZm8sIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c2l6ZSAhPSBPcGNvZGVTaXplOjpXaWRlMzIsIHN0ZDo6CiAgICAgICAgIGF1dG8gcmVzb2x2ZVR5
cGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkucmVzb2x2ZVR5cGUoKSk7CiAgICAgICAgIGF1
dG8gaW5pdGlhbGl6YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLmluaXRpYWxp
emF0aW9uTW9kZSgpKTsKICAgICAgICAgYXV0byByZXNvbHZlTW9kZSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KGdwaS5yZXNvbHZlTW9kZSgpKTsKLSAgICAgICAgcmV0dXJuIChyZXNvbHZlVHlwZSA8
PCAzKSB8IChpbml0aWFsaXphdGlvbk1vZGUgPDwgMSkgfCByZXNvbHZlTW9kZTsKKyAgICAgICAg
YXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkpOworICAgICAgICByZXR1cm4gKGlzU3RyaWN0IDw8IDcpIHwgKHJlc29sdmVUeXBlIDw8
IDMpIHwgKGluaXRpYWxpemF0aW9uTW9kZSA8PCAxKSB8IHJlc29sdmVNb2RlOwogICAgIH0KIAog
ICAgIHN0YXRpYyBHZXRQdXRJbmZvIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCkBAIC0yMTQsMTAg
KzIxNyw0NSBAQCBzdHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90
PHNpemUgIT0gT3Bjb2RlU2l6ZTo6V2lkZTMyLCBzdGQ6OgogICAgICAgICBhdXRvIHJlc29sdmVU
eXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KChncGkgJiBzX3Jlc29sdmVUeXBlQml0cykg
Pj4gMyk7CiAgICAgICAgIGF1dG8gaW5pdGlhbGl6YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8SW5p
dGlhbGl6YXRpb25Nb2RlPigoZ3BpICYgc19pbml0aWFsaXphdGlvbk1vZGVCaXRzKSA+PiAxKTsK
ICAgICAgICAgYXV0byByZXNvbHZlTW9kZSA9IHN0YXRpY19jYXN0PFJlc29sdmVNb2RlPihncGkg
JiBzX3Jlc29sdmVNb2RlQml0cyk7Ci0gICAgICAgIHJldHVybiBHZXRQdXRJbmZvKHJlc29sdmVN
b2RlLCByZXNvbHZlVHlwZSwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgYXV0byBpc1N0
cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOworICAgICAgICBy
ZXR1cm4gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUsIGluaXRpYWxpemF0aW9u
TW9kZSwgaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkp
OwogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFB1
dEJ5SWRGbGFncywgc2l6ZT4geworICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBl
QnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CisKKyAgICAvLyBQdXRCeUlkRmxhZ3MgaXMganVz
dCB0d28gYm9vbGVhbiB2YWx1ZXMgZW5jb2RlZCBhcworICAgIC8vCisgICAgLy8gICAgICAgIGlz
U3RyaWN0CisgICAgLy8gICAgICAgICAgIHYKKyAgICAvLyAgICAwMDAwMDB8MHwwCisgICAgLy8g
ICAgICAgICAgICAgXgorICAgIC8vICAgICAgICAgaXNEaXJlY3QKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lz
U3RyaWN0Qml0ID0gMjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5SWRGbGFncykKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBUYXJnZXRUeXBl
IGNvbnZlcnQoUHV0QnlJZEZsYWdzIGZsYWdzKQorICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVj
dCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOworICAgICAgICBhdXRv
IGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmlj
dCgpKTsKKyAgICAgICAgcmV0dXJuIChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OworICAgIH0K
KworICAgIHN0YXRpYyBQdXRCeUlkRmxhZ3MgY29udmVydChUYXJnZXRUeXBlIGdwaSkKKyAgICB7
CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGly
ZWN0Qml0KTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAm
IHNfaXNTdHJpY3RCaXQpOworICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01B
TW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgICAgIHJldHVybiBpc0Rp
cmVjdCA/IFB1dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5SWRGbGFn
czo6Y3JlYXRlKGVjbWFNb2RlKTsKKyAgICB9Cit9OwogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bj
b2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXpl
b2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+
IDogcHVibGljIEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVz
aW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpAQCAtMzI3
LDQgKzM2NSwyNCBAQCBzdHJ1Y3QgRml0czxHZW5lcmljQm91bmRMYWJlbDxHZW5lcmF0b3JUcmFp
dHM+LCBzaXplPiA6IHB1YmxpYyBGaXRzPGludCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3RlbXBs
YXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1Ymxp
YyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBz
aXplPjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEJhc2U6OmNoZWNrKGVjbWFNb2RlLnZhbHVlKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoRUNNQU1vZGUgZWNt
YU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChlY21hTW9kZS52YWx1
ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRUNNQU1vZGUgY29udmVydCh0eXBlbmFtZSBCYXNl
OjpUYXJnZXRUeXBlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpm
cm9tQnl0ZShCYXNlOjpjb252ZXJ0KGVjbWFNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuY3BwCmluZGV4IDNlM2U2NWY1OWM1MTMwMWViMmY0NGIyZDIzMWVmY2VjYTkxZWNj
ZjEuLjc5OTFhYzJhOGU2N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC02
Nyw3ICs2Nyw3IEBAIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wQnJpZWZGdW5jdGlvbkluZm9y
bWF0aW9uKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QK
IHsKICAgICBvdXQucHJpbnQoYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCksICI6PCIsIFJhd1Bv
aW50ZXIoYmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpKTsKLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkp
CisgICAgaWYgKGlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJp
Y3RNb2RlKSIpOwogICAgIG91dC5wcmludCgiLCAiLCBkaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRl
eCgpLCAiLCAiLCBzdGF0aWNfY2FzdDxLaW5kPihraW5kKSk7CiAgICAgaWYgKGlzQ2xvc3VyZUNh
bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1l
LmgKaW5kZXggZTI5ZjM4NGQxZDA2NzJmZWVhMDcxMjA1YmNhYTI4MWE2NDliMjIyOS4uNzVmOWJi
MWE4NDY4YTYxZDdiZTk2YzNhYzliOTFlOTUzZWEzYmY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAtMjMxLDcgKzIzMSw3IEBA
IHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxG
cmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKTsgfQogICAgIHB0cmRpZmZfdCByZXR1cm5QQ09mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxG
cmFtZTo6cmV0dXJuUENPZmZzZXQoKTsgfQogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25z
dCB7IHJldHVybiBiYXNlbGluZUNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAgICBib29s
IGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpOyB9CiAKICAgICB2b2lkIGR1bXBC
cmllZkZ1bmN0aW9uSW5mb3JtYXRpb24oUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRGbGFncy5jcHAKaW5kZXggYzhhNGI2MGZhNTg4YjAxN2Q3OWVjZjI3MGQ5N2Fi
YjY4YTI0ODI0OS4uNjY1MDBlNjI3NmJjNDY5N2JlMGVlYTFkODgxNDlmZjFhNTAxNGQ0NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKQEAg
LTM2LDggKzM2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBQdXRCeUlkRmxhZ3MgZmxhZ3MpIHsKICAgICBDb21tYVByaW50
ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpCisgICAgaWYg
KGZsYWdzLmlzRGlyZWN0KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklzRGlyZWN0Iik7
CisgICAgaWYgKGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiU3RyaWN0Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCmluZGV4IDVjMDQ5MjgxMGUxYzkz
ZmY2MTUzZTY1NmVmNDRjNzdlMmZmOTc0OGUuLjgxZDQ2NzE4YTVmNzU5OTlhY2NlOWMxMGZmNDcx
NzU2MjY2ODNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkRmxhZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZEZsYWdzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMTcgKzI1LDM3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRUNN
QU1vZGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1lbnVtIFB1dEJ5SWRGbGFncyA6IGludDMyX3QgewotICAgIFB1dEJ5SWROb25lID0gMCwK
K2NsYXNzIFB1dEJ5SWRGbGFncyB7CitwdWJsaWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRC
eUlkRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFB1dEJ5SWRGbGFncyhmYWxzZSwgZWNtYU1vZGUpOworICAgIH0KIAotICAgIC8vIFRoaXMgZmxh
ZyBpbmRpY2F0ZXMgdGhhdCB0aGUgcHV0X2J5X2lkIGlzIGRpcmVjdC4gVGhhdCBtZWFucyB0aGF0
IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0Ci0gICAgLy8gY2hlY2tpbmcgaWYgdGhlIHBy
b3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgUHV0QnlJZElzRGlyZWN0ID0gMHgxLAot
ICAgIFB1dEJ5SWRQZXJzaXN0ZW50RmxhZ3NNYXNrID0gMHgxLAorICAgIC8vIEEgZGlyZWN0IHB1
dF9ieV9pZCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5n
IGlmIHRoZQorICAgIC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCisgICAgY29uc3Rl
eHByIHN0YXRpYyBQdXRCeUlkRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRGbGFncyh0cnVlLCBlY21hTW9kZSk7CisgICAg
fQorCisgICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAg
ICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KKworcHJp
dmF0ZToKKyAgICBjb25zdGV4cHIgUHV0QnlJZEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2Rl
IGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisgICAgICAgICwgbV9l
Y21hTW9kZShlY21hTW9kZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2lzRGlyZWN0Owor
ICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCAy
Y2JjYmNhYzkyMDRkNWQzMDdlMmNiNDgzZDNlZjA4YTNhNzFlMTRkLi5mMWVkYjM4MDdlYjAyMWU0
NDQ5Y2NkNjEwNjlhZjJhYjg2MzkwN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFB1dEJ5SWRTdGF0
dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIEJ5dGVjb2RlCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24p
OwogICAgIAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKLSAg
ICBpZiAoIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgIGlmICgh
KGJ5dGVjb2RlLm1fZmxhZ3MuaXNEaXJlY3QoKSkpIHsKICAgICAgICAgY29uZGl0aW9uU2V0ID0K
ICAgICAgICAgICAgIGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1
cnJlbnRseSgKICAgICAgICAgICAgICAgICB2bSwgcHJvZmlsZWRCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIHN0cnVjdHVyZSwgdWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDU4OTFmMmE1YzI1NzdiOTljNTI5MjJk
M2RmZGY1OTZiYTJmZTU2YmYuLjU0ZGE1N2RhYjY5Y2EyNjFhZWZkY2ViOTM4ZmZhMGY0ZmYwMzc5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcApAQCAtNTcsNyArNTcsNiBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRD
b2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwgbnVsbHB0ciwgbnVsbAog
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV91c2VzRXZhbChpbmZvLnVzZXNFdmFsKCkpCi0g
ICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9pc0NvbnN0
cnVjdG9yKGluZm8uaXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyhmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCBkZDIxN2I3ZmQ0ZmVmNTZkZjhkODFjMzVjMjgxMzNkNWM4N2ExYTljLi4w
MGRjNjE2MzM1ZmQzMWIwNDMyNTFlMzQ0MDBlNTdkZWY1MzE1ZDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIzLDcg
KzEyMyw2IEBAIHB1YmxpYzoKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9u
IH07CiAKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3Ry
dWN0b3I7IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJp
Y3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7
IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJz
ZU1vZGU7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJy
b3dGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KQEAgLTMzNSw3ICszMzQsNiBAQCBw
cml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKICAgICB1bnNp
Z25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAg
ICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1
cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggMjEzYTNhODMyZDdlYWFhOWI5NzEwZjAxYTg2NGRh
OTM1YmRkN2VhNS4uMmViOTg0YzFiMDVhNDVlMGFhNTIwZTFmZDM3OGFkOWUyZmM5MzIyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJC
aW5kaW5nKCk7IH0KICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9Ci0gICAgYm9vbCBpc1N0
cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0K
ICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFs
KCk7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJl
dHVybiBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCmluZGV4IGNkOGJlYmY4ZDM2NDU0NWQxODJkNzljYmY4MDY4MDY3MWY0MTE5N2YuLjBi
ZjMwMjhkODEwYzYxNmViMDdhZGE2NmM1N2RhOTI5OWUxYmJjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcApAQCAtNzEsMTAgKzcxLDExIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlz
Q2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5n
OjpOZWVkZWQ7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJs
ZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2lu
ZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRh
YmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4
dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2Us
IGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBj
b2RlR2VuZXJhdGlvbk1vZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3Vs
dCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBF
eGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUt
PmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmco
KSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJs
ZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBF
dmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUp
OwogCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IGV4
ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCk7Ci0gICAgZXJyb3IgPSBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwg
Y29kZUdlbmVyYXRpb25Nb2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIEVDTUFN
b2RlIGVjbWFNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2Rl
OjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2Rl
R2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOwogCiAg
ICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IGEwMWQ0N2Q3ZGMwYmMxYjQ4MDE2NWJiY2QyNjZkMTFhNmMyMzJiNDUuLjYy
ODQxYjU2N2QwZTFmODg0ZWVhZmU3ZjYyMGVjMWUwODkzMWM3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0yOTcsMTQgKzI5NywyMSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUoKQogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsK
IH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3Jh
bU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9k
ZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0
ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+
KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5l
cmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQogICAgICwgbV90aGlz
UmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5
cGUoR2xvYmFsQ29kZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZh
bHNlKQorICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGlu
RnVuY3Rpb24oZmFsc2UpCisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQorICAgICwg
bV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJU
RFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9n
cmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkK
KyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCkBA
IC0zMzgsMTQgKzM0NSwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIH0KIH0KIAot
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0
ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+
KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5l
cmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKICAgICAsIG1fY29k
ZVR5cGUoRnVuY3Rpb25Db2RlKQogICAgICwgbV92bSh2bSkKKyAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgYSBmbGFnCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJs
b2NrLT5pc0J1aWx0aW5GdW5jdGlvbigpKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2Rl
QmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgLCBt
X3VzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNT
dHJpY3QoKSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSB0YWlsIGNh
bGwgZWxpbWluYXRpb24gd2l0aCB0aGUgcHJvZmlsZXIKICAgICAvLyBlbmFibGVkLiBUaGlzIGlz
IGN1cnJlbnRseSBub3QgcG9zc2libGUgYmVjYXVzZSB0aGUgcHJvZmlsZXIgZXhwZWN0cwogICAg
IC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBj
YWxsLCB3aGljaCBhcmUgbm90CkBAIC0zNTMsOCArMzYzLDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
ODgxOQogICAgIC8vCiAgICAgLy8gTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZW5hYmxlIHRh
aWwgY2FsbCBmb3IgbmFrZWQgY29uc3RydWN0b3JzIHNpbmNlIGl0IGRvZXMgbm90IGhhdmUgc3Bl
Y2lhbCBjb2RlIGZvciAicmV0dXJuIi4KLSAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6
dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX2luVGFp
bFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYg
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGVjbWFNb2RlLmlz
U3RyaWN0KCkpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAg
ICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2Vz
QXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNt
YU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRl
cml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRh
YmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKQEAgLTQzNyw3ICs0NDksNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rp
b25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAg
ICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUp
OwogICAgICAgICBBU1NFUlQoIWlzQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2Rl
KSk7Ci0gICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHlu
YW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwor
ICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMo
Y29kZUJsb2NrLT51c2VzRXZhbCgpLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICAgICAgYm9v
bCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgp
LmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8
fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNj
b3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1
cmVkKTsKQEAgLTQ4Nyw3ICs0OTksNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAg
ICBtX2FyZ3VtZW50c1JlZ2lzdGVyLT5yZWYoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRz
QXJndW1lbnRzICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpICYmIGlzU2ltcGxlUGFyYW1l
dGVyTGlzdCkgeworICAgIGlmIChuZWVkc0FyZ3VtZW50cyAmJiAhZWNtYU1vZGUuaXNTdHJpY3Qo
KSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKICAgICAgICAgLy8gSWYgd2UgY2FwdHVyZWQg
YW55IGZvcm1hbCBwYXJhbWV0ZXIgYnkgbmFtZSwgdGhlbiB3ZSB1c2UgU2NvcGVkQXJndW1lbnRz
LiBPdGhlcndpc2Ugd2UKICAgICAgICAgLy8gdXNlIERpcmVjdEFyZ3VtZW50cy4gV2l0aCBTY29w
ZWRBcmd1bWVudHMsIHdlIGxpZnQgYWxsIG9mIG91ciBhcmd1bWVudHMgaW50byB0aGUKICAgICAg
ICAgLy8gYWN0aXZhdGlvbi4KQEAgLTUxNiw3ICs1MjgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgICAgICAgICAgICAgICAgICBlbnRyeS5kaXNhYmxlV2F0Y2hpbmcobV92bSk7CiAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNl
c3NhcnksIG5hbWUsIGVudHJ5KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
T3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIFVJ
TlRfTUFYLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBH
ZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlv
bk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJv
bFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zm
c2V0Lm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywg
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgVUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5k
LCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24s
IGVjbWFNb2RlKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxS
ZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhpcyBjcmVhdGVz
IGEgc2NvcGVkIGFyZ3VtZW50cyBvYmplY3QgYW5kIGNvcGllcyB0aGUgb3ZlcmZsb3cgYXJndW1l
bnRzIGludG8gdGhlCkBAIC01NTQsMTEgKzU2NiwxMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEJpbmRpbmdOb2RlKj4ocGFyYW1l
dGVycy5hdChpKS5maXJzdCktPmJvdW5kUHJvcGVydHkoKTsKICAgICAgICAgICAgIGZ1bmN0aW9u
U3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIFN5bWJvbFRhYmxlRW50
cnkoVmFyT2Zmc2V0KG9mZnNldCkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgT3BQdXRU
b1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIGFkZENvbnN0
YW50KGlkZW50KSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBp
KSwgR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6
YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpz
eW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSks
IG9mZnNldC5vZmZzZXQoKSk7CisgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywg
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgYWRkQ29uc3RhbnQoaWRlbnQpLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93
SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uLCBlY21hTW9kZSksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJs
ZShWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5v
ZmZzZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRz
ICYmIChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpIHx8ICFpc1NpbXBsZVBhcmFtZXRlckxpc3Qp
KSB7CisgICAgaWYgKG5lZWRzQXJndW1lbnRzICYmIChlY21hTW9kZS5pc1N0cmljdCgpIHx8ICFp
c1NpbXBsZVBhcmFtZXRlckxpc3QpKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgY2xvbmVkIGFy
Z3VtZW50cyBvYmplY3QuCiAgICAgICAgIE9wQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOjplbWl0KHRo
aXMsIG1fYXJndW1lbnRzUmVnaXN0ZXIpOwogICAgIH0KQEAgLTcxMiw3ICs3MjQsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRU
b1RoaXMgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5u
ZXJBcnJvd0Z1bmN0aW9uc1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93
RnVuY3Rpb25zVXNlRXZhbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRW1pdFRv
VGhpcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChmdW5jdGlvbk5vZGUt
PnVzZXNTdXBlclByb3BlcnR5KCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0
aW9uc1VzZVN1cGVyUHJvcGVydHkoKSkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJv
cGVydHkoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQ
cm9wZXJ0eSgpKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgbXVzdCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0IG1v
ZGUgYmVjYXVzZSB3ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb252ZXJ0IHx0
aGlzfCB0byBhbiBvYmplY3QsIGFuZCB0aGF0IG9iamVjdCBtYXkgYmUgcGFzc2VkCiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0byBhIHN0cmljdCBmdW5jdGlvbiBhcyB8dGhpc3wuIFRoaXMg
aXMgb2JzZXJ2YWJsZSBiZWNhdXNlIHRoYXQKQEAgLTgzMywxNSArODQ1LDIxIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hl
Y2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBu
dWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25N
b2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywg
RUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1
ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6
bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwg
bV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5v
ZGUoZXZhbE5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShFdmFsQ29kZSkKICAgICAsIG1fdm0odm0pCi0g
ICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAg
LCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihm
YWxzZSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYm
ICFlY21hTW9kZS5pc1N0cmljdCgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAg
ICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9V
cGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChldmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8
fCBldmFsTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAg
LCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQog
ewogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwpAQCAtODkxLDE1ICs5MDks
MjEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5v
ZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2Nv
cGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6
SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9u
cyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1v
ZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBN
b2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFz
ZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwg
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAg
LCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENh
bGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNv
ZGUpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAs
IG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZh
bHNlKQogICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKKyAgICAsIG1faW5UYWlsUG9z
aXRpb24oZmFsc2UpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQog
ICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5v
ZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkp
CisgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIApA
QCAtMjM5NSw3ICsyNDE5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRGcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY28KICAgICAgICAgICAg
IGtpbGwoZHN0KSwKICAgICAgICAgICAgIHNjb3BlLAogICAgICAgICAgICAgYWRkQ29uc3RhbnQo
dmFyaWFibGUuaWRlbnQoKSksCi0gICAgICAgICAgICBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCB2
YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyBMb2NhbENsb3N1cmVWYXIgOiByZXNvbHZlVHlw
ZSgpLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwKKyAgICAgICAgICAg
IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExv
Y2FsQ2xvc3VyZVZhciA6IHJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24sIGVjbWFNb2RlKCkpLAogICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoKCks
CiAgICAgICAgICAgICB2YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyB2YXJpYWJsZS5vZmZz
ZXQoKS5zY29wZU9mZnNldCgpLm9mZnNldCgpIDogMCk7CiAgICAgICAgIHJldHVybiBkc3Q7CkBA
IC0yNDIyLDExICsyNDQ2LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0VG9TY29wZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmCiAgICAgICAgIFNj
b3BlT2Zmc2V0IG9mZnNldDsKICAgICAgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUo
KSkgewogICAgICAgICAgICAgb2Zmc2V0ID0gdmFyaWFibGUub2Zmc2V0KCkuc2NvcGVPZmZzZXQo
KTsKLSAgICAgICAgICAgIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBMb2Nh
bENsb3N1cmVWYXIsIGluaXRpYWxpemF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZv
ID0gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgTG9jYWxDbG9zdXJlVmFyLCBpbml0aWFsaXphdGlv
bk1vZGUsIGVjbWFNb2RlKCkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGVPclNjb3BlRGVwdGgg
PSBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsg
dmFyaWFibGUuc3ltYm9sVGFibGVDb25zdGFudEluZGV4KCkgfSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQocmVzb2x2ZVR5cGUoKSAhPSBMb2NhbENsb3N1cmVWYXIpOwot
ICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29sdmVU
eXBlKCksIGluaXRpYWxpemF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0
UHV0SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlLCBl
Y21hTW9kZSgpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gU3ltYm9s
VGFibGVPclNjb3BlRGVwdGg6OnNjb3BlRGVwdGgobG9jYWxTY29wZURlcHRoKCkpOwogICAgICAg
ICB9CiAgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBzY29wZSwgYWRkQ29uc3RhbnQo
dmFyaWFibGUuaWRlbnQoKSksIHZhbHVlLCBnZXRQdXRJbmZvLCBzeW1ib2xUYWJsZU9yU2NvcGVE
ZXB0aCwgISFvZmZzZXQgPyBvZmZzZXQub2Zmc2V0KCkgOiAwKTsKQEAgLTI1MDcsNyArMjUzMSw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklE
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6
ZXIucHV0QnlJZChiYXNlLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0QnlJZDo6ZW1pdCh0
aGlzLCBiYXNlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgUHV0QnlJZE5vbmUpOyAvLyBpcyBub3Qg
ZGlyZWN0CisgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZh
bHVlLCBQdXRCeUlkRmxhZ3M6OmNyZWF0ZShlY21hTW9kZSgpKSk7IC8vIGlzIG5vdCBkaXJlY3QK
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI1MTcsNyArMjU0MSw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiB0aGlzVmFsCiAKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQo
cHJvcGVydHkpOwogCi0gICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhp
c1ZhbHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSk7CisgICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVt
aXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgZWNtYU1vZGUo
KSk7CiAKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTMwLDcgKzI1NTQsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFz
ZSwgY29uc3QgSWRlbnRpZgogCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQo
YmFzZSwgcHJvcGVydHlJbmRleCk7CiAKLSAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBl
ID09IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0
eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pID8gUHV0QnlJZElzRGlyZWN0IDogUHV0QnlJZE5vbmU7
CisgICAgUHV0QnlJZEZsYWdzIHR5cGUgPSAocHV0VHlwZSA9PSBQcm9wZXJ0eU5vZGU6Oktub3du
RGlyZWN0IHx8IHByb3BlcnR5ICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3Rv
KSA/IFB1dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpIDogUHV0QnlJZEZsYWdz
OjpjcmVhdGUoZWNtYU1vZGUoKSk7CiAgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHBy
b3BlcnR5SW5kZXgsIHZhbHVlLCB0eXBlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTkw
LDcgKzI2MTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0
b3JGaWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKQogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBPcERlbEJ5SWQ6OmVtaXQo
dGhpcywgZHN0LCBiYXNlLCBhZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAgIE9wRGVsQnlJZDo6
ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSwgZWNtYU1vZGUoKSk7
CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjYzNCwyNSArMjY1OCwyNSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogYmFzZSwgUgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5
VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSk7CisgICAgT3BQdXRCeVZhbDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVj
bWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlz
VmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwg
dmFsdWUpOworICAgIE9wUHV0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFs
dWUsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsK
LSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7
CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUs
IGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQogewotICAgIE9wRGVsQnlWYWw6OmVtaXQodGhp
cywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgT3BEZWxCeVZhbDo6ZW1pdCh0aGlzLCBkc3Qs
IGJhc2UsIHByb3BlcnR5LCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0z
MjQ2LDcgKzMyNzAsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWMKICAgICAvLyBFbWl0IGNh
bGwuCiAgICAgQVNTRVJUKGRzdCk7CiAgICAgQVNTRVJUKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkp
OwotICAgIENhbGxPcDo6ZW1pdCh0aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpKTsKKyAg
ICBpZiBjb25zdGV4cHIgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkKKyAgICAgICAgQ2FsbE9w
OjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCksIGVjbWFNb2RlKCkpOworICAg
IGVsc2UKKyAgICAgICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50
cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0
KCkpOwogICAgIAogICAgIGlmIChleHBlY3RlZEZ1bmN0aW9uICE9IE5vRXhwZWN0ZWRGdW5jdGlv
bikKICAgICAgICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwpAQCAtMzc4OSw3ICszODE2LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmUKICAgICB1bnNpZ25lZCBudW1WYXJzID0gbV9jb2RlQmxv
Y2stPm51bVZhcnMoKTsKICAgICBwdXNoTGV4aWNhbFNjb3BlSW50ZXJuYWwobmFtZVNjb3BlRW52
aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBl
OjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgVERaUmVxdWlyZW1lbnQ6Ok5vdFVuZGVyVERaLCBTY29w
ZVR5cGU6OkZ1bmN0aW9uTmFtZVNjb3BlLCBTY29wZVJlZ2lzdGVyVHlwZTo6VmFyKTsKICAgICBB
U1NFUlRfVU5VU0VEKG51bVZhcnMsIG1fY29kZUJsb2NrLT5udW1WYXJzKCkgPT0gc3RhdGljX2Nh
c3Q8aW50PihudW1WYXJzICsgMSkpOyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNyZWF0ZWQgb25lIG5l
dyAidmFyIiBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUuCi0gICAgYm9vbCBzaG91bGRUcmVh
dEFzTGV4aWNhbFZhcmlhYmxlID0gaXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBzaG91bGRUcmVh
dEFzTGV4aWNhbFZhcmlhYmxlID0gZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgIFZhcmlhYmxl
IGZ1bmN0aW9uVmFyID0gdmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBtX2xleGljYWxT
Y29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBw
cm9wZXJ0eS5pbXBsKCkpLCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxl
Q29uc3RhbnRJbmRleCwgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSk7CiAgICAgZW1pdFB1
dFRvU2NvcGUobV9sZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSwgZnVuY3Rpb25WYXIs
IGNhbGxlZSwgVGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxp
emF0aW9uKTsKIH0KQEAgLTM5NzIsNyArMzk5OSw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkK
IHsKICAgICAvLyBJZiB3ZSdyZSBpbiBzdHJpY3QgbW9kZSwgd2UgYWx3YXlzIHRocm93LgogICAg
IC8vIElmIHdlJ3JlIG5vdCBpbiBzdHJpY3QgbW9kZSwgd2UgdGhyb3cgZm9yICJjb25zdCIgdmFy
aWFibGVzIGJ1dCBub3QgdGhlIGZ1bmN0aW9uIGNhbGxlZS4KLSAgICBpZiAoaXNTdHJpY3RNb2Rl
KCkgfHwgdmFyaWFibGUuaXNDb25zdCgpKSB7CisgICAgaWYgKGVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSB8fCB2YXJpYWJsZS5pc0NvbnN0KCkpIHsKICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcobV92bSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNTA1NSw3ICs1MDgyLDcgQEAgdm9pZCBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0VG9UaGlzKCkKIHsKLSAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNS
ZWdpc3RlcikpOworICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVy
KSwgZWNtYU1vZGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IDI5ODkzNzQwYTg1YTU4NDllMzk3Mjg4NTY1MDMyYWU3NGJhZmY1NWIuLmVhY2FjNjI1OGJiNTI4
MjNlZGZiNTRiMzg2ODM3MmYxMzNiZjAxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM4MCwxMyArMzgw
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgRmluYWxseUNvbnRl
eHQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBm
cmllbmQgY2xhc3MgU3RydWN0dXJlRm9ySW5Db250ZXh0OworICAgICAgICBmcmllbmQgY2xhc3Mg
U3RyaWN0TW9kZVNjb3BlOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlv
blN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCop
OwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCopOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2
YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5l
cmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50Kik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
LCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBV
bmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5l
cmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiwgRUNNQU1vZGUpOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigpOwogICAg
ICAgICAKQEAgLTQwNiwxNCArNDA3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9CiAK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgVW5saW5rZWRDb2RlQmxv
Y2s+Ci0gICAgICAgIHN0YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5v
ZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCkKKyAgICAgICAg
c3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIGVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAg
ICAgICAgewogICAgICAgICAgICAgTW9ub3RvbmljVGltZSBiZWZvcmU7CiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAg
ICAgICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAg
IERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5l
cmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRD
b2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAgICAg
YXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZt
LCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVu
dCwgZWNtYU1vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRv
ci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9y
dEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CkBAIC0xMDE5LDcgKzEwMjAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVHZW5lcmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2VuZXJhdGlvbk1v
ZGU6OlR5cGVQcm9maWxlcik7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0Q29udHJvbEZsb3dQ
cm9maWxlckhvb2tzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlR2VuZXJhdGlvbk1vZGUuY29udGFp
bnMoQ29kZUdlbmVyYXRpb25Nb2RlOjpDb250cm9sRmxvd1Byb2ZpbGVyKTsgfQogICAgICAgICAK
LSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCk7IH0KKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2VjbWFNb2RlOyB9CiAgICAgICAgIHZvaWQgc2V0VXNlc0NoZWNrcG9pbnRzKCkgeyBt
X2NvZGVCbG9jay0+c2V0SGFzQ2hlY2twb2ludHMoKTsgfQogCiAgICAgICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7
IH0KQEAgLTEyOTcsOCArMTI5OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1f
aXNCdWlsdGluRnVuY3Rpb24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1fdXNlc05vblN0cmlj
dEV2YWwgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBmYWxzZSB9
OwotICAgICAgICBib29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwogICAg
ICAgICBib29sIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFogeyBmYWxzZSB9OworICAgICAg
ICBib29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0IDogMTsKKyAgICAgICAg
RUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZl
ZENvbnRleHRUeXBlIHsgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lIH07CiAKICAgICAgICAgQ29t
cGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWjsKQEAgLTEz
MTIsNiArMTMxNCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhdGNoRW50
cnk+IG1fZXhjZXB0aW9uSGFuZGxlcnNUb0VtaXQ7CiAgICAgfTsKIAorICAgIGNsYXNzIFN0cmlj
dE1vZGVTY29wZSA6IHByaXZhdGUgU2V0Rm9yU2NvcGU8RUNNQU1vZGU+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFN0cmljdE1vZGVTY29wZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQor
ICAgICAgICAgICAgOiBTZXRGb3JTY29wZShnZW5lcmF0b3IubV9lY21hTW9kZSwgRUNNQU1vZGU6
OnN0cmljdCgpKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9OworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNjQwYjI0OTc1NWUxMGVjZGQ5YTgz
YjllMTRiMDk3YWIzOWZkMDk0Zi4uYmQzM2I4YTBmOWJiMjIyMzY3ZDY5NDdmZjJiYjg0NDE4OTdm
Nzc2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtMjkwMyw3ICsyOTAzLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3QKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmlz
U3RyaWN0TW9kZSgpKQorICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9y
LmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICBpZiAobV9hc3NpZ25tZW50Q29u
dGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6QXNzaWdubWVudEV4cHJlc3Npb24pCkBAIC0yOTIw
LDcgKzI5MjAsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBS
ZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSByZXN1bHQuZ2V0KCk7CiAgICAgaWYgKCFpc1JlYWRP
bmx5KSB7Ci0gICAgICAgIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShz
Y29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/
IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1v
ZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Fzc2lnbm1lbnRDb250ZXh0KSk7CisgICAgICAgIHJl
dHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBy
ZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90
Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdu
bWVudENvbnRleHQobV9hc3NpZ25tZW50Q29udGV4dCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKHJlc3VsdC5nZXQoKSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIH0KIApAQCAtMzE0MCw3ICszMTQwLDcgQEAgUmVnaXN0ZXJJRCogRW1wdHlMZXRFeHBy
ZXNzaW9uOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXMK
ICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1
ZS5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9O
b3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUu
Z2V0KCksIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQg
OiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlv
bik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIHZhciwg
cG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQubGVuZ3RoKCkpOyAKICAgICB9CiAKQEAg
LTMzNTAsMTMgKzMzNTAsMTMgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHByb3BlcnQKICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5tb3ZlKGxvY2FsLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICAgICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2Nv
cGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVy
YXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZv
dW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUs
IGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05v
dFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7
CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5h
bWUsIHZhciwgbV9sZXhwci0+cG9zaXRpb24oKSwgbV9sZXhwci0+cG9zaXRpb24oKSArIGlkZW50
Lmxlbmd0aCgpKTsKICAgICB9OwpAQCAtMzYwNywxMyArMzYwNywxMyBAQCB2b2lkIEZvck9mTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlv
bklmTmVlZGVkKHZhcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUobG9jYWwsIHZh
bHVlKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRv
ci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAg
ICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0
cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0
aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RG
b3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCB2YXIsIG1f
bGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHItPnBvc2l0aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7
CiAgICAgICAgIH0gZWxzZSBpZiAobV9sZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewpAQCAt
NDM5Nyw2ICs0Mzk3LDggQEAgdm9pZCBDbGFzc0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIENsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiB7CisgICAgU3RyaWN0TW9kZVNjb3BlIHN0cmljdE1vZGVTY29wZShnZW5l
cmF0b3IpOworCiAgICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRv
ci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGlt
aXphdGlvbjo6T3B0aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6Oklz
TmVzdGVkKTsKIApAQCAtNDgzMSw3ICs0ODMzLDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6YmluZFZh
bHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKSBjb24K
ICAgICAgICAgICAgIGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3NpYmxlKHZhcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAg
ICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKG51bGxwdHIsIHZhcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNDg0MSw3ICs0ODQzLDcgQEAg
dm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIHZhbHVlKSBjb24KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4
Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZ2VuZXJh
dG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuaXNT
dHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5p
dGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQobV9iaW5kaW5nQ29udGV4dCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2Vu
ZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhy
b3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Jp
bmRpbmdDb250ZXh0KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFy
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChtX2JpbmRpbmdDb250ZXh0ID09
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCB8fCBtX2JpbmRpbmdDb250
ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpDb25zdERlY2xhcmF0aW9uU3RhdGVtZW50KQogICAg
ICAgICBnZW5lcmF0b3IubGlmdFREWkNoZWNrSWZQb3NzaWJsZSh2YXIpOwpAQCAtNDg3OSw3ICs0
ODgxLDcgQEAgdm9pZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2Rl
KCkpCisgICAgICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCBudWxscHRyLCBzY29wZS5nZXQoKSk7CkBAIC00
ODkwLDcgKzQ4OTIsNyBAQCB2b2lkIEFzc2lnbm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgICAgIH0KICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgICAgICBpZiAoIWlzUmVhZE9ubHkpIHsKLSAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9y
LmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQs
IEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3Iu
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2Fzc2lnbm1lbnRUYXJnZXQt
PmlzRG90QWNjZXNzb3JOb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDM5Y2JmODJlMjExMzIwNWI1NmYz
YTdkNjg3NjM1ZjBjM2U3MGYxN2EuLmY0NWUwMWQwNjcxOTMwNzYyZmMwNzA4NTUwZjNlNDdiY2Ez
YzRiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcApAQCAtMjEyLDkgKzIxMiw5IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxs
RnJhbWU6OnRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0CiAgICAgaWYgKCF0aGlzVmFsdWUpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBOb3RT
dHJpY3RNb2RlOwotICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkKLSAgICAgICAgZWNtYU1vZGUgPSBTdHJpY3RNb2RlOworICAgIEVDTUFNb2RlIGVjbWFNb2Rl
ID0gRUNNQU1vZGU6OnNsb3BweSgpOworICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKKyAgICAgICAgZWNtYU1vZGUg
PSBFQ01BTW9kZTo6c3RyaWN0KCk7CiAgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxp
ZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIApA
QCAtMjUzLDcgKzI1Myw4IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU09iCiAgICAgVmFyaWFibGVF
bnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3Vy
ZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFop
OwogCi0gICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4o
dm0pKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVz
VW5kZXJURFopOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFN
b2RlOjpzbG9wcHkoKTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNv
dXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRD
b250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJv
d0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1v
ZGUpOwogICAgIGlmIChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAg
ICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3Bl
LmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNzcxZDkyZTgyMzllNDNh
YjI1ZmRiNjZmY2YxMDU5OWVhYWNhMzk0Ni4uYzE4NzA2Njc1MThmNGJiMDhiMmM2MzljNDg0ZjZm
NjAwZjBjMzUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTg2LDEwICsxODYsMTAgQEAgZW51
bSBjbGFzcyBUb1RoaXNSZXN1bHQgewogICAgIEdsb2JhbFRoaXMsCiAgICAgRHluYW1pYywKIH07
Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNT
dHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCitpbmxpbmUgVG9UaGlzUmVz
dWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFj
dFZhbHVlJiB2YWx1ZUZvck5vZGUpCiB7CiAgICAgLy8gV2UgbG9vayBhdCB0aGUgdHlwZSBmaXJz
dCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9zdCBjYXNlcyBhbmQgZG9lcyBub3QgcmVxdWlyZSBp
dGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVzLgotICAgIGlmIChpc1N0cmljdE1vZGUpIHsKKyAg
ICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAodmFsdWVGb3JOb2RlLm1f
dHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiBTcGVjT2JqZWN0T3RoZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgfSBlbHNlIHsKQEAgLTIw
MywyMCArMjAzLDIwIEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZN
JiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgICAgICBpZiAo
dG9UaGlzTWV0aG9kID09ICZKU09iamVjdDo6dG9UaGlzKQogICAgICAgICAgICAgICAgIHJldHVy
biBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwogICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9
PSAmSlNTY29wZTo6dG9UaGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkK
KyAgICAgICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6VW5kZWZpbmVkOwogICAgICAgICAgICAgICAgIHJl
dHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoKGlzU3RyaWN0TW9kZSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAm
JiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUu
bV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8
fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09i
amVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAg
ICBib29sIGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVy
ZS5pc0NsZWFyKCk7CiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAg
ICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+
dHlwZUluZm8oKTsKICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50
eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUu
dHlwZSgpID09IEJpZ0ludFR5cGUpOwotICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCisg
ICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdv
cnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKICAgICAgICAgICAg
IC8vIDEpIFdlIGFyZSBpbiBzdHJpY3QgbW9kZSBhbmQgc3RyaW5ncy9zeW1ib2xzIGFyZSBub3Qg
d3JhcHBlZApAQCAtMjMwLDcgKzIzMCw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNB
bklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAg
ICAgIGlmICghb3ZlcnJpZGVzVG9UaGlzKQogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3Vs
dDo6SWRlbnRpdHk7CiAgICAgICAgIGlmIChhbGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSkgewotICAg
ICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0
cmljdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsK
ICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgIH0K
QEAgLTI3MzAsOSArMjczMCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBU
b1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShu
b2RlKTsKLSAgICAgICAgYm9vbCBzdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2Rl
LT5lY21hTW9kZSgpOwogCi0gICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0Fu
SWRlbnRpdHkobV92bSwgc3RyaWN0TW9kZSwgc291cmNlKTsKKyAgICAgICAgVG9UaGlzUmVzdWx0
IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX3ZtLCBlY21hTW9kZSwgc291cmNlKTsKICAg
ICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50
aXR5OgogICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1
ZSk7CkBAIC0yNzQ2LDcgKzI3NDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICAgICAgZGVzdGluYXRpb24uc2V0VHlwZShtX2dyYXBoLCBTcGVjT2JqZWN0KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6RHluYW1pYzoKLSAgICAgICAg
ICAgIGlmIChzdHJpY3RNb2RlKQorICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkp
CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24ubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA5ZGQ0Yjlh
YTQ4YzgwYzA2ZGYwNGMwZTFmM2FmMzMwNWVlZGFkMTJiLi5mYjljYWQxYzUxY2ViZmYyMDQ5NDY5
NDA4MDI3YmY5MWFlNjQ0MGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjQ2LDEzICsyNDYsMTMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwg
U3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlLCB1bnNpZ25lZCBpbnN0
cnVjdGlvblNpemUpOwogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCi0gICAgICAgIE5vZGUqIGJhc2Us
IENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYs
IGJvb2wgaXNEaXJlY3QpOworICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01B
TW9kZSk7CiAgICAgdm9pZCBoYW5kbGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwg
Y29uc3QgUHV0QnlJZFN0YXR1cyYsCi0gICAgICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGlu
dHJ1Y3Rpb25TaXplKTsKKyAgICAgICAgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW50cnVjdGlv
blNpemUsIEVDTUFNb2RlKTsKIAogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKLSAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cyk7CisgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMsIEVDTUFNb2Rl
KTsKICAgICAKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBj
aGVjayBmb3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29u
ZGl0aW9uIG5vIGxvbmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNr
IGNhbiBiZSBlbWl0dGVkLgpAQCAtODUwLDE4ICs4NTAsMTggQEAgcHJpdmF0ZToKICAgICB9CiAg
ICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
Tm9kZVR5cGUgb3AsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNh
bGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUs
IGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAg
ICAgICAgICBpZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVy
ZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgb3BJbmZvLCBj
YWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOwogICAgICAgICAgICAg
b3AgPSBUYWlsQ2FsbElubGluZWRDYWxsZXI7CiAgICAgICAgIH0KIAogCiAgICAgICAgIE5vZGUq
IGNhbGwgPSBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgT3BJ
bmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8o
cHJlZGljdGlvbikpOworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwg
cmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgIGlmIChyZXN1bHQu
aXNWYWxpZCgpKQogICAgICAgICAgICAgc2V0KHJlc3VsdCwgY2FsbCk7CiAgICAgICAgIHJldHVy
biBjYWxsOwpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2Fs
bFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVk
aWN0aW9uKTsKICAgICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxWYXJhcmdzICYm
IGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgIHJldHVybiBj
YWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCA/IFRlcm1pbmFsIDogTm9uVGVybWluYWw7CiB9CkBA
IC0yMTg2LDcgKzIxODYsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3Vs
dCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0
Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkg
ewogICAgICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0LCBjYWxsT3AsIG51bGxwdHIs
IG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAg
ICAgcmVzdWx0LCBjYWxsT3AsIE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9u
KTsKICAgICAgICAgVkVSQk9TRV9MT0coIldlIGFkZGVkIGEgY2FsbCBpbiB0aGUgc2xvdyBwYXRo
XG4iKTsKICAgICB9IGVsc2UgewpAQCAtMzY2MCw3ICszNjYwLDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUywg
IkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBh
cmd1bWVudHMuIik7CiAKICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICBhZGRDYWxsKHJlc3VsdCwg
Q2FsbCwgc2lnbmF0dXJlLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIGFkZENhbGwocmVzdWx0LCBDYWxsLCBP
cEluZm8oc2lnbmF0dXJlKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NDYyMCwxMSArNDYyMCwxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdp
c3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLAotICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0
ZUJ5U3RhdHVzKQorICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVz
IGRlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBpZiAoIWRlbGV0ZUJ5
U3RhdHVzLmlzU2ltcGxlKCkgfHwgIWRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpIHx8
ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CiAgICAgICAgIHNldChkZXN0aW5hdGlv
biwKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIp
LCBiYXNlKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVu
dGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NjMzLDcgKzQ2MzMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxl
dGVCeUlkKAogICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmcoKQogICAgICAgICAgICAgfHwgZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkg
PiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgewogICAg
ICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVs
ZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBiYXNlKSk7CisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSks
IGJhc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NzE3LDIyICs0
NzE3LDIyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQoCiB9CiAKIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRCeUlkKAotICAgIE5vZGUqIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
IHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QpCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYg
cHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAg
aWYgKGlzRGlyZWN0KQotICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgYmFzZSwgdmFsdWUpOworICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJl
Y3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwgdmFsdWUpOwog
ICAgIGVsc2UKLSAgICAgICAgYWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/
IFB1dEJ5SWRGbHVzaCA6IFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgYmFzZSwgdmFsdWUp
OworICAgICAgICBhZGRUb0dyYXBoKHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gUHV0QnlJ
ZEZsdXNoIDogUHV0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8oZWNtYU1vZGUpLCBi
YXNlLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAg
ICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKLSAgICBjb25zdCBQdXRCeUlkU3RhdHVzJiBw
dXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpCisg
ICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5z
aWduZWQgaW5zdHJ1Y3Rpb25TaXplLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBpZiAoIXB1
dEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpIHx8
ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CiAgICAgICAgIGlmICghcHV0QnlJZFN0
YXR1cy5pc1NldCgpKQogICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwotICAg
ICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywg
aXNEaXJlY3QpOworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwg
cHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTQ3NDAsNyArNDc0MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQoCiAgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlk
U3RhdHVzLm1ha2VzQ2FsbHMoKQogICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3Jw
aGljQWNjZXNzSW5saW5pbmcoKQogICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJp
YW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkp
IHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRC
eUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVu
dGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ3NDksNyArNDc0OSw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgICAgICAgICAgaWYg
KHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5raW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlRy
YW5zaXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IGlmICghY2hlY2socHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhdLmNvbmRpdGlvblNldCgpKSkg
ewotICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1
ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgICAgICAgICBlbWl0UHV0
QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVj
bWFNb2RlKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTQ3OTIsNyArNDc5Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVB1dEJ5SWQoCiAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJ
bmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFz
ZSk7CiAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKLSAgICAg
ICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVz
LCBpc0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2
YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC00ODU5LDcgKzQ4NTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRCeUlkKAogCiAgICAgICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChT
cGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAgICAgICAg
aWYgKCFsb2FkZWRWYWx1ZSkgewotICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRp
ZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwg
ZWNtYU1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAt
NDkwMyw3ICs0OTAzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAg
ICB9CiAgICAgCiAgICAgZGVmYXVsdDogewotICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVu
dGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICBlbWl0UHV0
QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVj
bWFNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gfQogfQpAQCAtNTA3NSw3ICs1MDc1LDgg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKICAgICAgICAgICAgIE5vZGUqIG9w
MSA9IGdldFRoaXMoKTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFRvVGhpcz4oKS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7CisgICAg
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9
IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoY2FjaGVkU3RydWN0dXJlSUQpCkBAIC01MDg2LDcg
KzUwODcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
Y291bGRUYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpCiAgICAgICAgICAgICAgICAgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkQ2FjaGUpCiAgICAgICAgICAgICAgICAgfHwgKG9wMS0+b3AoKSA9PSBHZXRMb2NhbCAmJiBv
cDEtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKCkp
KSB7Ci0gICAgICAgICAgICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKCks
IE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLCBvcDEpKTsKKyAgICAgICAgICAgICAgICBzZXRUaGlz
KGFkZFRvR3JhcGgoVG9UaGlzLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIE9wSW5mbyhn
ZXRQcmVkaWN0aW9uKCkpLCBvcDEpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAgICAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsCkBA
IC01OTI2LDcgKzU5MjcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodGhpc1ZhbHVlKTsKICAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsKICAgICAgICAgICAgIGFkZFZhckFyZ0No
aWxkKHZhbHVlKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBQdXRCeVZh
bFdpdGhUaGlzLCBPcEluZm8oMCksIE9wSW5mbygwKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KE5vZGU6OlZhckFyZywgUHV0QnlWYWxXaXRoVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpLCBPcEluZm8oMCkpOwogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFs
X3dpdGhfdGhpcyk7CiAgICAgICAgIH0KQEAgLTU5OTYsMTQgKzU5OTcsMTQgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29k
ZS5tX3Byb3BlcnR5XTsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07Ci0gICAgICAgICAgICBib29sIGRp
cmVjdCA9ICEhKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpOworICAgICAgICAg
ICAgYm9vbCBkaXJlY3QgPSBieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCk7CiAKICAgICAgICAg
ICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAog
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250
ZXh0U3RhY2ssCiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5p
ZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaGFuZGxlUHV0QnlJZChiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LCB1aWQpLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBj
dXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCksIGlkZW50aWZpZXJO
dW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBkaXJlY3QsIGN1cnJlbnRJbnN0cnVjdGlvbi0+
c2l6ZSgpLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfcHV0X2J5X2lkKTsKICAgICAgICAgfQogCkBAIC02MDE0LDggKzYwMTUsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVt
YXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotCi0gICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlKTsKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZFdpdGhUaGlzLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwg
YmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRf
YnlfaWRfd2l0aF90aGlzKTsKICAgICAgICAgfQogCkBAIC02MDU1LDcgKzYwNTUsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
ICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKICAgICAgICAg
ICAgIGF1dG8gaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IHVpZCk7Ci0gICAgICAgICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNl
LCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cyk7CisgICAgICAg
ICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyLCBp
ZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cywgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwogICAgICAgICB9CiAKQEAgLTYw
ODUsMTMgKzYwODUsMTMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwg
aWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMpOworICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlm
aWVyLCBpZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cywgYnl0ZWNvZGUubV9lY21hTW9k
ZSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFz
aG91bGRDb21waWxlQXNEZWxldGVCeUlkKQotICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5t
X2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeVZhbCwgYmFzZSwgcHJvcGVydHkpKTsKKyAgICAgICAg
ICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIE9wSW5m
byhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2RlbF9ieV92YWwpOwogICAgICAgICB9CiAKQEAgLTY2MTQsNyArNjYxNCw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFsPigpOwogICAgICAgICAgICAgaW50IHJlZ2lz
dGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1fYXJndjsKLSAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNv
ZGUubV9kc3QsIENhbGxFdmFsLCBudWxscHRyLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpLCBieXRl
Y29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOworICAgICAgICAg
ICAgYWRkQ2FsbChieXRlY29kZS5tX2RzdCwgQ2FsbEV2YWwsIE9wSW5mbyhieXRlY29kZS5tX2Vj
bWFNb2RlKSwgZ2V0KGJ5dGVjb2RlLm1fY2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rl
ck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2Nh
bGxfZXZhbCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNjk2Myw3ICs2OTYzLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
ICAgIGlmIChuZWVkc0R5bmFtaWNMb29rdXAocmVzb2x2ZVR5cGUsIG9wX3B1dF90b19zY29wZSkp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllck51bWJlciAhPSBVSU5UX01BWCk7
CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgb3BJbmZvMSA9IG1ha2VEeW5hbWljVmFyT3BJbmZv
KGlkZW50aWZpZXJOdW1iZXIsIGdldFB1dEluZm8ub3BlcmFuZCgpKTsKLSAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFB1dER5bmFtaWNWYXIsIE9wSW5mbyhvcEluZm8xKSwgT3BJbmZvKCksIGdl
dChieXRlY29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dER5bmFtaWNWYXIsIE9wSW5mbyhvcEluZm8xKSwgT3BJbmZvKGdl
dFB1dEluZm8uZWNtYU1vZGUoKSksIGdldChieXRlY29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2Rl
Lm1fdmFsdWUpKTsKICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfdG9fc2NvcGUp
OwogICAgICAgICAgICAgfQogCkBAIC02OTg1LDcgKzY5ODUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGlmIChzdGF0
dXMubnVtVmFyaWFudHMoKSAhPSAxCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5r
aW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UKICAgICAgICAgICAgICAgICAgICAgfHwg
c3RhdHVzWzBdLnN0cnVjdHVyZSgpLnNpemUoKSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssIHVpZCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVl
KSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZvKENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9n
ZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29k
ZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2Jq
ZWN0KTsKQEAgLTc2MzEsOCArNzYzMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29k
ZUJsb2NrKCkKICAgICAgICAgICAgICAgICAiIGZvciBpbmxpbmluZyBhdCAiLCBDb2RlQmxvY2tX
aXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUVHlwZTo6REZHSklUKSwKICAgICAgICAgICAgICAg
ICAiICIsIGlubGluZUNhbGxGcmFtZSgpLT5kaXJlY3RDYWxsZXIpOwogICAgICAgICB9Ci0gICAg
ICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiLCBpc1N0cmljdE1vZGUgPSAiLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSwgIlxuIik7CisgICAgICAgIGRhdGFM
b2dMbigpOwogICAgICAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNv
ZGUoKTsKICAgICB9CiAgICAgCkBAIC03NzM5LDcgKzc3MzgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25TaXplKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAg
ICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0aW9uU2l6ZSk7CisgICAg
ICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgaW5zdHJ1Y3Rpb25TaXplLCBieXRlY29k
ZS5tX2VjbWFNb2RlKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7CkBA
IC03NzUwLDcgKzc3NDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChC
eXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogICAgICAgICBhZGRW
YXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSBy
b29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8g
TGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywg
aXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFz
V29yZCgpKSwgT3BJbmZvKDApKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlz
RGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dv
cmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0g
ZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMg
aWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhl
bSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggOTExZGQ5YjFlNzdhY2I1NThhODYz
MGVmMmMxODEwMDYwZjFlZGMyZi4uZmI0NTcwOWZlNTE2MjgyZjQ4NDc1YzMwNzEyN2EwYTIzMjg0
Y2I5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAgICAgICAgICAgIFRvVGhp
c1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3ZtLCBtX2dyYXBo
LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0g
aXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9
PSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5KSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMmMzNzY4
MDNjNGNhNmRmNGYyZmQyYmUwNWMxNGUwNjQzZDQ4MzU3Yy4uMWE0ZGVjZGEwYzJkNzM2ODdlZmNm
Mzg4Yjg0ODJmYjBlYzY0N2M0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0yODM3LDcgKzI4MzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBm
aXh1cFRvVGhpcyhOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUg
PSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAg
ICBib29sIGlzU3RyaWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKIAogICAg
ICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCmluZGV4IDJjMjUxOTZmYjA1YzQ5Nzc5NGI1ZGRmYzY2MWRjNzdmZjFhMGUwYWMuLjdiZDE4
ODA2NmFkMDZkN2JlOGFmMjVmMzhhYjE0ODk3ZWVmZGVmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3Qq
IGdsb2JhbFRoaXNPYmplY3RGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIG9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsK
LSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUobV92
bSktPnRvVGhpcyhvYmplY3QsIG9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgICAgICByZXR1
cm4ganNDYXN0PEpTT2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlzKG9i
amVjdCwgb2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICB9CiAgICAgCiAgICAgU2Ny
aXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSkKQEAgLTQ2OSwxOCArNDY5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmFzZWxp
bmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBtX3By
b2ZpbGVkQmxvY2spOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3RyaWN0TW9kZUZvcihDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpOwotICAgICAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKS0+aXNTdHJp
Y3RNb2RlKCk7Ci0gICAgfQotICAgIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlRm9yKENvZGVPcmln
aW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdE1vZGVGb3IoY29k
ZU9yaWdpbikgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKLSAgICB9Ci0gICAgCiAgICAg
Ym9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZChjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+aXNT
dGlsbFZhbGlkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGFhYzNhNjM3
YTA5NDE2NjQ1NDRjOTE5YmI3NDZlMGFkNTdiOWY0MzEuLjBiODUwZjBjODA3NDA5NTA1YTkwYTU5
ODk2ZTQ1ODk3MzUzYTU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0y
MjIzLDYgKzIyMjMsNTMgQEAgcHVibGljOgogICAgICAgICBtX29wSW5mbyA9IGFycmF5TW9kZS5h
c1dvcmQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCisgICAgYm9vbCBoYXNFQ01B
TW9kZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBDYWxs
RXZhbDoKKyAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAgICBjYXNlIERlbGV0ZUJ5VmFs
OgorICAgICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAg
ICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgor
ICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CisgICAg
ICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoK
KyAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgRUNNQU1vZGUgZWNtYU1vZGUoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGhhc0VDTUFNb2RlKCkpOworICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKKyAgICAgICAgY2FzZSBDYWxsRXZhbDoKKyAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKKyAg
ICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAg
ICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4oKSk7
CisgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAg
ICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAg
ICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAg
Y2FzZSBQdXRCeVZhbEFsaWFzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgorICAgICAg
ICBjYXNlIFB1dER5bmFtaWNWYXI6CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21C
eXRlKG1fb3BJbmZvMi5hczx1aW50OF90PigpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gRUNN
QU1vZGU6OnN0cmljdCgpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGJvb2wgaGFzQXJp
dGhNb2RlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCA0
NWU3YWMzZGI1OGY2NWI3OGFiNjAyZTc4ZTRhMzFjNDQ1ODNjOWM3Li4wZTRjMzFiZjBkN2U1ODU4
YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJ
bmZvLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJ
bmZvKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkpKSB7IH0KICAgICBl
eHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkgOiBtX3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAg
ICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFs
dWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50aWZpZXIucmF3Qml0cygpKSkgeyB9CisgICAg
ZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFNb2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFs
dWUoKSkgeyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcElu
Zm8oVCogcHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggMDhjZTU0MzVkM2Y3MTkwNjNjZmMwOWZmYTc3ZGNmNjExZmY4Zjk5OC4uY2M1NzgwOTdi
NzRhOGY2NWQ2YTAzYTllOTY3Y2ZkMDc2ZDVjZTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2QKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXNTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQpAQCAtMzA3LDcgKzMwNyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7CiB9CiAKIEpTQXJyYXkq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT2JqZWN0KQpAQCAtMzM4NSw3ICszMzg1LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5cGVPZihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNl
TG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VM
b2NhbENsb2JiZXJpemUuaAppbmRleCAzNjE4MWEyODIxMzM5ZTg4YjY2M2M2NTg3MWMwZGEzY2M0
NGRlOGEyLi5iYWEyMWMwYmJmYTJhY2ZiYTUwZDVhOGY5OTMyZDMxNGRiNTQ0OWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJp
emUuaApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAg
ZGVmYXVsdDogewogICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3QgYXJndW1lbnRz
LCBleGNlcHQgdGhpcywgYXJlIHJlYWQgaW4gc2xvcHB5IG1vZGUuCi0gICAgICAgICAgICBpZiAo
IW1fZ3JhcGgubV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAo
IW1fZ3JhcGgubV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4
dCgpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpOyBpLS07KQogICAgICAgICAgICAgICAgICAgICBtX3JlYWQo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKICAgICAgICAgICAg
IH0KQEAgLTI1MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgICAgIC8v
IFJlYWQgYWxsIG9mIHRoZSBpbmxpbmUgYXJndW1lbnRzIGFuZCBjYWxsIGZyYW1lIGhlYWRlcnMg
dGhhdCB3ZSBkaWRuJ3QgYWxyZWFkeSBjYXB0dXJlLgogICAgICAgICAgICAgZm9yIChJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZSgpOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNh
bGxGcmFtZS0+Z2V0Q2FsbGVySW5saW5lRnJhbWVTa2lwcGluZ1RhaWxDYWxscygpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzU3RyaWN0TW9kZSgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgICAgICAgICAg
bV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpLm9mZnNldCgpKSk7CiAgICAg
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA4ZjE5MjYwODA1NjY5NDdi
YWJhMDJmMTc3NmI1NDA5NGIxMGUwYmUzLi4yMTAwM2VkNWZkM2ZiYzM4MTYyYzg5MmIzNGM4NDdi
OTI3NjgzZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTA2LDcgKzUwNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgICAg
IC8vIFRvVGhpcyBpbiBtZXRob2RzIGZvciBwcmltaXRpdmUgdHlwZXMgc2hvdWxkIHNwZWN1bGF0
ZSBwcmltaXRpdmUgdHlwZXMgaW4gc3RyaWN0IG1vZGUuCi0gICAgICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSA9IG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKTsKICAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewogICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQm9vbGVhbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGNh
YTRiYWI0MTBlNmQ1MzRlMDZhNTk1NzYxOWQzOWM5Yzg3ZWMwOWQuLjhkNTNmMzQxYmQ2NTUzM2Qx
NjI2MWZiNDI0OTdhZmQ0NThiNzM4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMTE5LDcgKzIxMTksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWYWwoTm9kZSogbm9kZSwgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQmIGJhcwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywKLSAgICAgICAg
ICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAg
ICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAg
ICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91Ymxl
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5
VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJl
eW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKQEAg
LTMxNTAsMjQgKzMxNTAsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFs
Rm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnQKICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0
aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0Tm9uU3RyaWN0LAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlR1BSKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2pp
dC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5
VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsCisgICAgICAgICAgICAgICAg
bm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZUdQUikpOwogICAg
ICAgICB9CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0aGlzLAotICAg
ICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RDZWxsTm9uU3RyaWN0LAorICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1
dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BS
LCBwcm9wZXJ0eSksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAg
IG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9u
UHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsTm9uU3RyaWN0LAorICAg
ICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdCwKICAgICAgICAg
ICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIEpTVmFs
dWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eSksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BS
LCB2YWx1ZUdQUikpKTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0zMjk5LDcgKzMyOTksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2Rl
KiBub2RlLCBFZGdlJiBjaGlsZDEsCiAgICAgc3BlY3VsYXRlU3RyaW5nKGNoaWxkMiwgYXJnMkdQ
Uik7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNT
dHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbENl
bGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25TdHJpY3QsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7Cisg
ICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25Q
dXRCeVZhbENlbGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25T
dHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmcz
UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUp
OwpAQCAtMzMxOCw3ICszMzE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSogbm9kZSwgRWRnZSYgY2hpbGQxLAogICAgIHNwZWN1
bGF0ZVN5bWJvbChjaGlsZDIsIGFyZzJHUFIpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3ltYm9sTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQ
UiwgYXJnMkdQUiwgYXJnM1JlZ3MpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1JlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTExMzI5LDcgKzExMzI5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSogbm9kZSkKICAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogCiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlv
blB1dER5bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29w
ZUdQUiwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSks
IG5vZGUtPmdldFB1dEluZm8oKSk7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0
RHluYW1pY1Zhck5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BS
LCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9k
ZS0+Z2V0UHV0SW5mbygpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQpAQCAtMTIyMTUsNyArMTIyMTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIg
PSBzY3JhdGNoLmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBjYWNoZWRQdXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTIyMzAsNyAr
MTIyMzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2Rl
KQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QpOworICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsK
IAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTIyNDUsNyArMTIyNDUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERpcmVjdChOb2RlKiBub2RlKQogICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBEaXJlY3QpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgRGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5v
ZGUpOwogfQpAQCAtMTIyNjAsNyArMTIyNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlJZFdpdGhUaGlzKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/
IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhp
cywKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJh
dGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKICAg
ICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgdmFs
dWVSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0xMjYyOSw3ICsxMjYyOSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMoTm9kZSogbm9kZSkKICAgICBtX2ppdC5tb3ZlVmFsdWVS
ZWdzKHRoaXNWYWx1ZVJlZ3MsIHRlbXBSZWdzKTsKIAogICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1
bmN0aW9uOwotICAgIGlmIChtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSkKKyAgICBpZiAobm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBmdW5j
dGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0cmljdDsKICAgICBlbHNlCiAgICAgICAgIGZ1bmN0aW9u
ID0gb3BlcmF0aW9uVG9UaGlzOwpAQCAtMTM4MjUsNyArMTM4MjUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHJvZmlsZVR5cGUoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChub2Rl
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBz
Y3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2lu
ZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBz
cGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVn
IHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRL
aW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQs
IFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJl
Z2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoc3BpbGxNb2RlID09IERv
bnRTcGlsbCkgewpAQCAtMTM4MzcsNyArMTM4MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFs
dQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAg
ICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2luZCk7Cisg
ICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IGUzZjY3ZTE1OTJjOGVmOWM3MGJiZDA2MjcyZWQzNzZhM2I5Y2Qz
MmEuLmQzZThlN2Q1OWQ5ZWVmOTcyM2U4ZTJhZjE5ZTQ1Mjk5MzU0ZWU5MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTcxNyw3ICs3MTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlQ2hlY2tOZXV0ZXJlZChOb2RlKik7CiAKICAg
ICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVl
UmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3Bp
bGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcg
c2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxS
ZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwogICAgIHZvaWQgY2FjaGVkR2V0QnlWYWwoQ29k
ZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQpOwogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGI4N2Y2ODcyMjc1ODAzYjk1NWI4ZGEwZGI2Yjc3OWM5NDVkNmY2
YjkuLmFjODhmZjgzMjA3ZThjN2ZlZjM3YmRiZmIwNjM2NDZlMzI5Yjg4NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNzYw
LDcgKzc2MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAg
ICAgICAgIHVuc2lnbmVkIHJlcXVpcmVkQnl0ZXMgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykg
KyBzaXplb2YoQ2FsbEZyYW1lKikgKiAyOwogICAgICAgICByZXF1aXJlZEJ5dGVzID0gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVxdWlyZWRCeXRlcyk7
CiAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIEpJVENv
bXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpy
ZWdUMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNh
bGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0
KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgcHJlcGFyZUZvckV4
dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbkNhbGxFdmFs
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTI3MjUsOSArMjcyNiw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQ
UlJlZyBhcmczR1BSID0gYXJnMy5ncHIoKTsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkKLSAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIs
IGFyZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwg
YXJnM0dQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwg
YXJnM0dQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTI4MDksNyArMjgxMCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmIChh
cnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhp
cywKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9w
ZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAg
ICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5
b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJl
ZykpOwpAQCAtMjg5Myw3ICsyODk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKCFzbG93Q2FzZXMuZW1wdHkoKSkgewogICAgICAg
ICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5pc1N0
cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAgICBu
b2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8gKG5v
ZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9u
ZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAg
ICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
ZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0zODk3LDcgKzM4OTgsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQ
UiA9IHZhbHVlLmdwcigpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykg
PyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRo
VGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwg
cHJvcGVydHlHUFIsIHZhbHVlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21h
TW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxXaXRoVGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VH
UFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTU0NjcsNyAr
NTQ2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5v
ZGUpCiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUo
KS52YWx1ZSgpKSk7CiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNsb3dQYXRoLmdl
dCgpKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpA
QCAtNTQ4Niw3ICs1NDg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
SWQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBudWxscHRyLCBiYXNlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CkBAIC01NTI1LDcgKzU1MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwga2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAKICAgICAgICAgbV9qaXQuYWRkRGVs
QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTU1NDUsNyArNTU0Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51
bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2Vk
Qm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDM1ZDhjZTY2OTEzNzg3NmRiZDE5ZDIyZDAy
NmMyOTYyNDllZjhkNzIuLmM2M2JiZDc1NWRkZmJmZTJhMjc5ODkwZDE1N2Q3NTg4OWJkZGJhYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTIxMjQsNyArMjEyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgSl9KSVRPcGVyYXRpb25fR0og
ZnVuY3Rpb247Ci0gICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYykpCisgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSkKICAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKQEAgLTM2ODYs
NyArMzY4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQzKCkpOwogCi0gICAgICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3Ry
aWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeUlkV2l0
aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCisgICAgICAgIHZtQ2FsbChW
b2lkLCBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRo
VGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKICAgICAgICAgICAgIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUsIG1fb3V0LmNvbnN0
SW50UHRyKG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSkpOwogICAgIH0K
IApAQCAtMzY5OCw3ICszNjk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHByb3BlcnR5
ID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOwogICAgICAgICBM
VmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7
CiAKLSAgICAgICAgdm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbFdpdGhUaGlzLAorICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5lY21h
TW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxXaXRoVGhpcywKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKICAgICB9CiAgICAgCkBA
IC0zOTcxLDcgKzM5NzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9p
bnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZt
X2Z0bFN0YXRlOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fZ3JhcGguZXhlY3V0YWJs
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5lY21hTW9kZSgpOworICAgICAgICBFQ01BTW9k
ZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAgIAogICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDgzMSwxMiArNDgz
MSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIFZfSklUT3BlcmF0aW9uX0dDQ0ogb3Bl
cmF0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQyLnVzZUtpbmQoKSA9
PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBQ
dXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNT
dHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJp
bmdTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5n
Tm9uU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRCeVZhbENlbGxTdHJpbmdTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3RyaW5nTm9uU3RyaWN0OwpAQCAtNDg0NywxMiArNDg0NywxMiBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMi51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2Rl
LT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU3RyaWN0OwogICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5vblN0cmljdDsKICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3lt
Ym9sU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0
cmljdDsKQEAgLTQ4NjQsMTIgKzQ4NjQsMTIgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgVl9K
SVRPcGVyYXRpb25fR0pKSiBvcGVyYXRpb247CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJp
Y3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICBpZiAo
bV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0OwogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJl
Y3ROb25TdHJpY3Q7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAg
ICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbFN0cmljdDsKICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5
VmFsTm9uU3RyaWN0OwpAQCAtNDkxNSw3ICs0OTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29udGlndW91c1B1dEJ5
VmFsT3V0T2ZCb3VuZHMoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguaXNTdHJpY3RNb2Rl
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAgICBtX25vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobV9ub2Rl
LT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRB
cnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJp
Y3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAg
ICAgICAgICAgICAgIGJhc2UsIHN0b3JhZ2UsIGluZGV4LCB2YWx1ZSwgY29udGludWF0aW9uKTsK
QEAgLTQ5NDEsNyArNDk0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRz
KAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRC
eVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0
KQogICAgICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0
cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3Qp
LAogICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNvbnRp
bnVhdGlvbik7CkBAIC00OTgxLDcgKzQ5ODEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZh
bHVlIGlzT3V0T2ZCb3VuZHMgPSBtX291dC5hYm92ZU9yRXF1YWwoCiAgICAgICAgICAgICAgICAg
aW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9y
YWdlX3ZlY3Rvckxlbmd0aCkpOwogCi0gICAgICAgICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24g
PSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAg
ICAgICAgIGF1dG8gc2xvd1BhdGhGdW5jdGlvbiA9IG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpCiAgICAgICAgICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgOiAobV9u
b2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlv
bmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3Vu
ZHNOb25TdHJpY3QpOwogICAgICAgICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygp
KSB7CkBAIC01MjQ2LDcgKzUyNDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93
UGF0aENhbGwpOwpAQCAtNTI3NSw3ICs1Mjc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTcKICAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0
Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBtX291dC5jb25z
dEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpKSkpOworICAg
ICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50
UHRyWmVybywgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC01MzE2LDcgKzUz
MTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIExWYWx1ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkp
OwotICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1f
b3V0LmludFB0clplcm8sIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgICAgIHNldEJvb2xl
YW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5l
cmljLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBz
dWJzY3JpcHQsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTk5MDksNyArOTkwOSw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSArIHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAgICAgICAg
ICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdu
bWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5zdWJQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9iamVjdCwgR1BSSW5mbzo6cmVn
VDEpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAg
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9i
YWxPYmplY3QsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uQ2FsbEV2YWwpKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1l
bnRHUFIwKTsKICAgICAgICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWRO
b25Bcmd1bWVudEdQUjAsIE9wZXJhdGlvblB0clRhZyk7CkBAIC0xMzQ1NSw3ICsxMzQ1Niw3IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+
aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoVm9pZCwgbV9n
cmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9u
UHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsCisg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNW
YXJOb25TdHJpY3QsCiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291
dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2V0UHV0SW5mbygp
KSkpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggMDgwZmFlZGU4MWEyMjY4MjIx
ZDFjNTA4OTQxZDllZjI3MTI3OWEyMC4uOTdiZmIyMDJlNWY3NDg0ZTZjYTRiNDlkMTRiYWM3ZjMx
NjNkY2JjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBKU1ZhbHVlIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpT
T2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09i
amVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBKU09iamVj
dDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggNTE4OGMwMjM5ZGY0
NmUwMDJkYzllMmExYjM3MjFiNWQwYjBjMGY4ZS4uYzRkOWM3MjdlMDcxOGVlYWVmMDA2ODI4NDRj
NTQ3M2RiMjJiYmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK0pTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKICAgICBEaXJlY3RFdmFsRXhlY3V0
YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZGlyZWN0RXZhbENvZGVDYWNoZSgpLnRyeUdl
dChwcm9ncmFtU291cmNlLCBjYWxsZXJDYWxsU2l0ZUluZGV4KTsKICAgICBpZiAoIWV2YWwpIHsK
LSAgICAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAg
IGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgaWYgKHByb2dyYW1Tb3Vy
Y2UuaXM4Qml0KCkpIHsKICAgICAgICAgICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVw
YXJzZXIoZ2xvYmFsT2JqZWN0LCBwcm9ncmFtU291cmNlLmNoYXJhY3RlcnM4KCksIHByb2dyYW1T
b3VyY2UubGVuZ3RoKCksIE5vblN0cmljdEpTT04sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgICAg
ICAgICAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQ
YXJzZSgpKQpAQCAtMTY1LDcgKzE2NSw3IEBAIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgCiAgICAgICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgIEpTU2NvcGU6OmNv
bGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVz
VW5kZXJURFopOwotICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShn
bG9iYWxPYmplY3QsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5z
b3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2st
Pm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNh
bGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgIGV2YWwg
PSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShw
cm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJj
ZU9yaWdpbigpKSwgZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2Fs
bGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
KCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAgICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAg
ICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTA1
Nyw3ICsxMDU3LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJs
ZSogZXZhbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAgICB1bnNpZ25lZCBudW1G
dW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcyA9IGV2YWwtPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5k
aWRhdGVzKCk7CiAKICAgICBKU1Njb3BlKiB2YXJpYWJsZU9iamVjdDsKLSAgICBpZiAoKG51bVZh
cmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpICYmIGV2YWwtPmlzU3RyaWN0TW9k
ZSgpKSB7CisgICAgaWYgKChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xz
KSAmJiBldmFsLT5pc0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAgICAgIHNjb3BlID0gU3RyaWN0
RXZhbEFjdGl2YXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZSgpLCBzY29wZSk7CiAgICAgICAgIHZhcmlhYmxlT2JqZWN0ID0gc2NvcGU7
CiAgICAgfSBlbHNlIHsKQEAgLTExMDQsNyArMTEwNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNvZGVC
bG9jay0+dW5saW5rZWRFdmFsQ29kZUJsb2NrKCk7CiAKICAgICAvLyBXZSBjYW4ndCBkZWNsYXJl
IGEgInZhciIvImZ1bmN0aW9uIiB0aGF0IG92ZXJ3cml0ZXMgYSBnbG9iYWwgImxldCIvImNvbnN0
Ii8iY2xhc3MiIGluIGEgc2xvcHB5LW1vZGUgZXZhbC4KLSAgICBpZiAodmFyaWFibGVPYmplY3Qt
PmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzU3RyaWN0TW9kZSgpICYmIChudW1WYXJpYWJs
ZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSkgeworICAgIGlmICh2YXJpYWJsZU9iamVj
dC0+aXNHbG9iYWxPYmplY3QoKSAmJiAhZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSAmJiAobnVt
VmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKICAgICAgICAgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KHZhcmlhYmxlT2JqZWN0KS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkg
ewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSB1bmxpbmtlZENvZGVCbG9j
ay0+dmFyaWFibGUoaSk7CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbAogCiAgICAgaWYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMg
fHwgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMpIHsKICAgICAgICAgQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIgb3B0aW1pemVyKHZtLCB2YXJpYWJsZU9iamVjdCk7Ci0gICAgICAgIGlm
ICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpICYmICFldmFsLT5pc1N0cmljdE1vZGUoKSkKKyAgICAg
ICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5uZXh0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250ZXh0
KCkpCiAgICAgICAgICAgICB2YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+dmFySW5q
ZWN0aW9uV2F0Y2hwb2ludCgpLT5maXJlQWxsKHZtLCAiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFy
SW5qZWN0aW9uIHdhdGNocG9pbnQiKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtVmFyaWFibGVzOyArK2kpIHsKQEAgLTExNDQsNyArMTE0NCw3IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmIChldmFsLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICBpZiAoZXZhbC0+aXNJblN0cmlj
dENvbnRleHQoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRv
cExldmVsRnVuY3Rpb25EZWNsczsgKytpKSB7CiAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhcmlhYmxlT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggOTBhOWRiNWM1
YTlmYjAyNTZjNTdkMWQ2Y2U0OTlhN2ZlNzMxZTA4NS4uNjQ1MzkxMjdiOGM3NGM4MjAyOWIyYmI2
MTgwZTY5Njk3MWE2NGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNl
bmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQogICAgIH07CiAKLSAgICBKU1Zh
bHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBKU1ZhbHVlIGV2YWwo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7CiAKICAgICBpbmxpbmUgQ2Fs
bEZyYW1lKiBjYWxsZWVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2ln
bmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApp
bmRleCBlOTVmOGZlMzVkYzFkYWE5ZTY1MDU0NmUxYjM1MDkxNzFhY2NkOTBjLi4zNTZkYTFiMTYy
ODJlYWQxYjcyYzg4ZTExYjBhNDE0NWQ4MDA3MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE0NzIsMTkgKzE0NzIsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBjb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwog
ICAgIH0KICAgICAKLSAgICBib29sIGlzU3RyaWN0TW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmln
aW4pCi0gICAgewotICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSgpOwotICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKLSAgICAgICAg
ICAgIHJldHVybiBjb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgICAgIHJldHVybiBp
bmxpbmVDYWxsRnJhbWUtPmlzU3RyaWN0TW9kZSgpOwotICAgIH0KLSAgICAKLSAgICBFQ01BTW9k
ZSBlY21hTW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1
cm4gaXNTdHJpY3RNb2RlRm9yKGNvZGVPcmlnaW4pID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1v
ZGU7Ci0gICAgfQotICAgIAogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pOwogICAgIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2tGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGIyYmZjZTYzMzdkOWJlMDJkNjFmMzg5NWNlNWVjYTNh
MGQ3ODMyMDYuLmUxZTU2NWRjNTI0OWY2YWNmZGFhMjRiZmZiNDQ3MWZmY2IyMGI4NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIGJvb2wg
SklUOjpjb21waWxlQ2FsbEV2YWwoY29uc3QgT3BDYWxsRXZhbCYgYnl0ZWNvZGUpCiAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3IobV9jb2RlQmxvY2spICogc2l6
ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIAotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ2FsbEV2YWwsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcmVnVDEpOwor
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIHJlZ1Qy
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCksIHJlZ1QxLCByZWdUMik7CiAKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVt
cHR5KHJlZ1QwKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOThmOTRhMjY4ODMxNjkxZjY3OTViMjc5ZjFi
NzA5ZDFhZDExZTQwZi4uMjI2ZTZiNzk4NTFiNjFiY2NiZDUxMDdjZmE1ZmNjMzAyNjBlNzk1YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25f
R1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBp
ZiAobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKSB7CisgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJp
Y3QoKSkgewogICAgICAgICBpZiAobV9wdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJl
dHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggYTY0N2M0NWIzZjRl
M2I0M2RiNWQ0NjA1NWRmNzU4YjZiOTJlZjhlYS4uZjAzZTA5MjUzODU0MWZiMDM0MGYxMmM2YmE4
YTYxMTExZjMzNjc3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMTI4LDcgKzEyOCw5IEBAIHB1YmxpYzoKIAogY2xh
c3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1Ymxp
YzoKLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkgeyB9CisgICAgSklUUHV0QnlJZEdlbmVyYXRv
cigpCisgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCisgICAgeyB9CiAK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVh
YmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKaW5kZXggMjNmZjVjODFjMWMwMzIyMmY5MTJhNDk5MzFmMjgzNmRhZGNmYWNi
Ny4uN2RjYmU4ZmEzYWU1NjhjYmFhNjVjYTQxZTVlMWJhMjc1NjU1MzNmNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5v
dEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVnKQogewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUo
cmVnKSkKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcpKQogICAgICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiB9CiAKQEAgLTQ5Niw3ICs0OTYsNyBAQCBpbmxpbmUgdm9pZCBK
SVQ6OmVtaXRTdG9yZShWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBjb25zdCBKU1ZhbHVlIGNvbnN0YW50
LCBSZWdpc3RlcgogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25O
b3RJbW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJl
ZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBhZGRTbG93
Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC01MDYsNyArNTA2LDcgQEAgaW5saW5lIHZv
aWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZykK
IAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVhbFJl
Z2lzdGVyIHJlZywgUmVnaXN0ZXJJRCB0YWcpCiB7Ci0gICAgaWYgKCFtX2NvZGVCbG9jay0+aXNL
bm93bk5vdEltbWVkaWF0ZShyZWcpKSB7CisgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNl
bGwocmVnKSkgewogICAgICAgICBpZiAocmVnLmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIGFk
ZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGVsc2UKQEAgLTYwMCw3ICs2MDAsNyBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoUmVnaXN0ZXJJ
RCByZWcpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChSZWdpc3RlcklEIHJlZywgVmlydHVhbFJlZ2lzdGVyIHZSZWcpCiB7Ci0gICAgaWYgKCFt
X2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZSh2UmVnKSkKKyAgICBpZiAoIW1fY29kZUJs
b2NrLT5pc0tub3duQ2VsbCh2UmVnKSkKICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKHJlZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCmluZGV4IGRhODJmMzFlMWI4YzhjYWI0MTI3MTgwZTU5YTE1OGRmNDMyMWQzZWYuLjE1ZDA2
NzA0N2RkZTJlNWUzNjdlODAxYTljYWYzZTdlNDcxZTA3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhCiAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5m
bywgRGlyZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1Zh
bHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCitzdGF0
aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzE3
LDEyICs3MTcsMTIgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKIAogICAgICAgICAgICAgYnlW
YWxJbmZvLT5hcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAgICAgICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpOworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgo
b2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGds
b2JhbE9iamVjdCwgaSwgdmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfSBlbHNlIGlmIChzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIGJ5VmFs
SW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKQEAgLTczOCwxNSArNzM4LDE0IEBAIHN0YXRpYyB2
b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsK
IAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgYmFzZVZhbHVlLnB1dElubGlu
ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFs
dWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQorc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlW
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpT
VmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNN
QU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBib29sIGlzU3RyaWN0
TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CiAKICAgICBpZiAoTElLRUxZKHN1YnNj
cmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCBKU1ZhbHVl
Ojppc1VJbnQzMiB3aWxsIHJldHVybiB0cnVlIG9ubHkgZm9yIHBvc2l0aXZlIGJveGVkIGludDMy
X3Q7IGFsbCB0aG9zZSB2YWx1ZXMgYXJlIHZhbGlkIGFycmF5IGluZGljZXMuCkBAIC03NjgsNyAr
NzY3LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAgICAgfQogCiAgICAgICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hv
dWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAgICAgYmFzZU9i
amVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIDAsIGVjbWFN
b2RlLmlzU3RyaWN0KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5k
ZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3OCw3ICs3
NzcsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogICAgICAgICBpZiAoc3Vic2NyaXB0QXNE
b3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikp
IHsKICAgICAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1v
ZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RU
aHJvdyk7CisgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwgMCwgZWNtYU1vZGUuaXNTdHJpY3QoKSA/IFB1
dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTc5MCw3ICs3ODksNyBA
QCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkgewogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93
UGF0aCA9IHRydWU7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYmFzZU9iamVj
dC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwg
aXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4
U2hvdWxkTm90VGhyb3cpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8g
UHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03OTgsNyArNzk3LDcgQEAgc3RhdGljIHZv
aWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEoKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwog
CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmpl
Y3QsIGlzU3RyaWN0TW9kZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
ZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRo
UmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90
KTsKIH0KIApAQCAtODg0LDcgKzg4Myw3IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAg
cmV0dXJuIG9wdGltaXphdGlvblJlc3VsdDsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlw
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC05MDIsNyArOTAxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2QK
ICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICBjdGlQYXRj
aENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1
YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5
VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KIAogc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlE
aXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIG9iamVjdCwg
SlNWYWx1ZSBzdWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCkBAIC05NzQsNyArOTczLDcgQEAgc3RhdGljIE9wdGltaXphdGlvblJl
c3VsdCB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QKICAgICByZXR1cm4gb3B0aW1pemF0aW9uUmVzdWx0OwogfQogCi12b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTk5NSwxMCArOTk0LDEwIEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBk
aXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgb2JqZWN0LCBzdWJzY3JpcHQs
IHZhbHVlLCBieVZhbEluZm8pKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVj
dFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbElu
Zm8sIGVjbWFNb2RlKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTEwMDgsMTEgKzEwMDcsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAKLSAgICBwdXRC
eVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIGJhc2VWYWx1ZSwgc3Vi
c2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKTsKKyAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJh
c2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKIAot
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01B
TW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTAyMiwx
MCArMTAyMSwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBzdWJzY3Jp
cHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJh
c2VWYWx1ZS5pc09iamVjdCgpKTsKLSAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCksIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFs
dWUsIGJ5VmFsSW5mbyk7CisgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09iamVj
dChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lKQorRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTAzNSw3ICsxMDM0LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKICAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUZyYW1lLT5ndWFyYW50ZWVk
SlNWYWx1ZUNhbGxlZSgpLCBnbG9iYWxGdW5jRXZhbCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbChnbG9iYWxP
YmplY3QsIGNhbGxlZUZyYW1lKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsZWVGcmFtZSwgZWNtYU1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTIxNjMsNyArMjE2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCoKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1Byb3BlcnR5R2Vu
ZXJpYyhnbG9iYWxPYmplY3QsIGluZGV4LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9CiAgICAgCi1zdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0s
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE3MywxMiArMjE3MiwxMiBAQCBz
dGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBj
b3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFz
ZU9iaiwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwotICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBlY21hTW9k
ZS5pc1N0cmljdCgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsK
IH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlm
aWVyKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlm
aWVyLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMjE5MiwyMSArMjE5MSwyMSBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwogICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKIAotICAgIGJvb2wg
cmVzdWx0ID0gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJh
c2VWYWx1ZSwgaWRlbnQpOworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlJZChnbG9iYWxPYmpl
Y3QsIHZtLCBzbG90LCBiYXNlVmFsdWUsIGlkZW50LCBlY21hTW9kZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoYmFzZVZhbHVl
LmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKCFwYXJzZUluZGV4KGlkZW50KSkgewogICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAg
ICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBi
YXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCksIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAg
IHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVl
LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwp
OworICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywg
RGVsQnlLaW5kOjpOb3JtYWwsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVu
dGlmaWVyKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIsIEVD
TUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMjE0
LDEwICsyMjEzLDEwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0CiAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0Jp
dHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwotICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgaWRlbnQpOworICAgIHJl
dHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSksIGlkZW50LCBlY21hTW9kZSk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtl
eSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUg
a2V5LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKQEAgLTIyMzYsMTIgKzIyMzUsMTIgQEAgc3RhdGljIGJvb2wgZGVsZXRl
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IFZNJgogICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAg
fQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlm
ICghY291bGREZWxldGUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsK
ICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIyNTMsNyArMjI1Miw3IEBAIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKIAotICAgIGJvb2wg
cmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBi
YXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9i
YWxPYmplY3QsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgZWNtYU1vZGUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYg
KGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxl
SWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgewpAQCAtMjI2NCwyMCArMjI2MywyMCBAQCBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQu
YXNDZWxsKCkpOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2
bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCksIGlkZW50aWZpZXIpKQot
ICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
c2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVs
QnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRl
bnRpZmllciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsLCBlY21hTW9kZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAg
ICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCkpOworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCksIGVjbWFNb2RlKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50
U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkKQEAgLTI1NDQsNyArMjU0Myw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IEluc3RyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwg
UHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJ
bmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2Nv
cGUsIGdldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVu
a25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25N
b2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9i
amVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCmluZGV4IDVjMWZjMzc2MTYwYjQ0YTc2ODBjMzY3NWMwNWI4NGQ2MjcxNjJmZjQuLjhl
ZmI1YjVhYzk4MGFlZTZjNTUyMzQ0MzdjOTAyODk1ODkwMjI2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIFZNOwog
Y2xhc3MgV2F0Y2hwb2ludFNldDsKIAogc3RydWN0IEJ5VmFsSW5mbzsKK3N0cnVjdCBFQ01BTW9k
ZTsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKQEAgLTE4
NywxMSArMTg4LDEyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCi12
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFs
SW5mbyopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQ
dXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyop
IFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBC
eVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZf
SU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKKworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVj
dCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2Jh
bE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKQEAgLTI1MCwxMCArMjUyLDEw
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZh
dWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1zaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCkgV1RG
X0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJO
QUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QsIEVDTUFNb2RlKSBXVEZfSU5U
RVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
dWludHB0cl90LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQsIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0
KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhT
Y29wZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRT
Y29wZUNlbGwsIEpTT2JqZWN0KiBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdU
Rl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKaW5kZXggYzM1NDNkYWU3ZDA4MmViZGVjNjFkMGJjZDViOGY4NzUyMDQwYmU3NC4u
YTQwODA1OTM2NTBhNmVjNTY4YWE2MTA2OTE3ZmU5N2IzOGYxMzM4YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI4Nyw3ICsyODcs
NyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9w
IGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdl
bigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2lu
ZCk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdU
MiwgYnl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3Jp
dGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0
aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUg
c2l6ZS4KQEAgLTMxMSwxMSArMzExLDEzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5OwogICAg
IFZpcnR1YWxSZWdpc3RlciB2YWx1ZTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2Rl
OjpzdHJpY3QoKTsKIAogICAgIGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2RlKSB7CiAgICAg
ICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUu
bV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworICAgICAgICBl
Y21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVj
dCkKQEAgLTMzMSw3ICszMzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvcGVydHksIHJlZ1QxKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCBy
ZWdUMik7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVn
VDIsIGJ5VmFsSW5mbyk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCBy
ZWdUMSwgcmVnVDIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpKTsK
IAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNs
b3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5
VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CkBAIC00MjcsNyArNDI5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygp
LCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9l
Y21hTW9kZS52YWx1ZSgpKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7
CkBAIC00NzcsNyArNDc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwg
cmVnVDEsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogCiAgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTY1NCw3ICs2NTYsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5
SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgIGJv
b2wgZGlyZWN0ID0gISEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCk7CisgICAg
Ym9vbCBkaXJlY3QgPSBieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCk7CiAgICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpKTsKIAogICAgIC8vIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gcGF0Y2ggYm90aCB0aGUg
U3RydWN0dXJlLCBhbmQgdGhlIG9iamVjdCBvZmZzZXQsIHdlIHN0b3JlIG9uZSBwb2ludGVyLApA
QCAtNjY4LDcgKzY3MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIG1fY29kZUJsb2NrLT5l
Y21hTW9kZSgpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qx
KSwgcmVnVDIsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwKICAgICAgICAgZGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAppbmRleCA4ZDE4ODAzNmEyMzU5ZGYwYjFlMWFmMWFiNGQ4NzdmYzZjNjBjOWFh
Li41MzU0ODZjZDhmMTUzMmFkMWJlYjUxNWE4NmI5MDhhYmM4MzY5NmUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAg
LTQyMyw3ICs0MjMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGVtaXRMb2FkKGJh
c2UsIHJlZ1QyLCByZWdUMSk7CiAgICAgZW1pdExvYWQocHJvcGVydHksIHJlZ1QzLCByZWdUMCk7
CiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1Q1LCByZWdUNCk7Ci0gICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBv
cGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpT
VmFsdWVSZWdzKHJlZ1QyLCByZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1Q1LCByZWdUNCksIGJ5VmFsSW5mbyk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFs
dWVSZWdzKHJlZ1QyLCByZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1Q1LCByZWdUNCksIGJ5VmFsSW5mbywgYnl0ZWNvZGUubV9pc1N0cmljdE1vZGUpOwog
CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xv
d1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlW
YWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDA4ZmFiZDU2NDI4NjhjMGM2ZmQ2OTc2NzFjMWY5ZTYw
ZDA5NGFkNzAuLjhiYmUzY2I5M2U0MGM4Nzk1OTYyMWZlMGZhNmIwYmI2YWVjZDNlNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQg
cmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1
dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKLXN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZh
bHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kKQorc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNW
YWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQs
IEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKQEAgLTc3MSw3ICs3NzEsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+
aXNPYmplY3QoKSk7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQp
KTsKICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNv
ZGVCbG9jaywgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0
dXJlKTsKLSAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgICAgICBp
ZiAoc2xvdC5pc05vbmNvbmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBB
Y2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29u
ZmlndXJhYmxlLCBwcm9wZXJ0eU5hbWUsIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9
LCBudWxscHRyKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTc5MiwxMiArNzkyLDEyIEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jCiAgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/
IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7CiB9CiAKLXZvaWQgcmVwYXRjaERlbGV0
ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit2b2lkIHJlcGF0Y2hEZWxldGVCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBT
dXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKSB7CisgICAgaWYgKHRyeUNhY2hl
RGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVw
T25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5l
cmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtp
bmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCiAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
RGVsZXRlQnlJZEdlbmVyaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCBl
NWNlNDY4NzExNDYzOTJlNGU3MmU2MTRhMmY1ZTU4ZWE2NzQ5OTQ1Li5kODkwZmQ3MGFhY2Q4MmZm
YmY0ZGE4ZmIyNGUxZjNkZmY1NzQ5ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aApAQCAtNDksNyArNDksNyBAQCBlbnVtIGNsYXNzIERlbEJ5S2luZCB7CiB2b2lkIHJlcGF0Y2hB
cnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNlLCBK
U1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoR2V0QnkoSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBj
b25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lk
IHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3Ry
dWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3Ry
dWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKLXZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFs
T2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0
dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQp
Owordm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCwgRUNNQU1vZGUpOwogdm9pZCByZXBhdGNo
SW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVC
bG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExp
bmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCmluZGV4IDNkYjIzYmFlMDVkNTgwMjljNTAzOWY1NzIzYjlkOTk2NWY0
MmI0MmMuLjhkZWE3ZjI3OGU3NjYyZTUwMzE0Y2ViOWIwODMzOWY4N2JmZGE0OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtODM2LDEw
ICs4MzYsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29u
dGV4dCgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGJ5dGVjb2RlLm1f
ZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkp
OwogCiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBi
YXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgOiBudWxscHRyOwotICAgIGlmIChieXRl
Y29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KQorICAgIGlmIChieXRlY29kZS5tX2ZsYWdz
LmlzRGlyZWN0KCkpCiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5
KHZtLCBnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIGlkZW50LCBnZXRPcGVyYW5k
KGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSksIHNsb3QpOwogICAgIGVsc2UKICAgICAgICAg
YmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV92YWx1ZSksIHNsb3QpOwpAQCAtODg4LDcgKzg4OCw3IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3MuaXNEaXJlY3QoKSkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
ID0gbmV3U3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJh
c2VDZWxsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hh
aW4uc2V0KHZtLCBjb2RlQmxvY2ssIGNoYWluKTsKQEAgLTkyNyw3ICs5MjcsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQogICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOwogICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJh
c2VPYmplY3QsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0
ZSAmJiBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJv
cikpOwogICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKIH0KQEAgLTEw
MjUsNyArMTAyNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFs
KQogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2Fs
bEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5t
X2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNV
SW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwpA
QCAtMTA1OCw3ICsxMDU4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0
KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAg
ICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9v
bCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYg
KExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMg
bmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2
ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2Vz
LgogICAgICAgICBBU1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOwpAQCAtMTEx
Miw3ICsxMTEyLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwp
CiAgICAgfQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKCFjb3VsZERl
bGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUg
JiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3Ip
KTsKICAgICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CkBAIC0x
NzM4LDcgKzE3MzgsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFs
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbgogICAgIGlmICghaXNIb3N0
RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBDb2RlRm9yQ2Fs
bCwgY2FsbGVlQXNWYWx1ZSkpOwogICAgIAotICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBl
dmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUpOworICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFs
dWUgPSBldmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUp
OwogICAgIExMSU5UX0NBTExfUkVUVVJOKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIExMSW50
OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcpOwog
fQogICAgIApAQCAtMTg3NCw3ICsxODc0LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF90b19zY29wZSkKICAgICBpZiAobWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVN
b2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0eSkKICAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihnbG9iYWxPYmplY3QsIGlkZW50KSk7
CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbiht
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChzY29wZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlv
bihtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29w
ZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVl
LCBzbG90KTsKICAgICAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUds
b2JhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYnl0ZWNvZGUsIHNjb3BlLCBzbG90LCBpZGVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKaW5kZXggMDdkOGU4YzgyMWM0NmY0YmNkY2NiOTNlZDA4MjAyMTJmZGU1ZDc0OS4uYWRlNTQ5
NTlmYjZmYjI3YjVkOWNhYWI3N2U5OTE0NTMwNzYzYzk0NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNjAwLDcgKzYwMCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICAv
LyAxLiBMZXQgYXJyYXkgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0
aGlzIHZhbHVlLgogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CkBAIC02ODMsNyArNjgzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
dGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC03ODEsNyArNzgxLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2EKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyAxLiBMZXQgTyBiZSA/IFRvT2JqZWN0KHRoaXMgdmFsdWUpLgotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9O
X0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5M
SUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAg
LTg2Niw3ICs4NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jUG9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSk7CiAKICAgICBpZiAoaXNKU0FycmF5KHRoaXNWYWx1ZSkpCiAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVlKS0+cG9w
KGdsb2JhbE9iamVjdCkpKTsKQEAgLTkwMSw3ICs5MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgaWYgKExJS0VMWShpc0pTQXJyYXko
dGhpc1ZhbHVlKSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSkgewogICAgICAg
ICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKQEAgLTk0Miw3ICs5NDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVO
TElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBA
IC0xMDM5LDcgKzEwMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1
ZSgpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc2xp
Y2UKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4g
eyB9OwpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1NwbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09i
aik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxNS40LjQu
MTMKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
QEAgLTEzNTYsNyArMTM1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE0Ci0gICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENF
UFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMzk0LDcg
KzEzOTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFz
dEluZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNQotICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBT
dHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDIyNmI0ODM1NDYyZDhjNDVlNjE5ZjY2
ODAwYmU5OTdhOTFhZTg4YTEuLjgwMmYyMDJmOTI5YjAwODAzNGZhN2Q2ZWI4MTA5MGFiNzMzMGQy
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAK
QEAgLTE4MTgsNyArMTgxOCw2IEBAIHB1YmxpYzoKICAgICBSZWY8VW5saW5rZWRNZXRhZGF0YVRh
YmxlPiBtZXRhZGF0YShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRh
LmRlY29kZShkZWNvZGVyKTsgfQogCiAgICAgdW5zaWduZWQgdXNlc0V2YWwoKSBjb25zdCB7IHJl
dHVybiBtX3VzZXNFdmFsOyB9Ci0gICAgdW5zaWduZWQgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICB1bnNpZ25lZCBpc0NvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgdW5zaWduZWQgaGFzQ2FwdHVyZWRW
YXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAg
dW5zaWduZWQgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CkBAIC0xODUxLDcgKzE4NTAsNiBAQCBwcml2YXRlOgogICAgIFZpcnR1YWxSZWdp
c3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAg
ICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVj
dG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1
bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKQEAgLTIwNDgsNyArMjA0Niw2IEBAIEFM
V0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKERlY29kZXIm
IGRlY29kZXIsIFN0cnVjdHVyZSoKICAgICAsIG1fc2NvcGVSZWdpc3RlcihjYWNoZWRDb2RlQmxv
Y2suc2NvcGVSZWdpc3RlcigpKQogCiAgICAgLCBtX3VzZXNFdmFsKGNhY2hlZENvZGVCbG9jay51
c2VzRXZhbCgpKQotICAgICwgbV9pc1N0cmljdE1vZGUoY2FjaGVkQ29kZUJsb2NrLmlzU3RyaWN0
TW9kZSgpKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGNhY2hlZENvZGVCbG9jay5pc0NvbnN0cnVj
dG9yKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGNhY2hlZENvZGVCbG9jay5oYXND
YXB0dXJlZFZhcmlhYmxlcygpKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjYWNoZWRDb2Rl
QmxvY2suaXNCdWlsdGluRnVuY3Rpb24oKSkKQEAgLTIyMzQsNyArMjIzMSw2IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zCiAgICAgbV90aGlzUmVnaXN0ZXIgPSBjb2RlQmxvY2subV90aGlzUmVn
aXN0ZXI7CiAgICAgbV9zY29wZVJlZ2lzdGVyID0gY29kZUJsb2NrLm1fc2NvcGVSZWdpc3RlcjsK
ICAgICBtX3VzZXNFdmFsID0gY29kZUJsb2NrLm1fdXNlc0V2YWw7Ci0gICAgbV9pc1N0cmljdE1v
ZGUgPSBjb2RlQmxvY2subV9pc1N0cmljdE1vZGU7CiAgICAgbV9pc0NvbnN0cnVjdG9yID0gY29k
ZUJsb2NrLm1faXNDb25zdHJ1Y3RvcjsKICAgICBtX2hhc0NhcHR1cmVkVmFyaWFibGVzID0gY29k
ZUJsb2NrLm1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgbV9pc0J1aWx0aW5GdW5jdGlvbiA9
IGNvZGVCbG9jay5tX2lzQnVpbHRpbkZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggZjY5OTllNzM0ODRlMmFiZDg4
MTQ1NGYxMTQ4MzEwYzAyZDRmMmE3NC4uODk2ZWQ4MTE3M2ZiYjc3Nzg2MWIzYjk1NjExOWY0YWRh
MmExZTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmEK
IAogICAgIGlmICghdGhpc09iamVjdC0+c3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSkgewogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4odGhpc09iamVjdC0+bV9jYWxsZWUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKTsKIAogICAgICAg
ICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlKSB7CiAgICAgICAgICAgICBp
ZiAoaXNTdHJpY3RNb2RlKSB7CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBDbG9uZWRBcmd1bWVu
dHM6Om1hdGVyaWFsaXplU3BlY2lhbHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgCiAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG1fY2FsbGVlLT5l
eGVjdXRhYmxlKCkpOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJp
Y3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0
Q29udGV4dCgpOwogICAgIAogICAgIGlmIChpc1N0cmljdE1vZGUpCiAgICAgICAgIHB1dERpcmVj
dEFjY2Vzc29yKGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlLCB0aGlzLT5n
bG9iYWxPYmplY3Qodm0pLT50aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdl
dHRlclNldHRlcigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBmYTNjZDMyNmJjZDVi
OTc4OWEyNDI3ZTYxM2FjOTU0OGIyZmIzYWUyLi45ZTE3MmI2YWVhNzRiMDYyZGU5ZmZlZjhkYTU2
ZDQ5MzRmOTRkNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKQEAgLTkxLDExICs5MSwxMSBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRl
VW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgICAg
ICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSB8IGFycm93Q29u
dGV4dEZlYXR1cmUsIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+
bGFzdExpbmUoKSwgZW5kQ29sdW1uKTsKIAogICAgIGJvb2wgdXNlc0V2YWwgPSByb290Tm9kZS0+
ZmVhdHVyZXMoKSAmIEV2YWxGZWF0dXJlOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gcm9vdE5v
ZGUtPmZlYXR1cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZTsKKyAgICBFQ01BTW9kZSBlY21hTW9k
ZSA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmUgPyBFQ01BTW9kZTo6
c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6Tm87CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlw
ZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KQogICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciA9IGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7Ci0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGlzU3RyaWN0TW9kZSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwg
ZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBl
dmFsQ29udGV4dFR5cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENv
ZGVCbG9jayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlSW5m
bywgY29kZUdlbmVyYXRpb25Nb2RlKTsKICAgICB1bmxpbmtlZENvZGVCbG9jay0+cmVjb3JkUGFy
c2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygp
LCBsaW5lQ291bnQsIHVubGlua2VkRW5kQ29sdW1uKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBVbmxp
bmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgcwogICAgIGlmICghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKICAgICAgICAgdW5saW5rZWRDb2RlQmxvY2st
PnNldFNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmUoKSk7CiAKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgdmFyaWFibGVzVW5kZXJURFopOworICAgIGVycm9yID0gQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtl
ZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCB2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1v
ZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAppbmRleCBlM2JlZDg4ZDgzYWJlZWYxOWI4NjhlOTczMjMxN2M1MjJkOTA4ZTNkLi5iOGRlOTY1
NTgyZjdkOTEyNzEzMzdkNTQzMTkwM2U4MzE4YzI2ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM3OSw3ICszNzksNyBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fdGhpcykKICAgICAvLyBkaWZmZXJlbnQgb2Jq
ZWN0IHRoYXQgc3RpbGwgaGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBvbiB0aGUgZmFzdCBwYXRoIHNp
bmNlIGl0J2xsIHByb2R1Y2UKICAgICAvLyB0aGUgc2FtZSBTcGVjdWxhdGVkVHlwZS4gVGhlcmVm
b3JlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHZhbHVlIHByb2ZpbGluZyBvbiB0aGUK
ICAgICAvLyBmYXN0IHBhdGguCi0gICAgYXV0byB2YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9k
ZSk7CisgICAgYXV0byB2YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxPYmplY3QsIGJ5dGVjb2RlLm1f
ZWNtYU1vZGUpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9z
cmNEc3QsIHZhbHVlLCBQUk9GSUxFX1ZBTFVFKHZhbHVlKSk7CiB9CiAKQEAgLTk4OCw3ICs5ODgs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICB9CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CiAgICAgCi0gICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21h
TW9kZS5pc1N0cmljdCgpKQogICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKICAgICAKICAgICBSRVRVUk4oanNC
b29sZWFuKGNvdWxkRGVsZXRlKSk7CkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdGhpc1ZhbCA9
IEdFVF9DKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBwdXRW
YWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fdmFsdWUpLmpzVmFsdWUoKTsKLSAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzVmFsLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxvY2st
PnB1dEJ5SWRDb250ZXh0KCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGJ5
dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgp
KTsKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1dFZhbHVl
LCBzbG90KTsKICAgICBFTkQoKTsKIH0KQEAgLTEzMjEsNyArMTMyMSw3IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAKICAgICBhdXRvIHByb3Bl
cnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19F
WENFUFRJT04oKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwg
Ynl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICBiYXNlVmFsdWUucHV0KGdsb2Jh
bE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICBFTkQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMu
aAppbmRleCAzN2FmYTc2YzQwNTc1OTM1NTA2ZTU5Yjg0ZDJiNWYxZTgwOWFmZmYzLi5iYjU0NzQw
N2MxNzU3NWVhYzQ0ZGFlYzFmNGI3ZTA3MTk5ZGM0NjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oCkBAIC00Nyw3
ICs0Nyw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICAgICAg
ICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3Mo
cmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xv
YmFsUHJvcGVydHk7CiAgICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAv
LyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAg
ICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9
IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29s
dmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwpAQCAtNjEsNyArNjEsNyBAQCBpbmxpbmUgdm9pZCB0
cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVu
dHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQu
aW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAg
ICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZv
LmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
byA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jl
c29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIG1l
dGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1f
d2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKICAgICAgICAgICAgIG1ldGFk
YXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEwOSw3ICsxMDksNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNo
ZUdldEZyb21TY29wZUdsb2JhbCgKICAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVU
eXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CiAgICAgICAgICAgICBy
ZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hh
bmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZl
VHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQ
dXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwpA
QCAtMTIzLDcgKzEyMyw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFs
KAogICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZp
cm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBB
U1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3
UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNt
YU1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53
YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0
KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGM4M2I5MDVl
MzgzNTFjMWJhMGVlMTU4NDJkOTgzZmE2MjlkNzEyZmQuLmIyZjhmZmRhMWY3ODE2NzdjNWFkMTM0
NDk0YWFiNGNjZmM1ZDhjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUK
IAogICAgIGlmICghdGhpc1ZhbHVlIHx8IHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICB0aGlzVmFsdWUgPSBnbG9iYWxPYmplY3Q7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmog
PSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3Ry
aWN0TW9kZSkpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTT2JqZWN0Kj4odGhp
c1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVQcm9ncmFtKHNvdXJjZSwgZ2xv
YmFsT2JqZWN0LCB0aGlzT2JqKTsKIAogICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuY3BwCmluZGV4IDFhNzJiZmI0N2VmZWZhNTUwZGVmOTgzNTY2NTRhZjY0OTA3Nzk3MzUuLjdj
MTliNzVjNjJjODA0MTM2MmRkOWViMTJlZGE1OTc5MjUxMTVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxl
KiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFs
Q29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERa
KQorRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxD
b250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFos
IEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NSwxMSArNDUs
MTEgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVj
dEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2Jq
ZWN0LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFw
KSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFNb2RlLmlz
U3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENv
bnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICBQ
YXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4
ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3Ry
aWN0TW9kZSA9IGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmlj
dCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENv
ZGVHZW5lcmF0aW9uTW9kZSgpOwogCiAgICAgLy8gV2UgZG9uJ3QgYm90aGVyIHdpdGggQ29kZUNh
Y2hlIGhlcmUgYmVjYXVzZSBkaXJlY3QgZXZhbCB1c2VzIGEgc3BlY2lhbGl6ZWQgRGlyZWN0RXZh
bENvZGVDYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDQ3ODI2YmYzMjBjMWMxN2Q1ODMxMzljNDZlNTNlNmRh
ZWRhYmJkNDkuLjI0MDc1YTdmNWEzNmM3M2ZlYmE0MDdlNzEwOWE2ZmMzM2YyNzBkNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGlyZWN0RXZh
bEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAg
IHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlw
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSog
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIHByaXZhdGU6CiAgICAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBp
blN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRUNNQU1vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRUNNQU1vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0NDRkZTI4ZmZmMTZlYjdiMTBmNjJhNjdl
OTdjMjAwMWYwMTZhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FQ01BTW9kZS5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRUNNQU1vZGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKwordm9pZCBFQ01BTW9kZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
eworICAgIGlmIChpc1N0cmljdCgpKQorICAgICAgICBvdXQucHJpbnQoIlN0cmljdE1vZGUiKTsK
KyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgiTm90U3RyaWN0TW9kZSIpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0VDTUFNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BTW9kZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVmZjFiMTFhNjZlYTkxN2Q3ZTNkM2NkMTlhNTc5MjJiNTllNzdjMTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BTW9kZS5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgUHJpbnRTdHJlYW07
Cit9OworCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEVDTUFNb2RlIHsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQ4X3QgU3RyaWN0TW9kZSA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IFNsb3BweU1vZGUgPSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBF
Q01BTW9kZSBmcm9tQnl0ZSh1aW50OF90IGJ5dGUpIHsgcmV0dXJuIEVDTUFNb2RlKGJ5dGUpOyB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciBFQ01BTW9kZSBzdHJpY3QoKSB7IHJldHVybiBFQ01BTW9k
ZShTdHJpY3RNb2RlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgc2xvcHB5KCkg
eyByZXR1cm4gRUNNQU1vZGUoU2xvcHB5TW9kZSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc1N0cmljdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gU3RyaWN0TW9kZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
KworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgY29uc3RleHByIEVDTUFNb2RlKHVpbnQ4X3QgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlID09IFN0cmljdE1vZGUgfHwgbV92
YWx1ZSA9PSBTbG9wcHlNb2RlLCBtX3ZhbHVlKTsKKyAgICB9CisKKyAgICB1aW50OF90IG1fdmFs
dWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDYwNWIyZWZmYjFkN2I4MmU1Y2RiN2M2NDUz
ZGM1ZGU3MWYzMDI2NzYuLjY3ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZiOGU3ZTk5NDgwZWQ3NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApA
QCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCks
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwg
ZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3Np
YywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUs
IGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAg
IHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5k
aWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9p
c3RpbmdDYW5kaWRhdGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggNDQzYmIzOGE2NWNiODA0NzQ1Njg1N2NkOGQy
NzZhZGU5ZjdhNmI1Yy4uYmFkZTk4NzM1Zjk5ZGM0N2U3YTZkYzc4N2M1Nzk3MTFjZTUxNWVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBQZXIg
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZm9yYmlkZGVuLWV4dGVuc2lvbnMs
IG9ubHkgc2xvcHB5LW1vZGUgbm9uLWJ1aWx0aW4gZnVuY3Rpb25zIGluIG9sZC1zdHlsZSAocHJl
LUVTNikgc3ludGFjdGljIGZvcm1zIGNhbiBjb250YWluCiAgICAgICAgIC8vICJjYWxsZXIiIGFu
ZCAiYXJndW1lbnRzIi4KLSAgICAgICAgcmV0dXJuICFpc1N0cmljdE1vZGUoKSAmJiBwYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0Nv
bnN0cnVjdG9yRnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuICFpc0luU3RyaWN0Q29udGV4dCgp
ICYmIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlICYm
ICFpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOwogICAgIH0KICAgICBib29sIGhhc1Byb3Rv
dHlwZVByb3BlcnR5KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldFB1dEluZm8uY3BwCmluZGV4IGQ2ZTcxZWQ4NDhhN2M1N2JjZTg5ZjkyNDQ4MjkyMWUz
OTU4NDBjOGMuLjE1MDhhNjAxN2M5YjFhZTVlNzAxODkyOTdiMjYzZWMxNjI1ZjYyMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uY3BwCkBAIC0zMiw3ICsz
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIEdldFB1dEluZm86OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQob3BlcmFuZCgpLCAiPCIsIHJlc29sdmVN
b2RlKCksICJ8IiwgcmVzb2x2ZVR5cGUoKSwgInwiLCBpbml0aWFsaXphdGlvbk1vZGUoKSwgIj4i
KTsKKyAgICBvdXQucHJpbnQob3BlcmFuZCgpLCAiPCIsIHJlc29sdmVNb2RlKCksICJ8IiwgcmVz
b2x2ZVR5cGUoKSwgInwiLCBpbml0aWFsaXphdGlvbk1vZGUoKSwgInwiLCBlY21hTW9kZSgpLCAi
PiIpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dFB1dEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaApp
bmRleCAwNmZmZDQzYTAyNWYwYjVlY2I0ZTAxMGUyNzE4ZDA2YzAxYjQ1OWRlLi5kZTUxNTA4OWIy
YzVmODU5ZTAxOTg0ODFmZmQ4MGQwOWQ1YTY5NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0UHV0SW5mby5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkVDTUFNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmlu
Z0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0yMDIsMTggKzIwMywyMCBAQCBjbGFzcyBH
ZXRQdXRJbmZvIHsKICAgICB0eXBlZGVmIHVuc2lnbmVkIE9wZXJhbmQ7CiBwdWJsaWM6CiAgICAg
Ly8gR2l2ZSBlYWNoIGZpZWxkIDEwIGJpdHMgZm9yIHNpbXBsaWNpdHkuCi0gICAgc3RhdGljX2Fz
c2VydChzaXplb2YoT3BlcmFuZCkgKiA4ID4gMzAsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1
dEluZm8iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kKSAqIDggPiAzMSwgIk5v
dCBlbm91Z2ggYml0cyBmb3IgR2V0UHV0SW5mbyIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgaXNTdHJpY3RTaGlmdCA9IDMwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bW9kZVNoaWZ0ID0gMjA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsaXph
dGlvblNoaWZ0ID0gMTA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB0eXBlQml0cyA9
ICgxIDw8IGluaXRpYWxpemF0aW9uU2hpZnQpIC0gMTsKICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGluaXRpYWxpemF0aW9uQml0cyA9ICgoMSA8PCBtb2RlU2hpZnQpIC0gMSkgJiB+dHlw
ZUJpdHM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtb2RlQml0cyA9ICgoMSA8PCAz
MCkgLSAxKSAmIH5pbml0aWFsaXphdGlvbkJpdHMgJiB+dHlwZUJpdHM7Ci0gICAgc3RhdGljX2Fz
c2VydCgobW9kZUJpdHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0cykgPT0gMHgwLCAi
VGhlcmUgc2hvdWxkIGJlIG5vIGludGVyc2VjdGlvbiBiZXR3ZWVuIFJlc29sdmVNb2RlIFJlc29s
dmVUeXBlIGFuZCBJbml0aWFsaXphdGlvbk1vZGUiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGlzU3RyaWN0Qml0ID0gMSA8PCAzMDsKKyAgICBzdGF0aWNfYXNzZXJ0KChtb2RlQml0
cyAmIGluaXRpYWxpemF0aW9uQml0cyAmIHR5cGVCaXRzICYgaXNTdHJpY3RCaXQpID09IDB4MCwg
IlRoZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNvbHZlTW9kZSBSZXNv
bHZlVHlwZSBhbmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7CiAKICAgICBHZXRQdXRJbmZvKCkgPSBk
ZWZhdWx0OwogCi0gICAgR2V0UHV0SW5mbyhSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUp
Ci0gICAgICAgIDogbV9vcGVyYW5kKChyZXNvbHZlTW9kZSA8PCBtb2RlU2hpZnQpIHwgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbml0aWFsaXphdGlvbk1vZGUpIDw8IGluaXRpYWxpemF0aW9uU2hp
ZnQpIHwgcmVzb2x2ZVR5cGUpCisgICAgR2V0UHV0SW5mbyhSZXNvbHZlTW9kZSByZXNvbHZlTW9k
ZSwgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXph
dGlvbk1vZGUsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1fb3BlcmFuZCgoZWNtYU1v
ZGUuaXNTdHJpY3QoKSA8PCBpc1N0cmljdFNoaWZ0KSB8IChyZXNvbHZlTW9kZSA8PCBtb2RlU2hp
ZnQpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsaXphdGlvbk1vZGUpIDw8IGluaXRp
YWxpemF0aW9uU2hpZnQpIHwgcmVzb2x2ZVR5cGUpCiAgICAgewogICAgIH0KIApAQCAtMjI1LDYg
KzIyOCw3IEBAIHB1YmxpYzoKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihtX29wZXJhbmQgJiB0eXBlQml0cyk7IH0K
ICAgICBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25Nb2RlPigobV9vcGVyYW5kICYgaW5pdGlhbGl6
YXRpb25CaXRzKSA+PiBpbml0aWFsaXphdGlvblNoaWZ0KTsgfQogICAgIFJlc29sdmVNb2RlIHJl
c29sdmVNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb2x2ZU1vZGU+KChtX29w
ZXJhbmQgJiBtb2RlQml0cykgPj4gbW9kZVNoaWZ0KTsgfQorICAgIEVDTUFNb2RlIGVjbWFNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYW5kICYgaXNTdHJpY3RCaXQgPyBFQ01BTW9kZTo6c3Ry
aWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7IH0KICAgICB1bnNpZ25lZCBvcGVyYW5kKCkgY29u
c3QgeyByZXR1cm4gbV9vcGVyYW5kOyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CmluZGV4IDVmOWY4NWUxZWNkYzgxMzQ3ZDg5NzQwNmU2MjExNGQwNjU0NzI3OTMuLjY2Y2M3NTA3
MzkwYmE0MWUwODg5Y2Q2YjZjNTAwZTc2YjAyMTYwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29sIGNh
bGxTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlLCBKU1Zh
bHVlIGdldHRlclNldHRlcgogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyT2JqID0ganND
YXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAKICAgICBpZiAoZ2V0dGVyU2V0dGVy
T2JqLT5pc1NldHRlck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBlY21hTW9kZSA9PSBTdHJpY3RNb2RlLCBSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZWNt
YU1vZGUuaXNTdHJpY3QoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogCiAgICAgSlNP
YmplY3QqIHNldHRlciA9IGdldHRlclNldHRlck9iai0+c2V0dGVyKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAKaW5kZXggMjAwMzE5MjkwZjBiZTBmOTczMTQxYmZlOTQ5OWYzYmFlODk3ODg2Mi4uMTRmN2Zh
YjVjM2Q0ZWFhODc5NDJiY2YzMzJhNDVmMWM1MDZkYWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQs
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKK0luZGlyZWN0RXZh
bEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
NDUsMTUgKzQ1LDE0IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbmRpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250
ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlKTsKKyAgICBh
dXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFs
RXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0
LCBzb3VyY2UsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZh
bENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9
IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Qg
OiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2Rl
R2VuZXJhdGlvbk1vZGUoKTsKICAgICAKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlu
a2VkRXZhbENvZGUgPSB2bS5jb2RlQ2FjaGUoKS0+Z2V0VW5saW5rZWRFdmFsQ29kZUJsb2NrKAot
ICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0cmljdE1vZGUs
IGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgICAgIHZt
LCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CiAK
ICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpKQogICAgICAgICBnbG9iYWxPYmpl
Y3QtPmRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPnNv
dXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKQEAgLTY4
LDggKzY3LDEwIEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIGV4ZWN1dGFi
bGU7CiB9CiAKLUluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBm
YWxzZSwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pCitj
b25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKK2NvbnN0ZXhwciBib29sIGlu
c2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZTsKK0luZGlyZWN0RXZhbEV4ZWN1dGFibGU6Oklu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUpCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJp
Y3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6Ok5vKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggYzE5OTJmZGIxYTQyNTA1NGFl
OWJjNDU3NTEyOGU2ZjUwODZjYTliYy4uNDk4YjVjODcwOThhYjM3NDc5N2EyNWJmNDgxNjM3Y2Zi
YjkyZWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOSArMzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFdmFsRXhlY3V0
YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0
ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlKTsKKyAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOwogcHJpdmF0ZToK
LSAgICBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNl
Q29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKKyAgICBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOwog
fTsKIAogc3RhdGljX2Fzc2VydChzaXplb2YoSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSkgPT0gc2l6
ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA2NDAwZWU4YmRiMmU1NzcwMmIzY2JjMzY5OTM2OWQ3N2M5
NDMzMGQ0Li41ZGI3Y2QzZmQxOWU4OWJkODFkNTkwMjUzZTk5MWI4YmVhMDhkMmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTExMSw3ICsxMTEsNyBAQCBKU1Zh
bHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEFTU0VSVCghaXNDZWxsKCkpOwogCi0gICAgaWYg
KGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAg
ICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkK
QEAgLTE4OSw3ICsxODksNyBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eQogCiAgICAgICAgICAg
ICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChn
cy5pc0dldHRlclNldHRlcigpKQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNT
dHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0
aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkg
OiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIAogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0
dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIoZ2xv
YmFsT2JqZWN0LCBncywgYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggMGJjYWI0MGI4ZDkyMWQyYzczNGEyOWExNGRj
MDIxYzcyZDIzMGEzNC4uNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1NGZhNjBjOWY0ODFlZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIyLDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFQ01BTW9kZS5oIgogI2luY2x1ZGUgIkpTRXhwb3J0
TWFjcm9zLmgiCiAjaW5jbHVkZSAiUHVyZU5hTi5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CkBA
IC04MCw4ICs4MSw3IEBAIHVzaW5nIFdyaXRlQmFycmllclRyYWl0c1NlbGVjdCA9IHR5cGVuYW1l
IHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19zYW1lPFQsIFVua25vCiAgICAgRHVtYlZhbHVlVHJh
aXRzPFQ+LCBEdW1iUHRyVHJhaXRzPFQ+CiA+Ojp0eXBlOwogCi1lbnVtIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07Ci1l
bnVtIEVDTUFNb2RlIHsgU3RyaWN0TW9kZSwgTm90U3RyaWN0TW9kZSB9OworZW51bSBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlIDogdWludDhfdCB7IE5vUHJlZmVyZW5jZSwgUHJlZmVyTnVtYmVyLCBQ
cmVmZXJTdHJpbmcgfTsKIAogZW51bSBjbGFzcyBDYWxsVHlwZSA6IHVuc2lnbmVkOwogc3RydWN0
IENhbGxEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXgg
MmZlYTJiNWI4ZWQ4MDkzN2EwOTBmYzVjMWFmNWI1OTJkMzM1ODMzYS4uMTM5MGM3NjE5YWNjN2E5
NDQ5YWZlM2M4NzdiZDk5MzUwZjU0MDY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHUK
IAogSlNWYWx1ZSBKU0NlbGw6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIGlmIChlY21hTW9kZSA9PSBT
dHJpY3RNb2RlKQorICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICByZXR1cm4g
Y2VsbDsKICAgICByZXR1cm4gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMDlhYmFlMzhi
ZTBmZTM0NmZkNWQzOGIyMmJkYTQ3YmY5ZTY2Y2EzNS4uNTE5MDNjYTc4NzFkMzcyZTI2YjhlY2Uw
ZTNhZTBhM2YxNDZiODU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgU3RydWN0dXJlKiBKU0Z1bmN0aW9uOjpzZWxl
Y3RTdHJ1Y3R1cmVGb3JOZXdGdW5jRXhwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAg
ICBib29sIGlzQnVpbHRpbiA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7CiAgICAg
aWYgKGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKGlzQnVpbHRpbik7Ci0gICAgaWYgKGV4ZWN1
dGFibGUtPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29u
dGV4dCgpKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpY3RGdW5jdGlvblN0cnVj
dHVyZShpc0J1aWx0aW4pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnNsb3BweUZ1bmN0aW9u
U3RydWN0dXJlKGlzQnVpbHRpbik7CiB9CkBAIC00MzAsNyArNDMwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1YKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFw
cGVyTWV0aG9kTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBl
ck1ldGhvZE1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okluc3RhbmNlRmllbGRJbml0
aWFsaXplck1vZGU6Ci0gICAgICAgIGlmICghZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0
cmljdE1vZGUoKSkKKyAgICAgICAgaWYgKCFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzSW5T
dHJpY3RDb250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxl
cik7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBj
YWxsZXIiX3MpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggOWJhOGM3MGQ3NmE3NDJl
ZWI1NzE2NzhjYzkzZGJhY2I0NzkzOTQ0ZS4uY2E5NDg5YzBlMGVmZGM4NmIwZjQyMmZmMjg4NmVm
NDhkMTkzYTkzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNTA3LDcgKzUwNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGFyc2Vk
T2JqZWN0KTsKIAogICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNh
bGxlclNvdXJjZU9yaWdpbih2bSk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHMsIHNvdXJj
ZU9yaWdpbiksIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29u
dGV4dFR5cGU6Ok5vbmUpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmln
aW4pLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5v
bmUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7
CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTcx
NCw3ICs3MTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90
b0dldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJy
b3IoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpKTsKIApAQCAtNzM1LDcgKzczNSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJp
Y3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBpZiAodGhpc1Zh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRF
cnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRl
eCAyNzFlODFjMWE3MDAwOTIzNzE5ZTFhOWI4OTQzNTYzY2Y2ODA0YTNkLi4xYjI0ZjExZWM3ODhm
NTQ4NGRjYmFkMjYxNGI4ODRjNDFiNmFmOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04MTAsNyArODEwLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0
SW5saW5lU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHkKICAgICAgICAgICAgICAgICBpZiAoIXRoaXMtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlv
bmFyeSgpKQogICAgICAgICAgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmos
IG9mZnNldCk7CiAKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGNhbGxTZXR0ZXIoZ2xv
YmFsT2JqZWN0LCBzbG90LnRoaXNWYWx1ZSgpLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2Rl
KCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgICAgICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFsdWUoKSwgZ3MsIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6
OnNsb3BweSgpKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KQEAg
LTE4MTgsNyArMTgxOCw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWNrKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJu
IHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwgIkNh
bm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0Il9zKTsKICAg
ICB9CiAKLSAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1RoaXModGhpcywgZ2xvYmFsT2Jq
ZWN0LCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobWV0aG9kVGFibGUodm0p
LT50b1RoaXModGhpcywgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpID09IHRoaXMp
OwogCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCh2bSkgPT0gcHJvdG90eXBlKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAKaW5kZXggNmQ1YWI2ODJjNjgzOTE0ZjY5ZjNlNWMyMjgzODRmZWZlNDY1NzdjOC4uYjNj
MjcyMDIyODA2YjgxMTQzNTdkODFkZTlmM2I1ZmMxMDM1NGQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTQxMSw3ICs0MTEsNyBAQCBTeW1ib2xUYWJs
ZSogSlNTY29wZTo6c3ltYm9sVGFibGUoVk0mIHZtKQogCiBKU1ZhbHVlIEpTU2NvcGU6OnRvVGhp
cyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUu
aXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCmluZGV4IGFhZWU4ZWU3YTc3ZWVhNmRlZmM3NTdhODdkMjNiM2VjYmE4
NmYyMWYuLjBmMjA3YTNiNjg2YWVhN2I1N2Q0OTVjZDcwMjlhZDhhODM4NmRiYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAgLTQxNyw3ICs0MTcsNyBA
QCBKU09iamVjdCogSlNTdHJpbmc6OnRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAKIEpTVmFsdWUgSlNTdHJpbmc6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIGlmIChl
Y21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAg
ICAgICByZXR1cm4gY2VsbDsKICAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGFzU3RyaW5nKGNlbGwpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggNjk3NmY3
MDVkMzQwNGUzN2EyMWQ4OTJiMTIzY2JjMzgwNDIzNmQ1Yi4uNTM1MjM3MThkYzliOWQyMjEyYjhi
ODIxMTc2MzY4ZjQ4NDIxODJhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTkzMyw3ICs5MzMsNyBAQCBKU1ZhbHVlIExpdGVyYWxQ
YXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRl
ZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3M7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sgPyBtX251bGxP
ckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgOiBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sgPyBtX251bGxP
ckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgOiBmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLmxhc3QoKS5wdXQobV9nbG9iYWxP
YmplY3QsIGlkZW50LCBsYXN0VmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KGlkZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDQ2NTQ2MjAwNGYzN2UyMDEyZDcyMTY4
YzYyMDllNTA1MTdjMTIwNTUuLjA5OWQ4OTlhZDVlNjNhNzQzMzU4ZTJhYmIyMGFiMzRmNTliOTYw
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBERUNM
QVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRl
TW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25l
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAK
aW5kZXggMTBmODg3MjVhYzAwMmQyNTNhOWM4NjM3MWQ0NTM5ODUwZGZjYWEyOS4uNDE0Y2I4Y2Vm
ZGZmODMwZjU3YmZmZDgyNjk0NDUwYTJmMzkzODk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIE51bGxTZXR0ZXJGdW5jdGlvbjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKE51bGxTZXR0ZXJGdW5jdGlvbikgfTsKIAogCisjaWYgQVNTRVJU
X0VOQUJMRUQKKwogY2xhc3MgR2V0Q2FsbGVyU3RyaWN0bmVzc0Z1bmN0b3IgewogcHVibGljOgog
ICAgIEdldENhbGxlclN0cmljdG5lc3NGdW5jdG9yKCkKQEAgLTUyLDcgKzU0LDkgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKICAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxvY2soKTsKLSAgICAgICAgbV9j
YWxsZXJJc1N0cmljdCA9IGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwor
ICAgICAgICAvLyBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoYXQgd2UgbWlnaHQg
aGF2ZSBhbiBzdHJpY3Qgb3Bjb2RlIGluIGEgbm9uLXN0cmljdCBjb250ZXh0LCBidXQgdGhhdCdz
CisgICAgICAgIC8vIG9rIHNpbmNlIHdlIGFzc2VydCBiZWxvdyB0aGF0IHRoaXMgZnVuY3Rpb24g
c2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBmcm9tIGFueSBraW5kIHN0cmljdCBjb250ZXh0LgorICAg
ICAgICBtX2NhbGxlcklzU3RyaWN0ID0gY29kZUJsb2NrICYmIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCk7CiAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0
b3I6OkRvbmU7CiAgICAgfQogCkBAIC03MCwxNCArNzQsMTYgQEAgc3RhdGljIGJvb2wgY2FsbGVy
SXNTdHJpY3QoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICByZXR1cm4gaXRlci5j
YWxsZXJJc1N0cmljdCgpOwogfQogCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKKwogbmFtZXNw
YWNlIE51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAg
IGlmIChjYWxsZXJJc1N0cmljdCh2bSwgY2FsbEZyYW1lKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGluZyBh
IHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3MpKTsKKyNpZiAhQVNTRVJUX0VOQUJM
RUQKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKKyNlbmRpZgorICAgIEFTU0VSVCghY2FsbGVySXNTdHJpY3QoZ2xvYmFsT2JqZWN0
LT52bSgpLCBjYWxsRnJhbWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAKaW5kZXggY2JjNzlhMzAwOGMxMzJiNmQzNjlkZTcyZjVjZDYyNmI4MDVh
MzliZC4uNDFjZThhYWYxZGIyY2Q3MDcwZTE1YjZhNmQzMWI3NTQxNzUyYzg1YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgSlNPYmplY3QqIHZhbHVlT2Jq
ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF2
YWx1ZU9iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtOTQsNyArOTQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blBy
b3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXko
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChn
bG9iYWxPYmplY3QpOwpAQCAtMTI2LDcgKzEyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
CiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3Ry
aWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJ
T05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iaikpCkBAIC0xNTAsNyArMTUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMjA2LDcg
KzIwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9v
a3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOwpAQCAtMjM2LDcgKzIzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFi
bGUoSlNHbG9iYWxPYmplY3QqCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RN
b2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yOTAs
NyArMjkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNU
b0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAvLyAyLiBJbnZva2UoViwg
InRvU3RyaW5nIikKIAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09i
amVjdCBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KLSAgICBKU09iamVj
dCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICAvLyBMZXQgdG9TdHJpbmcgYmUgdGhlIE8uW1tHZXRdXSgidG9TdHJpbmciLCBWKQpA
QCAtMzE1LDcgKzMxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFs
bFN0cmluZ3MudW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9i
amVjdFN0cmluZygpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09i
amVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IGE4ZjBiNWY4OTk0MmIzN2RhZTllN2EzMDI5
MmQ0MThmYjg3ZTg5MzMuLjJiMzJmNWEwNGEyMDEyMzZhOTdiYmFlZGM0MzQ2MmNkMjg4ZTMzOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0
YWJsZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpp
bml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIEFT
U0VSVCgmZ2xvYmFsT2JqZWN0LT52bSgpID09ICZ2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJv
cjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzU3RyaWN0TW9kZSgpID8g
SlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmlj
dDsKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzSW5TdHJpY3RDb250ZXh0
KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90
U3RyaWN0OwogICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwogICAgIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bS5jb2RlQ2FjaGUo
KS0+Z2V0VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNl
KCksIHN0cmljdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IpOwpAQCAtMTM2LDcgKzEz
Niw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3Bl
cnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVy
dHkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwg
ZW50cnkua2V5LmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgbnVsbHB0cik7CiAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9iYWxD
b25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmljdE1vZGUoKSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5n
bG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc0luU3RyaWN0Q29udGV4
dCgpKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGFsbG93ICJjb25zdCIgZHVw
bGljYXRlIGRlY2xhcmF0aW9ucyB1bmRlciB0aGlzIHNldHRpbmcuCiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZvciBleGFtcGxlLCB3ZSBkb24ndCAibGV0IiB2YXJpYWJsZXMgdG8gYmUgb3ZlcnJp
ZGRlbiBieSAiY29uc3QiIHZhcmlhYmxlcy4KICAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudC0+aXNDb25zdFZhcmlhYmxlKGVudHJ5LmtleS5nZXQoKSkpCkBA
IC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXpl
R2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxl
KCk7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9j
ayk7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsRGVjbGFyYXRpb25zKSB7Ci0g
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9i
YWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmljdE1vZGUoKSkpIHsK
KyAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmds
b2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzSW5TdHJpY3RDb250ZXh0
KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5jb250YWlucyhsb2NrZXIs
IGVudHJ5LmtleS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3Jh
bUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVj
dXRhYmxlLmgKaW5kZXggMjljYTAxMzIwNTYxYjE0NmE2MjljNmZiNWZhMTg4ZmY1OGMzZGIxZi4u
Yjg3MTVhYTcyYmJjYjczMzlkNmUzNDEzYWM1OWM3NDQxMTdiODJhOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwg
ZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZh
bHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNs
YXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1N
b2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUp
OyB9CiAKICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0m
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCmlu
ZGV4IGIwN2UwYTAyOTMzMjgyNjEwMzZmNDExMDZlZWVlOWU1ZjkwYzY2NjAuLjZkMTFiNDFiYTQw
NjE4MTU1MjJkYWIzZWJmZTMxYzc3NmU3ZWU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVu
dHMuYXBwZW5kKHRhcmdldCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpTdHJpY3RNb2RlKSk7CisgICAg
YXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkp
OwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGFwcGx5
TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAppbmRleCAx
MDZjZjI1ZjYzMWYwNDFiOWJjNjMxOTQwMGY0NjY3YjA3YjM5Y2ZjLi4wZGQ0NGVjYjg0MzcxZDQ3
NzM0NjBjZDRjMGFhZTU1ZmUzY2QyMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCkBAIC02MCwxMiArNjAsMTAgQEAgcHVibGljOgog
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1
cmU7IH0KICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVz
ICYgQXJndW1lbnRzRmVhdHVyZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQotICAgIGJvb2wgaXNT
dHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJl
OyB9CiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5
cGUpOyB9CiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFsQ29udGV4dFR5cGUpOyB9Cisg
ICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBT
dHJpY3RNb2RlRmVhdHVyZTsgfQogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJl
dHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9Ci0gICAg
ICAgIAogICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5l
ID0gdmFsdWU7IH0KICAgICB2b2lkIHNldE5ldmVyT3B0aW1pemUoYm9vbCB2YWx1ZSkgeyBtX25l
dmVyT3B0aW1pemUgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0TmV2ZXJGVExPcHRpbWl6ZShib29s
IHZhbHVlKSB7IG1fbmV2ZXJGVExPcHRpbWl6ZSA9IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCmluZGV4IDg1
YzFjZjM0MzM4MTg0Nzg4Mzg4NDU2ZWIzNmFlYTJmZmI2MzQxZmEuLjNmZDYwMDZlMWU4NDVmYWVl
ZDI2ZDBlNzI4M2M1M2Y2YzEwZjMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAg
Ym9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXIKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gU3RyaWN0TW9kZSA6IE5v
dFN0cmljdE1vZGUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIo
Z2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cg
PyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0KIAogSlNWYWx1
ZSBTcGFyc2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxYmI1Y2Rm
ZmE3NmE3N2RlMjI0M2NiNjIxYzIyNDViYjhlMDUxMmRjLi41NGQxYzlkMjZlMGU5NDUwMjdkYWU0
NjFkN2EwYTBjODdjZTQ4M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MjYsNyArNjI2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFz
ZUJvZHkoSlMKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJhdGlvbjxK
U0RPTVdpbmRvdz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSYgY2FsbEZyYW1lKQogewotICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEds
b2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0
YWJhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgK
aW5kZXggMDkyODUxNzYzY2EwZDFhY2ExYmM3MzQ2NTM1MGI2ZTJjMGVlZTUwNi4uMzc2OGJmMjkx
YzU5ZGFlODk5ZGIwZjE1MGExYjBjYTA4YzdkYzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCBjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6Ok5vdFN0cmljdE1v
ZGUpKTsKKyAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIGNh
bGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNN
QU1vZGU6OnNsb3BweSgpKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsICJFdmVudFRhcmdldCIsIG9wZXJhdGlvbk5hbWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGRi
OWFjMWJjN2FlMThhNGRkZjBkYjU4YjM5OWE0YmU0MGY2YmEyNWQuLjc3MzEwNjNmZmY2YjAzZmY5
OWE2YzM3MTlmNjBhZmFlMjVkMWQ0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00NTkxLDcgKzQ1OTEsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoZGVjb2RlZFRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKVxuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9i
amVjdCwgTm90U3RyaWN0TW9kZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVj
dCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5j
dGlvbih2bSwgZGVjb2RlZFRoaXNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2MDcsNyArNDYwNyw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgIyBGSVhNRTogTWFrZSBjb25z
aXN0ZW50IElETEF0dHJpYnV0ZTw+OjpjYXN0IGFuZCBJRExPcGVyYXRpb248Pjo6Y2FzdCBpbiBj
YXNlIG9mIEN1c3RvbVByb3h5VG9KU09iamVjdC4KICAgICAgICAgbXkgJGNhc3RpbmdGdW5jdGlv
biA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVj
dH0gPyAidG8ke2NsYXNzTmFtZX0iIDogR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGlu
dGVyZmFjZSk7Ci0gICAgICAgIG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFtZS50aGlzVmFsdWUo
KS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpIiA6ICJjYWxsRnJh
bWUudGhpc1ZhbHVlKCkiOworICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJjYWxsRnJhbWUudGhp
c1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkp
IiA6ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkiOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
InRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NOYW1lfSogSURMT3BlcmF0aW9uPCR7Y2xhc3NOYW1l
fT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYg
Y2FsbEZyYW1lKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAkdGhpc1ZhbHVlKTtcbiIpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1
NjYxYTAzYTAxYjFmN2EyNDM0NzM2NjQzMDIxZTgwYWU5MWYzNjcuLjhhYmNhM2RlY2JlMDQyYWVk
N2VjYWVlYjRhODRlNmMyMGU3MzNmODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNC0w
NyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBOb3QgdXNp
bmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVjbGFyYXRpb24gc3RhdGVtZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1NzgKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBT
dXp1a2kuCisKKyAgICAgICAgRml4IHRoZSB0ZXN0IHNpbmNlIGl0IGNvbnRhaW5lZCBpbmNvcnJl
Y3QgY29kZS4KKworICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9kLW5h
bWVzLmpzOgorCiAyMDIwLTA0LTA2ICBKYWNvYiBVcGhvZmYgIDxqYWNvYl91cGhvZmZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFsgbWFjT1MgXSBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWstaW4tY29u
c3RydWN0b3ItYmVmb3JlLXN1cGVyLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDdmMTQ5MjRmM2QzYWQ3NjlkOTk4MWI0NWNhYjQ2ZWVlZjk3NmQ3NWMuLjg4OGNkMmQyMjUy
YThmMzljYzNmMmVlMzAxNzQ2YjkwNThiY2E5YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pz
L2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CkBAIC01Niw5ICs1Niw5
IEBAIFBBU1MgQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28nLCAyMTUpOyAo
bmV3IEEpWydmb28nXSgpIGlzIDIxNQogUEFTUyBBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VN
ZXRob2QoJ2ZvbycsIDIxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnYmFy
JywgMjE3KTsgWyhuZXcgQSlbJ2ZvbyddKCksIChuZXcgQilbJ2JhciddKCldIGlzIFsyMTYsIDIx
N10KIFBBU1MgeCA9IDIxODsgY2xhc3MgQSB7IFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyAobmV3
IEEpWzIxOF0oKSBpcyAyMTkKIFBBU1MgeCA9IHVuZGVmaW5lZDsgY2xhc3MgQSB7IFsoeD0yMjAp
ICYmICdmb28nXSgpIHsgcmV0dXJuIHg7IH0gfTsgKG5ldyBBKS5mb28oKSBpcyAyMjAKLVBBU1Mg
eCA9IDIyMTsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9
eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsy
MjJdKCldIGlzIFsyMjEsIDIyMl0KK1BBU1MgdmFyIHggPSAyMjEsIHgxLCB4MjsgY2xhc3MgQSB7
IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0
dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCldIGlzIFsyMjEsIDIy
Ml0KIFBBU1MgeCA9IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjIzOyB9
IFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7IH0gfTsgWyhuZXcgQSkuZm9vMSgpLCAobmV3
IEEpLmZvbzIoKV0gaXMgWzIyMywgMjI0XQotUEFTUyB4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyAr
ICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVy
biAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0gaXMgWzIsIDMsIDIyNl0KK1BBU1Mg
dmFyIHggPSAxLCB4MTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0g
Wyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3
IEEpLmZvbzIoKV0gaXMgWzIsIDMsIDIyNl0KIAogU3RhdGljIG1ldGhvZHMgd2l0aCBjb21wdXRl
ZCBuYW1lcwogUEFTUyBjbGFzcyBBIHsgc3RhdGljIFsnYScgKyAnYiddKCkgeyByZXR1cm4gMzEx
OyB9IH07IEEuYWIoKSBpcyAzMTEKQEAgLTY5LDkgKzY5LDkgQEAgUEFTUyBBID0gY3JlYXRlQ2xh
c3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTUpOyBBWydmb28nXSgpIGlzIDMxNQogUEFTUyBB
ID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTYpOyBCID0gY3JlYXRlQ2xh
c3NXaXRoU3RhdGljTWV0aG9kKCdiYXInLCAzMTcpOyBbQVsnZm9vJ10oKSwgQlsnYmFyJ10oKV0g
aXMgWzMxNiwgMzE3XQogUEFTUyB4ID0gMjE4OyBjbGFzcyBBIHsgc3RhdGljIFt4KytdKCkgeyBy
ZXR1cm4geDsgfSB9OyBBWzIxOF0oKSBpcyAyMTkKIFBBU1MgeCA9IHVuZGVmaW5lZDsgY2xhc3Mg
QSB7IHN0YXRpYyBbKHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IEEuZm9vKCkg
aXMgMjIwCi1QQVNTIHggPSAyMjE7IGNsYXNzIEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkg
eyByZXR1cm4geDE7IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07
IFtBWzIyMV0oKSwgQVsyMjJdKCldIGlzIFsyMjEsIDIyMl0KK1BBU1MgdmFyIHggPSAyMjEsIHgx
LCB4MjsgY2xhc3MgQSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBz
dGF0aWMgWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIy
Ml0oKV0gaXMgWzIyMSwgMjIyXQogUEFTUyB4ID0gMTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2Zvbycg
KyB4KytdKCkgeyByZXR1cm4gMjIzOyB9IHN0YXRpYyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4g
MjI0OyB9IH07IFtBLmZvbzEoKSwgQS5mb28yKCldIGlzIFsyMjMsIDIyNF0KLVBBU1MgeCA9IDE7
IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMg
Wyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCBBLmZv
bzIoKV0gaXMgWzIsIDMsIDIyNl0KK1BBU1MgdmFyIHggPSAxLCB4MTsgY2xhc3MgQSB7IHN0YXRp
YyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgpICYmICdmb28n
ICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSBpcyBbMiwgMywg
MjI2XQogCiBJbnN0YW5jZSBtZXRob2RzIHdpdGggZHVwbGljYXRlZCBuYW1lcwogUEFTUyBjbGFz
cyBBIHsgYWIoKSB7IHJldHVybiA0MDEgfSBhYigpIHsgcmV0dXJuIDQwMjsgfSB9OyAobmV3IEEp
LmFiKCkgaXMgNDAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xh
c3Mtc3ludGF4LW1ldGhvZC1uYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9j
bGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLmpzCmluZGV4IDE0MmJiMDViM2I0MDlkOTAxMmFhNDlh
ZDQyNTIzZGU5NzE1M2M2YTYuLjFiYmU5MDM1ODZlODU0NzIyNGRkM2JiY2Y0YTkwZWY4MjQ0M2I5
MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgt
bWV0aG9kLW5hbWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1z
eW50YXgtbWV0aG9kLW5hbWVzLmpzCkBAIC01Nyw5ICs1Nyw5IEBAIHNob3VsZEJlKCJBID0gY3Jl
YXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNSk7IChuZXcgQSlbJ2ZvbyddKCki
LCAiMjE1CiBzaG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28n
LCAyMTYpOyBCID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2JhcicsIDIxNyk7IFso
bmV3IEEpWydmb28nXSgpLCAobmV3IEIpWydiYXInXSgpXSIsICJbMjE2LCAyMTddIik7CiBzaG91
bGRCZSgieCA9IDIxODsgY2xhc3MgQSB7IFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEp
WzIxOF0oKSIsICIyMTkiKTsKIHNob3VsZEJlKCJ4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgWyh4
PTIyMCkgJiYgJ2ZvbyddKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpLmZvbygpIiwgIjIyMCIp
Owotc2hvdWxkQmUoInggPSAyMjE7IGNsYXNzIEEgeyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVy
biB4MTsgfSBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbKG5ldyBBKVsyMjFd
KCksIChuZXcgQSlbMjIyXSgpXSIsICJbMjIxLCAyMjJdIik7CitzaG91bGRCZSgidmFyIHggPSAy
MjEsIHgxLCB4MjsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFso
eDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBB
KVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKIHNob3VsZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IFsn
Zm9vJyArIHgrK10oKSB7IHJldHVybiAyMjM7IH0gWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIy
NDsgfSB9OyBbKG5ldyBBKS5mb28xKCksIChuZXcgQSkuZm9vMigpXSIsICJbMjIzLCAyMjRdIik7
Ci1zaG91bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1
OyB9IFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwg
KG5ldyBBKS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7CitzaG91bGRCZSgidmFyIHggPSAxLCB4
MTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAn
Zm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0i
LCAiWzIsIDMsIDIyNl0iKTsKIAogZGVidWcoJycpOwogZGVidWcoJ1N0YXRpYyBtZXRob2RzIHdp
dGggY29tcHV0ZWQgbmFtZXMnKTsKQEAgLTcyLDkgKzcyLDkgQEAgc2hvdWxkQmUoIkEgPSBjcmVh
dGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNSk7IEFbJ2ZvbyddKCkiLCAiMzE1Iik7
CiBzaG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE2KTsg
QiA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnYmFyJywgMzE3KTsgW0FbJ2ZvbyddKCks
IEJbJ2JhciddKCldIiwgIlszMTYsIDMxN10iKTsKIHNob3VsZEJlKCJ4ID0gMjE4OyBjbGFzcyBB
IHsgc3RhdGljIFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyBBWzIxOF0oKSIsICIyMTkiKTsKIHNo
b3VsZEJlKCJ4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgc3RhdGljIFsoeD0yMjApICYmICdmb28n
XSgpIHsgcmV0dXJuIHg7IH0gfTsgQS5mb28oKSIsICIyMjAiKTsKLXNob3VsZEJlKCJ4ID0gMjIx
OyBjbGFzcyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRp
YyBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgp
XSIsICJbMjIxLCAyMjJdIik7CitzaG91bGRCZSgidmFyIHggPSAyMjEsIHgxLCB4MjsgY2xhc3Mg
QSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0aWMgWyh4Mj14
KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0oKV0iLCAiWzIy
MSwgMjIyXSIpOwogc2hvdWxkQmUoInggPSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArIHgr
K10oKSB7IHJldHVybiAyMjM7IH0gc3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7
IH0gfTsgW0EuZm9vMSgpLCBBLmZvbzIoKV0iLCAiWzIyMywgMjI0XSIpOwotc2hvdWxkQmUoIngg
PSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3Rh
dGljIFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwg
QS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7CitzaG91bGRCZSgidmFyIHggPSAxLCB4MTsgY2xh
c3MgQSB7IHN0YXRpYyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgx
PXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigp
XSIsICJbMiwgMywgMjI2XSIpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnSW5zdGFuY2UgbWV0aG9k
cyB3aXRoIGR1cGxpY2F0ZWQgbmFtZXMnKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTIzOWU4OTZjMmRkOGU1ZGI1NzA4MzdkMzY2MWEy
OThhMDc4ZDZhZS4uYTdiYTU5YWVlNmUxZjlmZGUxZWVkZWU3ODFhY2M3YzcwOTAyYjhjZSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wNC0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBOb3QgdXNpbmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVjbGFyYXRp
b24gc3RhdGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU1NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBzdHJlc3Mvc3VwZXJjbGFz
cy1leHByZXNzaW9uLXN0cmljdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAoZi50cnkuYyk6Cisg
ICAgICAgIChmKToKKwogMjAyMC0wNC0wNiAgUmljayBXYWxkcm9uICA8d2FsZHJvbi5yaWNrQGdt
YWlsLmNvbT4gYW5kIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBUZXN0MjYyIGhhcm5lc3MgZmlsZSBhbmQgaW1wbGVt
ZW50ICQyNjIuSXNIVE1MRERBCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdXBlcmNsYXNz
LWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhw
cmVzc2lvbi1zdHJpY3RuZXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3ZWE2ODQ3OWM5NzNmM2M2MjBhY2Zi
ZjFmMDE5YWJlZGE5MmEyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdXBl
cmNsYXNzLWV4cHJlc3Npb24tc3RyaWN0bmVzcy5qcwpAQCAtMCwwICsxLDU5IEBACitmdW5jdGlv
biBmKCkgeworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgY2xhc3MgYyBleHRlbmRzKGQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4ge307CisgICAgICAgICAgICB9LCBkKSB7fQorICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8
IGVycm9yLm1lc3NhZ2UgIT0gIkNhbid0IGZpbmQgdmFyaWFibGU6IGQiKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJUZXN0IHNob3VsZCBoYXZlIHRocm93biBhIHJlZmVyZW5jZSBlcnJv
ciIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB2YXIgb2Jq
ID0ge307CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICd4JywgeyBjb25maWd1
cmFibGU6IGZhbHNlLCB2YWx1ZTogMSB9KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNs
YXNzIGMgZXh0ZW5kcyhkZWxldGUgb2JqLngsICgpPT57fSkge30KKyAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFl
cnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgdHlw
ZSBlcnJvciIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIGVycm9yOworICAgICAgICB2
YXIgb2JqID0ge307CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICd4JywgeyBj
b25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZTogMSB9KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGNsYXNzIGMgZXh0ZW5kcyhldmFsKCdkZWxldGUgb2JqLngnKSwgY2xhc3N7fSkge30KKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJvci5tZXNzYWdlICE9ICJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhh
dmUgdGhyb3duIGEgdHlwZSBlcnJvciIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdmFyIG8g
PSB7fTsKKyAgICAgICAgby5fX2RlZmluZUdldHRlcl9fKCJ4IiwgZnVuY3Rpb24gKCkgeyByZXR1
cm4gNDI7IH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3MgYyBleHRlbmRzIChv
LnggPSAxMywgY2xhc3MgeyB9KSB7IH0KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAg
ICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlcnJvciB8fCBlcnJvci5t
ZXNzYWdlICE9ICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgdHlw
ZSBlcnJvciIpOworICAgIH0KK30KKworIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykK
KyAgICBmKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395741</attachid>
            <date>2020-04-07 14:55:01 -0700</date>
            <delta_ts>2020-04-07 15:32:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205578-20200407145500.patch</filename>
            <type>text/plain</type>
            <size>262206</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YjI0ZTMzNmQ0ZDBkZjRiY2QzYTI3NWI1Y2MzYTI0OTZkM2IwNzlhLi45NjI0NGI4YjkxMGIyN2E1
NTFkMGQxYjE0ZTUzYjMzZWE3OTA2YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODUgQEAKKzIwMjAtMDQtMDcgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgTm90IHVzaW5nIHN0cmljdCBtb2RlIHdpdGhpbiBDbGFzc0RlY2xhcmF0
aW9uIHN0YXRlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1NTc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODE5NDU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFdlIGNvcnJlY3RseSBzZXQg
c3RyaWN0IG1vZGUgd2hlbiBwYXJzaW5nIGNsYXNzZXMsIGJ1dCB3ZSBkaWQgbm90IHNldCBpdCB3
aGVuIGVtaXR0aW5nIGJ5dGVjb2RlLgorICAgICAgICBIb3dldmVyLCB0aGF0IG1lYW5zIHRoYXQg
d2UgY2FuIG5vdyBoYXZlIGEgc3Vic2V0IG9mIGEgY29kZSBibG9jaydzIGJ5dGVjb2RlIHRoYXQg
bXVzdCBiZSBydW4gaW4KKyAgICAgICAgc3RyaWN0IG1vZGUsIGV2ZW4gd2hlbiB0aGUgY29kZSBi
bG9jayBpdHNlbGYgaXMgbm90IHN0cmljdC4gQXMgaXQgdHVybnMgb3V0LCB0aGVyZSBhcmUgb25s
eSB0ZW4KKyAgICAgICAgb3Bjb2RlcyB0aGF0IG5lZWQgdG8gYmUgYXdhcmUgb2Ygc3RyaWN0bmVz
cywgc28gYW4gZXh0cmEgYG1vZGVgIG9wZXJhbmQgd2FzIGFkZGVkIHRvIHRoZXNlIG9wY29kZXMu
CisgICAgICAgIFRoZSBtb2RlIHRoZW4gbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0aHJvdWdoIGJh
c2VsaW5lLCBERkcgYW5kIEZUTC4KKworICAgICAgICAqIEFQSS9BUElDYWxsYmFja0Z1bmN0aW9u
Lmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwpOgorICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Y2FsbCk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6
CisgICAgICAgIChKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QpOgorICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlw
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omlz
Q29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25DZWxs
KToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6dXNlc0V2YWwgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVD
YWxsRnJhbWU6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGlu
ZUNhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmlzSW5TdHJpY3RD
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwOgorICAg
ICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuaDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpQdXRCeUlkRmxhZ3M6OmNyZWF0ZURpcmVjdCk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRGbGFn
czo6aXNEaXJlY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeUlkRmxhZ3M6OmVjbWFNb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEZsYWdzOjpQdXRCeUlkRmxhZ3MpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENv
ZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQ29uc3RydWN0b3IgY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBj
b25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnJvbVNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
ZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
Y21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVTY29wZTo6U3RyaWN0TW9k
ZVNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAg
ICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkVtcHR5TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5O
b2RlOjplbWl0TG9vcEhlYWRlcik6CisgICAgICAgIChKU0M6OkZvck9mTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ05vZGU6OmJpbmRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFz
c2lnbm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBkZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
Ojp0aGlzVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZh
bHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZvcik6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFQ01BTW9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckNlbGxXaXRoU3RyaW5n
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
Q2VsbFdpdGhTeW1ib2wpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0RHluYW1pY1Zhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxl
dGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0
ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0RHluYW1p
Y1Zhcik6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0
b3JOYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OmV2YWwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlI
ZWxwZXJzLmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlv
bik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAq
IGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bGlua1Nsb3dDYXNlSWZOb3RK
U0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlRGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAo
SlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgIChKU0M6OmFy
cmF5UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUG9wKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90
b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjphcnJheVByb3Rv
RnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAg
ICAgIChKU0M6OmFycmF5UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgor
ICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6OnVzZXNFdmFsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAgICAgICAqIHJ1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRz
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Om1h
dGVyaWFsaXplU3BlY2lhbHMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAg
IChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToK
KyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQU1vZGUuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcC4K
KyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
RUNNQU1vZGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRGbGFncy5oLgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6ZnJvbUJ5dGUpOgorICAgICAg
ICAoSlNDOjpFQ01BTW9kZTo6c3RyaWN0KToKKyAgICAgICAgKEpTQzo6RUNNQU1vZGU6OnNsb3Bw
eSk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjppc1N0cmljdCBjb25zdCk6CisgICAgICAgIChK
U0M6OkVDTUFNb2RlOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkVDTUFNb2RlOjpFQ01B
TW9kZSk6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlND
OjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZXRQdXRJbmZvLmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0UHV0SW5mbzo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9HZXRQdXRJbmZvLmg6CisgICAgICAgIChKU0M6OkdldFB1dEluZm86OkdldFB1dEluZm8p
OgorICAgICAgICAoSlNDOjpHZXRQdXRJbmZvOjplY21hTW9kZSBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAg
ICAgICAgKiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFs
dWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpzZWxlY3RTdHJ1Y3R1cmVGb3JOZXdGdW5jRXhwKToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVu
Y0V2YWwpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpOgorICAgICAgICAo
SlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAgICAgICogcnVu
dGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9UaGlzKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhp
cyk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpHZXRDYWxsZXJTdHJpY3RuZXNzRnVuY3Rvcjo6b3BlcmF0
b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6Ok51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om9iamVjdFBy
b3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZp
bmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIpOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q2FsbCk6CisgICAgICAgICog
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OmlzQXJyb3dGdW5jdGlvbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlNDOjpTY3JpcHRF
eGVjdXRhYmxlOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6
cHV0KToKKwogMjAyMC0wNC0wNiAgUmljayBXYWxkcm9uICA8d2FsZHJvbi5yaWNrQGdtYWlsLmNv
bT4gYW5kIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBUZXN0MjYyIGhhcm5lc3MgZmlsZSBhbmQgaW1wbGVtZW50ICQy
NjIuSXNIVE1MRERBCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMxMDc1NWJiN2JlOGNiYjRmMjUzNDI1MzUyMGFj
MjIyODBkZmExZi4uODZhZWZkODYxZjU4OGU2YmE5YjYxMTk3Mjk5OGEzYmRlMWM5OTBiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA0LTA3ICBUYWRldSBaYWdhbGxvICA8dHph
Z2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIE5vdCB1c2luZyBzdHJpY3QgbW9kZSB3aXRoaW4g
Q2xhc3NEZWNsYXJhdGlvbiBzdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTU3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgxOTQ1
ODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUZXN0
OiBKU1Rlc3RzLyBzdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNzaW9uLXN0cmljdG5lc3MuanMKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3QpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJh
dGlvbjxKU0V2ZW50VGFyZ2V0Pjo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwog
MjAyMC0wNC0wNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
J2N1cnJlbnRjb2xvcicgZG9lc24ndCBuZWVkIHNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9w
ZXJ0aWVzIG1hcmtpbmcgYW55bW9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SUNhbGxiYWNrRnVuY3Rpb24uaAppbmRleCBjOTkxMDUzYTE5MTlmOGUxYmE0ZWE5OGI3N2Q4ZTFh
OWQxYjdkZGU4Li5kNTY1YjQxMjg5ZTdmNjg2MWY4ZjlmOWI3ZWFkYjA5MTY5NmVhNDYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaApAQCAt
NDgsNyArNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVu
Y3Rpb246OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVm
KGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihq
c0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIE5vdFN0cmljdE1vZGUpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVm
KGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwogCiAgICAgaW50IGFyZ3VtZW50Q291bnQgPSBz
dGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBWZWN0b3I8
SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggMDJjZWRjNzk2NmJlYzBh
NTNhOWJjMDJhOWYzNzgzZTc5ZjczMmUyZi4uMDNhMThkYzkwMzZiNjY3ODQxOTJlZjUwYzkyMDQ1
ZWQzNTM4YjY3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTUyMyw3ICs1MjMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbAogCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9iYWxPYmpl
Y3QpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2Jq
ZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJp
Y3RNb2RlKSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNP
YmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzbG9wcHkoKSkpKTsKICAgICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGpz
Q2FzdDxKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qPih0b0pTKGZ1bmN0aW9uUmVmKSktPmNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0ganND
bGFzcy0+Y2FsbEFzRnVuY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UmVmLmNwcAppbmRleCAyMjJhNGVlMjBkY2JhZGIwN2I3YmM2NTRkY2Y4YWE4MGNmMmMxMmJl
Li4yNDAxNzkxNmU3NTE3NmI4M2UzNWQ5ZWQwMjg4MjgzMjUyMTZjNzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgSlNP
YmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0p
OwogCi0gICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGdsb2JhbE9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIE5vdFN0cmlj
dE1vZGUpKSk7CisgICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGdsb2JhbE9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzbG9wcHkoKSkpKTsKIH0KIAogSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0
R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBiNTdhMDI3NmIzYjNkOTU1YjJiZmEyNTljYTRhM2I3ZWEwOTE1MGEzLi45OTBhZTk5MDg2
ZGU5MGM2ZDE3NWRkYWFmNWI2ZWM1NmIxNTQ4MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC04MjIsNiArODIyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaAogICAgIHJ1bnRp
bWUvRGlzYWxsb3dWTVJlZW50cnkuaAogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuaAorICAgIHJ1
bnRpbWUvRUNNQU1vZGUuaAogICAgIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaAogICAg
IHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKICAgICBydW50aW1lL0Vycm9yLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDY1Mzk1YWQwZmZiYmM5ZmE0YzlkMGY1Mzk4MjcwM2Mx
OWRmOTg1MC4uODNlNDg2Mjc0MDQyYjk0MzJmY2EwNTUwNWRhNjYxOWNiYWRmZTMzZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5OCw2ICs3OTgsNyBAQAogCQkxNDUwRkExQzIz
NTdCREJFMDA5M0NENEQgLyogV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEM1QUQ2QjIyRjMzRkMwMDBGMUZCODMg
LyogV2FzbUZ1bmN0aW9uQ29kZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ1MEZBMUYyMzU3QkVDOTAwOTNDRDREIC8qIFdhc21MTElu
dFRpZXJVcENvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0NTBGQTFFMjM1N0JFQzQwMDkzQ0Q0RCAvKiBXYXNtTExJbnRUaWVyVXBDb3VudGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ1
NzIyODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NTcyMjg1MTQzN0UxNDAwMDVGREUyNiAv
KiBTdHJvbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMTQ1RkYyQzgyNDNCQjlENjAwNTY5RTcxIC8qIEVDTUFNb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDVGRjJDNzI0M0JCOTlB
MDA1NjlFNzEgLyogRUNNQU1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxNDZDMzg0QjIxNzdBQ0RGMDA3OUY2RDkgLyogVW5saW5rZWRNZXRh
ZGF0YVRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDJENTJCRTIxNzYyOTU4MDAyREIwODYgLyogVW5saW5rZWRNZXRhZGF0YVRhYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ3MTQ4MzAy
MEQzMjNEMzAwOTBFNjMwIC8qIEpTV3JhcHBlck1hcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3MTQ4MkYyMEQzMjM2NTAwOTBFNjMwIC8q
IEpTV3JhcHBlck1hcFRlc3RzLm1tICovOyB9OwogCQkxNDczNDFDQzFEQzAyRDcyMDBBQTI5QkEg
LyogRXhlY3V0YWJsZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NzM0MUNCMURDMDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMzM5LDYg
KzMzNDAsOCBAQAogCQkxNDUzNDg1NzIyOTE3MzdGMDBCMUMyRUIgLyogdGVzdGFwaS5lbnRpdGxl
bWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LmVudGl0bGVtZW50czsgcGF0aCA9IHRlc3RhcGku
ZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDU3MjI4NTE0MzdF
MTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJvbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
NDVGRjJDNjI0M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRUNNQU1vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDVGRjJDNzI0
M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQU1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ2QUFCMkEwQjY2QTg0OTAwRTU1RjE2IC8q
IEpTU3RyaW5nUmVmQ0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3Ry
aW5nUmVmQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ2QUFCMzcwQjY2QTk0
NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTU3RyaW5nUmVmQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNDZCMTREQjEyRUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc2VydmF0aXZlUm9vdHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzExNCw2ICs3MTE3LDggQEAKIAkJCQlF
M0ZDMjUxMTIyNTZFQ0Y0MDA1ODM1MTggLyogRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50Lmgg
Ki8sCiAJCQkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywK
IAkJCQlBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuaCAqLywKKwkJCQkx
NDVGRjJDNjI0M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuY3BwICovLAorCQkJCTE0NUZGMkM3
MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5oICovLAogCQkJCUZFMzE4RkREMUNBQzhDNTMw
MERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLywKIAkJCQlG
RTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9u
cy5oICovLAogCQkJCUZFMzRFRTIyMjQzOThCODUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZl
SGVyZS5jcHAgKi8sCkBAIC05NDI5LDYgKzk0MzQsNyBAQAogCQkJCUUzNUNBMTU0MURCQzNBNUMw
MEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTA3MDhB
MURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMTQ1RkYyQzgyNDNCQjlENjAwNTY5RTcxIC8qIEVDTUFNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5h
bEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkND
IC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzRFRTIx
MjQzOThBQUUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNzE2ZmU0NzlhZDQ5ZGViN2IyMWU4ZTYx
YTcwOGNmNTQ4Y2FkMDBlNy4uMDhmZjhmZTdiYjFjN2M0OWUxODcwOGUzZDU5MTFhOTEyNWQyMTZi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNzY1LDYgKzc2NSw3IEBAIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCiBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNw
cAogcnVudGltZS9Eb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0R1bXBD
b250ZXh0LmNwcAorcnVudGltZS9FQ01BTW9kZS5jcHAKIHJ1bnRpbWUvRUNNQVNjcmlwdFNwZWNJ
bnRlcm5hbEZ1bmN0aW9ucy5jcHAKIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwCiBy
dW50aW1lL0Vycm9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAKaW5kZXggZDM3MjM2ZjQwYWE4OTkxMjdjNzQ5ZWJkYjk4Njk2Yzc3
ODVkOGNiMy4uZDkxMDYyY2Y3YTM1NGYwNmEyYzYyZjQ0ZjQxODM0NDk1ZDY4MzE3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgotI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNs
dWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggOWYyYWJhMzlmMmNlNzA4ZDMxM2I4
ZDk0MGNmOTZmYmE0MmZjYzk0ZS4uZmRhYWE2OTQ1ZmYwZTlkNTE1MWFhYTg5YTdhOTkyMDdhYzFj
MjllZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICAgICAgICAgICAgICAgICAg
c2NvcGUsIC8vIHNjb3BlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllcklu
ZGV4LCAvLyBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQsIC8vIHZhbHVl
Ci0gICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExv
Y2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIC8v
IGluZm8KKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3Vu
ZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
LCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFNb2RlKCkpLCAvLyBpbmZvCiAgICAgICAgICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0
ZXIgeyBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB9KSwgLy8gc3ltYm9sIHRhYmxl
IGNvbnN0YW50IGluZGV4CiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQu
b2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAgICAgICAgICAgICAgICAgKTsKQEAgLTI2OSw3ICsy
NjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kLCAvLyBkc3QKICAgICAgICAgICAgICAgICAgICAgc2NvcGUsIC8v
IHNjb3BlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBp
ZGVudGlmaWVyCi0gICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbiksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93
SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uLCBtX2J5dGVjb2RlR2VuZXJhdG9yLmVjbWFNb2RlKCkpLCAvLyBpbmZvCiAgICAg
ICAgICAgICAgICAgICAgIDAsIC8vIGxvY2FsIHNjb3BlIGRlcHRoCiAgICAgICAgICAgICAgICAg
ICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CiAgICAgICAg
ICAgICAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjZDc1NDY4MGMxMjZhMGY3Mjc1MzZmMWJlMzdjNGUuLjFm
NTY2OTRjZTcwMGZkZWJlMWZkY2JkMDQ0ZjJhODdkMDg4ZjdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMjcsNiArMjcsNyBAQCB0
eXBlcyBbCiAgICAgOkJhc2ljQmxvY2tMb2NhdGlvbiwKICAgICA6Qm91bmRMYWJlbCwKICAgICA6
RGVidWdIb29rVHlwZSwKKyAgICA6RUNNQU1vZGUsCiAgICAgOkVycm9yVHlwZSwKICAgICA6R2V0
QnlJZE1vZGUsCiAgICAgOkdldEJ5SWRNb2RlTWV0YWRhdGEsCkBAIC0xNzQsNiArMTc1LDcgQEAg
b3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRvX3RoaXMsCiAgICAgYXJnczogewogICAgICAgICBz
cmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVy
ZUlELApAQCAtNTIyLDYgKzUyNCw3IEBAIG9wIDpwdXRfYnlfaWRfd2l0aF90aGlzLAogICAgICAg
ICB0aGlzVmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVk
LAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBlY21hTW9kZTogRUNN
QU1vZGUsCiAgICAgfQogCiBvcCA6ZGVsX2J5X2lkLApAQCAtNTI5LDYgKzUzMiw3IEBAIG9wIDpk
ZWxfYnlfaWQsCiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBiYXNlOiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKKyAgICAgICAgZWNt
YU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOmdldF9ieV92YWwsCkBAIC01NDgsNiArNTUy
LDcgQEAgb3AgOnB1dF9ieV92YWwsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAg
ICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCkBAIC01NTksNiArNTY0
LDcgQEAgb3AgOnB1dF9ieV92YWxfd2l0aF90aGlzLAogICAgICAgICB0aGlzVmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
dmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAg
IH0KIAogb3AgOnB1dF9ieV92YWxfZGlyZWN0LApAQCAtNTY2LDYgKzU3Miw3IEBAIG9wIDpwdXRf
YnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBw
cm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAorICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewog
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKQEAgLTU3Niw2ICs1ODMsNyBAQCBv
cCA6ZGVsX2J5X3ZhbCwKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJh
c2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0KIAogb3AgOnB1dF9nZXR0ZXJfYnlf
aWQsCkBAIC03NzgsNiArNzg2LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICAgICAgY2FsbGVlOiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGFyZ2M6IHVuc2lnbmVkLAogICAgICAgICBhcmd2OiB1
bnNpZ25lZCwKKyAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYTFhZDM3NjY5YWYx
MjAwMzAyMzUxNTAyZTM0YzkwYzI0MTg4NGU3Ni4uNjBiNDBjZmRhN2IzZTY1YzdmN2FmYWQ3YjFi
MmYzMDA1NGMyODhmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5n
SklUVHlwZShQcmludFN0cmVhbSYgb3V0LCBKSVRUeXBlIGppdFR5cGUpIGNvbnN0CiAgICAgICAg
IG91dC5wcmludCgiIChOZXZlckZUTE9wdGltaXplKSIpOwogICAgIGlmIChvd25lckV4ZWN1dGFi
bGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKQogICAgICAgICBvdXQucHJpbnQoIiAoRGlkVHJ5
VG9FbnRlckluTG9vcCkiKTsKLSAgICBpZiAob3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9k
ZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKICAg
ICAgICAgb3V0LnByaW50KCIgKFN0cmljdE1vZGUpIik7CiAgICAgaWYgKG1fZGlkRmFpbEpJVENv
bXBpbGF0aW9uKQogICAgICAgICBvdXQucHJpbnQoIiAoSklURmFpbCkiKTsKQEAgLTYxOSw3ICs2
MTksNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgICAgICAgICBBU1NFUlQoIWlz
SW5pdGlhbGl6YXRpb24oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KSk7CiAgICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkg
PT0gTG9jYWxDbG9zdXJlVmFyKSB7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xv
c3VyZVZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBieXRlY29kZS5tX2dldFB1
dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9k
ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApAQCAtNjI3LDkg
KzYyNyw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBSZXNvbHZlT3Ag
b3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVj
b2RlLm1fbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgYnl0ZWNvZGUubV9nZXRQ
dXRJbmZvLnJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1
dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBv
cC50eXBlLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIGlmIChvcC50eXBlID09
IE1vZHVsZVZhcikKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQ
dXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBi
eXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCksIENsb3N1cmVWYXIsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAg
ICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwg
b3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0Owog
ICAgICAgICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQpAQCAtNjYxLDcgKzY2MSw3IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3Bl
OjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fc3ltYm9s
VGFibGVPclNjb3BlRGVwdGguc2NvcGVEZXB0aCgpLCBzY29wZSwgaWRlbnQsIFB1dCwgYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKIAotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0
UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0
ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlv
bk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAg
aWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9
PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAg
ICAgZWxzZSBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyIHx8IG9wLnR5cGUgPT0gQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCBkM2IwNmE4OTFhZWZjNmM3OTRkNzVlMWMwZDAwNDZlMTkyMzhl
ODI2Li4yMDVlYzE2ZTI3ZjAwMmUxZmZkYzY4N2I0ZmYzMGUwOGMyZmU0YTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yMjIsOSArMjIyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkdW1wTWF0aElDU3RhdHMoKTsKIAotICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmlzU3RyaWN0TW9kZSgpOyB9
CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUt
PmlzQ29uc3RydWN0b3IoKTsgfQotICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1
cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsgfQogICAgIENv
ZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvZGVUeXBl
KCk7IH0KIAogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZENvZGUtPnNjcmlwdE1vZGUoKTsgfQpAQCAtMjMyLDExICsyMzAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzSW5zdGFsbGVkVk1UcmFwQnJlYWtwb2ludHMoKSBjb25zdDsK
ICAgICBib29sIGluc3RhbGxWTVRyYXBCcmVha3BvaW50cygpOwogCi0gICAgaW5saW5lIGJvb2wg
aXNLbm93bk5vdEltbWVkaWF0ZShWaXJ0dWFsUmVnaXN0ZXIgcmVnKQorICAgIGlubGluZSBib29s
IGlzS25vd25DZWxsKFZpcnR1YWxSZWdpc3RlciByZWcpCiAgICAgewotICAgICAgICBpZiAocmVn
ID09IHRoaXNSZWdpc3RlcigpICYmICFpc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotCisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBhZGRpbmcgYmFjayB0aGUgb3B0
aW1pemF0aW9uIHdoZXJlIHdlIHJldHVybiB0cnVlIGlmIGByZWdgIGlzIGB0aGlzYCBhbmQgd2Un
cmUgaW4gc2xvcHB5IG1vZGUuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTAxNDUKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnQocmVnKS5pc0NlbGwoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA3N2YxOTI5MDY5
MDgzMzZlYmQwMDhkY2YwYzM2ZjRhYzZlOWU3NWQ0Li40OWVkZDUyODVkNWMyYzI4YjFjOWE0YmNl
ZWY0NTE3MTk5MGJlOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZUluZm8uaApAQCAtMzYsOSArMzYsOCBAQCBlbnVtIGNsYXNzIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIC8vIEZJWE1FOiBUaGVzZSBm
bGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxk
IGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBKU1Bh
cnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIHVz
ZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2Rl
LCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRU
eXBlKQogICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCi0gICAgICAgICwgbV9pc1N0cmlj
dE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVj
dG9yKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAg
ICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVj
dG9yS2luZCkpCkBAIC01Nyw3ICs1Niw2IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAg
fQogCiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KLSAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9
CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGlu
RnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KQEAgLTcyLDcgKzcwLDYgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIAogcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9k
ZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6
IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJjMmM2Njlm
N2NhZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi4wZDk1NzA5MjZhYjE0NzM3OGVjMzE3MjgzOGRi
MjM1ODgyZGI3YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Rml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgc3RydWN0IEZpdHM7CiAKIC8vIEltcGxpY2l0IGNvbnZlcnNpb24gZm9yIHR5
cGVzIG9mIHRoZSBzYW1lIHNpemUKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIE9wY29kZVNpemUgc2l6
ZT4KLXN0cnVjdCBGaXRzPFQsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKFQpID09IHNp
emUsIHN0ZDo6dHJ1ZV90eXBlPj4geworc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVf
aWZfdDxzaXplb2YoVCkgPT0gc2l6ZSAmJiBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VD46OnZhbHVl
LCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlw
ZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwogCiAgICAgc3RhdGljIGJvb2wgY2hlY2soVCkg
eyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTc0LDE4ICsxNzQsMjAgQEAgc3RydWN0IEZpdHM8R2V0UHV0
SW5mbywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplICE9IE9wY29kZVNpemU6OldpZGUzMiwg
c3RkOjoKICAgICAvLyAxMyBSZXNvbHZlIFR5cGVzCiAgICAgLy8gMyBJbml0aWFsaXphdGlvbiBN
b2RlcwogICAgIC8vIDIgUmVzb2x2ZSBNb2RlcworICAgIC8vIDEgYml0IGlzU3RyaWN0IGZsYWcK
ICAgICAvLwogICAgIC8vIFRyeSB0byBlbmNvZGUgZW5jb2RlIGFzCiAgICAgLy8KLSAgICAvLyAg
ICAgICAgICAgaW5pdGlhbGl6YXRpb24gbW9kZQotICAgIC8vICAgICAgICAgICAgICAgICAgICB2
Ci0gICAgLy8gZnJlZSBiaXQtPiAwfDAwMDB8MDB8MAotICAgIC8vICAgICAgICAgICAgICAgICBe
ICAgIF4KLSAgICAvLyAgICByZXNvbHZlICB0eXBlICAgcmVzb2x2ZSBtb2RlCisgICAgLy8gICAg
ICAgICAgICBpbml0aWFsaXphdGlvbiBtb2RlCisgICAgLy8gICAgICAgICAgICAgICAgICAgICB2
CisgICAgLy8gaXNTdHJpY3QgLT4gMHwwMDAwfDAwfDAKKyAgICAvLyAgICAgICAgICAgICAgICAg
IF4gICAgXgorICAgIC8vICAgICAgcmVzb2x2ZSAgdHlwZSAgICByZXNvbHZlIG1vZGUKICAgICBz
dGF0aWMgY29uc3RleHByIGludCBzX3Jlc29sdmVUeXBlTWF4ID0gMSA8PCA0OwogICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlTWF4ID0gMSA8PCAyOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IHNfcmVzb2x2ZU1vZGVNYXggPSAxIDw8IDE7CiAKKyAgICBzdGF0
aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMSA8PCA3OwogICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IHNfcmVzb2x2ZVR5cGVCaXRzID0gKHNfcmVzb2x2ZVR5cGVNYXggLSAxKSA8PCAz
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaW5pdGlhbGl6YXRpb25Nb2RlQml0cyA9IChz
X2luaXRpYWxpemF0aW9uTW9kZU1heCAtIDEpIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgc19yZXNvbHZlTW9kZUJpdHMgPSAoc19yZXNvbHZlTW9kZU1heCAtIDEpOwpAQCAtMjA2LDcg
KzIwOCw4IEBAIHN0cnVjdCBGaXRzPEdldFB1dEluZm8sIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c2l6ZSAhPSBPcGNvZGVTaXplOjpXaWRlMzIsIHN0ZDo6CiAgICAgICAgIGF1dG8gcmVzb2x2ZVR5
cGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihncGkucmVzb2x2ZVR5cGUoKSk7CiAgICAgICAgIGF1
dG8gaW5pdGlhbGl6YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZ3BpLmluaXRpYWxp
emF0aW9uTW9kZSgpKTsKICAgICAgICAgYXV0byByZXNvbHZlTW9kZSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KGdwaS5yZXNvbHZlTW9kZSgpKTsKLSAgICAgICAgcmV0dXJuIChyZXNvbHZlVHlwZSA8
PCAzKSB8IChpbml0aWFsaXphdGlvbk1vZGUgPDwgMSkgfCByZXNvbHZlTW9kZTsKKyAgICAgICAg
YXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGdwaS5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkpOworICAgICAgICByZXR1cm4gKGlzU3RyaWN0IDw8IDcpIHwgKHJlc29sdmVUeXBlIDw8
IDMpIHwgKGluaXRpYWxpemF0aW9uTW9kZSA8PCAxKSB8IHJlc29sdmVNb2RlOwogICAgIH0KIAog
ICAgIHN0YXRpYyBHZXRQdXRJbmZvIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCkBAIC0yMTQsMTAg
KzIxNyw0NSBAQCBzdHJ1Y3QgRml0czxHZXRQdXRJbmZvLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90
PHNpemUgIT0gT3Bjb2RlU2l6ZTo6V2lkZTMyLCBzdGQ6OgogICAgICAgICBhdXRvIHJlc29sdmVU
eXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KChncGkgJiBzX3Jlc29sdmVUeXBlQml0cykg
Pj4gMyk7CiAgICAgICAgIGF1dG8gaW5pdGlhbGl6YXRpb25Nb2RlID0gc3RhdGljX2Nhc3Q8SW5p
dGlhbGl6YXRpb25Nb2RlPigoZ3BpICYgc19pbml0aWFsaXphdGlvbk1vZGVCaXRzKSA+PiAxKTsK
ICAgICAgICAgYXV0byByZXNvbHZlTW9kZSA9IHN0YXRpY19jYXN0PFJlc29sdmVNb2RlPihncGkg
JiBzX3Jlc29sdmVNb2RlQml0cyk7Ci0gICAgICAgIHJldHVybiBHZXRQdXRJbmZvKHJlc29sdmVN
b2RlLCByZXNvbHZlVHlwZSwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKKyAgICAgICAgYXV0byBpc1N0
cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOworICAgICAgICBy
ZXR1cm4gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUsIGluaXRpYWxpemF0aW9u
TW9kZSwgaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkp
OwogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFB1
dEJ5SWRGbGFncywgc2l6ZT4geworICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBl
QnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CisKKyAgICAvLyBQdXRCeUlkRmxhZ3MgaXMganVz
dCB0d28gYm9vbGVhbiB2YWx1ZXMgZW5jb2RlZCBhcworICAgIC8vCisgICAgLy8gICAgICAgIGlz
U3RyaWN0CisgICAgLy8gICAgICAgICAgIHYKKyAgICAvLyAgICAwMDAwMDB8MHwwCisgICAgLy8g
ICAgICAgICAgICAgXgorICAgIC8vICAgICAgICAgaXNEaXJlY3QKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lz
U3RyaWN0Qml0ID0gMjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5SWRGbGFncykKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBUYXJnZXRUeXBl
IGNvbnZlcnQoUHV0QnlJZEZsYWdzIGZsYWdzKQorICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVj
dCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOworICAgICAgICBhdXRv
IGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmlj
dCgpKTsKKyAgICAgICAgcmV0dXJuIChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OworICAgIH0K
KworICAgIHN0YXRpYyBQdXRCeUlkRmxhZ3MgY29udmVydChUYXJnZXRUeXBlIGdwaSkKKyAgICB7
CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGly
ZWN0Qml0KTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAm
IHNfaXNTdHJpY3RCaXQpOworICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01B
TW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgICAgIHJldHVybiBpc0Rp
cmVjdCA/IFB1dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5SWRGbGFn
czo6Y3JlYXRlKGVjbWFNb2RlKTsKKyAgICB9Cit9OwogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bj
b2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXpl
b2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+
IDogcHVibGljIEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVz
aW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpAQCAtMzI3
LDQgKzM2NSwyNCBAQCBzdHJ1Y3QgRml0czxHZW5lcmljQm91bmRMYWJlbDxHZW5lcmF0b3JUcmFp
dHM+LCBzaXplPiA6IHB1YmxpYyBGaXRzPGludCwgc2l6ZT4gewogICAgIH0KIH07CiAKK3RlbXBs
YXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPEVDTUFNb2RlLCBzaXplPiA6IHB1Ymxp
YyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBz
aXplPjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEJhc2U6OmNoZWNrKGVjbWFNb2RlLnZhbHVlKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoRUNNQU1vZGUgZWNt
YU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZTo6Y29udmVydChlY21hTW9kZS52YWx1
ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRUNNQU1vZGUgY29udmVydCh0eXBlbmFtZSBCYXNl
OjpUYXJnZXRUeXBlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVDTUFNb2RlOjpm
cm9tQnl0ZShCYXNlOjpjb252ZXJ0KGVjbWFNb2RlKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVD
YWxsRnJhbWUuY3BwCmluZGV4IDNlM2U2NWY1OWM1MTMwMWViMmY0NGIyZDIzMWVmY2VjYTkxZWNj
ZjEuLjc5OTFhYzJhOGU2N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC02
Nyw3ICs2Nyw3IEBAIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wQnJpZWZGdW5jdGlvbkluZm9y
bWF0aW9uKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QK
IHsKICAgICBvdXQucHJpbnQoYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCksICI6PCIsIFJhd1Bv
aW50ZXIoYmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpKTsKLSAgICBpZiAoaXNTdHJpY3RNb2RlKCkp
CisgICAgaWYgKGlzSW5TdHJpY3RDb250ZXh0KCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJp
Y3RNb2RlKSIpOwogICAgIG91dC5wcmludCgiLCAiLCBkaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRl
eCgpLCAiLCAiLCBzdGF0aWNfY2FzdDxLaW5kPihraW5kKSk7CiAgICAgaWYgKGlzQ2xvc3VyZUNh
bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1l
LmgKaW5kZXggZTI5ZjM4NGQxZDA2NzJmZWVhMDcxMjA1YmNhYTI4MWE2NDliMjIyOS4uNzVmOWJi
MWE4NDY4YTYxZDdiZTk2YzNhYzliOTFlOTUzZWEzYmY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaApAQCAtMjMxLDcgKzIzMSw3IEBA
IHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxG
cmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKTsgfQogICAgIHB0cmRpZmZfdCByZXR1cm5QQ09mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIENhbGxG
cmFtZTo6cmV0dXJuUENPZmZzZXQoKTsgfQogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25z
dCB7IHJldHVybiBiYXNlbGluZUNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KKyAgICBib29s
IGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpOyB9CiAKICAgICB2b2lkIGR1bXBC
cmllZkZ1bmN0aW9uSW5mb3JtYXRpb24oUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRGbGFncy5jcHAKaW5kZXggYzhhNGI2MGZhNTg4YjAxN2Q3OWVjZjI3MGQ5N2Fi
YjY4YTI0ODI0OS4uNjY1MDBlNjI3NmJjNDY5N2JlMGVlYTFkODgxNDlmZjFhNTAxNGQ0NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKQEAg
LTM2LDggKzM2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBQdXRCeUlkRmxhZ3MgZmxhZ3MpIHsKICAgICBDb21tYVByaW50
ZXIgY29tbWEoInwiKTsKLSAgICBpZiAoZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpCisgICAgaWYg
KGZsYWdzLmlzRGlyZWN0KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklzRGlyZWN0Iik7
CisgICAgaWYgKGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKKyAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiU3RyaWN0Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCmluZGV4IDVjMDQ5MjgxMGUxYzkz
ZmY2MTUzZTY1NmVmNDRjNzdlMmZmOTc0OGUuLjgxZDQ2NzE4YTVmNzU5OTlhY2NlOWMxMGZmNDcx
NzU2MjY2ODNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkRmxhZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZEZsYWdzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMTcgKzI1LDM3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRUNN
QU1vZGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1lbnVtIFB1dEJ5SWRGbGFncyA6IGludDMyX3QgewotICAgIFB1dEJ5SWROb25lID0gMCwK
K2NsYXNzIFB1dEJ5SWRGbGFncyB7CitwdWJsaWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRC
eUlkRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFB1dEJ5SWRGbGFncyhmYWxzZSwgZWNtYU1vZGUpOworICAgIH0KIAotICAgIC8vIFRoaXMgZmxh
ZyBpbmRpY2F0ZXMgdGhhdCB0aGUgcHV0X2J5X2lkIGlzIGRpcmVjdC4gVGhhdCBtZWFucyB0aGF0
IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0Ci0gICAgLy8gY2hlY2tpbmcgaWYgdGhlIHBy
b3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCi0gICAgUHV0QnlJZElzRGlyZWN0ID0gMHgxLAot
ICAgIFB1dEJ5SWRQZXJzaXN0ZW50RmxhZ3NNYXNrID0gMHgxLAorICAgIC8vIEEgZGlyZWN0IHB1
dF9ieV9pZCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5n
IGlmIHRoZQorICAgIC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCisgICAgY29uc3Rl
eHByIHN0YXRpYyBQdXRCeUlkRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRGbGFncyh0cnVlLCBlY21hTW9kZSk7CisgICAg
fQorCisgICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAg
ICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KKworcHJp
dmF0ZToKKyAgICBjb25zdGV4cHIgUHV0QnlJZEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2Rl
IGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisgICAgICAgICwgbV9l
Y21hTW9kZShlY21hTW9kZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2lzRGlyZWN0Owor
ICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCAy
Y2JjYmNhYzkyMDRkNWQzMDdlMmNiNDgzZDNlZjA4YTNhNzFlMTRkLi5mMWVkYjM4MDdlYjAyMWU0
NDQ5Y2NkNjEwNjlhZjJhYjg2MzkwN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFB1dEJ5SWRTdGF0
dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIEJ5dGVjb2RlCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24p
OwogICAgIAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKLSAg
ICBpZiAoIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgIGlmICgh
KGJ5dGVjb2RlLm1fZmxhZ3MuaXNEaXJlY3QoKSkpIHsKICAgICAgICAgY29uZGl0aW9uU2V0ID0K
ICAgICAgICAgICAgIGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1
cnJlbnRseSgKICAgICAgICAgICAgICAgICB2bSwgcHJvZmlsZWRCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIHN0cnVjdHVyZSwgdWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDU4OTFmMmE1YzI1NzdiOTljNTI5MjJk
M2RmZGY1OTZiYTJmZTU2YmYuLjU0ZGE1N2RhYjY5Y2EyNjFhZWZkY2ViOTM4ZmZhMGY0ZmYwMzc5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcApAQCAtNTcsNyArNTcsNiBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRD
b2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkQ29kZUJsb2NrIiwgbnVsbHB0ciwgbnVsbAog
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV91c2VzRXZhbChpbmZvLnVzZXNFdmFsKCkpCi0g
ICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9pc0NvbnN0
cnVjdG9yKGluZm8uaXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyhmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCBkZDIxN2I3ZmQ0ZmVmNTZkZjhkODFjMzVjMjgxMzNkNWM4N2ExYTljLi4w
MGRjNjE2MzM1ZmQzMWIwNDMyNTFlMzQ0MDBlNTdkZWY1MzE1ZDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIzLDcg
KzEyMyw2IEBAIHB1YmxpYzoKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9u
IH07CiAKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3Ry
dWN0b3I7IH0KLSAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJp
Y3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7
IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJz
ZU1vZGU7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJy
b3dGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KQEAgLTMzNSw3ICszMzQsNiBAQCBw
cml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKICAgICB1bnNp
Z25lZCBtX3VzZXNFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAg
ICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1
cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggMjEzYTNhODMyZDdlYWFhOWI5NzEwZjAxYTg2NGRh
OTM1YmRkN2VhNS4uMmViOTg0YzFiMDVhNDVlMGFhNTIwZTFmZDM3OGFkOWUyZmM5MzIyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJC
aW5kaW5nKCk7IH0KICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9Ci0gICAgYm9vbCBpc1N0
cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0K
ICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFs
KCk7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJl
dHVybiBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCmluZGV4IGNkOGJlYmY4ZDM2NDU0NWQxODJkNzljYmY4MDY4MDY3MWY0MTE5N2YuLjBi
ZjMwMjhkODEwYzYxNmViMDdhZGE2NmM1N2RhOTI5OWUxYmJjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcApAQCAtNzEsMTAgKzcxLDExIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlz
Q2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5n
OjpOZWVkZWQ7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJs
ZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2lu
ZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRh
YmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4
dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2Us
IGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBj
b2RlR2VuZXJhdGlvbk1vZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3Vs
dCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBF
eGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUt
PmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmco
KSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJs
ZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBF
dmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUp
OwogCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IGV4
ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCk7Ci0gICAgZXJyb3IgPSBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwg
Y29kZUdlbmVyYXRpb25Nb2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIEVDTUFN
b2RlIGVjbWFNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2Rl
OjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2Rl
R2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOwogCiAg
ICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IGEwMWQ0N2Q3ZGMwYmMxYjQ4MDE2NWJiY2QyNjZkMTFhNmMyMzJiNDUuLjYy
ODQxYjU2N2QwZTFmODg0ZWVhZmU3ZjYyMGVjMWUwODkzMWM3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0yOTcsMTQgKzI5NywyMSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUoKQogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsK
IH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3Jh
bU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9k
ZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0
ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+
KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5l
cmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQogICAgICwgbV90aGlz
UmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5
cGUoR2xvYmFsQ29kZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZh
bHNlKQorICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGlu
RnVuY3Rpb24oZmFsc2UpCisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQorICAgICwg
bV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJU
RFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9n
cmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkK
KyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCkBA
IC0zMzgsMTQgKzM0NSwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIH0KIH0KIAot
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0
ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+
KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5l
cmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKICAgICAsIG1fY29k
ZVR5cGUoRnVuY3Rpb25Db2RlKQogICAgICwgbV92bSh2bSkKKyAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgYSBmbGFnCisgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQorICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJs
b2NrLT5pc0J1aWx0aW5GdW5jdGlvbigpKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2Rl
QmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgLCBt
X3VzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNT
dHJpY3QoKSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSB0YWlsIGNh
bGwgZWxpbWluYXRpb24gd2l0aCB0aGUgcHJvZmlsZXIKICAgICAvLyBlbmFibGVkLiBUaGlzIGlz
IGN1cnJlbnRseSBub3QgcG9zc2libGUgYmVjYXVzZSB0aGUgcHJvZmlsZXIgZXhwZWN0cwogICAg
IC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0ZXIgYSBj
YWxsLCB3aGljaCBhcmUgbm90CkBAIC0zNTMsOCArMzYzLDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
ODgxOQogICAgIC8vCiAgICAgLy8gTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZW5hYmxlIHRh
aWwgY2FsbCBmb3IgbmFrZWQgY29uc3RydWN0b3JzIHNpbmNlIGl0IGRvZXMgbm90IGhhdmUgc3Bl
Y2lhbCBjb2RlIGZvciAicmV0dXJuIi4KLSAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6
dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX2luVGFp
bFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYmICFpc0NvbnN0cnVjdG9yKCkgJiYg
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lICYmIGVjbWFNb2RlLmlz
U3RyaWN0KCkpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQogICAg
ICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2Vz
QXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNt
YU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRl
cml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRh
YmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKQEAgLTQzNyw3ICs0NDksNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rp
b25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAg
ICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUp
OwogICAgICAgICBBU1NFUlQoIWlzQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2Rl
KSk7Ci0gICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHlu
YW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwor
ICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMo
Y29kZUJsb2NrLT51c2VzRXZhbCgpLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICAgICAgYm9v
bCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgp
LmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8
fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwogICAgICAgICBlbWl0UHVzaEZ1bmN0aW9uTmFtZVNj
b3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1hcmtBc0NhcHR1
cmVkKTsKQEAgLTQ4Nyw3ICs0OTksNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAg
ICBtX2FyZ3VtZW50c1JlZ2lzdGVyLT5yZWYoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRz
QXJndW1lbnRzICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpICYmIGlzU2ltcGxlUGFyYW1l
dGVyTGlzdCkgeworICAgIGlmIChuZWVkc0FyZ3VtZW50cyAmJiAhZWNtYU1vZGUuaXNTdHJpY3Qo
KSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKICAgICAgICAgLy8gSWYgd2UgY2FwdHVyZWQg
YW55IGZvcm1hbCBwYXJhbWV0ZXIgYnkgbmFtZSwgdGhlbiB3ZSB1c2UgU2NvcGVkQXJndW1lbnRz
LiBPdGhlcndpc2Ugd2UKICAgICAgICAgLy8gdXNlIERpcmVjdEFyZ3VtZW50cy4gV2l0aCBTY29w
ZWRBcmd1bWVudHMsIHdlIGxpZnQgYWxsIG9mIG91ciBhcmd1bWVudHMgaW50byB0aGUKICAgICAg
ICAgLy8gYWN0aXZhdGlvbi4KQEAgLTUxNiw3ICs1MjgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgICAgICAgICAgICAgICAgICBlbnRyeS5kaXNhYmxlV2F0Y2hpbmcobV92bSk7CiAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNl
c3NhcnksIG5hbWUsIGVudHJ5KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
T3BQdXRUb1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIFVJ
TlRfTUFYLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBH
ZXRQdXRJbmZvKFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlv
bk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJv
bFRhYmxlKFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zm
c2V0Lm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywg
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgVUlOVF9NQVgsIHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxICsgaSksIEdldFB1dEluZm8oVGhyb3dJZk5vdEZvdW5k
LCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24s
IGVjbWFNb2RlKSwgU3ltYm9sVGFibGVPclNjb3BlRGVwdGg6OnN5bWJvbFRhYmxlKFZpcnR1YWxS
ZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KSwgb2Zmc2V0Lm9mZnNldCgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhpcyBjcmVhdGVz
IGEgc2NvcGVkIGFyZ3VtZW50cyBvYmplY3QgYW5kIGNvcGllcyB0aGUgb3ZlcmZsb3cgYXJndW1l
bnRzIGludG8gdGhlCkBAIC01NTQsMTEgKzU2NiwxMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEJpbmRpbmdOb2RlKj4ocGFyYW1l
dGVycy5hdChpKS5maXJzdCktPmJvdW5kUHJvcGVydHkoKTsKICAgICAgICAgICAgIGZ1bmN0aW9u
U3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIFN5bWJvbFRhYmxlRW50
cnkoVmFyT2Zmc2V0KG9mZnNldCkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgT3BQdXRU
b1Njb3BlOjplbWl0KHRoaXMsIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIGFkZENvbnN0
YW50KGlkZW50KSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEgKyBp
KSwgR2V0UHV0SW5mbyhUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6
YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbiksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpz
eW1ib2xUYWJsZShWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSks
IG9mZnNldC5vZmZzZXQoKSk7CisgICAgICAgICAgICBPcFB1dFRvU2NvcGU6OmVtaXQodGhpcywg
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgYWRkQ29uc3RhbnQoaWRlbnQpLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSArIGkpLCBHZXRQdXRJbmZvKFRocm93
SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uLCBlY21hTW9kZSksIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoOjpzeW1ib2xUYWJs
ZShWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSksIG9mZnNldC5v
ZmZzZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKG5lZWRzQXJndW1lbnRz
ICYmIChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpIHx8ICFpc1NpbXBsZVBhcmFtZXRlckxpc3Qp
KSB7CisgICAgaWYgKG5lZWRzQXJndW1lbnRzICYmIChlY21hTW9kZS5pc1N0cmljdCgpIHx8ICFp
c1NpbXBsZVBhcmFtZXRlckxpc3QpKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgY2xvbmVkIGFy
Z3VtZW50cyBvYmplY3QuCiAgICAgICAgIE9wQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOjplbWl0KHRo
aXMsIG1fYXJndW1lbnRzUmVnaXN0ZXIpOwogICAgIH0KQEAgLTcxMiw3ICs3MjQsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRU
b1RoaXMgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5u
ZXJBcnJvd0Z1bmN0aW9uc1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93
RnVuY3Rpb25zVXNlRXZhbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRW1pdFRv
VGhpcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChmdW5jdGlvbk5vZGUt
PnVzZXNTdXBlclByb3BlcnR5KCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0
aW9uc1VzZVN1cGVyUHJvcGVydHkoKSkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJv
cGVydHkoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQ
cm9wZXJ0eSgpKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgbXVzdCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0IG1v
ZGUgYmVjYXVzZSB3ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBjb252ZXJ0IHx0
aGlzfCB0byBhbiBvYmplY3QsIGFuZCB0aGF0IG9iamVjdCBtYXkgYmUgcGFzc2VkCiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0byBhIHN0cmljdCBmdW5jdGlvbiBhcyB8dGhpc3wuIFRoaXMg
aXMgb2JzZXJ2YWJsZSBiZWNhdXNlIHRoYXQKQEAgLTgzMywxNSArODQ1LDIxIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hl
Y2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBu
dWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25N
b2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywg
RUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1
ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6
bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwg
bV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5v
ZGUoZXZhbE5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShFdmFsQ29kZSkKICAgICAsIG1fdm0odm0pCi0g
ICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGNvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCisgICAg
LCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihm
YWxzZSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYm
ICFlY21hTW9kZS5pc1N0cmljdCgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKKyAg
ICAsIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFooZmFsc2UpCiAgICAgLCBtX25lZWRzVG9V
cGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChldmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8
fCBldmFsTm9kZS0+dXNlc0V2YWwoKSkKKyAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAg
LCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQog
ewogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwpAQCAtODkxLDE1ICs5MDks
MjEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5v
ZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2Nv
cGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6
SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9u
cyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1v
ZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBN
b2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFz
ZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwg
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAg
LCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENh
bGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNv
ZGUpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKKyAgICAs
IG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZh
bHNlKQogICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKKyAgICAsIG1faW5UYWlsUG9z
aXRpb24oZmFsc2UpCisgICAgLCBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKGZhbHNlKQog
ICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5v
ZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkp
CisgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIApA
QCAtMjM5NSw3ICsyNDE5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRGcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY28KICAgICAgICAgICAg
IGtpbGwoZHN0KSwKICAgICAgICAgICAgIHNjb3BlLAogICAgICAgICAgICAgYWRkQ29uc3RhbnQo
dmFyaWFibGUuaWRlbnQoKSksCi0gICAgICAgICAgICBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCB2
YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyBMb2NhbENsb3N1cmVWYXIgOiByZXNvbHZlVHlw
ZSgpLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKSwKKyAgICAgICAgICAg
IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExv
Y2FsQ2xvc3VyZVZhciA6IHJlc29sdmVUeXBlKCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24sIGVjbWFNb2RlKCkpLAogICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoKCks
CiAgICAgICAgICAgICB2YXJpYWJsZS5vZmZzZXQoKS5pc1Njb3BlKCkgPyB2YXJpYWJsZS5vZmZz
ZXQoKS5zY29wZU9mZnNldCgpLm9mZnNldCgpIDogMCk7CiAgICAgICAgIHJldHVybiBkc3Q7CkBA
IC0yNDIyLDExICsyNDQ2LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0VG9TY29wZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmCiAgICAgICAgIFNj
b3BlT2Zmc2V0IG9mZnNldDsKICAgICAgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzU2NvcGUo
KSkgewogICAgICAgICAgICAgb2Zmc2V0ID0gdmFyaWFibGUub2Zmc2V0KCkuc2NvcGVPZmZzZXQo
KTsKLSAgICAgICAgICAgIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHJlc29sdmVNb2RlLCBMb2Nh
bENsb3N1cmVWYXIsIGluaXRpYWxpemF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZv
ID0gR2V0UHV0SW5mbyhyZXNvbHZlTW9kZSwgTG9jYWxDbG9zdXJlVmFyLCBpbml0aWFsaXphdGlv
bk1vZGUsIGVjbWFNb2RlKCkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGVPclNjb3BlRGVwdGgg
PSBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDo6c3ltYm9sVGFibGUoVmlydHVhbFJlZ2lzdGVyIHsg
dmFyaWFibGUuc3ltYm9sVGFibGVDb25zdGFudEluZGV4KCkgfSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQocmVzb2x2ZVR5cGUoKSAhPSBMb2NhbENsb3N1cmVWYXIpOwot
ICAgICAgICAgICAgZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8ocmVzb2x2ZU1vZGUsIHJlc29sdmVU
eXBlKCksIGluaXRpYWxpemF0aW9uTW9kZSk7CisgICAgICAgICAgICBnZXRQdXRJbmZvID0gR2V0
UHV0SW5mbyhyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUoKSwgaW5pdGlhbGl6YXRpb25Nb2RlLCBl
Y21hTW9kZSgpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gU3ltYm9s
VGFibGVPclNjb3BlRGVwdGg6OnNjb3BlRGVwdGgobG9jYWxTY29wZURlcHRoKCkpOwogICAgICAg
ICB9CiAgICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBzY29wZSwgYWRkQ29uc3RhbnQo
dmFyaWFibGUuaWRlbnQoKSksIHZhbHVlLCBnZXRQdXRJbmZvLCBzeW1ib2xUYWJsZU9yU2NvcGVE
ZXB0aCwgISFvZmZzZXQgPyBvZmZzZXQub2Zmc2V0KCkgOiAwKTsKQEAgLTI1MDcsNyArMjUzMSw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklE
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwCiAKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6
ZXIucHV0QnlJZChiYXNlLCBwcm9wZXJ0eUluZGV4KTsKIAotICAgIE9wUHV0QnlJZDo6ZW1pdCh0
aGlzLCBiYXNlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgUHV0QnlJZE5vbmUpOyAvLyBpcyBub3Qg
ZGlyZWN0CisgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZh
bHVlLCBQdXRCeUlkRmxhZ3M6OmNyZWF0ZShlY21hTW9kZSgpKSk7IC8vIGlzIG5vdCBkaXJlY3QK
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI1MTcsNyArMjU0MSw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiB0aGlzVmFsCiAKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQo
cHJvcGVydHkpOwogCi0gICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhp
c1ZhbHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSk7CisgICAgT3BQdXRCeUlkV2l0aFRoaXM6OmVt
aXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eUluZGV4LCB2YWx1ZSwgZWNtYU1vZGUo
KSk7CiAKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTMwLDcgKzI1NTQsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFz
ZSwgY29uc3QgSWRlbnRpZgogCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQo
YmFzZSwgcHJvcGVydHlJbmRleCk7CiAKLSAgICBQdXRCeUlkRmxhZ3MgdHlwZSA9IChwdXRUeXBl
ID09IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QgfHwgcHJvcGVydHkgIT0gbV92bS5wcm9wZXJ0
eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pID8gUHV0QnlJZElzRGlyZWN0IDogUHV0QnlJZE5vbmU7
CisgICAgUHV0QnlJZEZsYWdzIHR5cGUgPSAocHV0VHlwZSA9PSBQcm9wZXJ0eU5vZGU6Oktub3du
RGlyZWN0IHx8IHByb3BlcnR5ICE9IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3Rv
KSA/IFB1dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpIDogUHV0QnlJZEZsYWdz
OjpjcmVhdGUoZWNtYU1vZGUoKSk7CiAgICAgT3BQdXRCeUlkOjplbWl0KHRoaXMsIGJhc2UsIHBy
b3BlcnR5SW5kZXgsIHZhbHVlLCB0eXBlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yNTkw
LDcgKzI2MTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0
b3JGaWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKQogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBPcERlbEJ5SWQ6OmVtaXQo
dGhpcywgZHN0LCBiYXNlLCBhZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAgIE9wRGVsQnlJZDo6
ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSwgZWNtYU1vZGUoKSk7
CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMjYzNCwyNSArMjY1OCwyNSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogYmFzZSwgUgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5
VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1
ZSk7CisgICAgT3BQdXRCeVZhbDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVj
bWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlz
VmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsV2l0aFRoaXM6OmVtaXQodGhpcywgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwg
dmFsdWUpOworICAgIE9wUHV0QnlWYWxXaXRoVGhpczo6ZW1pdCh0aGlzLCBiYXNlLCB0aGlzVmFs
dWUsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsK
LSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7
CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUs
IGVjbWFNb2RlKCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQogewotICAgIE9wRGVsQnlWYWw6OmVtaXQodGhp
cywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgT3BEZWxCeVZhbDo6ZW1pdCh0aGlzLCBkc3Qs
IGJhc2UsIHByb3BlcnR5LCBlY21hTW9kZSgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0z
MjQ2LDcgKzMyNzAsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWMKICAgICAvLyBFbWl0IGNh
bGwuCiAgICAgQVNTRVJUKGRzdCk7CiAgICAgQVNTRVJUKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkp
OwotICAgIENhbGxPcDo6ZW1pdCh0aGlzLCBkc3QsIGZ1bmMsIGNhbGxBcmd1bWVudHMuYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSwgY2FsbEFyZ3VtZW50cy5zdGFja09mZnNldCgpKTsKKyAg
ICBpZiBjb25zdGV4cHIgKG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkKKyAgICAgICAgQ2FsbE9w
OjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0KCksIGVjbWFNb2RlKCkpOworICAg
IGVsc2UKKyAgICAgICAgQ2FsbE9wOjplbWl0KHRoaXMsIGRzdCwgZnVuYywgY2FsbEFyZ3VtZW50
cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBjYWxsQXJndW1lbnRzLnN0YWNrT2Zmc2V0
KCkpOwogICAgIAogICAgIGlmIChleHBlY3RlZEZ1bmN0aW9uICE9IE5vRXhwZWN0ZWRGdW5jdGlv
bikKICAgICAgICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwpAQCAtMzc4OSw3ICszODE2LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmUKICAgICB1bnNpZ25lZCBudW1WYXJzID0gbV9jb2RlQmxv
Y2stPm51bVZhcnMoKTsKICAgICBwdXNoTGV4aWNhbFNjb3BlSW50ZXJuYWwobmFtZVNjb3BlRW52
aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBl
OjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgVERaUmVxdWlyZW1lbnQ6Ok5vdFVuZGVyVERaLCBTY29w
ZVR5cGU6OkZ1bmN0aW9uTmFtZVNjb3BlLCBTY29wZVJlZ2lzdGVyVHlwZTo6VmFyKTsKICAgICBB
U1NFUlRfVU5VU0VEKG51bVZhcnMsIG1fY29kZUJsb2NrLT5udW1WYXJzKCkgPT0gc3RhdGljX2Nh
c3Q8aW50PihudW1WYXJzICsgMSkpOyAvLyBTaG91bGQgaGF2ZSBvbmx5IGNyZWF0ZWQgb25lIG5l
dyAidmFyIiBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgc2NvcGUuCi0gICAgYm9vbCBzaG91bGRUcmVh
dEFzTGV4aWNhbFZhcmlhYmxlID0gaXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBzaG91bGRUcmVh
dEFzTGV4aWNhbFZhcmlhYmxlID0gZWNtYU1vZGUoKS5pc1N0cmljdCgpOwogICAgIFZhcmlhYmxl
IGZ1bmN0aW9uVmFyID0gdmFyaWFibGVGb3JMb2NhbEVudHJ5KHByb3BlcnR5LCBtX2xleGljYWxT
Y29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxlLT5nZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBw
cm9wZXJ0eS5pbXBsKCkpLCBtX2xleGljYWxTY29wZVN0YWNrLmxhc3QoKS5tX3N5bWJvbFRhYmxl
Q29uc3RhbnRJbmRleCwgc2hvdWxkVHJlYXRBc0xleGljYWxWYXJpYWJsZSk7CiAgICAgZW1pdFB1
dFRvU2NvcGUobV9sZXhpY2FsU2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSwgZnVuY3Rpb25WYXIs
IGNhbGxlZSwgVGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxp
emF0aW9uKTsKIH0KQEAgLTM5NzIsNyArMzk5OSw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkK
IHsKICAgICAvLyBJZiB3ZSdyZSBpbiBzdHJpY3QgbW9kZSwgd2UgYWx3YXlzIHRocm93LgogICAg
IC8vIElmIHdlJ3JlIG5vdCBpbiBzdHJpY3QgbW9kZSwgd2UgdGhyb3cgZm9yICJjb25zdCIgdmFy
aWFibGVzIGJ1dCBub3QgdGhlIGZ1bmN0aW9uIGNhbGxlZS4KLSAgICBpZiAoaXNTdHJpY3RNb2Rl
KCkgfHwgdmFyaWFibGUuaXNDb25zdCgpKSB7CisgICAgaWYgKGVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSB8fCB2YXJpYWJsZS5pc0NvbnN0KCkpIHsKICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcobV92bSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNTA1NSw3ICs1MDgyLDcgQEAgdm9pZCBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0VG9UaGlzKCkKIHsKLSAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNS
ZWdpc3RlcikpOworICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVy
KSwgZWNtYU1vZGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IDI5ODkzNzQwYTg1YTU4NDllMzk3Mjg4NTY1MDMyYWU3NGJhZmY1NWIuLmVhY2FjNjI1OGJiNTI4
MjNlZGZiNTRiMzg2ODM3MmYxMzNiZjAxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM4MCwxMyArMzgw
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgRmluYWxseUNvbnRl
eHQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBJbmRleGVkRm9ySW5Db250ZXh0OwogICAgICAgICBm
cmllbmQgY2xhc3MgU3RydWN0dXJlRm9ySW5Db250ZXh0OworICAgICAgICBmcmllbmQgY2xhc3Mg
U3RyaWN0TW9kZVNjb3BlOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlv
blN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCop
OwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCopOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2
YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5l
cmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50Kik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
LCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBV
bmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5l
cmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiwgRUNNQU1vZGUpOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigpOwogICAg
ICAgICAKQEAgLTQwNiwxNCArNDA3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9CiAK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgVW5saW5rZWRDb2RlQmxv
Y2s+Ci0gICAgICAgIHN0YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5v
ZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCkKKyAgICAgICAg
c3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIGVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAg
ICAgICAgewogICAgICAgICAgICAgTW9ub3RvbmljVGltZSBiZWZvcmU7CiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAg
ICAgICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAg
IERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5l
cmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRD
b2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAgICAg
YXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZt
LCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVu
dCwgZWNtYU1vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRv
ci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9y
dEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CkBAIC0xMDE5LDcgKzEwMjAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVHZW5lcmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2VuZXJhdGlvbk1v
ZGU6OlR5cGVQcm9maWxlcik7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0Q29udHJvbEZsb3dQ
cm9maWxlckhvb2tzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlR2VuZXJhdGlvbk1vZGUuY29udGFp
bnMoQ29kZUdlbmVyYXRpb25Nb2RlOjpDb250cm9sRmxvd1Byb2ZpbGVyKTsgfQogICAgICAgICAK
LSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCk7IH0KKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2VjbWFNb2RlOyB9CiAgICAgICAgIHZvaWQgc2V0VXNlc0NoZWNrcG9pbnRzKCkgeyBt
X2NvZGVCbG9jay0+c2V0SGFzQ2hlY2twb2ludHMoKTsgfQogCiAgICAgICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7
IH0KQEAgLTEyOTcsOCArMTI5OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1f
aXNCdWlsdGluRnVuY3Rpb24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1fdXNlc05vblN0cmlj
dEV2YWwgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBmYWxzZSB9
OwotICAgICAgICBib29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwogICAg
ICAgICBib29sIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFogeyBmYWxzZSB9OworICAgICAg
ICBib29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0IDogMTsKKyAgICAgICAg
RUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZl
ZENvbnRleHRUeXBlIHsgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lIH07CiAKICAgICAgICAgQ29t
cGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWjsKQEAgLTEz
MTIsNiArMTMxNCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPENhdGNoRW50
cnk+IG1fZXhjZXB0aW9uSGFuZGxlcnNUb0VtaXQ7CiAgICAgfTsKIAorICAgIGNsYXNzIFN0cmlj
dE1vZGVTY29wZSA6IHByaXZhdGUgU2V0Rm9yU2NvcGU8RUNNQU1vZGU+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFN0cmljdE1vZGVTY29wZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQor
ICAgICAgICAgICAgOiBTZXRGb3JTY29wZShnZW5lcmF0b3IubV9lY21hTW9kZSwgRUNNQU1vZGU6
OnN0cmljdCgpKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9OworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNjQwYjI0OTc1NWUxMGVjZGQ5YTgz
YjllMTRiMDk3YWIzOWZkMDk0Zi4uYmQzM2I4YTBmOWJiMjIyMzY3ZDY5NDdmZjJiYjg0NDE4OTdm
Nzc2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtMjkwMyw3ICsyOTAzLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3QKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmlz
U3RyaWN0TW9kZSgpKQorICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9y
LmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICBpZiAobV9hc3NpZ25tZW50Q29u
dGV4dCA9PSBBc3NpZ25tZW50Q29udGV4dDo6QXNzaWdubWVudEV4cHJlc3Npb24pCkBAIC0yOTIw
LDcgKzI5MjAsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBS
ZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSByZXN1bHQuZ2V0KCk7CiAgICAgaWYgKCFpc1JlYWRP
bmx5KSB7Ci0gICAgICAgIHJldHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShz
Y29wZS5nZXQoKSwgdmFyLCByZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/
IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1v
ZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Fzc2lnbm1lbnRDb250ZXh0KSk7CisgICAgICAgIHJl
dHVyblJlc3VsdCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBy
ZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90
Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5pdGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdu
bWVudENvbnRleHQobV9hc3NpZ25tZW50Q29udGV4dCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKHJlc3VsdC5nZXQoKSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIH0KIApAQCAtMzE0MCw3ICszMTQwLDcgQEAgUmVnaXN0ZXJJRCogRW1wdHlMZXRFeHBy
ZXNzaW9uOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXMK
ICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1
ZS5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9O
b3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUu
Z2V0KCksIGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQg
OiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlv
bik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIHZhciwg
cG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQubGVuZ3RoKCkpOyAKICAgICB9CiAKQEAg
LTMzNTAsMTMgKzMzNTAsMTMgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHByb3BlcnQKICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5tb3ZlKGxvY2FsLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICAgICAgICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2Nv
cGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVy
YXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZv
dW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUs
IGdlbmVyYXRvci5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05v
dFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7
CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5h
bWUsIHZhciwgbV9sZXhwci0+cG9zaXRpb24oKSwgbV9sZXhwci0+cG9zaXRpb24oKSArIGlkZW50
Lmxlbmd0aCgpKTsKICAgICB9OwpAQCAtMzYwNywxMyArMzYwNywxMyBAQCB2b2lkIEZvck9mTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlv
bklmTmVlZGVkKHZhcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUobG9jYWwsIHZh
bHVlKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRv
ci5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAg
ICAgIGlmICh2YXIuaXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0
cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0
aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RG
b3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCB2YXIsIG1f
bGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHItPnBvc2l0aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7
CiAgICAgICAgIH0gZWxzZSBpZiAobV9sZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewpAQCAt
NDM5Nyw2ICs0Mzk3LDggQEAgdm9pZCBDbGFzc0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIENsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiB7CisgICAgU3RyaWN0TW9kZVNjb3BlIHN0cmljdE1vZGVTY29wZShnZW5l
cmF0b3IpOworCiAgICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRv
ci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGlt
aXphdGlvbjo6T3B0aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6Oklz
TmVzdGVkKTsKIApAQCAtNDgzMSw3ICs0ODMzLDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6YmluZFZh
bHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKSBjb24K
ICAgICAgICAgICAgIGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3NpYmxlKHZhcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSkKKyAg
ICBpZiAoZ2VuZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKG51bGxwdHIsIHZhcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNDg0MSw3ICs0ODQzLDcgQEAg
dm9pZCBCaW5kaW5nTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIHZhbHVlKSBjb24KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4
Y2VwdGlvbklmTmVlZGVkKHZhcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZ2VuZXJh
dG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuaXNT
dHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgaW5p
dGlhbGl6YXRpb25Nb2RlRm9yQXNzaWdubWVudENvbnRleHQobV9iaW5kaW5nQ29udGV4dCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2Vu
ZXJhdG9yLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhy
b3dJZk5vdEZvdW5kLCBpbml0aWFsaXphdGlvbk1vZGVGb3JBc3NpZ25tZW50Q29udGV4dChtX2Jp
bmRpbmdDb250ZXh0KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFy
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChtX2JpbmRpbmdDb250ZXh0ID09
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCB8fCBtX2JpbmRpbmdDb250
ZXh0ID09IEFzc2lnbm1lbnRDb250ZXh0OjpDb25zdERlY2xhcmF0aW9uU3RhdGVtZW50KQogICAg
ICAgICBnZW5lcmF0b3IubGlmdFREWkNoZWNrSWZQb3NzaWJsZSh2YXIpOwpAQCAtNDg3OSw3ICs0
ODgxLDcgQEAgdm9pZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNTdHJpY3RNb2Rl
KCkpCisgICAgICAgIGlmIChnZW5lcmF0b3IuZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCBudWxscHRyLCBzY29wZS5nZXQoKSk7CkBAIC00
ODkwLDcgKzQ4OTIsNyBAQCB2b2lkIEFzc2lnbm1lbnRFbGVtZW50Tm9kZTo6YmluZFZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgICAgIH0KICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgICAgICBpZiAoIWlzUmVhZE9ubHkpIHsKLSAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9y
LmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQs
IEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3Iu
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2Fzc2lnbm1lbnRUYXJnZXQt
PmlzRG90QWNjZXNzb3JOb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDM5Y2JmODJlMjExMzIwNWI1NmYz
YTdkNjg3NjM1ZjBjM2U3MGYxN2EuLmY0NWUwMWQwNjcxOTMwNzYyZmMwNzA4NTUwZjNlNDdiY2Ez
YzRiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcApAQCAtMjEyLDkgKzIxMiw5IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxs
RnJhbWU6OnRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0CiAgICAgaWYgKCF0aGlzVmFsdWUpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBOb3RT
dHJpY3RNb2RlOwotICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkKLSAgICAgICAgZWNtYU1vZGUgPSBTdHJpY3RNb2RlOworICAgIEVDTUFNb2RlIGVjbWFNb2Rl
ID0gRUNNQU1vZGU6OnNsb3BweSgpOworICAgIGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkKKyAgICAgICAgZWNtYU1vZGUg
PSBFQ01BTW9kZTo6c3RyaWN0KCk7CiAgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxp
ZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIApA
QCAtMjUzLDcgKzI1Myw4IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU09iCiAgICAgVmFyaWFibGVF
bnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3Vy
ZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFop
OwogCi0gICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4o
dm0pKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVz
VW5kZXJURFopOworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFN
b2RlOjpzbG9wcHkoKTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNv
dXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRD
b250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJv
d0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1v
ZGUpOwogICAgIGlmIChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAg
ICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3Bl
LmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNzcxZDkyZTgyMzllNDNh
YjI1ZmRiNjZmY2YxMDU5OWVhYWNhMzk0Ni4uYzE4NzA2Njc1MThmNGJiMDhiMmM2MzljNDg0ZjZm
NjAwZjBjMzUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTg2LDEwICsxODYsMTAgQEAgZW51
bSBjbGFzcyBUb1RoaXNSZXN1bHQgewogICAgIEdsb2JhbFRoaXMsCiAgICAgRHluYW1pYywKIH07
Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNT
dHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCitpbmxpbmUgVG9UaGlzUmVz
dWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFj
dFZhbHVlJiB2YWx1ZUZvck5vZGUpCiB7CiAgICAgLy8gV2UgbG9vayBhdCB0aGUgdHlwZSBmaXJz
dCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9zdCBjYXNlcyBhbmQgZG9lcyBub3QgcmVxdWlyZSBp
dGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVzLgotICAgIGlmIChpc1N0cmljdE1vZGUpIHsKKyAg
ICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAodmFsdWVGb3JOb2RlLm1f
dHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiBTcGVjT2JqZWN0T3RoZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7CiAgICAgfSBlbHNlIHsKQEAgLTIw
MywyMCArMjAzLDIwIEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZN
JiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgICAgICBpZiAo
dG9UaGlzTWV0aG9kID09ICZKU09iamVjdDo6dG9UaGlzKQogICAgICAgICAgICAgICAgIHJldHVy
biBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwogICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9
PSAmSlNTY29wZTo6dG9UaGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkK
KyAgICAgICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6VW5kZWZpbmVkOwogICAgICAgICAgICAgICAgIHJl
dHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoKGlzU3RyaWN0TW9kZSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAm
JiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUu
bV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8
fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09i
amVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAg
ICBib29sIGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVy
ZS5pc0NsZWFyKCk7CiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAg
ICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+
dHlwZUluZm8oKTsKICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50
eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUu
dHlwZSgpID09IEJpZ0ludFR5cGUpOwotICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCisg
ICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdv
cnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKICAgICAgICAgICAg
IC8vIDEpIFdlIGFyZSBpbiBzdHJpY3QgbW9kZSBhbmQgc3RyaW5ncy9zeW1ib2xzIGFyZSBub3Qg
d3JhcHBlZApAQCAtMjMwLDcgKzIzMCw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNB
bklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAg
ICAgIGlmICghb3ZlcnJpZGVzVG9UaGlzKQogICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3Vs
dDo6SWRlbnRpdHk7CiAgICAgICAgIGlmIChhbGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSkgewotICAg
ICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKKyAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0
cmljdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsK
ICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7CiAgICAgICAgIH0K
QEAgLTI3MzAsOSArMjczMCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBU
b1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShu
b2RlKTsKLSAgICAgICAgYm9vbCBzdHJpY3RNb2RlID0gbV9ncmFwaC5pc1N0cmljdE1vZGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2Rl
LT5lY21hTW9kZSgpOwogCi0gICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0Fu
SWRlbnRpdHkobV92bSwgc3RyaWN0TW9kZSwgc291cmNlKTsKKyAgICAgICAgVG9UaGlzUmVzdWx0
IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX3ZtLCBlY21hTW9kZSwgc291cmNlKTsKICAg
ICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50
aXR5OgogICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1
ZSk7CkBAIC0yNzQ2LDcgKzI3NDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICAgICAgZGVzdGluYXRpb24uc2V0VHlwZShtX2dyYXBoLCBTcGVjT2JqZWN0KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6RHluYW1pYzoKLSAgICAgICAg
ICAgIGlmIChzdHJpY3RNb2RlKQorICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkp
CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24ubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA5ZGQ0Yjlh
YTQ4YzgwYzA2ZGYwNGMwZTFmM2FmMzMwNWVlZGFkMTJiLi5mYjljYWQxYzUxY2ViZmYyMDQ5NDY5
NDA4MDI3YmY5MWFlNjQ0MGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjQ2LDEzICsyNDYsMTMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwg
U3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIEdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlLCB1bnNpZ25lZCBpbnN0
cnVjdGlvblNpemUpOwogICAgIHZvaWQgZW1pdFB1dEJ5SWQoCi0gICAgICAgIE5vZGUqIGJhc2Us
IENhY2hlYWJsZUlkZW50aWZpZXIsIE5vZGUqIHZhbHVlLCAgY29uc3QgUHV0QnlJZFN0YXR1cyYs
IGJvb2wgaXNEaXJlY3QpOworICAgICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLCBib29sIGlzRGlyZWN0LCBFQ01B
TW9kZSk7CiAgICAgdm9pZCBoYW5kbGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwg
Y29uc3QgUHV0QnlJZFN0YXR1cyYsCi0gICAgICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGlu
dHJ1Y3Rpb25TaXplKTsKKyAgICAgICAgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW50cnVjdGlv
blNpemUsIEVDTUFNb2RlKTsKIAogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKLSAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cyk7CisgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMsIEVDTUFNb2Rl
KTsKICAgICAKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBj
aGVjayBmb3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29u
ZGl0aW9uIG5vIGxvbmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNr
IGNhbiBiZSBlbWl0dGVkLgpAQCAtODUwLDE4ICs4NTAsMTggQEAgcHJpdmF0ZToKICAgICB9CiAg
ICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwg
Tm9kZVR5cGUgb3AsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNh
bGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQsIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUs
IGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAg
ICAgICAgICBpZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVy
ZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgb3BJbmZvLCBj
YWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOwogICAgICAgICAgICAg
b3AgPSBUYWlsQ2FsbElubGluZWRDYWxsZXI7CiAgICAgICAgIH0KIAogCiAgICAgICAgIE5vZGUq
IGNhbGwgPSBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgICAgICBvcCwgT3BJ
bmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8o
cHJlZGljdGlvbikpOworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwg
cmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgIGlmIChyZXN1bHQu
aXNWYWxpZCgpKQogICAgICAgICAgICAgc2V0KHJlc3VsdCwgY2FsbCk7CiAgICAgICAgIHJldHVy
biBjYWxsOwpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2Fs
bFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVk
aWN0aW9uKTsKICAgICBBU1NFUlQoY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxWYXJhcmdzICYm
IGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOwogICAgIHJldHVybiBj
YWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCA/IFRlcm1pbmFsIDogTm9uVGVybWluYWw7CiB9CkBA
IC0yMTg2LDcgKzIxODYsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3Vs
dCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0
Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkg
ewogICAgICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0LCBjYWxsT3AsIG51bGxwdHIs
IG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAorICAgICAgICAg
ICAgcmVzdWx0LCBjYWxsT3AsIE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9u
KTsKICAgICAgICAgVkVSQk9TRV9MT0coIldlIGFkZGVkIGEgY2FsbCBpbiB0aGUgc2xvdyBwYXRo
XG4iKTsKICAgICB9IGVsc2UgewpAQCAtMzY2MCw3ICszNjYwLDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUywg
IkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBh
cmd1bWVudHMuIik7CiAKICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICBhZGRDYWxsKHJlc3VsdCwg
Q2FsbCwgc2lnbmF0dXJlLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIGFkZENhbGwocmVzdWx0LCBDYWxsLCBP
cEluZm8oc2lnbmF0dXJlKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NDYyMCwxMSArNDYyMCwxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIFZpcnR1YWxSZWdp
c3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLAotICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0
ZUJ5U3RhdHVzKQorICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVz
IGRlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBpZiAoIWRlbGV0ZUJ5
U3RhdHVzLmlzU2ltcGxlKCkgfHwgIWRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpIHx8
ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CiAgICAgICAgIHNldChkZXN0aW5hdGlv
biwKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIp
LCBiYXNlKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVu
dGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NjMzLDcgKzQ2MzMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxl
dGVCeUlkKAogICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmcoKQogICAgICAgICAgICAgfHwgZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkg
PiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgewogICAg
ICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVs
ZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBiYXNlKSk7CisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSks
IGJhc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00NzE3LDIyICs0
NzE3LDIyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQoCiB9CiAKIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRCeUlkKAotICAgIE5vZGUqIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
IHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QpCisgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYg
cHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAg
aWYgKGlzRGlyZWN0KQotICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJlY3QsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgYmFzZSwgdmFsdWUpOworICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWREaXJl
Y3QsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKGVjbWFNb2RlKSwgYmFzZSwgdmFsdWUpOwog
ICAgIGVsc2UKLSAgICAgICAgYWRkVG9HcmFwaChwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/
IFB1dEJ5SWRGbHVzaCA6IFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgYmFzZSwgdmFsdWUp
OworICAgICAgICBhZGRUb0dyYXBoKHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gUHV0QnlJ
ZEZsdXNoIDogUHV0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8oZWNtYU1vZGUpLCBi
YXNlLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAg
ICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwKLSAgICBjb25zdCBQdXRCeUlkU3RhdHVzJiBw
dXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUpCisg
ICAgY29uc3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgdW5z
aWduZWQgaW5zdHJ1Y3Rpb25TaXplLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBpZiAoIXB1
dEJ5SWRTdGF0dXMuaXNTaW1wbGUoKSB8fCAhcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpIHx8
ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CiAgICAgICAgIGlmICghcHV0QnlJZFN0
YXR1cy5pc1NldCgpKQogICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwotICAg
ICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywg
aXNEaXJlY3QpOworICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwg
cHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTQ3NDAsNyArNDc0MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQoCiAgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKSB8fCBwdXRCeUlk
U3RhdHVzLm1ha2VzQ2FsbHMoKQogICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3Jw
aGljQWNjZXNzSW5saW5pbmcoKQogICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJp
YW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkp
IHsKLSAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRC
eUlkU3RhdHVzLCBpc0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVu
dGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ3NDksNyArNDc0OSw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgICAgICAgICAgaWYg
KHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5raW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlRy
YW5zaXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IGlmICghY2hlY2socHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhdLmNvbmRpdGlvblNldCgpKSkg
ewotICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1
ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICAgICAgICAgICAgICBlbWl0UHV0
QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVj
bWFNb2RlKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTQ3OTIsNyArNDc5Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVB1dEJ5SWQoCiAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJ
bmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFz
ZSk7CiAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKLSAgICAg
ICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVz
LCBpc0RpcmVjdCk7CisgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2
YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC00ODU5LDcgKzQ4NTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRCeUlkKAogCiAgICAgICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChT
cGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAgICAgICAg
aWYgKCFsb2FkZWRWYWx1ZSkgewotICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRp
ZmllciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKKyAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwg
ZWNtYU1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAt
NDkwMyw3ICs0OTAzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAg
ICB9CiAgICAgCiAgICAgZGVmYXVsdDogewotICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVu
dGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOworICAgICAgICBlbWl0UHV0
QnlJZChiYXNlLCBpZGVudGlmaWVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGVj
bWFNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gfQogfQpAQCAtNTA3NSw3ICs1MDc1LDgg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKICAgICAgICAgICAgIE5vZGUqIG9w
MSA9IGdldFRoaXMoKTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFRvVGhpcz4oKS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7CisgICAg
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9
IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoY2FjaGVkU3RydWN0dXJlSUQpCkBAIC01MDg2LDcg
KzUwODcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
Y291bGRUYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpCiAgICAgICAgICAgICAgICAgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkQ2FjaGUpCiAgICAgICAgICAgICAgICAgfHwgKG9wMS0+b3AoKSA9PSBHZXRMb2NhbCAmJiBv
cDEtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKCkp
KSB7Ci0gICAgICAgICAgICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKCks
IE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLCBvcDEpKTsKKyAgICAgICAgICAgICAgICBzZXRUaGlz
KGFkZFRvR3JhcGgoVG9UaGlzLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIE9wSW5mbyhn
ZXRQcmVkaWN0aW9uKCkpLCBvcDEpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAgICAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsCkBA
IC01OTI2LDcgKzU5MjcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodGhpc1ZhbHVlKTsKICAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsKICAgICAgICAgICAgIGFkZFZhckFyZ0No
aWxkKHZhbHVlKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBQdXRCeVZh
bFdpdGhUaGlzLCBPcEluZm8oMCksIE9wSW5mbygwKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KE5vZGU6OlZhckFyZywgUHV0QnlWYWxXaXRoVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpLCBPcEluZm8oMCkpOwogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFs
X3dpdGhfdGhpcyk7CiAgICAgICAgIH0KQEAgLTU5OTYsMTQgKzU5OTcsMTQgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29k
ZS5tX3Byb3BlcnR5XTsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07Ci0gICAgICAgICAgICBib29sIGRp
cmVjdCA9ICEhKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3QpOworICAgICAgICAg
ICAgYm9vbCBkaXJlY3QgPSBieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCk7CiAKICAgICAgICAg
ICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAog
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250
ZXh0U3RhY2ssCiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5p
ZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaGFuZGxlUHV0QnlJZChiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LCB1aWQpLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0LCBj
dXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCksIGlkZW50aWZpZXJO
dW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBkaXJlY3QsIGN1cnJlbnRJbnN0cnVjdGlvbi0+
c2l6ZSgpLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfcHV0X2J5X2lkKTsKICAgICAgICAgfQogCkBAIC02MDE0LDggKzYwMTUsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVt
YXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotCi0gICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dEJ5SWRXaXRoVGhpcywgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlKTsKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZFdpdGhUaGlzLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwg
YmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRf
YnlfaWRfd2l0aF90aGlzKTsKICAgICAgICAgfQogCkBAIC02MDU1LDcgKzYwNTUsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
ICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKICAgICAgICAg
ICAgIGF1dG8gaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IHVpZCk7Ci0gICAgICAgICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNl
LCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cyk7CisgICAgICAg
ICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyLCBp
ZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cywgYnl0ZWNvZGUubV9lY21hTW9kZSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwogICAgICAgICB9CiAKQEAgLTYw
ODUsMTMgKzYwODUsMTMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwg
aWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMpOworICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlm
aWVyLCBpZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cywgYnl0ZWNvZGUubV9lY21hTW9k
ZSk7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFz
aG91bGRDb21waWxlQXNEZWxldGVCeUlkKQotICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5t
X2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeVZhbCwgYmFzZSwgcHJvcGVydHkpKTsKKyAgICAgICAg
ICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIE9wSW5m
byhieXRlY29kZS5tX2VjbWFNb2RlKSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2RlbF9ieV92YWwpOwogICAgICAgICB9CiAKQEAgLTY2MTQsNyArNjYxNCw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcENhbGxFdmFsPigpOwogICAgICAgICAgICAgaW50IHJlZ2lz
dGVyT2Zmc2V0ID0gLWJ5dGVjb2RlLm1fYXJndjsKLSAgICAgICAgICAgIGFkZENhbGwoYnl0ZWNv
ZGUubV9kc3QsIENhbGxFdmFsLCBudWxscHRyLCBnZXQoYnl0ZWNvZGUubV9jYWxsZWUpLCBieXRl
Y29kZS5tX2FyZ2MsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOworICAgICAgICAg
ICAgYWRkQ2FsbChieXRlY29kZS5tX2RzdCwgQ2FsbEV2YWwsIE9wSW5mbyhieXRlY29kZS5tX2Vj
bWFNb2RlKSwgZ2V0KGJ5dGVjb2RlLm1fY2FsbGVlKSwgYnl0ZWNvZGUubV9hcmdjLCByZWdpc3Rl
ck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2Nh
bGxfZXZhbCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNjk2Myw3ICs2OTYzLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
ICAgIGlmIChuZWVkc0R5bmFtaWNMb29rdXAocmVzb2x2ZVR5cGUsIG9wX3B1dF90b19zY29wZSkp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllck51bWJlciAhPSBVSU5UX01BWCk7
CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgb3BJbmZvMSA9IG1ha2VEeW5hbWljVmFyT3BJbmZv
KGlkZW50aWZpZXJOdW1iZXIsIGdldFB1dEluZm8ub3BlcmFuZCgpKTsKLSAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFB1dER5bmFtaWNWYXIsIE9wSW5mbyhvcEluZm8xKSwgT3BJbmZvKCksIGdl
dChieXRlY29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dER5bmFtaWNWYXIsIE9wSW5mbyhvcEluZm8xKSwgT3BJbmZvKGdl
dFB1dEluZm8uZWNtYU1vZGUoKSksIGdldChieXRlY29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2Rl
Lm1fdmFsdWUpKTsKICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfdG9fc2NvcGUp
OwogICAgICAgICAgICAgfQogCkBAIC02OTg1LDcgKzY5ODUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGlmIChzdGF0
dXMubnVtVmFyaWFudHMoKSAhPSAxCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5r
aW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UKICAgICAgICAgICAgICAgICAgICAgfHwg
c3RhdHVzWzBdLnN0cnVjdHVyZSgpLnNpemUoKSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssIHVpZCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVl
KSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZvKENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9n
ZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29k
ZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2Jq
ZWN0KTsKQEAgLTc2MzEsOCArNzYzMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29k
ZUJsb2NrKCkKICAgICAgICAgICAgICAgICAiIGZvciBpbmxpbmluZyBhdCAiLCBDb2RlQmxvY2tX
aXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUVHlwZTo6REZHSklUKSwKICAgICAgICAgICAgICAg
ICAiICIsIGlubGluZUNhbGxGcmFtZSgpLT5kaXJlY3RDYWxsZXIpOwogICAgICAgICB9Ci0gICAg
ICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiLCBpc1N0cmljdE1vZGUgPSAiLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSwgIlxuIik7CisgICAgICAgIGRhdGFM
b2dMbigpOwogICAgICAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNv
ZGUoKTsKICAgICB9CiAgICAgCkBAIC03NzM5LDcgKzc3MzgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25TaXplKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAg
ICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0aW9uU2l6ZSk7CisgICAg
ICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgaW5zdHJ1Y3Rpb25TaXplLCBieXRlY29k
ZS5tX2VjbWFNb2RlKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7CkBA
IC03NzUwLDcgKzc3NDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChC
eXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplKQogICAgICAgICBhZGRW
YXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSBy
b29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8g
TGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywg
aXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFz
V29yZCgpKSwgT3BJbmZvKDApKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlz
RGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dv
cmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0g
ZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMg
aWYgdGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhl
bSBnZW5lcmljLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggOTExZGQ5YjFlNzdhY2I1NThhODYz
MGVmMmMxODEwMDYwZjFlZGMyZi4uZmI0NTcwOWZlNTE2MjgyZjQ4NDc1YzMwNzEyN2EwYTIzMjg0
Y2I5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAKQEAgLTc3NCw3ICs3NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAgICAgICAgICAgIFRvVGhp
c1Jlc3VsdCByZXN1bHQgPSBpc1RvVGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3ZtLCBtX2dyYXBo
LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0g
aXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9
PSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5KSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMmMzNzY4
MDNjNGNhNmRmNGYyZmQyYmUwNWMxNGUwNjQzZDQ4MzU3Yy4uMWE0ZGVjZGEwYzJkNzM2ODdlZmNm
Mzg4Yjg0ODJmYjBlYzY0N2M0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0yODM3LDcgKzI4MzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBm
aXh1cFRvVGhpcyhOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUg
PSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAg
ICBib29sIGlzU3RyaWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKIAogICAg
ICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCmluZGV4IDJjMjUxOTZmYjA1YzQ5Nzc5NGI1ZGRmYzY2MWRjNzdmZjFhMGUwYWMuLjdiZDE4
ODA2NmFkMDZkN2JlOGFmMjVmMzhhYjE0ODk3ZWVmZGVmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3Qq
IGdsb2JhbFRoaXNPYmplY3RGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIG9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsK
LSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUobV92
bSktPnRvVGhpcyhvYmplY3QsIG9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgICAgICByZXR1
cm4ganNDYXN0PEpTT2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlzKG9i
amVjdCwgb2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICB9CiAgICAgCiAgICAgU2Ny
aXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSkKQEAgLTQ2OSwxOCArNDY5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmFzZWxp
bmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBtX3By
b2ZpbGVkQmxvY2spOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3RyaWN0TW9kZUZvcihDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpOwotICAgICAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKS0+aXNTdHJp
Y3RNb2RlKCk7Ci0gICAgfQotICAgIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlRm9yKENvZGVPcmln
aW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdE1vZGVGb3IoY29k
ZU9yaWdpbikgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKLSAgICB9Ci0gICAgCiAgICAg
Ym9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZChjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+aXNT
dGlsbFZhbGlkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGFhYzNhNjM3
YTA5NDE2NjQ1NDRjOTE5YmI3NDZlMGFkNTdiOWY0MzEuLjBiODUwZjBjODA3NDA5NTA1YTkwYTU5
ODk2ZTQ1ODk3MzUzYTU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0y
MjIzLDYgKzIyMjMsNTMgQEAgcHVibGljOgogICAgICAgICBtX29wSW5mbyA9IGFycmF5TW9kZS5h
c1dvcmQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCisgICAgYm9vbCBoYXNFQ01B
TW9kZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBDYWxs
RXZhbDoKKyAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAgICBjYXNlIERlbGV0ZUJ5VmFs
OgorICAgICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAg
ICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgor
ICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CisgICAg
ICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoK
KyAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgRUNNQU1vZGUgZWNtYU1vZGUoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGhhc0VDTUFNb2RlKCkpOworICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKKyAgICAgICAgY2FzZSBDYWxsRXZhbDoKKyAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKKyAg
ICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIFRvVGhpczoKKyAgICAg
ICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4oKSk7
CisgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAg
ICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAg
ICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAg
Y2FzZSBQdXRCeVZhbEFsaWFzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgorICAgICAg
ICBjYXNlIFB1dER5bmFtaWNWYXI6CisgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21C
eXRlKG1fb3BJbmZvMi5hczx1aW50OF90PigpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gRUNN
QU1vZGU6OnN0cmljdCgpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGJvb2wgaGFzQXJp
dGhNb2RlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAppbmRleCA0
NWU3YWMzZGI1OGY2NWI3OGFiNjAyZTc4ZTRhMzFjNDQ1ODNjOWM3Li4wZTRjMzFiZjBkN2U1ODU4
YmJkYjc0NDIzMGE2MzY3YzRmYTBiNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJ
bmZvLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgZXhwbGljaXQgT3BJ
bmZvKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkpKSB7IH0KICAgICBl
eHBsaWNpdCBPcEluZm8oT3BlcmFuZCBvcCkgOiBtX3ZhbHVlKG9wLmFzQml0cygpKSB7IH0KICAg
ICBleHBsaWNpdCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKSA6IG1fdmFs
dWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkZW50aWZpZXIucmF3Qml0cygpKSkgeyB9CisgICAg
ZXhwbGljaXQgT3BJbmZvKEVDTUFNb2RlIGVjbWFNb2RlKSA6IG1fdmFsdWUoZWNtYU1vZGUudmFs
dWUoKSkgeyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBleHBsaWNpdCBPcElu
Zm8oVCogcHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggMDhjZTU0MzVkM2Y3MTkwNjNjZmMwOWZmYTc3ZGNmNjExZmY4Zjk5OC4uY2M1NzgwOTdi
NzRhOGY2NWQ2YTAzYTllOTY3Y2ZkMDc2ZDVjZTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2QKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXNTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQpAQCAtMzA3LDcgKzMwNyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7CiB9CiAKIEpTQXJyYXkq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT2JqZWN0KQpAQCAtMzM4NSw3ICszMzg1LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5cGVPZihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNl
TG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VM
b2NhbENsb2JiZXJpemUuaAppbmRleCAzNjE4MWEyODIxMzM5ZTg4YjY2M2M2NTg3MWMwZGEzY2M0
NGRlOGEyLi5iYWEyMWMwYmJmYTJhY2ZiYTUwZDVhOGY5OTMyZDMxNGRiNTQ0OWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJp
emUuaApAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAg
ZGVmYXVsdDogewogICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBvdXRlcm1vc3QgYXJndW1lbnRz
LCBleGNlcHQgdGhpcywgYXJlIHJlYWQgaW4gc2xvcHB5IG1vZGUuCi0gICAgICAgICAgICBpZiAo
IW1fZ3JhcGgubV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAo
IW1fZ3JhcGgubV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4
dCgpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpOyBpLS07KQogICAgICAgICAgICAgICAgICAgICBtX3JlYWQo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpKTsKICAgICAgICAgICAg
IH0KQEAgLTI1MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgICAgIC8v
IFJlYWQgYWxsIG9mIHRoZSBpbmxpbmUgYXJndW1lbnRzIGFuZCBjYWxsIGZyYW1lIGhlYWRlcnMg
dGhhdCB3ZSBkaWRuJ3QgYWxyZWFkeSBjYXB0dXJlLgogICAgICAgICAgICAgZm9yIChJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZSgpOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNh
bGxGcmFtZS0+Z2V0Q2FsbGVySW5saW5lRnJhbWVTa2lwcGluZ1RhaWxDYWxscygpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzU3RyaWN0TW9kZSgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzSW5TdHJpY3RDb250ZXh0KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgICAgICAgICAg
bV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGkpLm9mZnNldCgpKSk7CiAgICAg
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA4ZjE5MjYwODA1NjY5NDdi
YWJhMDJmMTc3NmI1NDA5NGIxMGUwYmUzLi4yMTAwM2VkNWZkM2ZiYzM4MTYyYzg5MmIzNGM4NDdi
OTI3NjgzZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTA2LDcgKzUwNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgICAg
IC8vIFRvVGhpcyBpbiBtZXRob2RzIGZvciBwcmltaXRpdmUgdHlwZXMgc2hvdWxkIHNwZWN1bGF0
ZSBwcmltaXRpdmUgdHlwZXMgaW4gc3RyaWN0IG1vZGUuCi0gICAgICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSA9IG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKTsKICAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewogICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQm9vbGVhbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGNh
YTRiYWI0MTBlNmQ1MzRlMDZhNTk1NzYxOWQzOWM5Yzg3ZWMwOWQuLjhkNTNmMzQxYmQ2NTUzM2Qx
NjI2MWZiNDI0OTdhZmQ0NThiNzM4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yMTE5LDcgKzIxMTksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWYWwoTm9kZSogbm9kZSwgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQmIGJhcwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywKLSAgICAgICAg
ICAgICAgICBtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAg
ICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAg
ICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91Ymxl
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5
VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJl
eW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKQEAg
LTMxNTAsMjQgKzMxNTAsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFs
Rm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnQKICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0
aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdE5vblN0cmljdCwKKyAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0Tm9uU3RyaWN0LAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlR1BSKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICBtX2pp
dC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5
VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsCisgICAgICAgICAgICAgICAg
bm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZUdQUikpOwogICAg
ICAgICB9CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0aGlzLAotICAg
ICAgICAgICAgICAgIG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RDZWxsTm9uU3RyaWN0LAorICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1
dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BS
LCBwcm9wZXJ0eSksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgICAgICBzbG93UGF0aENhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAg
IG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9u
UHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsTm9uU3RyaWN0LAorICAg
ICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdCwKICAgICAgICAg
ICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2UsIEpTVmFs
dWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eSksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BS
LCB2YWx1ZUdQUikpKTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0zMjk5LDcgKzMyOTksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2Rl
KiBub2RlLCBFZGdlJiBjaGlsZDEsCiAgICAgc3BlY3VsYXRlU3RyaW5nKGNoaWxkMiwgYXJnMkdQ
Uik7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNT
dHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbENl
bGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25TdHJpY3QsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7Cisg
ICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25Q
dXRCeVZhbENlbGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25T
dHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmcz
UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUp
OwpAQCAtMzMxOCw3ICszMzE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSogbm9kZSwgRWRnZSYgY2hpbGQxLAogICAgIHNwZWN1
bGF0ZVN5bWJvbChjaGlsZDIsIGFyZzJHUFIpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3ltYm9sTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQ
UiwgYXJnMkdQUiwgYXJnM1JlZ3MpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM1JlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTExMzI5LDcgKzExMzI5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSogbm9kZSkKICAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogCiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlv
blB1dER5bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29w
ZUdQUiwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSks
IG5vZGUtPmdldFB1dEluZm8oKSk7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0
RHluYW1pY1Zhck5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BS
LCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9k
ZS0+Z2V0UHV0SW5mbygpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQpAQCAtMTIyMTUsNyArMTIyMTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIg
PSBzY3JhdGNoLmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBjYWNoZWRQdXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIE5vdERpcmVjdCwgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIE5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTIyMzAsNyAr
MTIyMzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2Rl
KQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBOb3REaXJlY3QpOworICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgTm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsK
IAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTIyNDUsNyArMTIyNDUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERpcmVjdChOb2RlKiBub2RlKQogICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBEaXJlY3QpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgRGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5v
ZGUpOwogfQpAQCAtMTIyNjAsNyArMTIyNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlJZFdpdGhUaGlzKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/
IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhp
cywKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJh
dGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKICAg
ICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgdmFs
dWVSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0xMjYyOSw3ICsxMjYyOSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMoTm9kZSogbm9kZSkKICAgICBtX2ppdC5tb3ZlVmFsdWVS
ZWdzKHRoaXNWYWx1ZVJlZ3MsIHRlbXBSZWdzKTsKIAogICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1
bmN0aW9uOwotICAgIGlmIChtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSkKKyAgICBpZiAobm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICBmdW5j
dGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0cmljdDsKICAgICBlbHNlCiAgICAgICAgIGZ1bmN0aW9u
ID0gb3BlcmF0aW9uVG9UaGlzOwpAQCAtMTM4MjUsNyArMTM4MjUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHJvZmlsZVR5cGUoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChub2Rl
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBz
Y3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2lu
ZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBz
cGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVn
IHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRL
aW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQs
IFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJl
Z2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoc3BpbGxNb2RlID09IERv
bnRTcGlsbCkgewpAQCAtMTM4MzcsNyArMTM4MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFs
dQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAg
ICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2luZCk7Cisg
ICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IGUzZjY3ZTE1OTJjOGVmOWM3MGJiZDA2MjcyZWQzNzZhM2I5Y2Qz
MmEuLmQzZThlN2Q1OWQ5ZWVmOTcyM2U4ZTJhZjE5ZTQ1Mjk5MzU0ZWU5MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTcxNyw3ICs3MTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlQ2hlY2tOZXV0ZXJlZChOb2RlKik7CiAKICAg
ICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVl
UmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3Bp
bGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcg
c2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxS
ZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwogICAgIHZvaWQgY2FjaGVkR2V0QnlWYWwoQ29k
ZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQpOwogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGI4N2Y2ODcyMjc1ODAzYjk1NWI4ZGEwZGI2Yjc3OWM5NDVkNmY2
YjkuLmFjODhmZjgzMjA3ZThjN2ZlZjM3YmRiZmIwNjM2NDZlMzI5Yjg4NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNzYw
LDcgKzc2MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAg
ICAgICAgIHVuc2lnbmVkIHJlcXVpcmVkQnl0ZXMgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykg
KyBzaXplb2YoQ2FsbEZyYW1lKikgKiAyOwogICAgICAgICByZXF1aXJlZEJ5dGVzID0gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVxdWlyZWRCeXRlcyk7
CiAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIEpJVENv
bXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpy
ZWdUMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNh
bGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0
KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgcHJlcGFyZUZvckV4
dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbkNhbGxFdmFs
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTI3MjUsOSArMjcyNiw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQ
UlJlZyBhcmczR1BSID0gYXJnMy5ncHIoKTsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkKLSAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIs
IGFyZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwg
YXJnM0dQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUiwg
YXJnM0dQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTI4MDksNyArMjgxMCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmIChh
cnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKSB7CiAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhp
cywKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9w
ZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAg
ICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5
b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJl
ZykpOwpAQCAtMjg5Myw3ICsyODk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKCFzbG93Q2FzZXMuZW1wdHkoKSkgewogICAgICAg
ICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5pc1N0
cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAgICBu
b2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8gKG5v
ZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9u
ZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCkKICAgICAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAg
ICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
ZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CkBAIC0zODk3LDcgKzM4OTgsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQ
UiA9IHZhbHVlLmdwcigpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykg
PyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRo
VGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwg
cHJvcGVydHlHUFIsIHZhbHVlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21h
TW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxXaXRoVGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VH
UFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTU0NjcsNyAr
NTQ2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5v
ZGUpCiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUo
KS52YWx1ZSgpKSk7CiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNsb3dQYXRoLmdl
dCgpKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpA
QCAtNTQ4Niw3ICs1NDg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
SWQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBudWxscHRyLCBiYXNlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CkBAIC01NTI1LDcgKzU1MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwga2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAKICAgICAgICAgbV9qaXQuYWRkRGVs
QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTU1NDUsNyArNTU0Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51
bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2Vk
Qm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDM1ZDhjZTY2OTEzNzg3NmRiZDE5ZDIyZDAy
NmMyOTYyNDllZjhkNzIuLmM2M2JiZDc1NWRkZmJmZTJhMjc5ODkwZDE1N2Q3NTg4OWJkZGJhYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTIxMjQsNyArMjEyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgSl9KSVRPcGVyYXRpb25fR0og
ZnVuY3Rpb247Ci0gICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYykpCisgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSkKICAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKQEAgLTM2ODYs
NyArMzY4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQzKCkpOwogCi0gICAgICAgIHZtQ2FsbChWb2lkLCBtX2dyYXBoLmlzU3Ry
aWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeUlkV2l0
aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCisgICAgICAgIHZtQ2FsbChW
b2lkLCBtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRo
VGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKICAgICAgICAgICAgIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUsIG1fb3V0LmNvbnN0
SW50UHRyKG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSkpOwogICAgIH0K
IApAQCAtMzY5OCw3ICszNjk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHByb3BlcnR5
ID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOwogICAgICAgICBM
VmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7
CiAKLSAgICAgICAgdm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbFdpdGhUaGlzLAorICAgICAgICB2bUNhbGwoVm9pZCwgbV9ub2RlLT5lY21h
TW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxXaXRoVGhpcywKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKICAgICB9CiAgICAgCkBA
IC0zOTcxLDcgKzM5NzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9p
bnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZt
X2Z0bFN0YXRlOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fZ3JhcGguZXhlY3V0YWJs
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5lY21hTW9kZSgpOworICAgICAgICBFQ01BTW9k
ZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAgICAgICAgIAogICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtNDgzMSwxMiArNDgz
MSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIFZfSklUT3BlcmF0aW9uX0dDQ0ogb3Bl
cmF0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQyLnVzZUtpbmQoKSA9
PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBQ
dXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNT
dHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJp
bmdTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5n
Tm9uU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRCeVZhbENlbGxTdHJpbmdTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3RyaW5nTm9uU3RyaWN0OwpAQCAtNDg0NywxMiArNDg0NywxMiBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMi51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2Rl
LT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU3RyaWN0OwogICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5vblN0cmljdDsKICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3lt
Ym9sU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0
cmljdDsKQEAgLTQ4NjQsMTIgKzQ4NjQsMTIgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgVl9K
SVRPcGVyYXRpb25fR0pKSiBvcGVyYXRpb247CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNTdHJp
Y3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICBpZiAo
bV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0OwogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJl
Y3ROb25TdHJpY3Q7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAg
ICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbFN0cmljdDsKICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5
VmFsTm9uU3RyaWN0OwpAQCAtNDkxNSw3ICs0OTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29udGlndW91c1B1dEJ5
VmFsT3V0T2ZCb3VuZHMoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguaXNTdHJpY3RNb2Rl
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAgICBtX25vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgPyAobV9ub2Rl
LT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRB
cnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJp
Y3QpCiAgICAgICAgICAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAg
ICAgICAgICAgICAgIGJhc2UsIHN0b3JhZ2UsIGluZGV4LCB2YWx1ZSwgY29udGludWF0aW9uKTsK
QEAgLTQ5NDEsNyArNDk0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRz
KAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRC
eVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0
KQogICAgICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0
cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3Qp
LAogICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNvbnRp
bnVhdGlvbik7CkBAIC00OTgxLDcgKzQ5ODEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZh
bHVlIGlzT3V0T2ZCb3VuZHMgPSBtX291dC5hYm92ZU9yRXF1YWwoCiAgICAgICAgICAgICAgICAg
aW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9y
YWdlX3ZlY3Rvckxlbmd0aCkpOwogCi0gICAgICAgICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24g
PSBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykKKyAgICAg
ICAgICAgIGF1dG8gc2xvd1BhdGhGdW5jdGlvbiA9IG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpCiAgICAgICAgICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgOiAobV9u
b2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlv
bmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3Vu
ZHNOb25TdHJpY3QpOwogICAgICAgICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygp
KSB7CkBAIC01MjQ2LDcgKzUyNDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93
UGF0aENhbGwpOwpAQCAtNTI3NSw3ICs1Mjc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTcKICAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0
Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBtX291dC5jb25z
dEludFB0cihtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpKSkpOworICAg
ICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuaW50
UHRyWmVybywgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC01MzE2LDcgKzUz
MTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIExWYWx1ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkp
OwotICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG1f
b3V0LmludFB0clplcm8sIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgICAgIHNldEJvb2xl
YW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5l
cmljLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBtX291dC5pbnRQdHJaZXJvLCBiYXNlLCBz
dWJzY3JpcHQsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTk5MDksNyArOTkwOSw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSArIHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAgICAgICAg
ICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdu
bWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5zdWJQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9iamVjdCwgR1BSSW5mbzo6cmVn
VDEpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAg
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9i
YWxPYmplY3QsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uQ2FsbEV2YWwpKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1l
bnRHUFIwKTsKICAgICAgICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWRO
b25Bcmd1bWVudEdQUjAsIE9wZXJhdGlvblB0clRhZyk7CkBAIC0xMzQ1NSw3ICsxMzQ1Niw3IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+
aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoVm9pZCwgbV9n
cmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9u
UHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsCisg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKFZvaWQsIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNW
YXJOb25TdHJpY3QsCiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291
dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2V0UHV0SW5mbygp
KSkpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggMDgwZmFlZGU4MWEyMjY4MjIx
ZDFjNTA4OTQxZDllZjI3MTI3OWEyMC4uOTdiZmIyMDJlNWY3NDg0ZTZjYTRiNDlkMTRiYWM3ZjMx
NjNkY2JjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBKU1ZhbHVlIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpT
T2JqZWN0Kj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBOb3RTdHJpY3RNb2RlKSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09i
amVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBKU09iamVj
dDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggNTE4OGMwMjM5ZGY0
NmUwMDJkYzllMmExYjM3MjFiNWQwYjBjMGY4ZS4uYzRkOWM3MjdlMDcxOGVlYWVmMDA2ODI4NDRj
NTQ3M2RiMjJiYmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK0pTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKICAgICBEaXJlY3RFdmFsRXhlY3V0
YWJsZSogZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZGlyZWN0RXZhbENvZGVDYWNoZSgpLnRyeUdl
dChwcm9ncmFtU291cmNlLCBjYWxsZXJDYWxsU2l0ZUluZGV4KTsKICAgICBpZiAoIWV2YWwpIHsK
LSAgICAgICAgaWYgKCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAg
IGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICAgICAgaWYgKHByb2dyYW1Tb3Vy
Y2UuaXM4Qml0KCkpIHsKICAgICAgICAgICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyPiBwcmVw
YXJzZXIoZ2xvYmFsT2JqZWN0LCBwcm9ncmFtU291cmNlLmNoYXJhY3RlcnM4KCksIHByb2dyYW1T
b3VyY2UubGVuZ3RoKCksIE5vblN0cmljdEpTT04sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgICAg
ICAgICAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQ
YXJzZSgpKQpAQCAtMTY1LDcgKzE2NSw3IEBAIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgCiAgICAgICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgIEpTU2NvcGU6OmNv
bGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVz
VW5kZXJURFopOwotICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShn
bG9iYWxPYmplY3QsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5z
b3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2st
Pm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNh
bGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgIGV2YWwg
PSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShw
cm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJj
ZU9yaWdpbigpKSwgZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2Fs
bGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
KCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAgICAg
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAg
ICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTA1
Nyw3ICsxMDU3LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJs
ZSogZXZhbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAgICB1bnNpZ25lZCBudW1G
dW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcyA9IGV2YWwtPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5k
aWRhdGVzKCk7CiAKICAgICBKU1Njb3BlKiB2YXJpYWJsZU9iamVjdDsKLSAgICBpZiAoKG51bVZh
cmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpICYmIGV2YWwtPmlzU3RyaWN0TW9k
ZSgpKSB7CisgICAgaWYgKChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xz
KSAmJiBldmFsLT5pc0luU3RyaWN0Q29udGV4dCgpKSB7CiAgICAgICAgIHNjb3BlID0gU3RyaWN0
RXZhbEFjdGl2YXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZSgpLCBzY29wZSk7CiAgICAgICAgIHZhcmlhYmxlT2JqZWN0ID0gc2NvcGU7
CiAgICAgfSBlbHNlIHsKQEAgLTExMDQsNyArMTEwNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNvZGVC
bG9jay0+dW5saW5rZWRFdmFsQ29kZUJsb2NrKCk7CiAKICAgICAvLyBXZSBjYW4ndCBkZWNsYXJl
IGEgInZhciIvImZ1bmN0aW9uIiB0aGF0IG92ZXJ3cml0ZXMgYSBnbG9iYWwgImxldCIvImNvbnN0
Ii8iY2xhc3MiIGluIGEgc2xvcHB5LW1vZGUgZXZhbC4KLSAgICBpZiAodmFyaWFibGVPYmplY3Qt
PmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzU3RyaWN0TW9kZSgpICYmIChudW1WYXJpYWJs
ZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSkgeworICAgIGlmICh2YXJpYWJsZU9iamVj
dC0+aXNHbG9iYWxPYmplY3QoKSAmJiAhZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSAmJiAobnVt
VmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKICAgICAgICAgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KHZhcmlhYmxlT2JqZWN0KS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkg
ewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSB1bmxpbmtlZENvZGVCbG9j
ay0+dmFyaWFibGUoaSk7CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbAogCiAgICAgaWYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMg
fHwgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMpIHsKICAgICAgICAgQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIgb3B0aW1pemVyKHZtLCB2YXJpYWJsZU9iamVjdCk7Ci0gICAgICAgIGlm
ICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpICYmICFldmFsLT5pc1N0cmljdE1vZGUoKSkKKyAgICAg
ICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5uZXh0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250ZXh0
KCkpCiAgICAgICAgICAgICB2YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+dmFySW5q
ZWN0aW9uV2F0Y2hwb2ludCgpLT5maXJlQWxsKHZtLCAiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFy
SW5qZWN0aW9uIHdhdGNocG9pbnQiKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtVmFyaWFibGVzOyArK2kpIHsKQEAgLTExNDQsNyArMTE0NCw3IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmIChldmFsLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICBpZiAoZXZhbC0+aXNJblN0cmlj
dENvbnRleHQoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRv
cExldmVsRnVuY3Rpb25EZWNsczsgKytpKSB7CiAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhcmlhYmxlT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggOTBhOWRiNWM1
YTlmYjAyNTZjNTdkMWQ2Y2U0OTlhN2ZlNzMxZTA4NS4uNjQ1MzkxMjdiOGM3NGM4MjAyOWIyYmI2
MTgwZTY5Njk3MWE2NGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNl
bmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQogICAgIH07CiAKLSAgICBKU1Zh
bHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyAgICBKU1ZhbHVlIGV2YWwo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFQ01BTW9kZSk7CiAKICAgICBpbmxpbmUgQ2Fs
bEZyYW1lKiBjYWxsZWVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2ln
bmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApp
bmRleCBlOTVmOGZlMzVkYzFkYWE5ZTY1MDU0NmUxYjM1MDkxNzFhY2NkOTBjLi4zNTZkYTFiMTYy
ODJlYWQxYjcyYzg4ZTExYjBhNDE0NWQ4MDA3MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE0NzIsMTkgKzE0NzIsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBjb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwog
ICAgIH0KICAgICAKLSAgICBib29sIGlzU3RyaWN0TW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmln
aW4pCi0gICAgewotICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSgpOwotICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKLSAgICAgICAg
ICAgIHJldHVybiBjb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgICAgIHJldHVybiBp
bmxpbmVDYWxsRnJhbWUtPmlzU3RyaWN0TW9kZSgpOwotICAgIH0KLSAgICAKLSAgICBFQ01BTW9k
ZSBlY21hTW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1
cm4gaXNTdHJpY3RNb2RlRm9yKGNvZGVPcmlnaW4pID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1v
ZGU7Ci0gICAgfQotICAgIAogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pOwogICAgIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2tGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGIyYmZjZTYzMzdkOWJlMDJkNjFmMzg5NWNlNWVjYTNh
MGQ3ODMyMDYuLmUxZTU2NWRjNTI0OWY2YWNmZGFhMjRiZmZiNDQ3MWZmY2IyMGI4NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIGJvb2wg
SklUOjpjb21waWxlQ2FsbEV2YWwoY29uc3QgT3BDYWxsRXZhbCYgYnl0ZWNvZGUpCiAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3IobV9jb2RlQmxvY2spICogc2l6
ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIAotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ2FsbEV2YWwsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcmVnVDEpOwor
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIHJlZ1Qy
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCBtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCksIHJlZ1QxLCByZWdUMik7CiAKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVt
cHR5KHJlZ1QwKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOThmOTRhMjY4ODMxNjkxZjY3OTViMjc5ZjFi
NzA5ZDFhZDExZTQwZi4uMjI2ZTZiNzk4NTFiNjFiY2NiZDUxMDdjZmE1ZmNjMzAyNjBlNzk1YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25f
R1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKLSAgICBp
ZiAobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKSB7CisgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJp
Y3QoKSkgewogICAgICAgICBpZiAobV9wdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJl
dHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggYTY0N2M0NWIzZjRl
M2I0M2RiNWQ0NjA1NWRmNzU4YjZiOTJlZjhlYS4uZjAzZTA5MjUzODU0MWZiMDM0MGYxMmM2YmE4
YTYxMTExZjMzNjc3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMTI4LDcgKzEyOCw5IEBAIHB1YmxpYzoKIAogY2xh
c3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1Ymxp
YzoKLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkgeyB9CisgICAgSklUUHV0QnlJZEdlbmVyYXRv
cigpCisgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCisgICAgeyB9CiAK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVh
YmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKaW5kZXggMjNmZjVjODFjMWMwMzIyMmY5MTJhNDk5MzFmMjgzNmRhZGNmYWNi
Ny4uN2RjYmU4ZmEzYWU1NjhjYmFhNjVjYTQxZTVlMWJhMjc1NjU1MzNmNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5v
dEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVnKQogewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUo
cmVnKSkKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcpKQogICAgICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiB9CiAKQEAgLTQ5Niw3ICs0OTYsNyBAQCBpbmxpbmUgdm9pZCBK
SVQ6OmVtaXRTdG9yZShWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBjb25zdCBKU1ZhbHVlIGNvbnN0YW50
LCBSZWdpc3RlcgogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25O
b3RJbW1lZGlhdGUocmVnKSkgeworICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJl
ZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBhZGRTbG93
Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC01MDYsNyArNTA2LDcgQEAgaW5saW5lIHZv
aWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyIHJlZykK
IAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVhbFJl
Z2lzdGVyIHJlZywgUmVnaXN0ZXJJRCB0YWcpCiB7Ci0gICAgaWYgKCFtX2NvZGVCbG9jay0+aXNL
bm93bk5vdEltbWVkaWF0ZShyZWcpKSB7CisgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNl
bGwocmVnKSkgewogICAgICAgICBpZiAocmVnLmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIGFk
ZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGVsc2UKQEAgLTYwMCw3ICs2MDAsNyBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoUmVnaXN0ZXJJ
RCByZWcpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChSZWdpc3RlcklEIHJlZywgVmlydHVhbFJlZ2lzdGVyIHZSZWcpCiB7Ci0gICAgaWYgKCFt
X2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZSh2UmVnKSkKKyAgICBpZiAoIW1fY29kZUJs
b2NrLT5pc0tub3duQ2VsbCh2UmVnKSkKICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKHJlZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCmluZGV4IGRhODJmMzFlMWI4YzhjYWI0MTI3MTgwZTU5YTE1OGRmNDMyMWQzZWYuLjE1ZDA2
NzA0N2RkZTJlNWUzNjdlODAxYTljYWYzZTdlNDcxZTA3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhCiAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5m
bywgRGlyZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1Zh
bHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCitzdGF0
aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzE3
LDEyICs3MTcsMTIgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKIAogICAgICAgICAgICAgYnlW
YWxJbmZvLT5hcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CiAgICAgICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleChvYmplY3QsIGdsb2JhbE9iamVjdCwgaSwgdmFsdWUsIGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpOworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgo
b2JqZWN0LCBnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZ2xvYmFsT2JqZWN0LCBpLCB2YWx1ZSwgY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGds
b2JhbE9iamVjdCwgaSwgdmFsdWUsIGVjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfSBlbHNlIGlmIChzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIGJ5VmFs
SW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKQEAgLTczOCwxNSArNzM4LDE0IEBAIHN0YXRpYyB2
b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsK
IAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgYmFzZVZhbHVlLnB1dElubGlu
ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFs
dWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQorc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlW
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpT
VmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNN
QU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBib29sIGlzU3RyaWN0
TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CiAKICAgICBpZiAoTElLRUxZKHN1YnNj
cmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCBKU1ZhbHVl
Ojppc1VJbnQzMiB3aWxsIHJldHVybiB0cnVlIG9ubHkgZm9yIHBvc2l0aXZlIGJveGVkIGludDMy
X3Q7IGFsbCB0aG9zZSB2YWx1ZXMgYXJlIHZhbGlkIGFycmF5IGluZGljZXMuCkBAIC03NjgsNyAr
NzY3LDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKICAgICAgICAgfQogCiAgICAgICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hv
dWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKKyAgICAgICAgYmFzZU9i
amVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIDAsIGVjbWFN
b2RlLmlzU3RyaWN0KCkgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5k
ZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3OCw3ICs3
NzcsNyBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogICAgICAgICBpZiAoc3Vic2NyaXB0QXNE
b3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikp
IHsKICAgICAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1v
ZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RU
aHJvdyk7CisgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwgMCwgZWNtYU1vZGUuaXNTdHJpY3QoKSA/IFB1
dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTc5MCw3ICs3ODksNyBA
QCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkgewogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93
UGF0aCA9IHRydWU7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYmFzZU9iamVj
dC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwg
aXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4
U2hvdWxkTm90VGhyb3cpOworICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBlY21hTW9kZS5pc1N0cmljdCgpID8g
UHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03OTgsNyArNzk3LDcgQEAgc3RhdGljIHZv
aWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEoKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwog
CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmpl
Y3QsIGlzU3RyaWN0TW9kZSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
ZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRo
UmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90
KTsKIH0KIApAQCAtODg0LDcgKzg4Myw3IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAg
cmV0dXJuIG9wdGltaXphdGlvblJlc3VsdDsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlw
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC05MDIsNyArOTAxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2QK
ICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICBjdGlQYXRj
aENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1
YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5
VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KIAogc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlE
aXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIG9iamVjdCwg
SlNWYWx1ZSBzdWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCkBAIC05NzQsNyArOTczLDcgQEAgc3RhdGljIE9wdGltaXphdGlvblJl
c3VsdCB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QKICAgICByZXR1cm4gb3B0aW1pemF0aW9uUmVzdWx0OwogfQogCi12b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTk5NSwxMCArOTk0LDEwIEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBk
aXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgb2JqZWN0LCBzdWJzY3JpcHQs
IHZhbHVlLCBieVZhbEluZm8pKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVj
dFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbElu
Zm8sIGVjbWFNb2RlKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTEwMDgsMTEgKzEwMDcsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKICAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAKLSAgICBwdXRC
eVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIGJhc2VWYWx1ZSwgc3Vi
c2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKTsKKyAgICBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJh
c2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKIAot
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01B
TW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTAyMiwx
MCArMTAyMSwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBzdWJzY3Jp
cHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJh
c2VWYWx1ZS5pc09iamVjdCgpKTsKLSAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCksIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFs
dWUsIGJ5VmFsSW5mbyk7CisgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09iamVj
dChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lKQorRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTAzNSw3ICsxMDM0LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKICAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUZyYW1lLT5ndWFyYW50ZWVk
SlNWYWx1ZUNhbGxlZSgpLCBnbG9iYWxGdW5jRXZhbCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbChnbG9iYWxP
YmplY3QsIGNhbGxlZUZyYW1lKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsZWVGcmFtZSwgZWNtYU1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTIxNjMsNyArMjE2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCoKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1Byb3BlcnR5R2Vu
ZXJpYyhnbG9iYWxPYmplY3QsIGluZGV4LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9CiAgICAgCi1zdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0s
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE3MywxMiArMjE3MiwxMiBAQCBz
dGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBj
b3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFz
ZU9iaiwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwotICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBlY21hTW9k
ZS5pc1N0cmljdCgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsK
IH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlm
aWVyKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlm
aWVyLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMjE5MiwyMSArMjE5MSwyMSBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwogICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKIAotICAgIGJvb2wg
cmVzdWx0ID0gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJh
c2VWYWx1ZSwgaWRlbnQpOworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlJZChnbG9iYWxPYmpl
Y3QsIHZtLCBzbG90LCBiYXNlVmFsdWUsIGlkZW50LCBlY21hTW9kZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoYmFzZVZhbHVl
LmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKCFwYXJzZUluZGV4KGlkZW50KSkgewogICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAg
ICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBi
YXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCksIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAg
IHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVl
LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwp
OworICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywg
RGVsQnlLaW5kOjpOb3JtYWwsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVu
dGlmaWVyKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIsIEVD
TUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMjE0
LDEwICsyMjEzLDEwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0CiAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0Jp
dHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwotICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgaWRlbnQpOworICAgIHJl
dHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSksIGlkZW50LCBlY21hTW9kZSk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtl
eSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUg
a2V5LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKQEAgLTIyMzYsMTIgKzIyMzUsMTIgQEAgc3RhdGljIGJvb2wgZGVsZXRl
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IFZNJgogICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAg
fQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlm
ICghY291bGREZWxldGUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsK
ICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIyNTMsNyArMjI1Miw3IEBAIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKIAotICAgIGJvb2wg
cmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBi
YXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9i
YWxPYmplY3QsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgZWNtYU1vZGUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYg
KGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxl
SWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgewpAQCAtMjI2NCwyMCArMjI2MywyMCBAQCBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQu
YXNDZWxsKCkpOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2
bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCksIGlkZW50aWZpZXIpKQot
ICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
c2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVs
QnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRl
bnRpZmllciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsLCBlY21hTW9kZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAg
ICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCkpOworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIHZtLCBzbG90LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCksIGVjbWFNb2RlKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50
U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkKQEAgLTI1NDQsNyArMjU0Myw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IEluc3RyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwg
UHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJ
bmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2Nv
cGUsIGdldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVu
a25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25N
b2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9i
amVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCmluZGV4IDVjMWZjMzc2MTYwYjQ0YTc2ODBjMzY3NWMwNWI4NGQ2MjcxNjJmZjQuLjhl
ZmI1YjVhYzk4MGFlZTZjNTUyMzQ0MzdjOTAyODk1ODkwMjI2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIFZNOwog
Y2xhc3MgV2F0Y2hwb2ludFNldDsKIAogc3RydWN0IEJ5VmFsSW5mbzsKK3N0cnVjdCBFQ01BTW9k
ZTsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKQEAgLTE4
NywxMSArMTg4LDEyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCi12
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFs
SW5mbyopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQ
dXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyop
IFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBC
eVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZf
SU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKKworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVj
dCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwoQ2FsbEZyYW1lKiwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2Jh
bE9iamVjdCosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKQEAgLTI1MCwxMCArMjUyLDEw
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZh
dWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1zaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCkgV1RG
X0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJO
QUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QsIEVDTUFNb2RlKSBXVEZfSU5U
RVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
dWludHB0cl90LCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0LCBFQ01B
TW9kZSkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQsIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0
KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhT
Y29wZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRT
Y29wZUNlbGwsIEpTT2JqZWN0KiBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdU
Rl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKaW5kZXggYzM1NDNkYWU3ZDA4MmViZGVjNjFkMGJjZDViOGY4NzUyMDQwYmU3NC4u
YTQwODA1OTM2NTBhNmVjNTY4YWE2MTA2OTE3ZmU5N2IzOGYxMzM4YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI4Nyw3ICsyODcs
NyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9w
IGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdl
bigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2lu
ZCk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdU
MiwgYnl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3Jp
dGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0
aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUg
c2l6ZS4KQEAgLTMxMSwxMSArMzExLDEzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5OwogICAg
IFZpcnR1YWxSZWdpc3RlciB2YWx1ZTsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2Rl
OjpzdHJpY3QoKTsKIAogICAgIGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2RlKSB7CiAgICAg
ICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUu
bV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworICAgICAgICBl
Y21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVj
dCkKQEAgLTMzMSw3ICszMzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvcGVydHksIHJlZ1QxKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCBy
ZWdUMik7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVn
VDIsIGJ5VmFsSW5mbyk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCBy
ZWdUMSwgcmVnVDIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpKTsK
IAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNs
b3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5
VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CkBAIC00MjcsNyArNDI5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygp
LCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9l
Y21hTW9kZS52YWx1ZSgpKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7
CkBAIC00NzcsNyArNDc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwg
cmVnVDEsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogCiAgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTY1NCw3ICs2NTYsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5
SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgIGJv
b2wgZGlyZWN0ID0gISEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCk7CisgICAg
Ym9vbCBkaXJlY3QgPSBieXRlY29kZS5tX2ZsYWdzLmlzRGlyZWN0KCk7CiAgICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpKTsKIAogICAgIC8vIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gcGF0Y2ggYm90aCB0aGUg
U3RydWN0dXJlLCBhbmQgdGhlIG9iamVjdCBvZmZzZXQsIHdlIHN0b3JlIG9uZSBwb2ludGVyLApA
QCAtNjY4LDcgKzY3MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIG1fY29kZUJsb2NrLT5l
Y21hTW9kZSgpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qx
KSwgcmVnVDIsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwKICAgICAgICAgZGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAppbmRleCA4ZDE4ODAzNmEyMzU5ZGYwYjFlMWFmMWFiNGQ4NzdmYzZjNjBjOWFh
Li41MzU0ODZjZDhmMTUzMmFkMWJlYjUxNWE4NmI5MDhhYmM4MzY5NmUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAg
LTQyMyw3ICs0MjMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGVtaXRMb2FkKGJh
c2UsIHJlZ1QyLCByZWdUMSk7CiAgICAgZW1pdExvYWQocHJvcGVydHksIHJlZ1QzLCByZWdUMCk7
CiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1Q1LCByZWdUNCk7Ci0gICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBv
cGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpT
VmFsdWVSZWdzKHJlZ1QyLCByZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1Q1LCByZWdUNCksIGJ5VmFsSW5mbyk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFs
dWVSZWdzKHJlZ1QyLCByZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1Q1LCByZWdUNCksIGJ5VmFsSW5mbywgYnl0ZWNvZGUubV9pc1N0cmljdE1vZGUpOwog
CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xv
d1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlW
YWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDA4ZmFiZDU2NDI4NjhjMGM2ZmQ2OTc2NzFjMWY5ZTYw
ZDA5NGFkNzAuLjhiYmUzY2I5M2U0MGM4Nzk1OTYyMWZlMGZhNmIwYmI2YWVjZDNlNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQg
cmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1
dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKLXN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZh
bHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kKQorc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNW
YWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQs
IEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKQEAgLTc3MSw3ICs3NzEsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+
aXNPYmplY3QoKSk7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQp
KTsKICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNv
ZGVCbG9jaywgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0
dXJlKTsKLSAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgICAgICBp
ZiAoc2xvdC5pc05vbmNvbmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBB
Y2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29u
ZmlndXJhYmxlLCBwcm9wZXJ0eU5hbWUsIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9
LCBudWxscHRyKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTc5MiwxMiArNzkyLDEyIEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jCiAgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/
IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7CiB9CiAKLXZvaWQgcmVwYXRjaERlbGV0
ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit2b2lkIHJlcGF0Y2hEZWxldGVCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBT
dXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKSB7CisgICAgaWYgKHRyeUNhY2hl
RGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVw
T25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5l
cmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtp
bmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCiAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
RGVsZXRlQnlJZEdlbmVyaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCBl
NWNlNDY4NzExNDYzOTJlNGU3MmU2MTRhMmY1ZTU4ZWE2NzQ5OTQ1Li5kODkwZmQ3MGFhY2Q4MmZm
YmY0ZGE4ZmIyNGUxZjNkZmY1NzQ5ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aApAQCAtNDksNyArNDksNyBAQCBlbnVtIGNsYXNzIERlbEJ5S2luZCB7CiB2b2lkIHJlcGF0Y2hB
cnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNlLCBK
U1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoR2V0QnkoSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBj
b25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lk
IHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3Ry
dWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3Ry
dWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKLXZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFs
T2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0
dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQp
Owordm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCwgRUNNQU1vZGUpOwogdm9pZCByZXBhdGNo
SW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVC
bG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExp
bmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCmluZGV4IDNkYjIzYmFlMDVkNTgwMjljNTAzOWY1NzIzYjlkOTk2NWY0
MmI0MmMuLjhkZWE3ZjI3OGU3NjYyZTUwMzE0Y2ViOWIwODMzOWY4N2JmZGE0OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtODM2LDEw
ICs4MzYsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29u
dGV4dCgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGJ5dGVjb2RlLm1f
ZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkp
OwogCiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuaXNDZWxsKCkgPyBi
YXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkgOiBudWxscHRyOwotICAgIGlmIChieXRl
Y29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KQorICAgIGlmIChieXRlY29kZS5tX2ZsYWdz
LmlzRGlyZWN0KCkpCiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5
KHZtLCBnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIGlkZW50LCBnZXRPcGVyYW5k
KGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSksIHNsb3QpOwogICAgIGVsc2UKICAgICAgICAg
YmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV92YWx1ZSksIHNsb3QpOwpAQCAtODg4LDcgKzg4OCw3IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlJZElzRGlyZWN0KSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3MuaXNEaXJlY3QoKSkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
ID0gbmV3U3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJh
c2VDZWxsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hh
aW4uc2V0KHZtLCBjb2RlQmxvY2ssIGNoYWluKTsKQEAgLTkyNyw3ICs5MjcsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQogICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOwogICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJh
c2VPYmplY3QsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCFjb3VsZERlbGV0
ZSAmJiBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJv
cikpOwogICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKIH0KQEAgLTEw
MjUsNyArMTAyNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFs
KQogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2Fs
bEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5t
X2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNV
SW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwpA
QCAtMTA1OCw3ICsxMDU4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0
KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAg
ICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9v
bCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CiAgICAgaWYg
KExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMg
bmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2
ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2Vz
LgogICAgICAgICBBU1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOwpAQCAtMTEx
Miw3ICsxMTEyLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwp
CiAgICAgfQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKCFjb3VsZERl
bGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUg
JiYgYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3Ip
KTsKICAgICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CkBAIC0x
NzM4LDcgKzE3MzgsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFs
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbgogICAgIGlmICghaXNIb3N0
RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQogICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgc2V0VXBDYWxsKGNhbGxlZUZyYW1lLCBDb2RlRm9yQ2Fs
bCwgY2FsbGVlQXNWYWx1ZSkpOwogICAgIAotICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBl
dmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUpOworICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFs
dWUgPSBldmFsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGJ5dGVjb2RlLm1fZWNtYU1vZGUp
OwogICAgIExMSU5UX0NBTExfUkVUVVJOKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIExMSW50
OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcpOwog
fQogICAgIApAQCAtMTg3NCw3ICsxODc0LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF90b19zY29wZSkKICAgICBpZiAobWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVN
b2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0eSkKICAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihnbG9iYWxPYmplY3QsIGlkZW50KSk7
CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbiht
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChzY29wZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlv
bihtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29w
ZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVl
LCBzbG90KTsKICAgICAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUds
b2JhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYnl0ZWNvZGUsIHNjb3BlLCBzbG90LCBpZGVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKaW5kZXggMDdkOGU4YzgyMWM0NmY0YmNkY2NiOTNlZDA4MjAyMTJmZGU1ZDc0OS4uYWRlNTQ5
NTlmYjZmYjI3YjVkOWNhYWI3N2U5OTE0NTMwNzYzYzk0NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNjAwLDcgKzYwMCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICAv
LyAxLiBMZXQgYXJyYXkgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0
aGlzIHZhbHVlLgogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CkBAIC02ODMsNyArNjgzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
dGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC03ODEsNyArNzgxLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2EKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyAxLiBMZXQgTyBiZSA/IFRvT2JqZWN0KHRoaXMgdmFsdWUpLgotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9O
X0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5M
SUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAg
LTg2Niw3ICs4NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jUG9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSk7CiAKICAgICBpZiAoaXNKU0FycmF5KHRoaXNWYWx1ZSkpCiAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVlKS0+cG9w
KGdsb2JhbE9iamVjdCkpKTsKQEAgLTkwMSw3ICs5MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgaWYgKExJS0VMWShpc0pTQXJyYXko
dGhpc1ZhbHVlKSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSkgewogICAgICAg
ICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKQEAgLTk0Miw3ICs5NDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVO
TElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBA
IC0xMDM5LDcgKzEwMzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1
ZSgpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc2xp
Y2UKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4g
eyB9OwpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1NwbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09i
aik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxNS40LjQu
MTMKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
QEAgLTEzNTYsNyArMTM1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE0Ci0gICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENF
UFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMzk0LDcg
KzEzOTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFz
dEluZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNQotICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBT
dHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDIyNmI0ODM1NDYyZDhjNDVlNjE5ZjY2
ODAwYmU5OTdhOTFhZTg4YTEuLjgwMmYyMDJmOTI5YjAwODAzNGZhN2Q2ZWI4MTA5MGFiNzMzMGQy
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAK
QEAgLTE4MTgsNyArMTgxOCw2IEBAIHB1YmxpYzoKICAgICBSZWY8VW5saW5rZWRNZXRhZGF0YVRh
YmxlPiBtZXRhZGF0YShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRh
LmRlY29kZShkZWNvZGVyKTsgfQogCiAgICAgdW5zaWduZWQgdXNlc0V2YWwoKSBjb25zdCB7IHJl
dHVybiBtX3VzZXNFdmFsOyB9Ci0gICAgdW5zaWduZWQgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICB1bnNpZ25lZCBpc0NvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgdW5zaWduZWQgaGFzQ2FwdHVyZWRW
YXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAg
dW5zaWduZWQgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CkBAIC0xODUxLDcgKzE4NTAsNiBAQCBwcml2YXRlOgogICAgIFZpcnR1YWxSZWdp
c3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKLSAg
ICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVj
dG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1
bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKQEAgLTIwNDgsNyArMjA0Niw2IEBAIEFM
V0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKERlY29kZXIm
IGRlY29kZXIsIFN0cnVjdHVyZSoKICAgICAsIG1fc2NvcGVSZWdpc3RlcihjYWNoZWRDb2RlQmxv
Y2suc2NvcGVSZWdpc3RlcigpKQogCiAgICAgLCBtX3VzZXNFdmFsKGNhY2hlZENvZGVCbG9jay51
c2VzRXZhbCgpKQotICAgICwgbV9pc1N0cmljdE1vZGUoY2FjaGVkQ29kZUJsb2NrLmlzU3RyaWN0
TW9kZSgpKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGNhY2hlZENvZGVCbG9jay5pc0NvbnN0cnVj
dG9yKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGNhY2hlZENvZGVCbG9jay5oYXND
YXB0dXJlZFZhcmlhYmxlcygpKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjYWNoZWRDb2Rl
QmxvY2suaXNCdWlsdGluRnVuY3Rpb24oKSkKQEAgLTIyMzQsNyArMjIzMSw2IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zCiAgICAgbV90aGlzUmVnaXN0ZXIgPSBjb2RlQmxvY2subV90aGlzUmVn
aXN0ZXI7CiAgICAgbV9zY29wZVJlZ2lzdGVyID0gY29kZUJsb2NrLm1fc2NvcGVSZWdpc3RlcjsK
ICAgICBtX3VzZXNFdmFsID0gY29kZUJsb2NrLm1fdXNlc0V2YWw7Ci0gICAgbV9pc1N0cmljdE1v
ZGUgPSBjb2RlQmxvY2subV9pc1N0cmljdE1vZGU7CiAgICAgbV9pc0NvbnN0cnVjdG9yID0gY29k
ZUJsb2NrLm1faXNDb25zdHJ1Y3RvcjsKICAgICBtX2hhc0NhcHR1cmVkVmFyaWFibGVzID0gY29k
ZUJsb2NrLm1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgbV9pc0J1aWx0aW5GdW5jdGlvbiA9
IGNvZGVCbG9jay5tX2lzQnVpbHRpbkZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggZjY5OTllNzM0ODRlMmFiZDg4
MTQ1NGYxMTQ4MzEwYzAyZDRmMmE3NC4uODk2ZWQ4MTE3M2ZiYjc3Nzg2MWIzYjk1NjExOWY0YWRh
MmExZTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmEK
IAogICAgIGlmICghdGhpc09iamVjdC0+c3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSkgewogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4odGhpc09iamVjdC0+bV9jYWxsZWUtPmV4ZWN1dGFibGUoKSk7Ci0gICAgICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKTsKIAogICAgICAg
ICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlKSB7CiAgICAgICAgICAgICBp
ZiAoaXNTdHJpY3RNb2RlKSB7CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBDbG9uZWRBcmd1bWVu
dHM6Om1hdGVyaWFsaXplU3BlY2lhbHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgCiAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG1fY2FsbGVlLT5l
eGVjdXRhYmxlKCkpOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gZXhlY3V0YWJsZS0+aXNTdHJp
Y3RNb2RlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0
Q29udGV4dCgpOwogICAgIAogICAgIGlmIChpc1N0cmljdE1vZGUpCiAgICAgICAgIHB1dERpcmVj
dEFjY2Vzc29yKGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlLCB0aGlzLT5n
bG9iYWxPYmplY3Qodm0pLT50aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdl
dHRlclNldHRlcigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBmYTNjZDMyNmJjZDVi
OTc4OWEyNDI3ZTYxM2FjOTU0OGIyZmIzYWUyLi45ZTE3MmI2YWVhNzRiMDYyZGU5ZmZlZjhkYTU2
ZDQ5MzRmOTRkNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKQEAgLTkxLDExICs5MSwxMSBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRl
VW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgICAg
ICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSB8IGFycm93Q29u
dGV4dEZlYXR1cmUsIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+
bGFzdExpbmUoKSwgZW5kQ29sdW1uKTsKIAogICAgIGJvb2wgdXNlc0V2YWwgPSByb290Tm9kZS0+
ZmVhdHVyZXMoKSAmIEV2YWxGZWF0dXJlOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gcm9vdE5v
ZGUtPmZlYXR1cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZTsKKyAgICBFQ01BTW9kZSBlY21hTW9k
ZSA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmUgPyBFQ01BTW9kZTo6
c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6Tm87CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlw
ZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KQogICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciA9IGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7Ci0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGlzU3RyaWN0TW9kZSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwg
ZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBl
dmFsQ29udGV4dFR5cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENv
ZGVCbG9jayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlSW5m
bywgY29kZUdlbmVyYXRpb25Nb2RlKTsKICAgICB1bmxpbmtlZENvZGVCbG9jay0+cmVjb3JkUGFy
c2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygp
LCBsaW5lQ291bnQsIHVubGlua2VkRW5kQ29sdW1uKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBVbmxp
bmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgcwogICAgIGlmICghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKICAgICAgICAgdW5saW5rZWRDb2RlQmxvY2st
PnNldFNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmUoKSk7CiAKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgdmFyaWFibGVzVW5kZXJURFopOworICAgIGVycm9yID0gQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtl
ZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCB2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1v
ZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAppbmRleCBlM2JlZDg4ZDgzYWJlZWYxOWI4NjhlOTczMjMxN2M1MjJkOTA4ZTNkLi5iOGRlOTY1
NTgyZjdkOTEyNzEzMzdkNTQzMTkwM2U4MzE4YzI2ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM3OSw3ICszNzksNyBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fdGhpcykKICAgICAvLyBkaWZmZXJlbnQgb2Jq
ZWN0IHRoYXQgc3RpbGwgaGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBvbiB0aGUgZmFzdCBwYXRoIHNp
bmNlIGl0J2xsIHByb2R1Y2UKICAgICAvLyB0aGUgc2FtZSBTcGVjdWxhdGVkVHlwZS4gVGhlcmVm
b3JlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHZhbHVlIHByb2ZpbGluZyBvbiB0aGUK
ICAgICAvLyBmYXN0IHBhdGguCi0gICAgYXV0byB2YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9k
ZSk7CisgICAgYXV0byB2YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxPYmplY3QsIGJ5dGVjb2RlLm1f
ZWNtYU1vZGUpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9z
cmNEc3QsIHZhbHVlLCBQUk9GSUxFX1ZBTFVFKHZhbHVlKSk7CiB9CiAKQEAgLTk4OCw3ICs5ODgs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICB9CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CiAgICAgCi0gICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKQorICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21h
TW9kZS5pc1N0cmljdCgpKQogICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKICAgICAKICAgICBSRVRVUk4oanNC
b29sZWFuKGNvdWxkRGVsZXRlKSk7CkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdGhpc1ZhbCA9
IEdFVF9DKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBwdXRW
YWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fdmFsdWUpLmpzVmFsdWUoKTsKLSAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzVmFsLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxvY2st
PnB1dEJ5SWRDb250ZXh0KCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGJ5
dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgp
KTsKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1dFZhbHVl
LCBzbG90KTsKICAgICBFTkQoKTsKIH0KQEAgLTEzMjEsNyArMTMyMSw3IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAKICAgICBhdXRvIHByb3Bl
cnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19F
WENFUFRJT04oKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwg
Ynl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpKTsKICAgICBiYXNlVmFsdWUucHV0KGdsb2Jh
bE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICBFTkQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMu
aAppbmRleCAzN2FmYTc2YzQwNTc1OTM1NTA2ZTU5Yjg0ZDJiNWYxZTgwOWFmZmYzLi5iYjU0NzQw
N2MxNzU3NWVhYzQ0ZGFlYzFmNGI3ZTA3MTk5ZGM0NjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oCkBAIC00Nyw3
ICs0Nyw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICAgICAg
ICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3Mo
cmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xv
YmFsUHJvcGVydHk7CiAgICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAv
LyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAg
ICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9
IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29s
dmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwpAQCAtNjEsNyArNjEsNyBAQCBpbmxpbmUgdm9pZCB0
cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVu
dHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQu
aW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAg
ICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZv
LmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
byA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jl
c29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIG1l
dGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1f
d2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKICAgICAgICAgICAgIG1ldGFk
YXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEwOSw3ICsxMDksNyBAQCBpbmxpbmUgdm9pZCB0cnlDYWNo
ZUdldEZyb21TY29wZUdsb2JhbCgKICAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVU
eXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CiAgICAgICAgICAgICBy
ZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hh
bmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZl
VHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQ
dXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwpA
QCAtMTIzLDcgKzEyMyw3IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFs
KAogICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZp
cm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBB
U1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3
UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNt
YU1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53
YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0
KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGM4M2I5MDVl
MzgzNTFjMWJhMGVlMTU4NDJkOTgzZmE2MjlkNzEyZmQuLmIyZjhmZmRhMWY3ODE2NzdjNWFkMTM0
NDk0YWFiNGNjZmM1ZDhjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUK
IAogICAgIGlmICghdGhpc1ZhbHVlIHx8IHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICB0aGlzVmFsdWUgPSBnbG9iYWxPYmplY3Q7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmog
PSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3Ry
aWN0TW9kZSkpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTT2JqZWN0Kj4odGhp
c1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVQcm9ncmFtKHNvdXJjZSwgZ2xv
YmFsT2JqZWN0LCB0aGlzT2JqKTsKIAogICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuY3BwCmluZGV4IDFhNzJiZmI0N2VmZWZhNTUwZGVmOTgzNTY2NTRhZjY0OTA3Nzk3MzUuLjdj
MTliNzVjNjJjODA0MTM2MmRkOWViMTJlZGE1OTc5MjUxMTVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxl
KiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFs
Q29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERa
KQorRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxD
b250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFos
IEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NSwxMSArNDUs
MTEgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVj
dEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2Jq
ZWN0LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFw
KSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFNb2RlLmlz
U3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENv
bnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICBQ
YXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4
ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBK
U1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3Ry
aWN0TW9kZSA9IGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmlj
dCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENv
ZGVHZW5lcmF0aW9uTW9kZSgpOwogCiAgICAgLy8gV2UgZG9uJ3QgYm90aGVyIHdpdGggQ29kZUNh
Y2hlIGhlcmUgYmVjYXVzZSBkaXJlY3QgZXZhbCB1c2VzIGEgc3BlY2lhbGl6ZWQgRGlyZWN0RXZh
bENvZGVDYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDQ3ODI2YmYzMjBjMWMxN2Q1ODMxMzljNDZlNTNlNmRh
ZWRhYmJkNDkuLjI0MDc1YTdmNWEzNmM3M2ZlYmE0MDdlNzEwOWE2ZmMzM2YyNzBkNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGlyZWN0RXZh
bEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAg
IHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlw
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSog
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIHByaXZhdGU6CiAgICAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBp
blN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRUNNQU1vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRUNNQU1vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0NDRkZTI4ZmZmMTZlYjdiMTBmNjJhNjdl
OTdjMjAwMWYwMTZhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FQ01BTW9kZS5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRUNNQU1vZGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKwordm9pZCBFQ01BTW9kZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
eworICAgIGlmIChpc1N0cmljdCgpKQorICAgICAgICBvdXQucHJpbnQoIlN0cmljdE1vZGUiKTsK
KyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgiTm90U3RyaWN0TW9kZSIpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0VDTUFNb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BTW9kZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVmZjFiMTFhNjZlYTkxN2Q3ZTNkM2NkMTlhNTc5MjJiNTllNzdjMTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BTW9kZS5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgUHJpbnRTdHJlYW07
Cit9OworCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEVDTUFNb2RlIHsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQ4X3QgU3RyaWN0TW9kZSA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IFNsb3BweU1vZGUgPSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBF
Q01BTW9kZSBmcm9tQnl0ZSh1aW50OF90IGJ5dGUpIHsgcmV0dXJuIEVDTUFNb2RlKGJ5dGUpOyB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciBFQ01BTW9kZSBzdHJpY3QoKSB7IHJldHVybiBFQ01BTW9k
ZShTdHJpY3RNb2RlKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgc2xvcHB5KCkg
eyByZXR1cm4gRUNNQU1vZGUoU2xvcHB5TW9kZSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc1N0cmljdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gU3RyaWN0TW9kZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdWludDhfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
KworICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgY29uc3RleHByIEVDTUFNb2RlKHVpbnQ4X3QgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlID09IFN0cmljdE1vZGUgfHwgbV92
YWx1ZSA9PSBTbG9wcHlNb2RlLCBtX3ZhbHVlKTsKKyAgICB9CisKKyAgICB1aW50OF90IG1fdmFs
dWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDYwNWIyZWZmYjFkN2I4MmU1Y2RiN2M2NDUz
ZGM1ZGU3MWYzMDI2NzYuLjY3ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZiOGU3ZTk5NDgwZWQ3NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApA
QCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCks
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwg
ZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2Us
IGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3Np
YywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUs
IGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAg
IHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5k
aWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9p
c3RpbmdDYW5kaWRhdGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggNDQzYmIzOGE2NWNiODA0NzQ1Njg1N2NkOGQy
NzZhZGU5ZjdhNmI1Yy4uYmFkZTk4NzM1Zjk5ZGM0N2U3YTZkYzc4N2M1Nzk3MTFjZTUxNWVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBQZXIg
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZm9yYmlkZGVuLWV4dGVuc2lvbnMs
IG9ubHkgc2xvcHB5LW1vZGUgbm9uLWJ1aWx0aW4gZnVuY3Rpb25zIGluIG9sZC1zdHlsZSAocHJl
LUVTNikgc3ludGFjdGljIGZvcm1zIGNhbiBjb250YWluCiAgICAgICAgIC8vICJjYWxsZXIiIGFu
ZCAiYXJndW1lbnRzIi4KLSAgICAgICAgcmV0dXJuICFpc1N0cmljdE1vZGUoKSAmJiBwYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0Nv
bnN0cnVjdG9yRnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuICFpc0luU3RyaWN0Q29udGV4dCgp
ICYmIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlICYm
ICFpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOwogICAgIH0KICAgICBib29sIGhhc1Byb3Rv
dHlwZVByb3BlcnR5KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldFB1dEluZm8uY3BwCmluZGV4IGQ2ZTcxZWQ4NDhhN2M1N2JjZTg5ZjkyNDQ4MjkyMWUz
OTU4NDBjOGMuLjE1MDhhNjAxN2M5YjFhZTVlNzAxODkyOTdiMjYzZWMxNjI1ZjYyMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uY3BwCkBAIC0zMiw3ICsz
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIEdldFB1dEluZm86OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQob3BlcmFuZCgpLCAiPCIsIHJlc29sdmVN
b2RlKCksICJ8IiwgcmVzb2x2ZVR5cGUoKSwgInwiLCBpbml0aWFsaXphdGlvbk1vZGUoKSwgIj4i
KTsKKyAgICBvdXQucHJpbnQob3BlcmFuZCgpLCAiPCIsIHJlc29sdmVNb2RlKCksICJ8IiwgcmVz
b2x2ZVR5cGUoKSwgInwiLCBpbml0aWFsaXphdGlvbk1vZGUoKSwgInwiLCBlY21hTW9kZSgpLCAi
PiIpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dFB1dEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaApp
bmRleCAwNmZmZDQzYTAyNWYwYjVlY2I0ZTAxMGUyNzE4ZDA2YzAxYjQ1OWRlLi5kZTUxNTA4OWIy
YzVmODU5ZTAxOTg0ODFmZmQ4MGQwOWQ1YTY5NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0UHV0SW5mby5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkVDTUFNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmlu
Z0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0yMDIsMTggKzIwMywyMCBAQCBjbGFzcyBH
ZXRQdXRJbmZvIHsKICAgICB0eXBlZGVmIHVuc2lnbmVkIE9wZXJhbmQ7CiBwdWJsaWM6CiAgICAg
Ly8gR2l2ZSBlYWNoIGZpZWxkIDEwIGJpdHMgZm9yIHNpbXBsaWNpdHkuCi0gICAgc3RhdGljX2Fz
c2VydChzaXplb2YoT3BlcmFuZCkgKiA4ID4gMzAsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1
dEluZm8iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kKSAqIDggPiAzMSwgIk5v
dCBlbm91Z2ggYml0cyBmb3IgR2V0UHV0SW5mbyIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgaXNTdHJpY3RTaGlmdCA9IDMwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bW9kZVNoaWZ0ID0gMjA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsaXph
dGlvblNoaWZ0ID0gMTA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB0eXBlQml0cyA9
ICgxIDw8IGluaXRpYWxpemF0aW9uU2hpZnQpIC0gMTsKICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGluaXRpYWxpemF0aW9uQml0cyA9ICgoMSA8PCBtb2RlU2hpZnQpIC0gMSkgJiB+dHlw
ZUJpdHM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtb2RlQml0cyA9ICgoMSA8PCAz
MCkgLSAxKSAmIH5pbml0aWFsaXphdGlvbkJpdHMgJiB+dHlwZUJpdHM7Ci0gICAgc3RhdGljX2Fz
c2VydCgobW9kZUJpdHMgJiBpbml0aWFsaXphdGlvbkJpdHMgJiB0eXBlQml0cykgPT0gMHgwLCAi
VGhlcmUgc2hvdWxkIGJlIG5vIGludGVyc2VjdGlvbiBiZXR3ZWVuIFJlc29sdmVNb2RlIFJlc29s
dmVUeXBlIGFuZCBJbml0aWFsaXphdGlvbk1vZGUiKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGlzU3RyaWN0Qml0ID0gMSA8PCAzMDsKKyAgICBzdGF0aWNfYXNzZXJ0KChtb2RlQml0
cyAmIGluaXRpYWxpemF0aW9uQml0cyAmIHR5cGVCaXRzICYgaXNTdHJpY3RCaXQpID09IDB4MCwg
IlRoZXJlIHNob3VsZCBiZSBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNvbHZlTW9kZSBSZXNv
bHZlVHlwZSBhbmQgSW5pdGlhbGl6YXRpb25Nb2RlIik7CiAKICAgICBHZXRQdXRJbmZvKCkgPSBk
ZWZhdWx0OwogCi0gICAgR2V0UHV0SW5mbyhSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUp
Ci0gICAgICAgIDogbV9vcGVyYW5kKChyZXNvbHZlTW9kZSA8PCBtb2RlU2hpZnQpIHwgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbml0aWFsaXphdGlvbk1vZGUpIDw8IGluaXRpYWxpemF0aW9uU2hp
ZnQpIHwgcmVzb2x2ZVR5cGUpCisgICAgR2V0UHV0SW5mbyhSZXNvbHZlTW9kZSByZXNvbHZlTW9k
ZSwgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXph
dGlvbk1vZGUsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1fb3BlcmFuZCgoZWNtYU1v
ZGUuaXNTdHJpY3QoKSA8PCBpc1N0cmljdFNoaWZ0KSB8IChyZXNvbHZlTW9kZSA8PCBtb2RlU2hp
ZnQpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsaXphdGlvbk1vZGUpIDw8IGluaXRp
YWxpemF0aW9uU2hpZnQpIHwgcmVzb2x2ZVR5cGUpCiAgICAgewogICAgIH0KIApAQCAtMjI1LDYg
KzIyOCw3IEBAIHB1YmxpYzoKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihtX29wZXJhbmQgJiB0eXBlQml0cyk7IH0K
ICAgICBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25Nb2RlPigobV9vcGVyYW5kICYgaW5pdGlhbGl6
YXRpb25CaXRzKSA+PiBpbml0aWFsaXphdGlvblNoaWZ0KTsgfQogICAgIFJlc29sdmVNb2RlIHJl
c29sdmVNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb2x2ZU1vZGU+KChtX29w
ZXJhbmQgJiBtb2RlQml0cykgPj4gbW9kZVNoaWZ0KTsgfQorICAgIEVDTUFNb2RlIGVjbWFNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYW5kICYgaXNTdHJpY3RCaXQgPyBFQ01BTW9kZTo6c3Ry
aWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7IH0KICAgICB1bnNpZ25lZCBvcGVyYW5kKCkgY29u
c3QgeyByZXR1cm4gbV9vcGVyYW5kOyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3Bw
CmluZGV4IDVmOWY4NWUxZWNkYzgxMzQ3ZDg5NzQwNmU2MjExNGQwNjU0NzI3OTMuLjY2Y2M3NTA3
MzkwYmE0MWUwODg5Y2Q2YjZjNTAwZTc2YjAyMTYwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29sIGNh
bGxTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlLCBKU1Zh
bHVlIGdldHRlclNldHRlcgogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyT2JqID0ganND
YXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAKICAgICBpZiAoZ2V0dGVyU2V0dGVy
T2JqLT5pc1NldHRlck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBlY21hTW9kZSA9PSBTdHJpY3RNb2RlLCBSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZWNt
YU1vZGUuaXNTdHJpY3QoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogCiAgICAgSlNP
YmplY3QqIHNldHRlciA9IGdldHRlclNldHRlck9iai0+c2V0dGVyKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAKaW5kZXggMjAwMzE5MjkwZjBiZTBmOTczMTQxYmZlOTQ5OWYzYmFlODk3ODg2Mi4uMTRmN2Zh
YjVjM2Q0ZWFhODc5NDJiY2YzMzJhNDVmMWM1MDZkYWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQs
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKK0luZGlyZWN0RXZh
bEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
NDUsMTUgKzQ1LDE0IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbmRpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250
ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlKTsKKyAgICBh
dXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW5kaXJlY3RFdmFs
RXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0
LCBzb3VyY2UsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZh
bENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9
IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Qg
OiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2Rl
R2VuZXJhdGlvbk1vZGUoKTsKICAgICAKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlu
a2VkRXZhbENvZGUgPSB2bS5jb2RlQ2FjaGUoKS0+Z2V0VW5saW5rZWRFdmFsQ29kZUJsb2NrKAot
ICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0cmljdE1vZGUs
IGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgICAgIHZt
LCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSk7CiAK
ICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpKQogICAgICAgICBnbG9iYWxPYmpl
Y3QtPmRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPnNv
dXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKQEAgLTY4
LDggKzY3LDEwIEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIGV4ZWN1dGFi
bGU7CiB9CiAKLUluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBm
YWxzZSwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pCitj
b25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKK2NvbnN0ZXhwciBib29sIGlu
c2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZTsKK0luZGlyZWN0RXZhbEV4ZWN1dGFibGU6Oklu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUpCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJp
Y3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6Ok5vKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggYzE5OTJmZGIxYTQyNTA1NGFl
OWJjNDU3NTEyOGU2ZjUwODZjYTliYy4uNDk4YjVjODcwOThhYjM3NDc5N2EyNWJmNDgxNjM3Y2Zi
YjkyZWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOSArMzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFdmFsRXhlY3V0
YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0
ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZh
bENvbnRleHRUeXBlKTsKKyAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOwogcHJpdmF0ZToK
LSAgICBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNl
Q29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKKyAgICBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOwog
fTsKIAogc3RhdGljX2Fzc2VydChzaXplb2YoSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSkgPT0gc2l6
ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA2NDAwZWU4YmRiMmU1NzcwMmIzY2JjMzY5OTM2OWQ3N2M5
NDMzMGQ0Li41ZGI3Y2QzZmQxOWU4OWJkODFkNTkwMjUzZTk5MWI4YmVhMDhkMmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTExMSw3ICsxMTEsNyBAQCBKU1Zh
bHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIEFTU0VSVCghaXNDZWxsKCkpOwogCi0gICAgaWYg
KGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCiAg
ICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkK
QEAgLTE4OSw3ICsxODksNyBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eQogCiAgICAgICAgICAg
ICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChn
cy5pc0dldHRlclNldHRlcigpKQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCBncywgdmFsdWUsIHNsb3QuaXNT
dHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0
aGlzLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkg
OiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIAogICAgICAgICAgICAgaWYgKGdzLmlzQ3VzdG9tR2V0
dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxDdXN0b21TZXR0ZXIoZ2xv
YmFsT2JqZWN0LCBncywgYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggMGJjYWI0MGI4ZDkyMWQyYzczNGEyOWExNGRj
MDIxYzcyZDIzMGEzNC4uNDJjNTM3NzdjY2RlYzVmY2Q0ZGI4MTBkMTg1NGZhNjBjOWY0ODFlZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIyLDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFQ01BTW9kZS5oIgogI2luY2x1ZGUgIkpTRXhwb3J0
TWFjcm9zLmgiCiAjaW5jbHVkZSAiUHVyZU5hTi5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CkBA
IC04MCw4ICs4MSw3IEBAIHVzaW5nIFdyaXRlQmFycmllclRyYWl0c1NlbGVjdCA9IHR5cGVuYW1l
IHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19zYW1lPFQsIFVua25vCiAgICAgRHVtYlZhbHVlVHJh
aXRzPFQ+LCBEdW1iUHRyVHJhaXRzPFQ+CiA+Ojp0eXBlOwogCi1lbnVtIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07Ci1l
bnVtIEVDTUFNb2RlIHsgU3RyaWN0TW9kZSwgTm90U3RyaWN0TW9kZSB9OworZW51bSBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlIDogdWludDhfdCB7IE5vUHJlZmVyZW5jZSwgUHJlZmVyTnVtYmVyLCBQ
cmVmZXJTdHJpbmcgfTsKIAogZW51bSBjbGFzcyBDYWxsVHlwZSA6IHVuc2lnbmVkOwogc3RydWN0
IENhbGxEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXgg
MmZlYTJiNWI4ZWQ4MDkzN2EwOTBmYzVjMWFmNWI1OTJkMzM1ODMzYS4uMTM5MGM3NjE5YWNjN2E5
NDQ5YWZlM2M4NzdiZDk5MzUwZjU0MDY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHUK
IAogSlNWYWx1ZSBKU0NlbGw6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIGlmIChlY21hTW9kZSA9PSBT
dHJpY3RNb2RlKQorICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAgICAgICByZXR1cm4g
Y2VsbDsKICAgICByZXR1cm4gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMDlhYmFlMzhi
ZTBmZTM0NmZkNWQzOGIyMmJkYTQ3YmY5ZTY2Y2EzNS4uNTE5MDNjYTc4NzFkMzcyZTI2YjhlY2Uw
ZTNhZTBhM2YxNDZiODU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgU3RydWN0dXJlKiBKU0Z1bmN0aW9uOjpzZWxl
Y3RTdHJ1Y3R1cmVGb3JOZXdGdW5jRXhwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAg
ICBib29sIGlzQnVpbHRpbiA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7CiAgICAg
aWYgKGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKGlzQnVpbHRpbik7Ci0gICAgaWYgKGV4ZWN1
dGFibGUtPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29u
dGV4dCgpKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpY3RGdW5jdGlvblN0cnVj
dHVyZShpc0J1aWx0aW4pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnNsb3BweUZ1bmN0aW9u
U3RydWN0dXJlKGlzQnVpbHRpbik7CiB9CkBAIC00MzAsNyArNDMwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1YKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFw
cGVyTWV0aG9kTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBl
ck1ldGhvZE1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Okluc3RhbmNlRmllbGRJbml0
aWFsaXplck1vZGU6Ci0gICAgICAgIGlmICghZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0
cmljdE1vZGUoKSkKKyAgICAgICAgaWYgKCFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzSW5T
dHJpY3RDb250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxl
cik7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBj
YWxsZXIiX3MpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggOWJhOGM3MGQ3NmE3NDJl
ZWI1NzE2NzhjYzkzZGJhY2I0NzkzOTQ0ZS4uY2E5NDg5YzBlMGVmZGM4NmIwZjQyMmZmMjg4NmVm
NDhkMTkzYTkzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNTA3LDcgKzUwNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGFyc2Vk
T2JqZWN0KTsKIAogICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4gPSBjYWxsRnJhbWUtPmNh
bGxlclNvdXJjZU9yaWdpbih2bSk7Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHMsIHNvdXJj
ZU9yaWdpbiksIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29u
dGV4dFR5cGU6Ok5vbmUpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gSW5kaXJlY3RFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzLCBzb3VyY2VPcmln
aW4pLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5v
bmUpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7
CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTcx
NCw3ICs3MTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90
b0dldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJy
b3IoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpKTsKIApAQCAtNzM1LDcgKzczNSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJp
Y3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKICAgICBpZiAodGhpc1Zh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRF
cnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRl
eCAyNzFlODFjMWE3MDAwOTIzNzE5ZTFhOWI4OTQzNTYzY2Y2ODA0YTNkLi4xYjI0ZjExZWM3ODhm
NTQ4NGRjYmFkMjYxNGI4ODRjNDFiNmFmOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04MTAsNyArODEwLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0
SW5saW5lU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHkKICAgICAgICAgICAgICAgICBpZiAoIXRoaXMtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlv
bmFyeSgpKQogICAgICAgICAgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmos
IG9mZnNldCk7CiAKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGNhbGxTZXR0ZXIoZ2xv
YmFsT2JqZWN0LCBzbG90LnRoaXNWYWx1ZSgpLCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2Rl
KCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSk7CisgICAgICAgICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFsdWUoKSwgZ3MsIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6
OnNsb3BweSgpKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KQEAg
LTE4MTgsNyArMTgxOCw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWNrKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJu
IHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwgIkNh
bm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0Il9zKTsKICAg
ICB9CiAKLSAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1RoaXModGhpcywgZ2xvYmFsT2Jq
ZWN0LCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobWV0aG9kVGFibGUodm0p
LT50b1RoaXModGhpcywgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpID09IHRoaXMp
OwogCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCh2bSkgPT0gcHJvdG90eXBlKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAKaW5kZXggNmQ1YWI2ODJjNjgzOTE0ZjY5ZjNlNWMyMjgzODRmZWZlNDY1NzdjOC4uYjNj
MjcyMDIyODA2YjgxMTQzNTdkODFkZTlmM2I1ZmMxMDM1NGQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTQxMSw3ICs0MTEsNyBAQCBTeW1ib2xUYWJs
ZSogSlNTY29wZTo6c3ltYm9sVGFibGUoVk0mIHZtKQogCiBKU1ZhbHVlIEpTU2NvcGU6OnRvVGhp
cyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICBpZiAoZWNtYU1vZGUu
aXNTdHJpY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCmluZGV4IGFhZWU4ZWU3YTc3ZWVhNmRlZmM3NTdhODdkMjNiM2VjYmE4
NmYyMWYuLjBmMjA3YTNiNjg2YWVhN2I1N2Q0OTVjZDcwMjlhZDhhODM4NmRiYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAgLTQxNyw3ICs0MTcsNyBA
QCBKU09iamVjdCogSlNTdHJpbmc6OnRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAKIEpTVmFsdWUgSlNTdHJpbmc6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIGlmIChl
Y21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQogICAg
ICAgICByZXR1cm4gY2VsbDsKICAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGFzU3RyaW5nKGNlbGwpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggNjk3NmY3
MDVkMzQwNGUzN2EyMWQ4OTJiMTIzY2JjMzgwNDIzNmQ1Yi4uNTM1MjM3MThkYzliOWQyMjEyYjhi
ODIxMTc2MzY4ZjQ4NDIxODJhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTkzMyw3ICs5MzMsNyBAQCBKU1ZhbHVlIExpdGVyYWxQ
YXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRl
ZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3M7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sgPyBtX251bGxP
ckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgOiBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sgPyBtX251bGxP
ckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgOiBmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLmxhc3QoKS5wdXQobV9nbG9iYWxP
YmplY3QsIGlkZW50LCBsYXN0VmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KGlkZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDQ2NTQ2MjAwNGYzN2UyMDEyZDcyMTY4
YzYyMDllNTA1MTdjMTIwNTUuLjA5OWQ4OTlhZDVlNjNhNzQzMzU4ZTJhYmIyMGFiMzRmNTliOTYw
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBERUNM
QVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRl
TW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25l
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAK
aW5kZXggMTBmODg3MjVhYzAwMmQyNTNhOWM4NjM3MWQ0NTM5ODUwZGZjYWEyOS4uNDE0Y2I4Y2Vm
ZGZmODMwZjU3YmZmZDgyNjk0NDUwYTJmMzkzODk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIE51bGxTZXR0ZXJGdW5jdGlvbjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKE51bGxTZXR0ZXJGdW5jdGlvbikgfTsKIAogCisjaWYgQVNTRVJU
X0VOQUJMRUQKKwogY2xhc3MgR2V0Q2FsbGVyU3RyaWN0bmVzc0Z1bmN0b3IgewogcHVibGljOgog
ICAgIEdldENhbGxlclN0cmljdG5lc3NGdW5jdG9yKCkKQEAgLTUyLDcgKzU0LDkgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKICAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxvY2soKTsKLSAgICAgICAgbV9j
YWxsZXJJc1N0cmljdCA9IGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOwor
ICAgICAgICAvLyBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoYXQgd2UgbWlnaHQg
aGF2ZSBhbiBzdHJpY3Qgb3Bjb2RlIGluIGEgbm9uLXN0cmljdCBjb250ZXh0LCBidXQgdGhhdCdz
CisgICAgICAgIC8vIG9rIHNpbmNlIHdlIGFzc2VydCBiZWxvdyB0aGF0IHRoaXMgZnVuY3Rpb24g
c2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBmcm9tIGFueSBraW5kIHN0cmljdCBjb250ZXh0LgorICAg
ICAgICBtX2NhbGxlcklzU3RyaWN0ID0gY29kZUJsb2NrICYmIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCk7CiAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0
b3I6OkRvbmU7CiAgICAgfQogCkBAIC03MCwxNCArNzQsMTYgQEAgc3RhdGljIGJvb2wgY2FsbGVy
SXNTdHJpY3QoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICByZXR1cm4gaXRlci5j
YWxsZXJJc1N0cmljdCgpOwogfQogCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKKwogbmFtZXNw
YWNlIE51bGxTZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAg
IGlmIChjYWxsZXJJc1N0cmljdCh2bSwgY2FsbEZyYW1lKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGluZyBh
IHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiX3MpKTsKKyNpZiAhQVNTRVJUX0VOQUJM
RUQKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKKyNlbmRpZgorICAgIEFTU0VSVCghY2FsbGVySXNTdHJpY3QoZ2xvYmFsT2JqZWN0
LT52bSgpLCBjYWxsRnJhbWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAKaW5kZXggY2JjNzlhMzAwOGMxMzJiNmQzNjlkZTcyZjVjZDYyNmI4MDVh
MzliZC4uNDFjZThhYWYxZGIyY2Q3MDcwZTE1YjZhNmQzMWI3NTQxNzUyYzg1YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgSlNPYmplY3QqIHZhbHVlT2Jq
ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF2
YWx1ZU9iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtOTQsNyArOTQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blBy
b3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgU3RyaWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXko
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChn
bG9iYWxPYmplY3QpOwpAQCAtMTI2LDcgKzEyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
CiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3Ry
aWN0TW9kZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJ
T05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iaikpCkBAIC0xNTAsNyArMTUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMjA2LDcg
KzIwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9v
a3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOwpAQCAtMjM2LDcgKzIzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFi
bGUoSlNHbG9iYWxPYmplY3QqCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RN
b2RlKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yOTAs
NyArMjkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNU
b0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAvLyAyLiBJbnZva2UoViwg
InRvU3RyaW5nIikKIAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09i
amVjdCBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KLSAgICBKU09iamVj
dCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICAvLyBMZXQgdG9TdHJpbmcgYmUgdGhlIE8uW1tHZXRdXSgidG9TdHJpbmciLCBWKQpA
QCAtMzE1LDcgKzMxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBTdHJpY3RNb2RlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFs
bFN0cmluZ3MudW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9i
amVjdFN0cmluZygpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09i
amVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IGE4ZjBiNWY4OTk0MmIzN2RhZTllN2EzMDI5
MmQ0MThmYjg3ZTg5MzMuLjJiMzJmNWEwNGEyMDEyMzZhOTdiYmFlZGM0MzQ2MmNkMjg4ZTMzOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0
YWJsZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpp
bml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIEFT
U0VSVCgmZ2xvYmFsT2JqZWN0LT52bSgpID09ICZ2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJv
cjsKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzU3RyaWN0TW9kZSgpID8g
SlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmlj
dDsKKyAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGlzSW5TdHJpY3RDb250ZXh0
KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90
U3RyaWN0OwogICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwogICAgIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bS5jb2RlQ2FjaGUo
KS0+Z2V0VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNl
KCksIHN0cmljdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IpOwpAQCAtMTM2LDcgKzEz
Niw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3Bl
cnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVy
dHkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwg
ZW50cnkua2V5LmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgbnVsbHB0cik7CiAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9iYWxD
b25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmljdE1vZGUoKSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5n
bG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc0luU3RyaWN0Q29udGV4
dCgpKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGFsbG93ICJjb25zdCIgZHVw
bGljYXRlIGRlY2xhcmF0aW9ucyB1bmRlciB0aGlzIHNldHRpbmcuCiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZvciBleGFtcGxlLCB3ZSBkb24ndCAibGV0IiB2YXJpYWJsZXMgdG8gYmUgb3ZlcnJp
ZGRlbiBieSAiY29uc3QiIHZhcmlhYmxlcy4KICAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudC0+aXNDb25zdFZhcmlhYmxlKGVudHJ5LmtleS5nZXQoKSkpCkBA
IC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXpl
R2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxl
KCk7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9j
ayk7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsRGVjbGFyYXRpb25zKSB7Ci0g
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW50cnkudmFsdWUuaXNDb25zdCgpICYmICF2bS5nbG9i
YWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpICYmICFpc1N0cmljdE1vZGUoKSkpIHsK
KyAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmds
b2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzSW5TdHJpY3RDb250ZXh0
KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5jb250YWlucyhsb2NrZXIs
IGVudHJ5LmtleS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3Jh
bUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVj
dXRhYmxlLmgKaW5kZXggMjljYTAxMzIwNTYxYjE0NmE2MjljNmZiNWZhMTg4ZmY1OGMzZGIxZi4u
Yjg3MTVhYTcyYmJjYjczMzlkNmUzNDEzYWM1OWM3NDQxMTdiODJhOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwg
ZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZh
bHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNs
YXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1N
b2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUp
OyB9CiAKICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0m
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCmlu
ZGV4IGIwN2UwYTAyOTMzMjgyNjEwMzZmNDExMDZlZWVlOWU1ZjkwYzY2NjAuLjZkMTFiNDFiYTQw
NjE4MTU1MjJkYWIzZWJmZTMxYzc3NmU3ZWU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVu
dHMuYXBwZW5kKHRhcmdldCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpTdHJpY3RNb2RlKSk7CisgICAg
YXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkp
OwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGFwcGx5
TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAppbmRleCAx
MDZjZjI1ZjYzMWYwNDFiOWJjNjMxOTQwMGY0NjY3YjA3YjM5Y2ZjLi4wZGQ0NGVjYjg0MzcxZDQ3
NzM0NjBjZDRjMGFhZTU1ZmUzY2QyMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCkBAIC02MCwxMiArNjAsMTAgQEAgcHVibGljOgog
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1
cmU7IH0KICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVz
ICYgQXJndW1lbnRzRmVhdHVyZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQotICAgIGJvb2wgaXNT
dHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJl
OyB9CiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5
cGUpOyB9CiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFsQ29udGV4dFR5cGUpOyB9Cisg
ICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBT
dHJpY3RNb2RlRmVhdHVyZTsgfQogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJl
dHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9Ci0gICAg
ICAgIAogICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5l
ID0gdmFsdWU7IH0KICAgICB2b2lkIHNldE5ldmVyT3B0aW1pemUoYm9vbCB2YWx1ZSkgeyBtX25l
dmVyT3B0aW1pemUgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0TmV2ZXJGVExPcHRpbWl6ZShib29s
IHZhbHVlKSB7IG1fbmV2ZXJGVExPcHRpbWl6ZSA9IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCmluZGV4IDg1
YzFjZjM0MzM4MTg0Nzg4Mzg4NDU2ZWIzNmFlYTJmZmI2MzQxZmEuLjNmZDYwMDZlMWU4NDVmYWVl
ZDI2ZDBlNzI4M2M1M2Y2YzEwZjMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAg
Ym9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXIKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93ID8gU3RyaWN0TW9kZSA6IE5v
dFN0cmljdE1vZGUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxTZXR0ZXIo
Z2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cg
PyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0KIAogSlNWYWx1
ZSBTcGFyc2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxYmI1Y2Rm
ZmE3NmE3N2RlMjI0M2NiNjIxYzIyNDViYjhlMDUxMmRjLi41NGQxYzlkMjZlMGU5NDUwMjdkYWU0
NjFkN2EwYTBjODdjZTQ4M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MjYsNyArNjI2LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFz
ZUJvZHkoSlMKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJhdGlvbjxK
U0RPTVdpbmRvdz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSYgY2FsbEZyYW1lKQogewotICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNhbEds
b2JhbE9iamVjdCwgTm90U3RyaWN0TW9kZSkpOworICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5KCkpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0
YWJhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgK
aW5kZXggMDkyODUxNzYzY2EwZDFhY2ExYmM3MzQ2NTM1MGI2ZTJjMGVlZTUwNi4uMzc2OGJmMjkx
YzU5ZGFlODk5ZGIwZjE1MGExYjBjYTA4YzdkYzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCBjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6Ok5vdFN0cmljdE1v
ZGUpKTsKKyAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIGNh
bGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNN
QU1vZGU6OnNsb3BweSgpKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsICJFdmVudFRhcmdldCIsIG9wZXJhdGlvbk5hbWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGRi
OWFjMWJjN2FlMThhNGRkZjBkYjU4YjM5OWE0YmU0MGY2YmEyNWQuLjc3MzEwNjNmZmY2YjAzZmY5
OWE2YzM3MTlmNjBhZmFlMjVkMWQ0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00NTkxLDcgKzQ1OTEsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoZGVjb2RlZFRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKVxuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9i
amVjdCwgTm90U3RyaWN0TW9kZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVj
dCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5j
dGlvbih2bSwgZGVjb2RlZFRoaXNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2MDcsNyArNDYwNyw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgIyBGSVhNRTogTWFrZSBjb25z
aXN0ZW50IElETEF0dHJpYnV0ZTw+OjpjYXN0IGFuZCBJRExPcGVyYXRpb248Pjo6Y2FzdCBpbiBj
YXNlIG9mIEN1c3RvbVByb3h5VG9KU09iamVjdC4KICAgICAgICAgbXkgJGNhc3RpbmdGdW5jdGlv
biA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVj
dH0gPyAidG8ke2NsYXNzTmFtZX0iIDogR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGlu
dGVyZmFjZSk7Ci0gICAgICAgIG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFtZS50aGlzVmFsdWUo
KS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpIiA6ICJjYWxsRnJh
bWUudGhpc1ZhbHVlKCkiOworICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJjYWxsRnJhbWUudGhp
c1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkp
IiA6ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkiOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
InRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NOYW1lfSogSURMT3BlcmF0aW9uPCR7Y2xhc3NOYW1l
fT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYg
Y2FsbEZyYW1lKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAkdGhpc1ZhbHVlKTtcbiIpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1
NjYxYTAzYTAxYjFmN2EyNDM0NzM2NjQzMDIxZTgwYWU5MWYzNjcuLjhhYmNhM2RlY2JlMDQyYWVk
N2VjYWVlYjRhODRlNmMyMGU3MzNmODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNC0w
NyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBOb3QgdXNp
bmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVjbGFyYXRpb24gc3RhdGVtZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1NzgKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBT
dXp1a2kuCisKKyAgICAgICAgRml4IHRoZSB0ZXN0IHNpbmNlIGl0IGNvbnRhaW5lZCBpbmNvcnJl
Y3QgY29kZS4KKworICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbWV0aG9kLW5h
bWVzLmpzOgorCiAyMDIwLTA0LTA2ICBKYWNvYiBVcGhvZmYgIDxqYWNvYl91cGhvZmZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFsgbWFjT1MgXSBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWstaW4tY29u
c3RydWN0b3ItYmVmb3JlLXN1cGVyLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDdmMTQ5MjRmM2QzYWQ3NjlkOTk4MWI0NWNhYjQ2ZWVlZjk3NmQ3NWMuLjg4OGNkMmQyMjUy
YThmMzljYzNmMmVlMzAxNzQ2YjkwNThiY2E5YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pz
L2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2NsYXNzLXN5bnRheC1tZXRob2QtbmFtZXMtZXhwZWN0ZWQudHh0CkBAIC01Niw5ICs1Niw5
IEBAIFBBU1MgQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28nLCAyMTUpOyAo
bmV3IEEpWydmb28nXSgpIGlzIDIxNQogUEFTUyBBID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VN
ZXRob2QoJ2ZvbycsIDIxNik7IEIgPSBjcmVhdGVDbGFzc1dpdGhJbnN0YW5jZU1ldGhvZCgnYmFy
JywgMjE3KTsgWyhuZXcgQSlbJ2ZvbyddKCksIChuZXcgQilbJ2JhciddKCldIGlzIFsyMTYsIDIx
N10KIFBBU1MgeCA9IDIxODsgY2xhc3MgQSB7IFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyAobmV3
IEEpWzIxOF0oKSBpcyAyMTkKIFBBU1MgeCA9IHVuZGVmaW5lZDsgY2xhc3MgQSB7IFsoeD0yMjAp
ICYmICdmb28nXSgpIHsgcmV0dXJuIHg7IH0gfTsgKG5ldyBBKS5mb28oKSBpcyAyMjAKLVBBU1Mg
eCA9IDIyMTsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9
eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsy
MjJdKCldIGlzIFsyMjEsIDIyMl0KK1BBU1MgdmFyIHggPSAyMjEsIHgxLCB4MjsgY2xhc3MgQSB7
IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0
dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBBKVsyMjJdKCldIGlzIFsyMjEsIDIy
Ml0KIFBBU1MgeCA9IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjIzOyB9
IFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7IH0gfTsgWyhuZXcgQSkuZm9vMSgpLCAobmV3
IEEpLmZvbzIoKV0gaXMgWzIyMywgMjI0XQotUEFTUyB4ID0gMTsgY2xhc3MgQSB7IFsnZm9vJyAr
ICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVy
biAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0gaXMgWzIsIDMsIDIyNl0KK1BBU1Mg
dmFyIHggPSAxLCB4MTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0g
Wyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3
IEEpLmZvbzIoKV0gaXMgWzIsIDMsIDIyNl0KIAogU3RhdGljIG1ldGhvZHMgd2l0aCBjb21wdXRl
ZCBuYW1lcwogUEFTUyBjbGFzcyBBIHsgc3RhdGljIFsnYScgKyAnYiddKCkgeyByZXR1cm4gMzEx
OyB9IH07IEEuYWIoKSBpcyAzMTEKQEAgLTY5LDkgKzY5LDkgQEAgUEFTUyBBID0gY3JlYXRlQ2xh
c3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTUpOyBBWydmb28nXSgpIGlzIDMxNQogUEFTUyBB
ID0gY3JlYXRlQ2xhc3NXaXRoU3RhdGljTWV0aG9kKCdmb28nLCAzMTYpOyBCID0gY3JlYXRlQ2xh
c3NXaXRoU3RhdGljTWV0aG9kKCdiYXInLCAzMTcpOyBbQVsnZm9vJ10oKSwgQlsnYmFyJ10oKV0g
aXMgWzMxNiwgMzE3XQogUEFTUyB4ID0gMjE4OyBjbGFzcyBBIHsgc3RhdGljIFt4KytdKCkgeyBy
ZXR1cm4geDsgfSB9OyBBWzIxOF0oKSBpcyAyMTkKIFBBU1MgeCA9IHVuZGVmaW5lZDsgY2xhc3Mg
QSB7IHN0YXRpYyBbKHg9MjIwKSAmJiAnZm9vJ10oKSB7IHJldHVybiB4OyB9IH07IEEuZm9vKCkg
aXMgMjIwCi1QQVNTIHggPSAyMjE7IGNsYXNzIEEgeyBzdGF0aWMgWyh4MT14KSAmJiB4KytdKCkg
eyByZXR1cm4geDE7IH0gc3RhdGljIFsoeDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07
IFtBWzIyMV0oKSwgQVsyMjJdKCldIGlzIFsyMjEsIDIyMl0KK1BBU1MgdmFyIHggPSAyMjEsIHgx
LCB4MjsgY2xhc3MgQSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBz
dGF0aWMgWyh4Mj14KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIy
Ml0oKV0gaXMgWzIyMSwgMjIyXQogUEFTUyB4ID0gMTsgY2xhc3MgQSB7IHN0YXRpYyBbJ2Zvbycg
KyB4KytdKCkgeyByZXR1cm4gMjIzOyB9IHN0YXRpYyBbJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4g
MjI0OyB9IH07IFtBLmZvbzEoKSwgQS5mb28yKCldIGlzIFsyMjMsIDIyNF0KLVBBU1MgeCA9IDE7
IGNsYXNzIEEgeyBzdGF0aWMgWydmb28nICsgKyt4XSgpIHsgcmV0dXJuIDIyNTsgfSBzdGF0aWMg
Wyh4MT14KSAmJiAnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCBBLmZv
bzIoKV0gaXMgWzIsIDMsIDIyNl0KK1BBU1MgdmFyIHggPSAxLCB4MTsgY2xhc3MgQSB7IHN0YXRp
YyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgxPXgpICYmICdmb28n
ICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigpXSBpcyBbMiwgMywg
MjI2XQogCiBJbnN0YW5jZSBtZXRob2RzIHdpdGggZHVwbGljYXRlZCBuYW1lcwogUEFTUyBjbGFz
cyBBIHsgYWIoKSB7IHJldHVybiA0MDEgfSBhYigpIHsgcmV0dXJuIDQwMjsgfSB9OyAobmV3IEEp
LmFiKCkgaXMgNDAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xh
c3Mtc3ludGF4LW1ldGhvZC1uYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9j
bGFzcy1zeW50YXgtbWV0aG9kLW5hbWVzLmpzCmluZGV4IDE0MmJiMDViM2I0MDlkOTAxMmFhNDlh
ZDQyNTIzZGU5NzE1M2M2YTYuLjFiYmU5MDM1ODZlODU0NzIyNGRkM2JiY2Y0YTkwZWY4MjQ0M2I5
MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgt
bWV0aG9kLW5hbWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1z
eW50YXgtbWV0aG9kLW5hbWVzLmpzCkBAIC01Nyw5ICs1Nyw5IEBAIHNob3VsZEJlKCJBID0gY3Jl
YXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2ZvbycsIDIxNSk7IChuZXcgQSlbJ2ZvbyddKCki
LCAiMjE1CiBzaG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aEluc3RhbmNlTWV0aG9kKCdmb28n
LCAyMTYpOyBCID0gY3JlYXRlQ2xhc3NXaXRoSW5zdGFuY2VNZXRob2QoJ2JhcicsIDIxNyk7IFso
bmV3IEEpWydmb28nXSgpLCAobmV3IEIpWydiYXInXSgpXSIsICJbMjE2LCAyMTddIik7CiBzaG91
bGRCZSgieCA9IDIxODsgY2xhc3MgQSB7IFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEp
WzIxOF0oKSIsICIyMTkiKTsKIHNob3VsZEJlKCJ4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgWyh4
PTIyMCkgJiYgJ2ZvbyddKCkgeyByZXR1cm4geDsgfSB9OyAobmV3IEEpLmZvbygpIiwgIjIyMCIp
Owotc2hvdWxkQmUoInggPSAyMjE7IGNsYXNzIEEgeyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVy
biB4MTsgfSBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbKG5ldyBBKVsyMjFd
KCksIChuZXcgQSlbMjIyXSgpXSIsICJbMjIxLCAyMjJdIik7CitzaG91bGRCZSgidmFyIHggPSAy
MjEsIHgxLCB4MjsgY2xhc3MgQSB7IFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IFso
eDI9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgyOyB9IH07IFsobmV3IEEpWzIyMV0oKSwgKG5ldyBB
KVsyMjJdKCldIiwgIlsyMjEsIDIyMl0iKTsKIHNob3VsZEJlKCJ4ID0gMTsgY2xhc3MgQSB7IFsn
Zm9vJyArIHgrK10oKSB7IHJldHVybiAyMjM7IH0gWydmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIy
NDsgfSB9OyBbKG5ldyBBKS5mb28xKCksIChuZXcgQSkuZm9vMigpXSIsICJbMjIzLCAyMjRdIik7
Ci1zaG91bGRCZSgieCA9IDE7IGNsYXNzIEEgeyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1
OyB9IFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwg
KG5ldyBBKS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7CitzaG91bGRCZSgidmFyIHggPSAxLCB4
MTsgY2xhc3MgQSB7IFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gWyh4MT14KSAmJiAn
Zm9vJyArIHgrK10oKSB7IHJldHVybiAyMjY7IH0gfTsgW3gxLCB4LCAobmV3IEEpLmZvbzIoKV0i
LCAiWzIsIDMsIDIyNl0iKTsKIAogZGVidWcoJycpOwogZGVidWcoJ1N0YXRpYyBtZXRob2RzIHdp
dGggY29tcHV0ZWQgbmFtZXMnKTsKQEAgLTcyLDkgKzcyLDkgQEAgc2hvdWxkQmUoIkEgPSBjcmVh
dGVDbGFzc1dpdGhTdGF0aWNNZXRob2QoJ2ZvbycsIDMxNSk7IEFbJ2ZvbyddKCkiLCAiMzE1Iik7
CiBzaG91bGRCZSgiQSA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnZm9vJywgMzE2KTsg
QiA9IGNyZWF0ZUNsYXNzV2l0aFN0YXRpY01ldGhvZCgnYmFyJywgMzE3KTsgW0FbJ2ZvbyddKCks
IEJbJ2JhciddKCldIiwgIlszMTYsIDMxN10iKTsKIHNob3VsZEJlKCJ4ID0gMjE4OyBjbGFzcyBB
IHsgc3RhdGljIFt4KytdKCkgeyByZXR1cm4geDsgfSB9OyBBWzIxOF0oKSIsICIyMTkiKTsKIHNo
b3VsZEJlKCJ4ID0gdW5kZWZpbmVkOyBjbGFzcyBBIHsgc3RhdGljIFsoeD0yMjApICYmICdmb28n
XSgpIHsgcmV0dXJuIHg7IH0gfTsgQS5mb28oKSIsICIyMjAiKTsKLXNob3VsZEJlKCJ4ID0gMjIx
OyBjbGFzcyBBIHsgc3RhdGljIFsoeDE9eCkgJiYgeCsrXSgpIHsgcmV0dXJuIHgxOyB9IHN0YXRp
YyBbKHgyPXgpICYmIHgrK10oKSB7IHJldHVybiB4MjsgfSB9OyBbQVsyMjFdKCksIEFbMjIyXSgp
XSIsICJbMjIxLCAyMjJdIik7CitzaG91bGRCZSgidmFyIHggPSAyMjEsIHgxLCB4MjsgY2xhc3Mg
QSB7IHN0YXRpYyBbKHgxPXgpICYmIHgrK10oKSB7IHJldHVybiB4MTsgfSBzdGF0aWMgWyh4Mj14
KSAmJiB4KytdKCkgeyByZXR1cm4geDI7IH0gfTsgW0FbMjIxXSgpLCBBWzIyMl0oKV0iLCAiWzIy
MSwgMjIyXSIpOwogc2hvdWxkQmUoInggPSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArIHgr
K10oKSB7IHJldHVybiAyMjM7IH0gc3RhdGljIFsnZm9vJyArIHgrK10oKSB7IHJldHVybiAyMjQ7
IH0gfTsgW0EuZm9vMSgpLCBBLmZvbzIoKV0iLCAiWzIyMywgMjI0XSIpOwotc2hvdWxkQmUoIngg
PSAxOyBjbGFzcyBBIHsgc3RhdGljIFsnZm9vJyArICsreF0oKSB7IHJldHVybiAyMjU7IH0gc3Rh
dGljIFsoeDE9eCkgJiYgJ2ZvbycgKyB4KytdKCkgeyByZXR1cm4gMjI2OyB9IH07IFt4MSwgeCwg
QS5mb28yKCldIiwgIlsyLCAzLCAyMjZdIik7CitzaG91bGRCZSgidmFyIHggPSAxLCB4MTsgY2xh
c3MgQSB7IHN0YXRpYyBbJ2ZvbycgKyArK3hdKCkgeyByZXR1cm4gMjI1OyB9IHN0YXRpYyBbKHgx
PXgpICYmICdmb28nICsgeCsrXSgpIHsgcmV0dXJuIDIyNjsgfSB9OyBbeDEsIHgsIEEuZm9vMigp
XSIsICJbMiwgMywgMjI2XSIpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnSW5zdGFuY2UgbWV0aG9k
cyB3aXRoIGR1cGxpY2F0ZWQgbmFtZXMnKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTIzOWU4OTZjMmRkOGU1ZGI1NzA4MzdkMzY2MWEy
OThhMDc4ZDZhZS4uY2E2YTZiMDVlZGVlNzQ4N2JlYjY4NjY4OTQxZjJiOWQzMmM4MGMzMSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMC0wNC0wNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBOb3QgdXNpbmcgc3RyaWN0IG1vZGUgd2l0aGluIENsYXNzRGVjbGFyYXRp
b24gc3RhdGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU1NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTk0NTg5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBzdHJlc3MvaW5saW5lLXN0
cmljdC1kZWxldGUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGJhcik6
CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9zdXBlcmNsYXNzLWV4cHJlc3Npb24t
c3RyaWN0bmVzcy5qczogQWRkZWQuCisgICAgICAgIChmLnRyeS5jKToKKyAgICAgICAgKGYpOgor
CiAyMDIwLTA0LTA2ICBSaWNrIFdhbGRyb24gIDx3YWxkcm9uLnJpY2tAZ21haWwuY29tPiBhbmQg
QWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3Zl
IHVubmVjZXNzYXJ5IFRlc3QyNjIgaGFybmVzcyBmaWxlIGFuZCBpbXBsZW1lbnQgJDI2Mi5Jc0hU
TUxEREEKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2lubGluZS1zdHJpY3QtZGVsZXRlLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW5saW5lLXN0cmljdC1kZWxldGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRi
NGQ1OGZmODhiZTU0ZTAxYTYzNDY3NmQ1NzYwMGQ0NGQ4MTM0OQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2lubGluZS1zdHJpY3QtZGVsZXRlLmpzCkBAIC0wLDAgKzEsMjcgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDb25jdXJyZW50SklUPTAiKQorCitmdW5jdGlvbiBh
c3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQorZnVu
Y3Rpb24gYmFyKG8pIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgZGVsZXRlIG8ucDsKK30KK2Z1
bmN0aW9uIGZvbyhiLCBvKSB7CisgICAgbGV0IHggPSB7fTsKKyAgICBpZiAoYikKKyAgICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJwIiwge3ZhbHVlOiA0MiwgY29uZmlndXJhYmxlOiBm
YWxzZX0pOworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGJhcih4
KTsKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgdGhyZXcgPSB0cnVlOworICAgIH0KKyAgICBpZiAo
YikKKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICBlbHNlCisgICAgICAgIGFzc2VydCghdGhy
ZXcpOworfQorbm9JbmxpbmUoZm9vKTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSBm
b28oISEoaSAlIDIpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xhc3MtZXhw
cmVzc2lvbi1zdHJpY3RuZXNzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3VwZXJjbGFzcy1leHByZXNz
aW9uLXN0cmljdG5lc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdlYTY4NDc5Yzk3M2YzYzYyMGFjZmJmMWYw
MTlhYmVkYTkyYTJlZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3N1cGVyY2xh
c3MtZXhwcmVzc2lvbi1zdHJpY3RuZXNzLmpzCkBAIC0wLDAgKzEsNTkgQEAKK2Z1bmN0aW9uIGYo
KSB7CisgICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBjbGFzcyBjIGV4dGVuZHMoZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVy
biB7fTsKKyAgICAgICAgICAgIH0sIGQpIHt9CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZXJyb3IgfHwgZXJy
b3IubWVzc2FnZSAhPSAiQ2FuJ3QgZmluZCB2YXJpYWJsZTogZCIpCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIlRlc3Qgc2hvdWxkIGhhdmUgdGhyb3duIGEgcmVmZXJlbmNlIGVycm9yIik7
CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHZhciBvYmogPSB7
fTsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ3gnLCB7IGNvbmZpZ3VyYWJs
ZTogZmFsc2UsIHZhbHVlOiAxIH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xhc3Mg
YyBleHRlbmRzKGRlbGV0ZSBvYmoueCwgKCk9Pnt9KSB7fQorICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9y
IHx8IGVycm9yLm1lc3NhZ2UgIT0gIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVy
cm9yIik7CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgZXJyb3I7CisgICAgICAgIHZhciBv
YmogPSB7fTsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ3gnLCB7IGNvbmZp
Z3VyYWJsZTogZmFsc2UsIHZhbHVlOiAxIH0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAg
Y2xhc3MgYyBleHRlbmRzKGV2YWwoJ2RlbGV0ZSBvYmoueCcpLCBjbGFzc3t9KSB7fQorICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3NhZ2UgIT0gIlVuYWJsZSB0byBkZWxldGUgcHJv
cGVydHkuIikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0
aHJvd24gYSB0eXBlIGVycm9yIik7CisgICAgfQorCisgICAgeworICAgICAgICB2YXIgbyA9IHt9
OworICAgICAgICBvLl9fZGVmaW5lR2V0dGVyX18oIngiLCBmdW5jdGlvbiAoKSB7IHJldHVybiA0
MjsgfSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGFzcyBjIGV4dGVuZHMgKG8ueCA9
IDEzLCBjbGFzcyB7IH0pIHsgfQorICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBl
cnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVycm9yIHx8IGVycm9yLm1lc3Nh
Z2UgIT0gIkF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBzaG91bGQgaGF2ZSB0aHJvd24gYSB0eXBlIGVy
cm9yIik7CisgICAgfQorfQorCisgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQorICAg
IGYoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>