<?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>10701</bug_id>
          
          <creation_ts>2006-09-03 00:25:52 -0700</creation_ts>
          <short_desc>[ES5] Implement strict mode</short_desc>
          <delta_ts>2010-10-11 14:29:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>ES5</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>34019</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>bugs-webkit</cc>
    
    <cc>cedricv</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>erights</cc>
    
    <cc>ernest.prabhakar</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>kent.hansen</cc>
    
    <cc>mike</cc>
    
    <cc>mrowe</cc>
    
    <cc>oliver</cc>
    
    <cc>pmuellr</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>54677</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-03 00:25:52 -0700</bug_when>
    <thetext>JavaScript &quot;strict-mode&quot; options for easier debugging

A strict-mode could include such features as:
1. require &apos;var&apos; for local variables (implicit globals cause warnings)
2. getting/setting custom properties on built-in types (catches things like for (var x = 0; x &lt; myarray.size; x++) -- here Array.size does not exist, yet x &lt; undefined is always false and silently fails)
I imagine others might have additional suggestions.

IMO these type of features could really set our javascript debugger apart from the pack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54685</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2006-09-03 01:03:07 -0700</bug_when>
    <thetext>It&apos;s not clear to me how this relates to Drosera.  It seems more like something that hooks into JSCore.  Drosera could be one possible UI for this, but the core of the work would likely happen at lower levels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169439</commentid>
    <comment_count>2</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2009-12-07 13:07:15 -0800</bug_when>
    <thetext>JavaScriptCore should implement the ES5 &quot;use strict&quot; behaviour.  Suggest we rename this bug reflecting that.  Or create a new one, and close this one as WONTFIX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230828</commentid>
    <comment_count>3</comment_count>
    <who name="Ernest Prabhakar">ernest.prabhakar</who>
    <bug_when>2010-05-26 13:04:43 -0700</bug_when>
    <thetext>Renaming per suggestion from Patrick Mueller, to focus on ECMA 5 script mode:

http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/

Bumped up to P3, since this is now part of the standard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230839</commentid>
    <comment_count>4</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-05-26 13:25:55 -0700</bug_when>
    <thetext>Section 4.2.2 in ECMA 262 Edition 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288583</commentid>
    <comment_count>5</comment_count>
      <attachid>69540</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-01 16:52:38 -0700</bug_when>
    <thetext>Created attachment 69540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288609</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-01 17:42:47 -0700</bug_when>
    <thetext>Attachment 69540 did not build on mac:
Build output: http://queues.webkit.org/results/4208060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288611</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-01 17:50:58 -0700</bug_when>
    <thetext>Attachment 69540 did not build on qt:
Build output: http://queues.webkit.org/results/4196048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288629</commentid>
    <comment_count>8</comment_count>
      <attachid>69558</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-01 18:32:51 -0700</bug_when>
    <thetext>Created attachment 69558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288630</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-01 18:33:26 -0700</bug_when>
    <thetext>Now it should actually build on 32bit (oops)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288642</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-01 19:58:27 -0700</bug_when>
    <thetext>Attachment 69540 did not build on gtk:
Build output: http://queues.webkit.org/results/4219054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288711</commentid>
    <comment_count>11</comment_count>
      <attachid>69578</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-02 12:31:47 -0700</bug_when>
    <thetext>Created attachment 69578
Patch

Updated test to cover a few more cases, and added missing branches in the interpreter impl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288712</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-02 12:36:02 -0700</bug_when>
    <thetext>Attachment 69578 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/interpreter/Interpreter.cpp:3086:  vm_throw is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/interpreter/Interpreter.cpp:3278:  vm_throw is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 65 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288714</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-02 13:45:03 -0700</bug_when>
    <thetext>Attachment 69578 did not build on gtk:
Build output: http://queues.webkit.org/results/4204047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288724</commentid>
    <comment_count>14</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-02 14:42:48 -0700</bug_when>
    <thetext>I&apos;ve removed the Platform.h change locally :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288780</commentid>
    <comment_count>15</comment_count>
      <attachid>69578</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-03 12:49:12 -0700</bug_when>
    <thetext>Comment on attachment 69578
Patch

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

&gt; JavaScriptCore/bytecode/CodeBlock.h:557
&gt; +        bool m_isStrictMode;

I think this would read better as an enum. That way we are not passing around random bools.

&gt; JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1553
&gt; +    if (m_codeBlock-&gt;isStrictMode())
&gt; +        return;

Since this is a little subtle, a comment indicating why you are returning early here might be nice.

&gt; JavaScriptCore/parser/ASTBuilder.h:583
&gt; +    bool isResolve(ExpressionNode* expr) { return expr-&gt;isResolveNode(); }
&gt;  private:

It is nice to have new line before the access control modifier.

&gt; JavaScriptCore/runtime/StrictEvalActivation.h:42
&gt; +}
&gt; +

We like to put // namespace JSC at the end.


I also, think this patch could use a more detailed ChangeLog, explaining most of the changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289809</commentid>
    <comment_count>16</comment_count>
      <attachid>69578</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-05 12:20:13 -0700</bug_when>
    <thetext>Comment on attachment 69578
Patch

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

&gt; JavaScriptCore/interpreter/Interpreter.cpp:378
&gt; +        // FIXME: We can use the preparser in strict mode, we just need additional logic

Would be really great to file a bug for this, and reference the bug number in the comment!

&gt; JavaScriptCore/parser/JSParser.cpp:259
&gt; +        void pushLabel(const Identifier* label)

probably should have a newline before function definition.

&gt; JavaScriptCore/parser/JSParser.cpp:265
&gt; +        void popLabel()

probably should have a newline before function definition.

&gt; JavaScriptCore/parser/JSParser.cpp:271
&gt; +        bool hasLabel(const Identifier* label)

probably should have a newline before function definition.

&gt; JavaScriptCore/runtime/Arguments.cpp:203
&gt; +        createStrictModeCalleeIfNecessary(exec);

You seem to be checking d-&gt;overrodeCallee twice?
Since we only createStrictModeCalleeIfNecessary this if !d-&gt;overrodeCallee, we should only need an ASSERT within the function?

Agreed to all Sam&apos;s comments.
Three more issues:

(1) failIfStrictTrue/failIfStrictFalse.

I find these names a little confusing.  Strict is usually a modifier to the thing it precedes, e.g. &quot;strict equal&quot;.  I think something like &quot;strictModeFailIfFalse&quot; or &quot;failIfFalseIfStrict&quot; would parse in a more understandably fashion for me.

(2) Performance.

Given the size of this change and the additional parameterization in all the &apos;put&apos; methods I think this bug really needs before and after SunSpidey &amp; v8 numbers.  (We should also probably also have numbers for the interpreter - maybe just for SunSpider - to at least be aware in advance of any impact there).

(3) Passing exec through reparseExceptionInfo/parse/jsParse/parseProgram.

We really shouldn&apos;t be pushing a pointer into the JS Stack this deep into the parser – and we really shouldn&apos;t need to.  We want to be moving in the other direction – paring back our use of ExecState, to places where we may actually trigger new execution.  It looks like you&apos;ve passed the exec state to parseProgram because it needs to check for the presence of certain properties on the LGO? If so, we should have an appropriate hasProperty method that does not require an exec state (and if we don&apos;t have one, I&apos;d think you should be able to add one that just wraps the getPropertySlot that you&apos;re calling, passing the globalExec from the LGO).  Did I miss a use of ExecState that really requires a JS stack? – if not, I think we need to revert this.

r- for the JSGlobalData* -&gt; ExecState* change, that makes me too sad. :&apos;-( :-P

All looks great otherwise!
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292231</commentid>
    <comment_count>17</comment_count>
      <attachid>70380</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-09 17:10:11 -0700</bug_when>
    <thetext>Created attachment 70380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292232</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-09 17:14:35 -0700</bug_when>
    <thetext>Attachment 70380 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/interpreter/Interpreter.cpp:3128:  vm_throw is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/interpreter/Interpreter.cpp:3320:  vm_throw is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 64 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292235</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-09 18:05:57 -0700</bug_when>
    <thetext>Fixed all the issues you and sam pointed out.

&gt; (1) failIfStrictTrue/failIfStrictFalse.
&gt; 
&gt; I find these names a little confusing.  Strict is usually a modifier to the thing it precedes, e.g. &quot;strict equal&quot;.  I think something like &quot;strictModeFailIfFalse&quot; or &quot;failIfFalseIfStrict&quot; would parse in a more understandably fashion for me.

renamed to the IfStrict suffix variant you suggested

&gt; 
&gt; (2) Performance.
&gt; 
&gt; Given the size of this change and the additional parameterization in all the &apos;put&apos; methods I think this bug really needs before and after SunSpidey &amp; v8 numbers.  (We should also probably also have numbers for the interpreter - maybe just for SunSpider - to at least be aware in advance of any impact there).

** TOTAL **:           ??                327.0ms +/- 0.3%   327.7ms +/- 0.2% 

&gt; 
&gt; (3) Passing exec through reparseExceptionInfo/parse/jsParse/parseProgram.
&gt; 
&gt; We really shouldn&apos;t be pushing a pointer into the JS Stack this deep into the parser – and we really shouldn&apos;t need to.  We want to be moving in the other direction – paring back our use of ExecState, to places where we may actually trigger new execution.  It looks like you&apos;ve passed the exec state to parseProgram because it needs to check for the presence of certain properties on the LGO? If so, we should have an appropriate hasProperty method that does not require an exec state (and if we don&apos;t have one, I&apos;d think you should be able to add one that just wraps the getPropertySlot that you&apos;re calling, passing the globalExec from the LGO).  Did I miss a use of ExecState that really requires a JS stack? – if not, I think we need to revert this.

Avoid passing an execstate to getOwnPropertySlot would grossly inflate the size of this patch as every class that overrides getOwnPropertySlot would need to have an implementation of the non-execstate taking hasOwnProperty (or whatever).  While I agree that in an ideal world we wouldn&apos;t have this execstate, i can&apos;t see much of an alternative at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292397</commentid>
    <comment_count>20</comment_count>
      <attachid>70418</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-10 18:16:48 -0700</bug_when>
    <thetext>Created attachment 70418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292398</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-10 18:19:49 -0700</bug_when>
    <thetext>Attachment 70418 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/interpreter/Interpreter.cpp:3128:  vm_throw is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/interpreter/Interpreter.cpp:3320:  vm_throw is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 64 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292603</commentid>
    <comment_count>22</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-11 12:12:48 -0700</bug_when>
    <thetext>Committed r69516: &lt;http://trac.webkit.org/changeset/69516&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292656</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-11 14:29:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/69516 might have broken GTK Linux 32-bit Release
The following tests are not passing:
fast/js/basic-strict-mode.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69540</attachid>
            <date>2010-10-01 16:52:38 -0700</date>
            <delta_ts>2010-10-01 18:32:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-10701-20101001165236.patch</filename>
            <type>text/plain</type>
            <size>194281</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODljOWVmMWQ0NWM2ZjcyZTEzZTI1MjA3NGI3ZDcxNWY1
NDhlNGMwZC4uN2M5MGExODdjMDgxZWFjYjI3ZGM3YmViZWFjMmQ4OTI5ZTk5Njc1MyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE1Nyw2ICsxNTcsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIHJ1bnRpbWUvUm9wZUltcGwuY3BwCiAgICAgcnVudGltZS9TY29wZUNoYWluLmNw
cAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAorICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL1N0cmluZ09iamVjdC5jcHAKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCAzNjgyMjZiMzg1MzFmYTY2NmRhYzJjODFkZmFkZWY1MGU4NThkZWEzLi43ZThj
OGQyNGM5OGI4ZDZlN2YzNDM3MDNhOTQ5MzQ5NzgzYzY2ZmQ0IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjc0IEBACisyMDEwLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VTNV0gSW1w
bGVtZW50IHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDcwMQorCisgICAgICAgIEluaXRpYWwgc3RyaWN0IG1vZGUgaW1wbGVtZW50
YXRpb24uICBUaGlzIGlzIHRoZSBzaW1wbGVzdAorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0aGF0
IGNvdWxkIHBvc3NpYmx5IHdvcmsgYW5kIGFkZHMgKGhvcGVmdWxseSkKKyAgICAgICAgYWxsIG9m
IHRoZSByZXN0cmljdGlvbnMgcmVxdWlyZWQgYnkgc3RyaWN0IG1vZGUuICBUaGVyZSBhcmUKKyAg
ICAgICAgYSBudW1iZXIgb2YgaW5lZmZpY2llbmNpZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGhhbmRs
aW5nIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQgZXZhbCBhcyBzbWFydCBpbXBsZW1lbnRhdGlv
bnMgd291bGQgbWFrZSB0aGlzCisgICAgICAgIHBhdGNoIG1vcmUgY29tcGxpY2F0ZWQuICAKKwor
ICAgICAgICBUaGUgU3ludGF4Q2hlY2tlciBBU1QgYnVpbGRlciBoYXMgYmVjb21lIHNvbWV3aGF0
IG1vcmUgY29tcGxleAorICAgICAgICBhcyBzdHJpY3QgbW9kZSBkb2VzIHJlcXVpcmUgbW9yZSBw
YXJzZSB0cmVlIGluZm9ybWF0aW9uIHRvCisgICAgICAgIHZhbGlkYXRlIHRoZSBzeW50YXguCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJv
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVwYXJzZUZvckV4Y2VwdGlvbkluZm9JZk5l
Y2Vzc2FyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aXNTdHJpY3RNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNh
Y2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldCk6CisgICAgICAgICogYnl0
ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZUFyZ3VtZW50c0lmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6aXNTdHJpY3RNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIu
Y3BwOgorICAgICAgICAoSlNDOjpldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
Q2FsbEZyYW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2FsbEV2YWwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRl
ci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1Jlc29sdmUpOgorICAgICAgICAqIHBhcnNlci9KU1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpuZXh0KToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnN0YXJ0TG9vcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjplbmRMb29wKToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6SlNQ
YXJzZXI6OmVuZFN3aXRjaCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpzZXRTdHJpY3RNb2Rl
KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6aXNWYWxpZFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZGVj
bGFyZVBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpicmVha0lzVmFsaWQpOgor
ICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cHVzaExhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OnBvcExhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6Omhhc0xhYmVsKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OkRlcHRoTWFuYWdlcjo6RGVwdGhNYW5hZ2VyKToKKyAgICAgICAg
KEpTQzo6SlNQYXJzZXI6OkRlcHRoTWFuYWdlcjo6fkRlcHRoTWFuYWdlcik6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2Nv
cGU6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjplbmRTd2l0
Y2gpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OnN0YXJ0TG9vcCk6CisgICAgICAg
IChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZW5kTG9vcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2Vy
OjpTY29wZTo6aW5Mb29wKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpicmVha0lz
VmFsaWQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6cG9wTGFiZWwpOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6Omhhc0xhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpp
c0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpkZWNsYXJlVmFyaWFi
bGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OmRlY2xhcmVXcml0ZSk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU1BhcnNlcjo6U2NvcGU6OmRlY2xhcmVQYXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6OnNldE5lZWRzRnVsbEFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6OmNvbGxlY3RGcmVlVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OlNjb3BlOjpnZXRVbmNhcHR1cmVkV3JpdHRlblZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6
OkpTUGFyc2VyOjpTY29wZTo6Z2V0RGVsZXRlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkpT
UGFyc2VyOjpTY29wZTo6c2V0U3RyaWN0TW9kZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpT
Y29wZTo6c3RyaWN0TW9kZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6aXNWYWxp
ZFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cHVzaFNjb3BlKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnBvcFNjb3BlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OmRl
Y2xhcmVWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpkZWNsYXJlV3JpdGUpOgor
ICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpq
c1BhcnNlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OkpTUGFyc2VyKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJz
ZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRG9XaGlsZVN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVdoaWxlU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAo
SlNDOjpKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUNv
bnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlUmV0dXJuU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlV2l0aFN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVN3aXRjaFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpwYXJzZVN3aXRjaENsYXVzZXMpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQmxvY2tTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25E
ZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25Pckxh
YmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlU3RyaWN0T2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVBy
aW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6
CisgICAgICAgICogcGFyc2VyL0pTUGFyc2VyLmg6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OkxleGVy
Ojppc1JlcGFyc2luZyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2NvcGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6U2NvcGVOb2Rl
Ojppc1N0cmljdE1vZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OlN5bnRheENoZWNrZXIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmFwcGVuZFRvQ29tbWEpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtl
QXNzaWduTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQcmVmaXhOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVBvc3RmaXhOb2RlKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVR5cGVPZk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlRGVsZXRlTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUJp
dHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTG9naWNh
bE5vdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVVuYXJ5UGx1cyk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVZvaWQpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjp0aGlzRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVPYmplY3RM
aXRlcmFsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXJyYXkpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdW1iZXJFeHByKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZU51bGwpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCcmFja2V0QWNjZXNz
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVnZXgpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1
bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9u
Qm9keSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmFwcGVuZEJpbmFyeUV4cHJlc3Np
b25JbmZvKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6
CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OkFy
Z3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpT
Qzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6
cHV0KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpBcmd1bWVu
dHMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAo
SlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rp
b246OmNvbnN0cnVjdFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjYWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlVHlwZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoK
KyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhl
Y3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJs
ZTo6UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21w
aWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50
YXgpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFs
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnJlcGFyc2VFeGNl
cHRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnJlcGFyc2VFeGNlcHRp
b25JbmZvKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29k
ZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5m
byk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlw
dEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOjppc1N0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
Ojp0b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
RGVzY3JpcHRvckZvclRocm93aW5nUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0
b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAoSlNDOjp0aHJvd1R5cGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNTdHJp
Y3RNb2RlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpY3RUaGlz
T2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1N0cmljdFRoaXNPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNab21iaWUuaDoKKyAgICAgICAgKEpTQzo6
SlNab21iaWU6OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAgICogcnVudGltZS9QdXRQcm9w
ZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpQdXRQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmlzU3RyaWN0TW9kZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24pOgorICAgICAg
ICAoSlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6dG9UaGlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
U3RyaWN0RXZhbEFjdGl2YXRpb246OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOiBBZGRlZC4KKwogMjAxMC0xMC0wMSAgUHJhdGlr
IFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBi
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDg4ZDE3NjE3YjNhNGI4ODg0YzA0
YTI2ODY4YzZmMDZkMTczMWM3NTAuLjdkNjM3YjM1MDQxYzU4ZDg4YWE5YjcwMWRkNGQ4MWVlNjgy
YWQ3MDIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zODgsNiArMzg4LDggQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluTWFy
ay5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgXAogCUphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uaFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0J1aWxk
ZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25jYXRlbmF0ZS5oIFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBcCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKaW5kZXggZmYzZDliMzc5OGM2NTVlOGJiNzdiMzU4OTUxNDJhYTA3OWNl
N2FmOC4uMTdiZTkyODU0MjZmNzI4NmRhNGI4N2EyYmIyYjNjYzNhYmI2ZTZjYiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cApAQCAtNTMxLDYgKzUzMSw3IEBAIF9fWk5LM0pTQzhKU09iamVj
dDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOSzNK
U0M4SlNPYmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKIF9fWk5LM0pTQzhKU09i
amVjdDEyZGVmYXVsdFZhbHVlRVBOU185RXhlY1N0YXRlRU5TXzIyUHJlZmVycmVkUHJpbWl0aXZl
VHlwZUUKIF9fWk5LM0pTQzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQor
X19aTkszSlNDOEpTT2JqZWN0MTh0b1N0cmljdFRoaXNPYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBf
X1pOSzNKU0M4SlNPYmplY3Q4dG9OdW1iZXJFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNKU0M4SlNP
YmplY3Q4dG9PYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNKU0M4SlNPYmplY3Q4dG9TdHJp
bmdFUE5TXzlFeGVjU3RhdGVFCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcm8gYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8KaW5kZXggZjQ2M2Y0
MWQ1ZjYyNWIyZWJhMjJhYTZiZGYwYTdjYTQyY2RmZjUzZi4uZjgzYmY0YzRlZGUyOTE5MmU1MTdh
NWFjNzdiMjRhNTFkNzUxYmMxYiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUucHJvCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwpAQCAtMTk3
LDYgKzE5Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvUm9wZUltcGwuY3BwIFwKICAg
ICBydW50aW1lL1Njb3BlQ2hhaW4uY3BwIFwKICAgICBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAg
XAorICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIFwKICAgICBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIFwKICAg
ICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgXApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggODNkMzRlMzdiMmZkNGM0ZTdmNzE5NDFlNzM0
ZTVkZDg2NzJlY2JhZi4uNDc5YjNkZDAyMmJmOTFmYjdjNWFkNTQyYTI5MGFkNTQ0MDA5ZmNhMCAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCkBAIC0x
MTczLDYgKzExNzMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50
aW1lXFN0cmljdEV2YWxBY3RpdmF0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN0cmluZ0NvbnN0cnVjdG9yLmNw
cCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NzVkMjZkZDZjYjZk
ZTAwMTg2NTRlOThmM2E1Yjg3NjJhYjRlNDU5Li5hNDVmOTgyNTQxYjBjNjIwNjA2NDQ3MmVjNzkx
MDI1YTUyNTcyMWQ1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxOCw2ICszMTgsOCBAQAogCQlBNzI3
MDFCOTBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3
IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgfTsKIAkJQTcyN0ZGNkIwREEzMDkyMjAwRTU0OEQ3
IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyN0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8qIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlBNzI4MEEyODExNTU3RTMwMDBENTY5NTcgLyog
SlNPYmplY3RSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcz
MEI2MTIxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzMwQjYxMDEyNTAwNjhGMDA5
RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCAqLzsgfTsKKwkJQTczMEI2MTMxMjUwMDY4
RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBT
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgKi87IH07CiAJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3
OSAvKiBTcGVjaWFsaXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRU
aHVua0pJVC5oICovOyB9OwogCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5l
cmF0b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Mzg2NTUyMTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwICovOyB9Owog
CQlBNzM4NjU1NjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1MzExODY5N0I0MDA1
NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk1MSw2ICs5NTMsOCBAQAogCQlBNzI3MDFCMzBEQURFOTQ5
MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFeGNlcHRpb25IZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MjdGRjY1MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyN0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8q
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzMwQjYxMTEyNTAwNjhGMDA5RDI1
QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVjaWFsaXplZFRodW5rSklU
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Mzg2NTUyMTE4Njk3QjQwMDU0MDI3
OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGh1bmtHZW5lcmF0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUaHVua0dlbmVyYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE4MTQsNiArMTgxOCw4IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAw
MzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJCTE0MDM1REIwMTBEQkZCMkEwMEZGRkZFNyAv
KiBXZWFrR0NQdHIuaCAqLywKIAkJCQkxNDIwQkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1Jh
bmRvbS5oICovLAorCQkJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0
aXZhdGlvbi5oICovLAorCQkJCUE3MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFs
QWN0aXZhdGlvbi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjMxNCw2ICsyMzIwLDcgQEAKIAkJCQk5NzE0QUY1RjEyMkYz
MjA3MDA5MkQ5RjUgLyogUGFyc2VkVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzE0QUY2MDEy
MkYzMjA3MDA5MkQ5RjUgLyogVVJMU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDIxM0Uz
RTEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTczMEI2MTIxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI3NjgsNiArMjc3NSw3IEBACiAJCQkJOTcxNEFGNDYxMjJGMjg4NTAw
OTJEOUY1IC8qIFVSTFNlZ21lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTRBRjVFMTIy
RjMyMDcwMDkyRDlGNSAvKiBQYXJzZWRVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTAyMTNF
M0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTczMEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
NmMwNjk2ZWY3NGFiOGZhMzU3NDlkNWYwMTk5MmZhMWE0ZjQ2ZTE1Ny4uODljOGEzNmZiZWEzNGI2
OTFhZTMyZDA5YzdlZDVmYmZlYWYzOWM0OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkBAIC01MTYsNiArNTE2LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImCiAgICAg
ICAgICAgICBwcmludGYoIlslNGRdIGNvbnZlcnRfdGhpcyAlc1xuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlzX3N0cmljdDogeworICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludGYoIlslNGRdIGNvbnZl
cnRfdGhpc19zdHJpY3QgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25l
d19vYmplY3Q6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CkBAIC0xMzcxLDYgKzEzNzYsNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIENvZGVUeXBl
IGNvZGVUeXBlLCBKU0dsbwogICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKG93bmVyRXhlY3V0
YWJsZS0+bmVlZHNBY3RpdmF0aW9uKCkpCiAgICAgLCBtX3VzZXNFdmFsKG93bmVyRXhlY3V0YWJs
ZS0+dXNlc0V2YWwoKSkKICAgICAsIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGZhbHNlKQor
ICAgICwgbV9pc1N0cmljdE1vZGUob3duZXJFeGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAsIG1fY29kZVR5cGUoY29kZVR5cGUpCiAgICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRlcikK
ICAgICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKQEAgLTE1NTMsNyArMTU1OSw3IEBA
IGJvb2wgQ29kZUJsb2NrOjpyZXBhcnNlRm9yRXhjZXB0aW9uSW5mb0lmTmVjZXNzYXJ5KENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgICAgICAgICAgc2NvcGVDaGFpbiA9IHNjb3BlQ2hhaW4tPm5l
eHQ7CiAgICAgfQogCi0gICAgbV9leGNlcHRpb25JbmZvID0gbV9vd25lckV4ZWN1dGFibGUtPnJl
cGFyc2VFeGNlcHRpb25JbmZvKG1fZ2xvYmFsRGF0YSwgc2NvcGVDaGFpbiwgdGhpcyk7CisgICAg
bV9leGNlcHRpb25JbmZvID0gbV9vd25lckV4ZWN1dGFibGUtPnJlcGFyc2VFeGNlcHRpb25JbmZv
KGNhbGxGcmFtZSwgc2NvcGVDaGFpbiwgdGhpcyk7CiAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5m
bzsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjZGE0NTMwZDNhMTc5
NzBjY2E1ODE0ZmNmOTAzMmIyYWE5MDRlYjllLi41MTE1MTljZjNiN2YyM2E0N2E2ZTg4YWU3YjI0
YmI0ZjQ0ODk0MTk2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjk3LDYg
KzI5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RyaWN0TW9kZTsgfQorCiAgICAgICAgIGlubGluZSBib29sIGlzS25vd25Ob3RJbW1lZGlhdGUo
aW50IGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaW5kZXggPT0gbV90aGlzUmVn
aXN0ZXIpCkBAIC01NTIsNiArNTU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
bV9uZWVkc0Z1bGxTY29wZUNoYWluOwogICAgICAgICBib29sIG1fdXNlc0V2YWw7CiAgICAgICAg
IGJvb2wgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247CisgICAgICAgIGJvb2wgbV9pc1N0cmlj
dE1vZGU7CiAKICAgICAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDdjNGNiMzNlNDAxYWU2OWEyOTc1MWJjMmQ2YjIw
NTBmZDVhZDYzZDYuLmVkZDU3NWZlNmUwMjkzNGZmMDk0MDQ4OTE2MWMwOTc2MDc3MDQxNjcgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTQzLDIwICs0MywyMCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUGFzc1JlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZ2V0KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgVVN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4s
IEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQorICAgICAgICBQYXNzUmVmUHRyPEV2YWxFeGVjdXRh
YmxlPiBnZXQoRXhlY1N0YXRlKiBleGVjLCBib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgVVN0
cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUmIGV4
Y2VwdGlvblZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8RXZhbEV4ZWN1dGFi
bGU+IGV2YWxFeGVjdXRhYmxlOwogCi0gICAgICAgICAgICBpZiAoZXZhbFNvdXJjZS5sZW5ndGgo
KSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4tPmJlZ2luKCkpLT5p
c1ZhcmlhYmxlT2JqZWN0KCkpCisgICAgICAgICAgICBpZiAoIWluU3RyaWN0Q29udGV4dCAmJiBl
dmFsU291cmNlLmxlbmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVD
aGFpbi0+YmVnaW4oKSktPmlzVmFyaWFibGVPYmplY3QoKSkKICAgICAgICAgICAgICAgICBldmFs
RXhlY3V0YWJsZSA9IG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKTsKIAogICAgICAg
ICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkgewotICAgICAgICAgICAgICAgIGV2YWxFeGVjdXRh
YmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2Up
KTsKKyAgICAgICAgICAgICAgICBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0KTsKICAgICAg
ICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGV2YWxFeGVjdXRhYmxlLT5jb21waWxlKGV4ZWMs
IHNjb3BlQ2hhaW4pOwogICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb25WYWx1ZSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgICAgICAgICBpZiAoZXZhbFNvdXJj
ZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4tPmJl
Z2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhDYWNo
ZUVudHJpZXMpCisgICAgICAgICAgICAgICAgaWYgKCFpblN0cmljdENvbnRleHQgJiYgZXZhbFNv
dXJjZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4t
PmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhD
YWNoZUVudHJpZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3Vy
Y2UuaW1wbCgpLCBldmFsRXhlY3V0YWJsZSk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmgKaW5kZXggMDNmNjU3MzMwMWMxMjk5NDdjNjE5YjkyNmY1ZWE0YzAwMjNlNWZj
Mi4uMzgyZGQyNTM3N2MwZjhhZTMzOTZlZWVkYzYxY2YzM2QwZmFkZGJkYiAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IG1hY3JvKG9wX2NyZWF0ZV90aGlzLCAzKSBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9jYWxsZWUs
IDIpIFwKICAgICAgICAgbWFjcm8ob3BfY29udmVydF90aGlzLCAyKSBcCisgICAgICAgIG1hY3Jv
KG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIDIpIFwKICAgICAgICAgXAogICAgICAgICBtYWNybyhv
cF9uZXdfb2JqZWN0LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX25ld19hcnJheSwgNCkgXApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggOTg2NzA5YmJlYmJiYTk3ZDgzOGM0MGRhYTg5OWNkN2QxYWZhZmNjMi4uYzZiNzhiMTA2N2Yw
NGE4MDZmZWIzZThhNGVmYzVkNDg0YzdjODgxZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNDEsNiArMzQxLDExIEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW5jdGlvbkJvZHlOb2RlKiBmdW5j
dGlvbkJvZHksIGNvbnN0IERlYnVnCiAKICAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIoYXJn
dW1lbnRzUmVnaXN0ZXIpOwogICAgICAgICBlbWl0SW5pdExhenlSZWdpc3Rlcih1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1l
bnRzKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdpc3Rl
ci0+aW5kZXgoKSk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgZGVidWdnZXIgY3VycmVu
dGx5IHJldHJpZXZlcyB0aGUgYXJndW1lbnRzIG9iamVjdCBmcm9tIGFuIGFjdGl2YXRpb24gcmF0
aGVyIHRoYW4gcHVsbGluZwogICAgICAgICAvLyBpdCBmcm9tIGEgY2FsbCBmcmFtZS4gIEluIHRo
ZSBsb25nLXRlcm0gaXQgc2hvdWxkIHN0b3AgZG9pbmcgdGhhdCAoPHJkYXI6Ly9wcm9ibGVtLzY5
MTE4ODY+KSwKQEAgLTQyOSw3ICs0MzQsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgY29uc3QgRGVidWcKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuY1Byb3RvLT5pbmRleCgpKTsKICAgICB9IGVs
c2UgaWYgKGZ1bmN0aW9uQm9keS0+dXNlc1RoaXMoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
KSB7Ci0gICAgICAgIGVtaXRPcGNvZGUob3BfY29udmVydF90aGlzKTsKKyAgICAgICAgaWYgKGNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2NvbnZl
cnRfdGhpc19zdHJpY3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9w
X2NvbnZlcnRfdGhpcyk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdp
c3Rlci5pbmRleCgpKTsKICAgICB9CiB9CkBAIC0xNTQxLDYgKzE1NDksOSBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVy
bjsKICAgICBBU1NFUlQobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSk7CiAKKyAgICBpZiAo
bV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBlbWl0
T3Bjb2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSk7CiB9CkBAIC0xNjQ4LDcgKzE2NTksOCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBz
cmMpCiAgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0
ZXIoKSk7Ci0gICAgfSBlbHNlIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmIG1f
Y29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMgPiAxKSB7IC8vIElmIHRoZXJlIGFyZSBubyBuYW1l
ZCBwYXJhbWV0ZXJzLCB0aGVyZSdzIG5vdGhpbmcgdG8gdGVhciBvZmYsIHNpbmNlIGV4dHJhIC8g
dW5uYW1lZCBwYXJhbWV0ZXJzIGdldCBjb3BpZWQgdG8gdGhlIGFyZ3VtZW50cyBvYmplY3QgYXQg
Y29uc3RydWN0IHRpbWUuCisgICAgfSBlbHNlIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50
cygpICYmIG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMgPiAxCisgICAgICAgICAgICAgICAm
JiAhbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7IC8vIElmIHRoZXJlIGFyZSBubyBuYW1l
ZCBwYXJhbWV0ZXJzLCB0aGVyZSdzIG5vdGhpbmcgdG8gdGVhciBvZmYsIHNpbmNlIGV4dHJhIC8g
dW5uYW1lZCBwYXJhbWV0ZXJzIGdldCBjb3BpZWQgdG8gdGhlIGFyZ3VtZW50cyBvYmplY3QgYXQg
Y29uc3RydWN0IHRpbWUuCiAgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYXJndW1lbnRz
KTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hcmd1bWVudHNS
ZWdpc3RlcigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IDg2MTcxMWFjNmFiYThmZjExZDJhYWZjNzA1ZWNiNzhkY2Nm
YzM4ZjUuLmQwZmYxZjQ0ODU4OGQwNjk0MzkzNzNjOWQxZmFjYTRmM2YxNjhlM2IgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MTks
NiArNDE5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIHNo
b3VsZEVtaXRQcm9maWxlSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3M7
IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
b2lkIGVtaXRPcGNvZGUoT3Bjb2RlSUQpOwpAQCAtNDk5LDEyICs1MDEsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IG1ha2VGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBib2R5
LT5pZGVudCgpLCBib2R5LT5zb3VyY2UoKSwgYm9keS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5w
YXJhbWV0ZXJzKCksIGJvZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBib2R5LT5pZGVudCgp
LCBib2R5LT5zb3VyY2UoKSwgYm9keS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5wYXJhbWV0ZXJz
KCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExpbmUo
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4g
bWFrZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIGJvZHktPmlkZW50KCksIGJvZHktPnNvdXJjZSgpLCBib2R5LT51
c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+bGluZU5vKCksIGJvZHkt
Pmxhc3RMaW5lKCkpOworICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIGJvZHktPmlkZW50KCksIGJvZHktPnNvdXJjZSgpLCBib2R5LT51c2Vz
QXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGJv
ZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCBjYmNiZDIxYTk2ZThlMmQzZTEyMjZiM2U3MTIyYWEx
YjE5NzNkODFjLi4xN2RmZGY3NjlhNWI1NzdmZjIyY2M2NGQwZTdkYjA3N2E0YWViZGIyIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgSlNWYWx1
ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1
ZSYgZXhjZXB0aW9uLCBKU0cKIHsKICAgICBDYWxsRnJhbWUqIGdsb2JhbENhbGxGcmFtZSA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBl
dmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxDYWxsRnJhbWUsIG1ha2VTb3VyY2Uo
c2NyaXB0KSk7CisgICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShnbG9iYWxDYWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0KSwgZmFsc2UpOwog
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBpbGUoZ2xvYmFsQ2FsbEZyYW1lLCBnbG9i
YWxDYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKSk7CiAgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1
cm4gZXJyb3I7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNh
bGxGcmFtZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKaW5kZXggMzJmNjVkZGI4MDQwMTZkNTlhMjgzZmIyYzg4ZThlZTQ4NTM4NGFkZS4uYzk4Yzdj
Y2RkYzE3MGMwNGZhYzM4MDg0ZmM0ZmQ1YTM5MmU4ZGNlMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtODgsNyArODgsNyBAQCBKU1ZhbHVl
IERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFs
dWUmIGV4Y2VwdGlvbikgYwogICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFs
ID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShtX2NhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQp
KTsKKyAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKG1fY2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCksIG1fY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBp
bGUobV9jYWxsRnJhbWUsIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOwogICAgIGlmIChlcnJv
cikKICAgICAgICAgcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IDU5NDNlY2ViNzRlZmZmMDY3N2E1MjM2YzU2NjQ3MTI3NTZkMDMw
M2MuLjk3NTk0Y2UxYTFhMjRhNjIyMmNmZDlhYmNlMDZhZmQ5MjFmNzJkYmYgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNp
bmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1
ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CkBAIC0zNzEsMTQgKzM3MiwxOCBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6Y2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSogcgog
ICAgIFVTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShjYWxs
RnJhbWUpOwogICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwotCi0gICAgTGl0ZXJhbFBhcnNlciBwcmVwYXJzZXIoY2FsbEZyYW1lLCBw
cm9ncmFtU291cmNlLCBMaXRlcmFsUGFyc2VyOjpOb25TdHJpY3RKU09OKTsKLSAgICBpZiAoSlNW
YWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpCi0gICAgICAg
IHJldHVybiBwYXJzZWRPYmplY3Q7CisgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkgeworICAgICAgICAvLyBGSVhNRTogV2UgY2FuIHVzZSB0aGUgcHJlcGFyc2VyIGluIHN0cmlj
dCBtb2RlLCB3ZSBqdXN0IG5lZWQgYWRkaXRpb25hbCBsb2dpYworICAgICAgICAvLyB0byBwcmV2
ZW50IGR1cGxpY2F0ZXMuCisgICAgICAgIExpdGVyYWxQYXJzZXIgcHJlcGFyc2VyKGNhbGxGcmFt
ZSwgcHJvZ3JhbVNvdXJjZSwgTGl0ZXJhbFBhcnNlcjo6Tm9uU3RyaWN0SlNPTik7CisgICAgICAg
IGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBwYXJzZWRPYmplY3Q7CisgICAgfQogCiAgICAgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKLSAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgUmVmUHRyPEV2YWxF
eGVjdXRhYmxlPiBldmFsID0gY29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0KGNhbGxGcmFt
ZSwgcHJvZ3JhbVNvdXJjZSwgc2NvcGVDaGFpbiwgZXhjZXB0aW9uVmFsdWUpOworICAgIFJlZlB0
cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IGNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldChj
YWxsRnJhbWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dyYW1Tb3VyY2UsIHNjb3Bl
Q2hhaW4sIGV4Y2VwdGlvblZhbHVlKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNVbmRlZmlu
ZWQoKTsKICAgICBpZiAoZXZhbCkKQEAgLTUzOSw5ICs1NDQsMTEgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpT
VmFsdWUgZXgKICAgICAgICAgICAgIHNjb3BlQ2hhaW4gPSBzY29wZUNoYWluLT5wb3AoKTsKICAg
ICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKHNjb3BlQ2hhaW4t
Pm9iamVjdCk7CiAgICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKLSAgICAgICAg
aWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3RlcihvbGRDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKS5qc1ZhbHVlKCkpCi0g
ICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRp
b24pOwotICAgIH0gZWxzZSBpZiAob2xkQ29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHsKKyAg
ICAgICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihvbGRDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKS5qc1ZhbHVl
KCkpIHsKKyAgICAgICAgICAgIGlmICghb2xkQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2
YXRpb24pOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChvbGRDb2RlQmxvY2stPnVzZXNBcmd1
bWVudHMoKSAmJiAhb2xkQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAo
SlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkKICAgICAg
ICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPmNvcHlSZWdpc3RlcnMoKTsKICAgICB9CkBA
IC0xMDM2LDcgKzEwNDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogICAgIH0KICAgICBF
dmFsQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXZhbC0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKIAot
ICAgIEpTVmFyaWFibGVPYmplY3QqIHZhcmlhYmxlT2JqZWN0OworICAgIEpTT2JqZWN0KiB2YXJp
YWJsZU9iamVjdDsKICAgICBmb3IgKFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gc2NvcGVDaGFpbjsg
OyBub2RlID0gbm9kZS0+bmV4dCkgewogICAgICAgICBBU1NFUlQobm9kZSk7CiAgICAgICAgIGlm
IChub2RlLT5vYmplY3QtPmlzVmFyaWFibGVPYmplY3QoKSkgewpAQCAtMTA0Nyw3ICsxMDU0LDEz
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjCiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMg
PSBjb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOwogICAgIGludCBudW1GdW5jdGlvbnMgPSBjb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOworICAgIGJvb2wgcHVzaGVkU2NvcGUgPSBm
YWxzZTsKICAgICBpZiAobnVtVmFyaWFibGVzIHx8IG51bUZ1bmN0aW9ucykgeworICAgICAgICBp
ZiAoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgdmFyaWFibGVPYmpl
Y3QgPSBuZXcgKGNhbGxGcmFtZSkgU3RyaWN0RXZhbEFjdGl2YXRpb24oY2FsbEZyYW1lKTsKKyAg
ICAgICAgICAgIHNjb3BlQ2hhaW4gPSBzY29wZUNoYWluLT5wdXNoKHZhcmlhYmxlT2JqZWN0KTsK
KyAgICAgICAgICAgIHB1c2hlZFNjb3BlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICAvLyBT
Y29wZSBmb3IgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIKICAgICAgICAgQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIgb3B0aW1pemVyKHZhcmlhYmxlT2JqZWN0KTsKIApAQCAtMTA3MCw2ICsx
MDgzLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZh
bCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWMKICAgICBSZWdpc3RlciogbmV3RW5kID0g
bV9yZWdpc3RlckZpbGUuc3RhcnQoKSArIGdsb2JhbFJlZ2lzdGVyT2Zmc2V0ICsgY29kZUJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVyczsKICAgICBpZiAoIW1fcmVnaXN0ZXJGaWxlLmdyb3cobmV3
RW5kKSkgewogICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNh
bGxGcmFtZSk7CisgICAgICAgIGlmIChwdXNoZWRTY29wZSkKKyAgICAgICAgICAgIHNjb3BlQ2hh
aW4tPnBvcCgpOwogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgfQogCkBAIC0xMTEyLDYg
KzExMjcsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBl
dmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogICAgICAgICAoKnByb2ZpbGVyKS0+
ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGV2YWwtPnNvdXJjZVVSTCgpLCBldmFsLT5saW5lTm8oKSk7
CiAKICAgICBtX3JlZ2lzdGVyRmlsZS5zaHJpbmsob2xkRW5kKTsKKyAgICBpZiAocHVzaGVkU2Nv
cGUpCisgICAgICAgIHNjb3BlQ2hhaW4tPnBvcCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTM5ODcsOCArNDAwNCwxMCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICBKU0Fj
dGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oY2FsbEZyYW1lLT5yKHNyYzEpLmpz
VmFsdWUoKSk7CiAgICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKIAotICAgICAg
ICBpZiAoSlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKHNyYzIpKS5qc1ZhbHVlKCkpCi0gICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1
bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24pOworICAgICAgICBpZiAoSlNWYWx1ZSBh
cmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHNyYzIp
KS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9u
KGFjdGl2YXRpb24pOworICAgICAgICB9CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgo
b3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKQEAg
LTQxODQsNiArNDIwMywyNSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICB2UEMgKz0g
T1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXMpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9O
KCk7CiAgICAgfQorICAgIERFRklORV9PUENPREUob3BfY29udmVydF90aGlzKSB7CisgICAgICAg
IC8qIGNvbnZlcnRfdGhpc19zdHJpY3QgdGhpcyhyKQorICAgICAgICAgCisgICAgICAgICBUYWtl
cyB0aGUgdmFsdWUgaW4gdGhlICd0aGlzJyByZWdpc3RlciwgYW5kIGNvbnZlcnRzIGl0IHRvCisg
ICAgICAgICBpdHMgInRoaXMiIGZvcm0gaWYgKGFuZCBvbmx5IGlmKSAidGhpcyIgaXMgYW4gb2Jq
ZWN0IHdpdGggYQorICAgICAgICAgY3VzdG9tIHRoaXMgY29udmVyc2lvbgorICAgICAgICAgCisg
ICAgICAgICBUaGlzIG9wY29kZSBzaG91bGQgb25seSBiZSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcg
b2YgYSBjb2RlCisgICAgICAgICBibG9jay4KKyAgICAgICAgICovCisgICAgICAgIAorICAgICAg
ICBpbnQgdGhpc1JlZ2lzdGVyID0gdlBDWzFdLnUub3BlcmFuZDsKKyAgICAgICAgSlNWYWx1ZSB0
aGlzVmFsID0gY2FsbEZyYW1lLT5yKHRoaXNSZWdpc3RlcikuanNWYWx1ZSgpOworICAgICAgICBp
ZiAodGhpc1ZhbC5uZWVkc1RoaXNDb252ZXJzaW9uKCkpCisgICAgICAgICAgICBjYWxsRnJhbWUt
PnIodGhpc1JlZ2lzdGVyKSA9IEpTVmFsdWUodGhpc1ZhbC50b1RoaXNPYmplY3QoY2FsbEZyYW1l
KSk7CisgICAgICAgIAorICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3Ro
aXMpOworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgfQogICAgIERFRklORV9PUENP
REUob3BfaW5pdF9sYXp5X3JlZykgewogICAgICAgICAvKiBpbml0X2xhenlfcmVnIGRzdChyKQog
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IGE1MDhkMGM3ODAxYTYyZjdkZDU4OWViMmIxNTE0OWQ3MzA0Y2M3
NmIuLjQxNDU3MWVkMWMxYzMzMTk1ZjlkZWMwYTFiNDQ1NTUyMGQ5YzQwODkgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0yMjUsNiArMjI1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2NhbGxlZSkKICAgICAgICAgREVGSU5FX09QKG9w
X2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29udmVydF90aGlzKQorICAgICAg
ICBERUZJTkVfT1Aob3BfY29udmVydF90aGlzX3N0cmljdCkKICAgICAgICAgREVGSU5FX09QKG9w
X2luaXRfbGF6eV9yZWcpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfYXJndW1lbnRzKQog
ICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2NhbGxfdmFyYXJncykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0cnVjdCkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnZlcnRfdGhpcykKKyAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpCiAjaWYgIVVTRShKU1ZBTFVF
MzIpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApp
bmRleCA2YjJlNzBlMWQ1ZjllNDg1MTVjMDdkMGFmYWZhYTM0MjdlMjliMWIwLi4wNWU1N2ZlNzEw
NjI0OTUwNWU0MDQwNDJlMzU0MjA5Y2Y1MTQwYmQyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC03MzgsNiArNzM4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfY2FsbGVlKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CkBAIC04NDUsNiArODQ2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kaXYoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCmluZGV4IGM4MTkzMmE2MGJjMWEwZTFmOTk1MTlkZjU2N2MwZjViZDkzYzVkMDUuLmIzNDhh
YzY5ZTllODI0YjBkMTFmYTE2ZjJkYmEyNzNkMTA5ODZiODMgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKQEAgLTg2NSw3ICs4NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCByZWdUMCk7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVk
aWF0ZShiYXNlKSkKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0Nl
bGwocmVnVDApKTsKLSAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkp
IHsKKyAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkgfHwgbV9jb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
T0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgcmVnVDIpOwogICAgICAgICBp
c05vdE9iamVjdC5hcHBlbmQoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX3R5cGUpKSwgSW1tMzIoT2JqZWN0VHlw
ZSkpKTsKICAgICB9CkBAIC0xMjI3LDYgKzEyMjcsMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29u
dmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKFN0
cnVjdHVyZSwgbV90eXBlSW5mby5tX2ZsYWdzKSksIEltbTMyKE5lZWRzVGhpc0NvbnZlcnNpb24p
KSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBKdW1wIG5vdE51bGwg
PSBicmFuY2hUZXN0UHRyKE5vblplcm8sIHJlZ1QwKTsKKyAgICBtb3ZlKEltbVB0cihKU1ZhbHVl
OjplbmNvZGUoanNOdWxsKCkpKSwgcmVnVDApOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOworICAgIEp1bXAgc2V0VGhp
cyA9IGp1bXAoKTsKKyAgICBub3ROdWxsLmxpbmsodGhpcyk7CisgICAgSnVtcCBpc0ltbWVkaWF0
ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgcmVnVDEpOworICAgIEp1
bXAgbm90QW5PYmplY3QgPSBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QzLCBPQkpFQ1Rf
T0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fdHlwZSkpLCBJbW0zMihPYmplY3RUeXBl
KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMSwg
T0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX2ZsYWdzKSksIEltbTMyKE5l
ZWRzVGhpc0NvbnZlcnNpb24pKSk7CisgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKKyAgICBu
b3RBbk9iamVjdC5saW5rKHRoaXMpOworICAgIHNldFRoaXMubGluayh0aGlzKTsKK30KKwogdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CkBAIC0xMjc2LDYgKzEyOTMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRf
dGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBz
dHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfY29udmVydF90aGlzX3N0cmljdCk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVn
VDApOworICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCmluZGV4IGFkM2I1NTgyNmEyZmVhMGE5NmFmNjQ5M2IzYzc0MTUxMGZkN2RlZmUuLmQ2
MmFkYWQ5NDgwMjc2MWI2NzFhMGQwNjhjNjJhYjI2N2QzMGJjNTcgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xMjE1LDcgKzEyMTUsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfcG5hbWVzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3du
Tm90SW1tZWRpYXRlKGJhc2UpKQogICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoYnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGlmIChiYXNl
ICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSkgeworICAgIGlmIChiYXNlICE9IG1fY29k
ZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsK
ICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBt
X3N0cnVjdHVyZSkpLCByZWdUMik7CiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2g4
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5
cGVJbmZvLm1fdHlwZSkpLCBJbW0zMihPYmplY3RUeXBlKSkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCmluZGV4IGYxZWMwNzk2Mjk2ZDI5ZTBiMTg5ODU0ZTY3NDI5ODY4YTNmYzU1MWMu
LjhkNTQ0ZTczMzkwNjQ0YTRlMmU2ZmE2MWZiYWVlOWM3YTc3NTIwNmYgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcApAQCAtMTA2NSw3ICsxMDY1LDkgQEAgc3RhdGljIE5FVkVSX0lOTElORSB2b2lk
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbEQK
ICAgICAgICAgcmV0dXJuIDA7IFwKICAgICB9IHdoaWxlICgwKQogI2RlZmluZSBWTV9USFJPV19F
WENFUFRJT05fQVRfRU5EKCkgXAotICAgIHJldHVyblRvVGhyb3dUcmFtcG9saW5lKHN0YWNrRnJh
bWUuZ2xvYmFsRGF0YSwgU1RVQl9SRVRVUk5fQUREUkVTUywgU1RVQl9SRVRVUk5fQUREUkVTUykK
KyAgICBkbyB7XAorICAgICAgICByZXR1cm5Ub1Rocm93VHJhbXBvbGluZShzdGFja0ZyYW1lLmds
b2JhbERhdGEsIFNUVUJfUkVUVVJOX0FERFJFU1MsIFNUVUJfUkVUVVJOX0FERFJFU1MpO1wKKyAg
ICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIENIRUNLX0ZPUl9FWENFUFRJT04oKSBcCiAgICAgZG8g
eyBcCkBAIC0xMjk1LDEyICsxMjk3LDIyIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRK
U1ZhbHVlLCBvcF9jb252ZXJ0X3RoaXMpCiAKICAgICBKU1ZhbHVlIHYxID0gc3RhY2tGcmFtZS5h
cmdzWzBdLmpzVmFsdWUoKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUu
Y2FsbEZyYW1lOwotCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IHYxLnRvVGhpc09iamVjdChjYWxs
RnJhbWUpOwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVk
SlNWYWx1ZSwgb3BfY29udmVydF90aGlzX3N0cmljdCkKK3sKKyAgICBTVFVCX0lOSVRfU1RBQ0tf
RlJBTUUoc3RhY2tGcmFtZSk7CisgICAgCisgICAgSlNWYWx1ZSB2MSA9IHN0YWNrRnJhbWUuYXJn
c1swXS5qc1ZhbHVlKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNh
bGxGcmFtZTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHYxLnRvU3RyaWN0VGhpc09iamVjdChjYWxs
RnJhbWUpOworICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBv
cF9lbmQpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpAQCAtMTQw
NCw3ICsxNDE2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lkX2dl
bmVyaWMpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCi0gICAg
UHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc3RhY2tGcmFt
ZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgc3RhY2tGcmFt
ZS5hcmdzWzBdLmpzVmFsdWUoKS5wdXQoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJhbWUu
YXJnc1sxXS5pZGVudGlmaWVyKCksIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3Qp
OwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiB9CkBAIC0xNDEzLDcgKzE0MjUs
NyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVy
aWMpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogICAgIAotICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHN0YWNrRnJh
bWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHN0YWNrRnJh
bWUuYXJnc1swXS5qc1ZhbHVlKCkucHV0RGlyZWN0KHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpLCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgp
LCBzbG90KTsKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogfQpAQCAtMTQ0MSw3
ICsxNDUzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lkKQogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAgICAgSWRlbnRp
ZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpOwogICAgIAotICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICBzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpLnB1dChjYWxsRnJhbWUsIGlkZW50LCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1
ZSgpLCBzbG90KTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTE0NjAsNyArMTQ3Miw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZF9kaXJlY3QpCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKICAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0
YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCk7CiAgICAgCi0gICAgUHV0UHJvcGVydHlTbG90
IHNsb3Q7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
aXNTdHJpY3RNb2RlKCkpOwogICAgIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkucHV0RGly
ZWN0KGNhbGxGcmFtZSwgaWRlbnQsIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3Qp
OwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhY2tGcmFtZS5jYWxsRnJhbWUt
PmNvZGVCbG9jaygpOwpAQCAtMTQ3OSw4ICsxNDkxLDggQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3BfcHV0X2J5X2lkX2ZhaWwpCiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0
YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgIElkZW50aWZpZXImIGlkZW50ID0gc3RhY2tGcmFtZS5h
cmdzWzFdLmlkZW50aWZpZXIoKTsKLQotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIAor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0
TW9kZSgpKTsKICAgICBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLnB1dChjYWxsRnJhbWUs
IGlkZW50LCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsKIAogICAgIENIRUNL
X0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CkBAIC0xNDkzLDcgKzE1MDUsNyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfZGlyZWN0X2ZhaWwpCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKICAgICBJZGVudGlmaWVyJiBpZGVu
dCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCk7CiAgICAgCi0gICAgUHV0UHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCku
cHV0RGlyZWN0KGNhbGxGcmFtZSwgaWRlbnQsIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCks
IHNsb3QpOwogICAgIAogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CkBAIC0xODgw
LDcgKzE4OTIsMTEgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2Rl
bF9ieV9pZCkKICAgICAKICAgICBKU09iamVjdCogYmFzZU9iaiA9IHN0YWNrRnJhbWUuYXJnc1sw
XS5qc1ZhbHVlKCkudG9PYmplY3QoY2FsbEZyYW1lKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNCb29sZWFuKGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5h
cmdzWzFdLmlkZW50aWZpZXIoKSkpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5k
ZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCkp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGNvdWxkRGVsZXRlKTsKKyAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQor
ICAgICAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEtPmV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJv
cihzdGFja0ZyYW1lLmNhbGxGcmFtZSwgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisK
ICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTIyMTUsOCArMjIzMSwxMCBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkLCBvcF90ZWFyX29mZl9hY3RpdmF0aW9uKQogICAgIEFTU0VSVChzdGFja0ZyYW1l
LmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CiAgICAgSlNB
Y3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKHN0YWNrRnJhbWUuYXJnc1swXS5q
c1ZhbHVlKCkpOwogICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKLSAgICBpZiAoSlNW
YWx1ZSB2ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKSkKLSAgICAgICAgYXNBcmd1bWVu
dHModiktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlvbik7CisgICAgaWYgKEpTVmFsdWUgdiA9IHN0
YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKCFzdGFja0ZyYW1lLmNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgYXNBcmd1
bWVudHModiktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlvbik7CisgICAgfQogfQogCiBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkLCBvcF90ZWFyX29mZl9hcmd1bWVudHMpCkBAIC0yNDk2LDcgKzI1
MTQsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfdmFsKQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoY2FsbEZyYW1lLCBzdWJzY3JpcHQu
dG9TdHJpbmcoY2FsbEZyYW1lKSk7CiAgICAgICAgIGlmICghc3RhY2tGcmFtZS5nbG9iYWxEYXRh
LT5leGNlcHRpb24pIHsgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJl
dyBhbiBleGNlcHRpb24uCi0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpKTsKICAgICAgICAgICAgIGJhc2VWYWx1ZS5wdXQoY2FsbEZyYW1lLCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjUzOSw3ICsyNTU3LDcgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X3ZhbF9ieXRlX2FycmF5KQogICAg
IH0gZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoY2FsbEZyYW1lLCBzdWJzY3Jp
cHQudG9TdHJpbmcoY2FsbEZyYW1lKSk7CiAgICAgICAgIGlmICghc3RhY2tGcmFtZS5nbG9iYWxE
YXRhLT5leGNlcHRpb24pIHsgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0
aHJldyBhbiBleGNlcHRpb24uCi0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlz
U3RyaWN0TW9kZSgpKTsKICAgICAgICAgICAgIGJhc2VWYWx1ZS5wdXQoY2FsbEZyYW1lLCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQ4NiwxOSArMzUwNCwy
MiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZGVsX2J5X3ZhbCkK
ICAgICBKU09iamVjdCogYmFzZU9iaiA9IGJhc2VWYWx1ZS50b09iamVjdChjYWxsRnJhbWUpOyAv
LyBtYXkgdGhyb3cKIAogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gc3RhY2tGcmFtZS5hcmdzWzFd
LmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBib29sIHJlc3VsdDsKICAgICB1
aW50MzJfdCBpOwogICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQotICAgICAgICByZXN1
bHQgPSBqc0Jvb2xlYW4oYmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBpKSk7Cisg
ICAgICAgIHJlc3VsdCA9IGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgaSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKICAgICAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eShjYWxsRnJhbWUsIHN1YnNjcmlwdC50b1N0cmluZyhjYWxsRnJhbWUpKTsK
ICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwotICAgICAgICByZXN1bHQgPSBqc0Jvb2xl
YW4oYmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBwcm9wZXJ0eSkpOworICAgICAg
ICByZXN1bHQgPSBiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIHByb3BlcnR5KTsK
ICAgICB9CiAKKyAgICBpZiAoIXJlc3VsdCAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSkKKyAgICAgICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24gPSBj
cmVhdGVUeXBlRXJyb3Ioc3RhY2tGcmFtZS5jYWxsRnJhbWUsICJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpOworCiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1
dF9nZXR0ZXIpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCBiL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCmluZGV4IDJiMjJlNmQ0NDljNWZjY2JkY2U5OGFm
ZjA5ZDc4OTQzOGU3NzI3MDkuLmJkN2QxOWNkZDZjN2NkMTZiNjhmOTkwOGIzZTY0NDliYTk3ODdm
MmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCkBAIC0yOTYsNiArMjk2LDcgQEAgZXh0ZXJuICJDIiB7
CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NvbnN0cnVjdF9Ob3RKU0NvbnN0
cnVjdChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVC
IGN0aV9vcF9jcmVhdGVfdGhpcyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRK
U1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jb252ZXJ0X3RoaXMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY29udmVydF90aGlzX3N0cmlj
dChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0
aV9vcF9jcmVhdGVfYXJndW1lbnRzKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2Rl
ZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHNfbm9fcGFyYW1zKFNUVUJf
QVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2Rl
bF9ieV9pZChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKaW5kZXggNDAwMjNmOGI2OWQ3MjZjNTQwM2RjNzk2Yzg2YjFjNzc5ZWQ4MjNiMS4uYTMzNmZk
NWMyMDBmMmFjMTYyNWEyNDNmZjUxZWM5YmU0ZjczM2M5MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCkBAIC0yNDksMTAgKzI0OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5
KCkKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGVGdW5jdGlvbkJvZHkoYm9vbCBpblN0cmlj
dENvbnRleHQpCiAgICAgewogICAgICAgICB1c2VzQ2xvc3VyZXMoKTsKLSAgICAgICAgcmV0dXJu
IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEpOworICAgICAgICByZXR1cm4g
RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKG1fZ2xvYmFsRGF0YSwgaW5TdHJpY3RDb250ZXh0KTsK
ICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0
dGVyT3JTZXR0ZXJQcm9wZXJ0eShQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRp
ZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5
LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUs
IGludCBib2R5RW5kTGluZSkKQEAgLTU3OCw2ICs1NzgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Y29uc3QgSWRlbnRpZmllciYgZ2V0TmFtZShQcm9wZXJ0eSBwcm9wZXJ0eSkgeyByZXR1cm4gcHJv
cGVydHktPm5hbWUoKTsgfQogICAgIFByb3BlcnR5Tm9kZTo6VHlwZSBnZXRUeXBlKFByb3BlcnR5
IHByb3BlcnR5KSB7IHJldHVybiBwcm9wZXJ0eS0+dHlwZSgpOyB9CisKKyAgICBib29sIGlzUmVz
b2x2ZShFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gZXhwci0+aXNSZXNvbHZlTm9kZSgp
OyB9CiBwcml2YXRlOgogICAgIHN0cnVjdCBTY29wZSB7CiAgICAgICAgIFNjb3BlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1Bh
cnNlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCmluZGV4IDBlNTI2
YWM3N2ZkZGQ3NGJjYmM2MGE3MDBlMWY3NTdmZGVmYWEwZWMuLmJjN2UxMThlZjA5N2I4OTQwZjUz
NTE2YWJlOWRmZGJiMTRiM2I0MzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9K
U1BhcnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcApAQCAt
NDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgZmFpbCgpIGRvIHsgbV9lcnJv
ciA9IHRydWU7IHJldHVybiAwOyB9IHdoaWxlICgwKQogI2RlZmluZSBmYWlsSWZGYWxzZShjb25k
KSBkbyB7IGlmICghKGNvbmQpKSBmYWlsKCk7IH0gd2hpbGUgKDApCiAjZGVmaW5lIGZhaWxJZlRy
dWUoY29uZCkgZG8geyBpZiAoKGNvbmQpKSBmYWlsKCk7IH0gd2hpbGUgKDApCisjZGVmaW5lIGZh
aWxJZlN0cmljdFRydWUoY29uZCkgZG8geyBpZiAoKGNvbmQpICYmIHN0cmljdE1vZGUoKSkgZmFp
bCgpOyB9IHdoaWxlICgwKQorI2RlZmluZSBmYWlsSWZTdHJpY3RGYWxzZShjb25kKSBkbyB7IGlm
ICgoIShjb25kKSkgJiYgc3RyaWN0TW9kZSgpKSBmYWlsKCk7IH0gd2hpbGUgKDApCiAjZGVmaW5l
IGNvbnN1bWVPckZhaWwodG9rZW5UeXBlKSBkbyB7IGlmICghY29uc3VtZSh0b2tlblR5cGUpKSBm
YWlsKCk7IH0gd2hpbGUgKDApCiAjZGVmaW5lIG1hdGNoT3JGYWlsKHRva2VuVHlwZSkgZG8geyBp
ZiAoIW1hdGNoKHRva2VuVHlwZSkpIGZhaWwoKTsgfSB3aGlsZSAoMCkKICNkZWZpbmUgZmFpbElm
U3RhY2tPdmVyZmxvdygpIGRvIHsgZmFpbElmRmFsc2UoY2FuUmVjdXJzZSgpKTsgfSB3aGlsZSAo
MCkKQEAgLTY3LDggKzY5LDggQEAgc3RhdGljIGNvbnN0IHB0cmRpZmZfdCBrTWF4UGFyc2VyU3Rh
Y2tVc2FnZSA9IDEyOCAqIHNpemVvZih2b2lkKikgKiAxMDI0OwogCiBjbGFzcyBKU1BhcnNlciB7
CiBwdWJsaWM6Ci0gICAgSlNQYXJzZXIoTGV4ZXIqLCBKU0dsb2JhbERhdGEqLCBGdW5jdGlvblBh
cmFtZXRlcnMqLCBTb3VyY2VQcm92aWRlciopOwotICAgIGJvb2wgcGFyc2VQcm9ncmFtKCk7Cisg
ICAgSlNQYXJzZXIoTGV4ZXIqLCBKU0dsb2JhbERhdGEqLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBi
b29sIGlzU3RyaWN0Q29udGV4dCwgU291cmNlUHJvdmlkZXIqKTsKKyAgICBib29sIHBhcnNlUHJv
Z3JhbShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0Kik7CiBwcml2YXRlOgogICAgIHN0
cnVjdCBBbGxvd0luT3ZlcnJpZGUgewogICAgICAgICBBbGxvd0luT3ZlcnJpZGUoSlNQYXJzZXIq
IHBhcnNlcikKQEAgLTkwLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9sYXN0TGluZSA9
IG1fdG9rZW4ubV9pbmZvLmxpbmU7CiAgICAgICAgIG1fbGFzdFRva2VuRW5kID0gbV90b2tlbi5t
X2luZm8uZW5kT2Zmc2V0OwogICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcihtX2xh
c3RMaW5lKTsKLSAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXgoJm1fdG9rZW4u
bV9kYXRhLCAmbV90b2tlbi5tX2luZm8sIGxleFR5cGUpOworICAgICAgICBtX3Rva2VuLm1fdHlw
ZSA9IG1fbGV4ZXItPmxleCgmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1faW5mbywgbGV4VHlw
ZSwgc3RyaWN0TW9kZSgpKTsKICAgICAgICAgbV90b2tlbkNvdW50Kys7CiAgICAgfQogCkBAIC0x
MjEsOSArMTIzLDIzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tlbi5t
X2luZm8uZW5kT2Zmc2V0OwogICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImKTsK
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0
ZW1lbnQoVHJlZUJ1aWxkZXImKTsKKyAgICAKKyAgICB2b2lkIHN0YXJ0TG9vcCgpIHsgY3VycmVu
dFNjb3BlKCktPnN0YXJ0TG9vcCgpOyB9CisgICAgdm9pZCBlbmRMb29wKCkgeyBjdXJyZW50U2Nv
cGUoKS0+ZW5kTG9vcCgpOyB9CisgICAgdm9pZCBzdGFydFN3aXRjaCgpIHsgY3VycmVudFNjb3Bl
KCktPnN0YXJ0U3dpdGNoKCk7IH0KKyAgICB2b2lkIGVuZFN3aXRjaCgpIHsgY3VycmVudFNjb3Bl
KCktPmVuZFN3aXRjaCgpOyB9CisgICAgdm9pZCBzZXRTdHJpY3RNb2RlKCkgeyBjdXJyZW50U2Nv
cGUoKS0+c2V0U3RyaWN0TW9kZSgpOyB9CisgICAgYm9vbCBzdHJpY3RNb2RlKCkgeyByZXR1cm4g
Y3VycmVudFNjb3BlKCktPnN0cmljdE1vZGUoKTsgfQorICAgIGJvb2wgaXNWYWxpZFN0cmljdE1v
ZGUoKSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+aXNWYWxpZFN0cmljdE1vZGUoKTsgfQorICAg
IGJvb2wgZGVjbGFyZVBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyKiBpZGVudCkgeyByZXR1cm4g
Y3VycmVudFNjb3BlKCktPmRlY2xhcmVQYXJhbWV0ZXIoaWRlbnQpOyB9CisgICAgYm9vbCBicmVh
a0lzVmFsaWQoKSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+YnJlYWtJc1ZhbGlkKCk7IH0KKyAg
ICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyKiBsYWJlbCkgeyBjdXJyZW50U2NvcGUo
KS0+cHVzaExhYmVsKGxhYmVsKTsgfQorICAgIHZvaWQgcG9wTGFiZWwoKSB7IGN1cnJlbnRTY29w
ZSgpLT5wb3BMYWJlbCgpOyB9CisgICAgYm9vbCBoYXNMYWJlbChjb25zdCBJZGVudGlmaWVyKiBs
YWJlbCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPmhhc0xhYmVsKGxhYmVsKTsgfQorCisgICAg
ZW51bSBTb3VyY2VFbGVtZW50c01vZGUgeyBDaGVja0ZvclN0cmljdE1vZGUsIERvbnRDaGVja0Zv
clN0cmljdE1vZGUgfTsKKyAgICB0ZW1wbGF0ZSA8U291cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhU
cmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJl
Y3RpdmUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBw
YXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VWYXJEZWNsYXJhdGlvbihUcmVlQnVp
bGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBw
YXJzZUNvbnN0RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImKTsKQEAgLTE5OSwzMiArMjE1LDExMyBA
QCBwcml2YXRlOgogICAgIGludCBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICBpbnQgbV9ub25MSFND
b3VudDsKICAgICBib29sIG1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZDsKKyAgICBpbnQgbV9zdGF0
ZW1lbnREZXB0aDsKKyAgICBpbnQgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50OworICAgIGNv
bnN0IElkZW50aWZpZXIqIG1fbGFzdElkZW50aWZpZXI7CisKKyAgICBzdHJ1Y3QgRGVwdGhNYW5h
Z2VyIHsKKyAgICAgICAgRGVwdGhNYW5hZ2VyKGludCogZGVwdGgpCisgICAgICAgICAgICA6IG1f
b3JpZ2luYWxEZXB0aCgqZGVwdGgpCisgICAgICAgICAgICAsIG1fZGVwdGgoZGVwdGgpCisgICAg
ICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgfkRlcHRoTWFuYWdlcigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgICptX2RlcHRoID0gbV9vcmlnaW5hbERlcHRoOworICAgICAgICB9
CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX29yaWdpbmFsRGVwdGg7Cisg
ICAgICAgIGludCogbV9kZXB0aDsKKyAgICB9OwogCiAgICAgc3RydWN0IFNjb3BlIHsKLSAgICAg
ICAgU2NvcGUoKQotICAgICAgICAgICAgOiBtX3VzZXNFdmFsKGZhbHNlKQorICAgICAgICBTY29w
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgc3RyaWN0TW9kZSkKKyAgICAgICAgICAg
IDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCisgICAgICAgICAgICAsIG1fdXNlc0V2YWwoZmFs
c2UpCiAgICAgICAgICAgICAsIG1fbmVlZHNGdWxsQWN0aXZhdGlvbihmYWxzZSkKICAgICAgICAg
ICAgICwgbV9hbGxvd3NOZXdEZWNscyh0cnVlKQorICAgICAgICAgICAgLCBtX3N0cmljdE1vZGUo
c3RyaWN0TW9kZSkKKyAgICAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9kZSh0cnVlKQorICAg
ICAgICAgICAgLCBtX2xvb3BEZXB0aCgwKQorICAgICAgICAgICAgLCBtX3N3aXRjaERlcHRoKDAp
CisgICAgICAgICAgICAsIG1fbGFiZWxzKDApCiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgdm9pZCBkZWNsYXJlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQp
CisgICAgICAgIHZvaWQgc3RhcnRTd2l0Y2goKSB7IG1fc3dpdGNoRGVwdGgrKzsgfQorICAgICAg
ICB2b2lkIGVuZFN3aXRjaCgpIHsgbV9zd2l0Y2hEZXB0aC0tOyB9CisgICAgICAgIHZvaWQgc3Rh
cnRMb29wKCkgeyBtX2xvb3BEZXB0aCsrOyB9CisgICAgICAgIHZvaWQgZW5kTG9vcCgpIHsgQVNT
RVJUKG1fbG9vcERlcHRoKTsgbV9sb29wRGVwdGgtLTsgfQorICAgICAgICBib29sIGluTG9vcCgp
IHsgcmV0dXJuICEhbV9sb29wRGVwdGg7IH0KKyAgICAgICAgYm9vbCBicmVha0lzVmFsaWQoKSB7
IHJldHVybiBtX2xvb3BEZXB0aCB8fCBtX3N3aXRjaERlcHRoOyB9CisgICAgICAgIHZvaWQgcHVz
aExhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxhYmVsKQogICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW1fbGFiZWxzKQorICAgICAgICAgICAgICAgIG1fbGFiZWxzID0gbmV3IExhYmVsU3RhY2s7
CisgICAgICAgICAgICBtX2xhYmVscy0+YXBwZW5kKGxhYmVsLT5pbXBsKCkpOworICAgICAgICB9
CisgICAgICAgIHZvaWQgcG9wTGFiZWwoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
bV9sYWJlbHMpOworICAgICAgICAgICAgQVNTRVJUKG1fbGFiZWxzLT5zaXplKCkpOworICAgICAg
ICAgICAgbV9sYWJlbHMtPnJlbW92ZUxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICBib29sIGhh
c0xhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW1fbGFiZWxzKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGZvciAoaW50IGkgPSBtX2xhYmVscy0+c2l6ZSgpOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAg
ICAgICAgaWYgKG1fbGFiZWxzLT5hdChpIC0gMSkgPT0gbGFiZWwtPmltcGwoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzRnVuY3Rpb24oKSB7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIAorICAgICAgICBib29sIGRlY2xhcmVWYXJpYWJsZShjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCkKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbCBpc1ZhbGlkU3Ry
aWN0TW9kZSA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCAhPSAqaWRlbnQgJiYg
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgIT0gKmlkZW50OworICAgICAg
ICAgICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1faXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxp
ZFN0cmljdE1vZGU7CiAgICAgICAgICAgICBtX2RlY2xhcmVkVmFyaWFibGVzLmFkZChpZGVudC0+
dXN0cmluZygpLmltcGwoKSk7CisgICAgICAgICAgICByZXR1cm4gaXNWYWxpZFN0cmljdE1vZGU7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgZGVjbGFyZVdyaXRlKGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9zdHJpY3RN
b2RlKTsKKyAgICAgICAgICAgIG1fd3JpdHRlblZhcmlhYmxlcy5hZGQoaWRlbnQtPmltcGwoKSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoY29uc3Qg
SWRlbnRpZmllciogaWRlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2RlY2xhcmVk
VmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LT5pbXBsKCkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIG1fZGVsZXRlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPmltcGwo
KSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgdm9pZCBwcmV2ZW50TmV3RGVjbHMoKSB7IG1fYWxsb3dzTmV3RGVjbHMgPSBmYWxzZTsgfQog
ICAgICAgICBib29sIGFsbG93c05ld0RlY2xzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NOZXdE
ZWNsczsgfQogCisgICAgICAgIGJvb2wgZGVjbGFyZVBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVy
KiBpZGVudCkKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9
IG1fZGVjbGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKS5zZWNvbmQg
JiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAmJiBtX2dsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyAhPSAqaWRlbnQ7CisgICAgICAgICAgICBt
X2lzVmFsaWRTdHJpY3RNb2RlID0gbV9pc1ZhbGlkU3RyaWN0TW9kZSAmJiBpc1ZhbGlkU3RyaWN0
TW9kZTsKKyAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZTsKKyAgICAgICAgfQor
ICAgICAgICAKICAgICAgICAgdm9pZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgYm9vbCBpc0V2YWwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdXNlc0V2YWwgfD0gaXNF
dmFsOwogICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmlt
cGwoKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgbmVlZHNGdWxsQWN0aXZh
dGlvbigpIHsgbV9uZWVkc0Z1bGxBY3RpdmF0aW9uID0gdHJ1ZTsgfQorICAgICAgICB2b2lkIHNl
dE5lZWRzRnVsbEFjdGl2YXRpb24oKSB7IG1fbmVlZHNGdWxsQWN0aXZhdGlvbiA9IHRydWU7IH0K
ICAgICAgICAgCi0gICAgICAgIHZvaWQgY29sbGVjdEZyZWVWYXJpYWJsZXMoU2NvcGUqIG5lc3Rl
ZFNjb3BlLCBib29sIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKQorICAgICAgICBib29sIGNv
bGxlY3RGcmVlVmFyaWFibGVzKFNjb3BlKiBuZXN0ZWRTY29wZSwgYm9vbCBzaG91bGRUcmFja0Ns
b3NlZFZhcmlhYmxlcykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5t
X3VzZXNFdmFsKQogICAgICAgICAgICAgICAgIG1fdXNlc0V2YWwgPSB0cnVlOwpAQCAtMjM2LDYg
KzMzMyw0NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChzaG91bGRUcmFja0Nsb3Nl
ZFZhcmlhYmxlcykKICAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJsZXMuYWRkKCpw
dHIpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX3dyaXR0
ZW5WYXJpYWJsZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgSWRlbnRpZmllclNldDo6aXRl
cmF0b3IgZW5kID0gbmVzdGVkU2NvcGUtPm1fd3JpdHRlblZhcmlhYmxlcy5lbmQoKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3Bl
LT5tX3dyaXR0ZW5WYXJpYWJsZXMuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRh
aW5zKCpwdHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIG1fd3JpdHRlblZhcmlhYmxlcy5hZGQoKnB0cik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlbGV0ZWRW
YXJpYWJsZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgSWRlbnRpZmllclNldDo6aXRlcmF0
b3IgZW5kID0gbmVzdGVkU2NvcGUtPm1fZGVsZXRlZFZhcmlhYmxlcy5lbmQoKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5t
X2RlbGV0ZWRWYXJpYWJsZXMuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5z
KCpwdHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBpZiAobV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbV9k
ZWxldGVkVmFyaWFibGVzLmFkZCgqcHRyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
Z2V0VW5jYXB0dXJlZFdyaXR0ZW5WYXJpYWJsZXMoSWRlbnRpZmllclNldCYgd3JpdHRlblZhcmlh
YmxlcykKKyAgICAgICAgeworICAgICAgICAgICAgSWRlbnRpZmllclNldDo6aXRlcmF0b3IgZW5k
ID0gbV93cml0dGVuVmFyaWFibGVzLmVuZCgpOworICAgICAgICAgICAgZm9yIChJZGVudGlmaWVy
U2V0OjppdGVyYXRvciBwdHIgPSBtX3dyaXR0ZW5WYXJpYWJsZXMuYmVnaW4oKTsgcHRyICE9IGVu
ZDsgKytwdHIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZGVjbGFyZWRWYXJpYWJsZXMuY29u
dGFpbnMoKnB0cikpCisgICAgICAgICAgICAgICAgICAgIHdyaXR0ZW5WYXJpYWJsZXMuYWRkKCpw
dHIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYm9vbCBnZXREZWxldGVk
VmFyaWFibGVzKElkZW50aWZpZXJTZXQmIGRlbGV0ZWRWYXJpYWJsZXMpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fZGVsZXRlZFZhcmlhYmxl
cy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoSWRlbnRpZmllclNldDo6aXRlcmF0b3IgcHRyID0g
bV9kZWxldGVkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1fZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRl
bGV0ZWRWYXJpYWJsZXMuc3dhcChtX2RlbGV0ZWRWYXJpYWJsZXMpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldENhcHR1cmVkVmFyaWFibGVz
KElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKQpAQCAtMjUwLDEzICszODYsMjYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXB0dXJlZFZhcmlhYmxlcy5hZGQoKnB0cik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgdm9pZCBzZXRTdHJpY3RNb2RlKCkgeyBt
X3N0cmljdE1vZGUgPSB0cnVlOyB9CisgICAgICAgIGJvb2wgc3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaWN0TW9kZTsgfQorICAgICAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkU3RyaWN0TW9kZTsgfQorCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgYm9vbCBtX3VzZXNFdmFsOwotICAgICAgICBib29sIG1fbmVlZHNGdWxsQWN0aXZhdGlv
bjsKLSAgICAgICAgYm9vbCBtX2FsbG93c05ld0RlY2xzOworICAgICAgICBKU0dsb2JhbERhdGEq
IG1fZ2xvYmFsRGF0YTsKKyAgICAgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICAgICAgYm9v
bCBtX25lZWRzRnVsbEFjdGl2YXRpb24gOiAxOworICAgICAgICBib29sIG1fYWxsb3dzTmV3RGVj
bHMgOiAxOworICAgICAgICBib29sIG1fc3RyaWN0TW9kZSA6IDE7CisgICAgICAgIGJvb2wgbV9p
c1ZhbGlkU3RyaWN0TW9kZSA6IDE7CisgICAgICAgIGludCBtX2xvb3BEZXB0aDsKKyAgICAgICAg
aW50IG1fc3dpdGNoRGVwdGg7CisgICAgICAgIHR5cGVkZWYgVmVjdG9yPFN0cmluZ0ltcGwqLCAy
PiBMYWJlbFN0YWNrOworICAgICAgICBMYWJlbFN0YWNrKiBtX2xhYmVsczsKICAgICAgICAgSWRl
bnRpZmllclNldCBtX2RlY2xhcmVkVmFyaWFibGVzOwogICAgICAgICBJZGVudGlmaWVyU2V0IG1f
dXNlZFZhcmlhYmxlczsKICAgICAgICAgSWRlbnRpZmllclNldCBtX2Nsb3NlZFZhcmlhYmxlczsK
KyAgICAgICAgSWRlbnRpZmllclNldCBtX3dyaXR0ZW5WYXJpYWJsZXM7CisgICAgICAgIElkZW50
aWZpZXJTZXQgbV9kZWxldGVkVmFyaWFibGVzOwogICAgIH07CiAgICAgCiAgICAgdHlwZWRlZiBW
ZWN0b3I8U2NvcGUsIDEwPiBTY29wZVN0YWNrOwpAQCAtMjgxLDE5ICs0MzAsMjAgQEAgcHJpdmF0
ZToKICAgICAKICAgICBTY29wZVJlZiBwdXNoU2NvcGUoKQogICAgIHsKLSAgICAgICAgbV9zY29w
ZVN0YWNrLmFwcGVuZChTY29wZSgpKTsKKyAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29w
ZShtX2dsb2JhbERhdGEsIG1fc2NvcGVTdGFjay5pc0VtcHR5KCkgPyBmYWxzZSA6IG1fc2NvcGVT
dGFjay5sYXN0KCkuc3RyaWN0TW9kZSgpKSk7CiAgICAgICAgIHJldHVybiBjdXJyZW50U2NvcGUo
KTsKICAgICB9CiAKLSAgICB2b2lkIHBvcFNjb3BlKFNjb3BlUmVmIHNjb3BlLCBib29sIHNob3Vs
ZFRyYWNrQ2xvc2VkVmFyaWFibGVzKQorICAgIGJvb2wgcG9wU2NvcGUoU2NvcGVSZWYgc2NvcGUs
IGJvb2wgc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMpCiAgICAgewogICAgICAgICBBU1NFUlRf
VU5VU0VEKHNjb3BlLCBzY29wZS5pbmRleCgpID09IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxKTsK
ICAgICAgICAgQVNTRVJUKG1fc2NvcGVTdGFjay5zaXplKCkgPiAxKTsKLSAgICAgICAgbV9zY29w
ZVN0YWNrW21fc2NvcGVTdGFjay5zaXplKCkgLSAyXS5jb2xsZWN0RnJlZVZhcmlhYmxlcygmbV9z
Y29wZVN0YWNrLmxhc3QoKSwgc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMpOworICAgICAgICBi
b29sIHJlc3VsdCA9IG1fc2NvcGVTdGFja1ttX3Njb3BlU3RhY2suc2l6ZSgpIC0gMl0uY29sbGVj
dEZyZWVWYXJpYWJsZXMoJm1fc2NvcGVTdGFjay5sYXN0KCksIHNob3VsZFRyYWNrQ2xvc2VkVmFy
aWFibGVzKTsKICAgICAgICAgbV9zY29wZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBkZWNsYXJlVmFyaWFibGUoY29uc3Qg
SWRlbnRpZmllciogaWRlbnQpCisgICAgYm9vbCBkZWNsYXJlVmFyaWFibGUoY29uc3QgSWRlbnRp
ZmllciogaWRlbnQpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNp
emUoKSAtIDE7CiAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSk7CkBAIC0z
MDEsMTkgKzQ1MSwzMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAg
QVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKICAgICAgICAgfQotICAgICAgICBtX3Nj
b3BlU3RhY2tbaV0uZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgcmV0dXJuIG1fc2Nv
cGVTdGFja1tpXS5kZWNsYXJlVmFyaWFibGUoaWRlbnQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGRlY2xhcmVXcml0ZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKKyAgICB7CisgICAgICAgIGlm
ICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKQorICAgICAgICAgICAgbV9zY29wZVN0YWNrLmxh
c3QoKS5kZWNsYXJlV3JpdGUoaWRlbnQpOwogICAgIH0KIAorICAgIGJvb2wgZGVsZXRlUHJvcGVy
dHkoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCisgICAgeworICAgICAgICBpZiAoIW1fc3ludGF4
QWxyZWFkeVZhbGlkYXRlZCkKKyAgICAgICAgICAgIHJldHVybiBtX3Njb3BlU3RhY2subGFzdCgp
LmRlbGV0ZVByb3BlcnR5KGlkZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IAogICAgIFNjb3BlU3RhY2sgbV9zY29wZVN0YWNrOwogfTsKIAotaW50IGpzUGFyc2UoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGNvbnN0
IFNvdXJjZUNvZGUqIHNvdXJjZSkKK2ludCBqc1BhcnNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1l
dGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZSkKIHsK
LSAgICBKU1BhcnNlciBwYXJzZXIoZ2xvYmFsRGF0YS0+bGV4ZXIsIGdsb2JhbERhdGEsIHBhcmFt
ZXRlcnMsIHNvdXJjZS0+cHJvdmlkZXIoKSk7Ci0gICAgcmV0dXJuIHBhcnNlci5wYXJzZVByb2dy
YW0oKTsKKyAgICBKU1BhcnNlciBwYXJzZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLmxleGVyLCAmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwYXJhbWV0ZXJzLCBpblN0cmljdENvbnRleHQsIHNvdXJjZS0+cHJv
dmlkZXIoKSk7CisgICAgcmV0dXJuIHBhcnNlci5wYXJzZVByb2dyYW0oZXhlYywgbGV4aWNhbEds
b2JhbE9iamVjdCk7CiB9CiAKLUpTUGFyc2VyOjpKU1BhcnNlcihMZXhlciogbGV4ZXIsIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBTb3Vy
Y2VQcm92aWRlciogcHJvdmlkZXIpCitKU1BhcnNlcjo6SlNQYXJzZXIoTGV4ZXIqIGxleGVyLCBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywg
Ym9vbCBpblN0cmljdENvbnRleHQsIFNvdXJjZVByb3ZpZGVyKiBwcm92aWRlcikKICAgICA6IG1f
bGV4ZXIobGV4ZXIpCiAgICAgLCBtX2VuZEFkZHJlc3MoMCkKICAgICAsIG1fZXJyb3IoZmFsc2Up
CkBAIC0zMjUsMjggKzQ4OCw1NCBAQCBKU1BhcnNlcjo6SlNQYXJzZXIoTGV4ZXIqIGxleGVyLCBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFyYW1ldGVycyogcAogICAgICwgbV9h
c3NpZ25tZW50Q291bnQoMCkKICAgICAsIG1fbm9uTEhTQ291bnQoMCkKICAgICAsIG1fc3ludGF4
QWxyZWFkeVZhbGlkYXRlZChwcm92aWRlci0+aXNWYWxpZCgpKQorICAgICwgbV9zdGF0ZW1lbnRE
ZXB0aCgwKQorICAgICwgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50KDApCisgICAgLCBtX2xh
c3RJZGVudGlmaWVyKDApCiB7CiAgICAgbV9lbmRBZGRyZXNzID0gd3RmVGhyZWFkRGF0YSgpLmFw
cHJveGltYXRlZFN0YWNrU3RhcnQoKSAtIGtNYXhQYXJzZXJTdGFja1VzYWdlOwotICAgIG5leHQo
KTsKLSAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcih0b2tlbkxpbmUoKSk7CiAgICAgU2Nv
cGVSZWYgc2NvcGUgPSBwdXNoU2NvcGUoKTsKKyAgICBpZiAoaW5TdHJpY3RDb250ZXh0KQorICAg
ICAgICBzY29wZS0+c2V0U3RyaWN0TW9kZSgpOwogICAgIGlmIChwYXJhbWV0ZXJzKSB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLT5zaXplKCk7IGkrKykKLSAg
ICAgICAgICAgIHNjb3BlLT5kZWNsYXJlVmFyaWFibGUoJnBhcmFtZXRlcnMtPmF0KGkpKTsKKyAg
ICAgICAgICAgIHNjb3BlLT5kZWNsYXJlUGFyYW1ldGVyKCZwYXJhbWV0ZXJzLT5hdChpKSk7CiAg
ICAgfQorICAgIG5leHQoKTsKKyAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcih0b2tlbkxp
bmUoKSk7CiB9CiAKLWJvb2wgSlNQYXJzZXI6OnBhcnNlUHJvZ3JhbSgpCitib29sIEpTUGFyc2Vy
OjpwYXJzZVByb2dyYW0oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCkKIHsKICAgICBBU1RCdWlsZGVyIGNvbnRleHQobV9nbG9iYWxEYXRhLCBtX2xl
eGVyKTsKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmcoKSkKKyAgICAgICAgbV9zdGF0ZW1l
bnREZXB0aC0tOwogICAgIFNjb3BlUmVmIHNjb3BlID0gY3VycmVudFNjb3BlKCk7Ci0gICAgU291
cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50czxBU1RCdWls
ZGVyPihjb250ZXh0KTsKKyAgICBTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMgPSBwYXJz
ZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oY29udGV4dCk7CiAgICAgaWYgKCFz
b3VyY2VFbGVtZW50cyB8fCAhY29uc3VtZShFT0ZUT0spKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkgeworICAgICAgICBJZGVudGlmaWVy
U2V0IHdyaXR0ZW5WYXJpYWJsZXM7CisgICAgICAgIHNjb3BlLT5nZXRVbmNhcHR1cmVkV3JpdHRl
blZhcmlhYmxlcyh3cml0dGVuVmFyaWFibGVzKTsKKyAgICAgICAgSWRlbnRpZmllclNldDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gd3JpdHRlblZhcmlhYmxlcy5lbmQoKTsKKyAgICAgICAgZm9yIChJ
ZGVudGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBwdHIgPSB3cml0dGVuVmFyaWFibGVzLmJlZ2lu
KCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGlmICghbGV4aWNhbEdsb2JhbE9iamVj
dC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgKnB0ciksIHNsb3QpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIElkZW50aWZp
ZXJTZXQgZGVsZXRlZFZhcmlhYmxlczsKKyAgICAgICAgaWYgKCFzY29wZS0+Z2V0RGVsZXRlZFZh
cmlhYmxlcyhkZWxldGVkVmFyaWFibGVzKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBlbmQgPSBkZWxldGVkVmFyaWFibGVzLmVuZCgpOworICAgICAgICBTeW1ib2xUYWJsZSYg
Z2xvYmFsRW52UmVjb3JkID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAg
ICAgICAgZm9yIChJZGVudGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBwdHIgPSBkZWxldGVkVmFy
aWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAgICBpZiAoIWds
b2JhbEVudlJlY29yZC5nZXQoKnB0cikuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CiAgICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlh
YmxlczsKICAgICBzY29wZS0+Z2V0Q2FwdHVyZWRWYXJpYWJsZXMoY2FwdHVyZWRWYXJpYWJsZXMp
OwotICAgIG1fZ2xvYmFsRGF0YS0+cGFyc2VyLT5kaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1l
bnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMo
KSwgY29udGV4dC5mZWF0dXJlcygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9sYXN0TGluZSwgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJp
YWJsZXMpOworICAgIG1fZ2xvYmFsRGF0YS0+cGFyc2VyLT5kaWRGaW5pc2hQYXJzaW5nKHNvdXJj
ZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJh
dGlvbnMoKSwgY29udGV4dC5mZWF0dXJlcygpIHwgKHNjb3BlLT5zdHJpY3RNb2RlKCkgPyBTdHJp
Y3RNb2RlRmVhdHVyZSA6IDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbGFzdExpbmUsIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFi
bGVzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTM1NSwxMSArNTQ0LDMwIEBAIGJvb2wg
SlNQYXJzZXI6OmFsbG93QXV0b21hdGljU2VtaWNvbG9uKCkKICAgICByZXR1cm4gbWF0Y2goQ0xP
U0VCUkFDRSkgfHwgbWF0Y2goRU9GVE9LKSB8fCBtX2xleGVyLT5wcmV2VGVybWluYXRvcigpOwog
fQogCi10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBKU1Bh
cnNlcjo6cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRl
IDxKU1BhcnNlcjo6U291cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgSlNQYXJzZXI6OnBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRzID0g
Y29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwotICAgIHdoaWxlIChUcmVlU3RhdGVtZW50
IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpKQorICAgIGJvb2wgc2Vlbk5vbkRp
cmVjdGl2ZSA9IGZhbHNlOworICAgIGNvbnN0IElkZW50aWZpZXIqIGRpcmVjdGl2ZSA9IDA7Cisg
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1faW5mby5zdGFydE9mZnNldDsKKyAg
ICBib29sIGhhc1NldFN0cmljdCA9IGZhbHNlOworICAgIHdoaWxlIChUcmVlU3RhdGVtZW50IHN0
YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIGRpcmVjdGl2ZSkpIHsKKyAgICAgICAg
aWYgKG1vZGUgPT0gQ2hlY2tGb3JTdHJpY3RNb2RlICYmICFzZWVuTm9uRGlyZWN0aXZlKSB7Cisg
ICAgICAgICAgICBpZiAoZGlyZWN0aXZlKSB7CisgICAgICAgICAgICAgICAgaWYgKCFoYXNTZXRT
dHJpY3QgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT51c2VTdHJpY3RJZGVudGlmaWVy
ID09ICpkaXJlY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0U3RyaWN0TW9kZSgpOwor
ICAgICAgICAgICAgICAgICAgICBoYXNTZXRTdHJpY3QgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBmYWlsSWZGYWxzZShpc1ZhbGlkU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9sZXhlci0+c2V0T2Zmc2V0KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAg
bmV4dCgpOworICAgICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOworICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBzZWVuTm9uRGlyZWN0aXZlID0gdHJ1ZTsKKyAgICAgICAg
fQogICAgICAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVt
ZW50KTsKKyAgICB9CiAKICAgICBpZiAobV9lcnJvcikKICAgICAgICAgZmFpbCgpOwpAQCAtMzk5
LDcgKzYwNywxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
SlNQYXJzZXI6OnBhcnNlRG9XaGlsZVN0YXRlbWVudChUcmVlQgogICAgIEFTU0VSVChtYXRjaChE
TykpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7Ci0gICAg
VHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICBj
b25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIHN0YXJ0TG9vcCgpOworICAgIFRyZWVT
dGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKKyAg
ICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICBpbnQgZW5kTGlu
ZSA9IHRva2VuTGluZSgpOwogICAgIGNvbnN1bWVPckZhaWwoV0hJTEUpOwpAQCAtNDIyLDcgKzYz
MywxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJz
ZXI6OnBhcnNlV2hpbGVTdGF0ZW1lbnQoVHJlZUJ1aQogICAgIGZhaWxJZkZhbHNlKGV4cHIpOwog
ICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBB
UkVOKTsKLSAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRl
eHQpOworICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CisgICAgc3RhcnRMb29wKCk7
CisgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1
bnVzZWQpOworICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZVdoaWxlU3RhdGVtZW50KGV4cHIsIHN0YXRlbWVudCwgc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKIH0KQEAgLTQ0MSw3ICs2NTUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVZhckRlY2xhcmF0aW9u
TGlzdChUcgogICAgICAgICBsYXN0SWRlbnQgPSBuYW1lOwogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBtYXRjaChFUVVBTCk7Ci0gICAgICAgIGRlY2xhcmVW
YXJpYWJsZShuYW1lKTsKKyAgICAgICAgZmFpbElmU3RyaWN0RmFsc2UoZGVjbGFyZVZhcmlhYmxl
KG5hbWUpKTsKICAgICAgICAgY29udGV4dC5hZGRWYXIobmFtZSwgKGhhc0luaXRpYWxpemVyIHx8
ICghbV9hbGxvd3NJbiAmJiBtYXRjaChJTlRPS0VOKSkpID8gRGVjbGFyYXRpb25TdGFja3M6Okhh
c0luaXRpYWxpemVyIDogMCk7CiAgICAgICAgIGlmIChoYXNJbml0aWFsaXplcikgewogICAgICAg
ICAgICAgaW50IHZhckRpdm90ID0gdG9rZW5TdGFydCgpICsgMTsKQEAgLTQ2NSw2ICs2NzksNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpw
YXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcgogCiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVDb25zdERlY2xMaXN0IEpTUGFyc2VyOjpwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRy
ZWVCdWlsZGVyJiBjb250ZXh0KQogeworICAgIGZhaWxJZlRydWUoc3RyaWN0TW9kZSgpKTsKICAg
ICBUcmVlQ29uc3REZWNsTGlzdCBjb25zdERlY2xzID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlz
dCB0YWlsID0gMDsKICAgICBkbyB7CkBAIC01MzIsNyArNzQ3LDEwIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQo
VHJlZUJ1aWxkCiAgICAgICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgICAgIGNv
bnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAKLSAgICAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1l
bnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciog
dW51c2VkID0gMDsKKyAgICAgICAgc3RhcnRMb29wKCk7CisgICAgICAgIFRyZWVTdGF0ZW1lbnQg
c3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKKyAgICAgICAgZW5k
TG9vcCgpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogCiAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwg
ZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3Rh
cnQsIGluaXRFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CkBAIC01NjYsNyArNzg0LDEwIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VG
b3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgICAgIH0KICAgICAgICAgaW50IGVuZExpbmUgPSB0
b2tlbkxpbmUoKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKLSAgICAgICAg
VHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICAgICAgc3RhcnRMb29wKCk7Cisg
ICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwg
dW51c2VkKTsKKyAgICAgICAgZW5kTG9vcCgpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1l
bnQpOwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JMb29wKGRlY2xzLCBjb25kaXRp
b24sIGluY3JlbWVudCwgc3RhdGVtZW50LCBoYXNEZWNsYXJhdGlvbiwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKICAgICB9CkBAIC01NzksNyArODAwLDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxk
CiAgICAgaW50IGV4cHJFbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICBpbnQgZW5kTGluZSA9IHRv
a2VuTGluZSgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7Ci0gICAgVHJlZVN0YXRl
bWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICBjb25zdCBJZGVu
dGlmaWVyKiB1bnVzZWQgPSAwOworICAgIHN0YXJ0TG9vcCgpOworICAgIFRyZWVTdGF0ZW1lbnQg
c3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKKyAgICBlbmRMb29w
KCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAKICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGb3JJbkxvb3AoZGVjbHMsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVj
bHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CkBAIC01OTQsMTAgKzgxOCwxMyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBh
cnNlQnJlYWtTdGF0ZW1lbnQoVHJlZUJ1aQogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7
CiAgICAgbmV4dCgpOwogCi0gICAgaWYgKGF1dG9TZW1pQ29sb24oKSkKKyAgICBpZiAoYXV0b1Nl
bWlDb2xvbigpKSB7CisgICAgICAgIGZhaWxJZlN0cmljdEZhbHNlKGJyZWFrSXNWYWxpZCgpKTsK
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQoc3RhcnRDb2wsIGVu
ZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQp
OwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7Cisg
ICAgZmFpbElmU3RyaWN0RmFsc2UoaGFzTGFiZWwoaWRlbnQpKTsKICAgICBlbmRDb2wgPSB0b2tl
bkVuZCgpOwogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CkBAIC02MTQs
MTAgKzg0MSwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
SlNQYXJzZXI6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQoVHJlZQogICAgIGludCBlbmRMaW5lID0g
dG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogCi0gICAgaWYgKGF1dG9TZW1pQ29sb24oKSkKKyAg
ICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CisgICAgICAgIGZhaWxJZlN0cmljdEZhbHNlKGJyZWFr
SXNWYWxpZCgpKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQoc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICB9CiAgICAgbWF0
Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5t
X2RhdGEuaWRlbnQ7CisgICAgZmFpbElmU3RyaWN0RmFsc2UoaGFzTGFiZWwoaWRlbnQpKTsKICAg
ICBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBu
ZXh0KCk7CkBAIC02MjgsNiArODU4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUNvbnRpbnVlU3RhdGVtZW50KFRyZWUKIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VSZXR1
cm5TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFJF
VFVSTikpOworICAgIGZhaWxJZlN0cmljdEZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9u
KCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9
IHN0YXJ0TGluZTsKICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CkBAIC02NjgsNyArODk5
LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2Vy
OjpwYXJzZVRocm93U3RhdGVtZW50KFRyZWVCdWkKIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VXaXRoU3RhdGVtZW50KFRyZWVCdWlsZGVy
JiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChXSVRIKSk7Ci0gICAgY3VycmVudFNjb3Bl
KCktPm5lZWRzRnVsbEFjdGl2YXRpb24oKTsKKyAgICBmYWlsSWZUcnVlKHN0cmljdE1vZGUoKSk7
CisgICAgY3VycmVudFNjb3BlKCktPnNldE5lZWRzRnVsbEFjdGl2YXRpb24oKTsKICAgICBpbnQg
c3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwo
T1BFTlBBUkVOKTsKQEAgLTY3OSw4ICs5MTEsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlV2l0aFN0YXRlbWVudChUcmVlQnVpbAog
CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NF
UEFSRU4pOwotICAgIAotICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1l
bnQoY29udGV4dCk7CisgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICBUcmVl
U3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAg
ICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKIAogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdp
dGhTdGF0ZW1lbnQoZXhwciwgc3RhdGVtZW50LCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExp
bmUpOwpAQCAtNjk3LDcgKzkyOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTd2l0Y2hTdGF0ZW1lbnQoVHJlZUJ1CiAgICAgaW50
IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwog
ICAgIGNvbnN1bWVPckZhaWwoT1BFTkJSQUNFKTsKLQorICAgIHN0YXJ0U3dpdGNoKCk7CiAgICAg
VHJlZUNsYXVzZUxpc3QgZmlyc3RDbGF1c2VzID0gcGFyc2VTd2l0Y2hDbGF1c2VzKGNvbnRleHQp
OwogICAgIGZhaWxJZlRydWUobV9lcnJvcik7CiAKQEAgLTcwNiw2ICs5MzgsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3dpdGNo
U3RhdGVtZW50KFRyZWVCdQogCiAgICAgVHJlZUNsYXVzZUxpc3Qgc2Vjb25kQ2xhdXNlcyA9IHBh
cnNlU3dpdGNoQ2xhdXNlcyhjb250ZXh0KTsKICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOworICAg
IGVuZFN3aXRjaCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSk7CiAKICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZh
dWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOwpAQCAtNzIwLDcg
Kzk1Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUxpc3QgSlNQ
YXJzZXI6OnBhcnNlU3dpdGNoQ2xhdXNlcyhUcmVlQnVpCiAgICAgVHJlZUV4cHJlc3Npb24gY29u
ZGl0aW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGNvbmRp
dGlvbik7CiAgICAgY29uc3VtZU9yRmFpbChDT0xPTik7Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRz
IHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOworICAgIFRyZWVTb3Vy
Y2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JT
dHJpY3RNb2RlPihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnRzKTsKICAgICBU
cmVlQ2xhdXNlIGNsYXVzZSA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3RhdGVt
ZW50cyk7CiAgICAgVHJlZUNsYXVzZUxpc3QgY2xhdXNlTGlzdCA9IGNvbnRleHQuY3JlYXRlQ2xh
dXNlTGlzdChjbGF1c2UpOwpAQCAtNzMxLDcgKzk2NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUNsYXVzZUxpc3QgSlNQYXJzZXI6OnBhcnNlU3dpdGNoQ2xhdXNlcyhUcmVl
QnVpCiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbmRpdGlvbiA9IHBhcnNlRXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoY29uZGl0aW9uKTsKICAgICAgICAgY29uc3Vt
ZU9yRmFpbChDT0xPTik7Ci0gICAgICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0g
cGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKKyAgICAgICAgVHJlZVNvdXJjZUVsZW1lbnRz
IHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERvbnRDaGVja0ZvclN0cmljdE1vZGU+
KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnRzKTsKICAgICAgICAgY2xh
dXNlID0gY29udGV4dC5jcmVhdGVDbGF1c2UoY29uZGl0aW9uLCBzdGF0ZW1lbnRzKTsKICAgICAg
ICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlTGlzdCh0YWlsLCBjbGF1c2UpOwpAQCAtNzQ1
LDcgKzk3OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZSBKU1Bh
cnNlcjo6cGFyc2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKFRyZWVCCiAgICAgICAgIHJldHVybiAwOwog
ICAgIG5leHQoKTsKICAgICBjb25zdW1lT3JGYWlsKENPTE9OKTsKLSAgICBUcmVlU291cmNlRWxl
bWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCk7CisgICAgVHJl
ZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERvbnRDaGVj
a0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMpOwog
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNsYXVzZSgwLCBzdGF0ZW1lbnRzKTsKIH0KQEAgLTc2
NywxNCArMTAwMCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgSlNQYXJzZXI6OnBhcnNlVHJ5U3RhdGVtZW50KFRyZWVCdWlsZAogICAgIGludCBsYXN0TGlu
ZSA9IG1fbGFzdExpbmU7CiAKICAgICBpZiAobWF0Y2goQ0FUQ0gpKSB7Ci0gICAgICAgIGN1cnJl
bnRTY29wZSgpLT5uZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CisgICAgICAgIGN1cnJlbnRTY29wZSgp
LT5zZXROZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgY29u
c3VtZU9yRmFpbChPUEVOUEFSRU4pOwogICAgICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAg
ICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgU2NvcGVSZWYgY2F0Y2hTY29wZSA9IHB1c2hTY29wZSgpOwotICAgICAgICBjYXRjaFNjb3Bl
LT5kZWNsYXJlVmFyaWFibGUoaWRlbnQpOworICAgICAgICBmYWlsSWZTdHJpY3RGYWxzZShjYXRj
aFNjb3BlLT5kZWNsYXJlVmFyaWFibGUoaWRlbnQpKTsKICAgICAgICAgY2F0Y2hTY29wZS0+cHJl
dmVudE5ld0RlY2xzKCk7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAg
ICAgIG1hdGNoT3JGYWlsKE9QRU5CUkFDRSk7CkBAIC03ODIsNyArMTAxNSw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VUcnlTdGF0
ZW1lbnQoVHJlZUJ1aWxkCiAgICAgICAgIGNhdGNoQmxvY2sgPSBwYXJzZUJsb2NrU3RhdGVtZW50
KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShjYXRjaEJsb2NrKTsKICAgICAgICAgY2F0
Y2hIYXNFdmFsID0gaW5pdGlhbEV2YWxDb3VudCAhPSBjb250ZXh0LmV2YWxDb3VudCgpOwotICAg
ICAgICBwb3BTY29wZShjYXRjaFNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJ
bmZvKTsKKyAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUoY2F0Y2hTY29wZSwgVHJlZUJ1aWxk
ZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwogICAgIH0KIAogICAgIGlmIChtYXRjaChGSU5B
TExZKSkgewpAQCAtODE2LDE1ICsxMDQ5LDE5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VCbG9ja1N0YXRlbWVudChUcmVlQnVpCiAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1l
bnQoMCwgc3RhcnQsIG1fbGFzdExpbmUpOwogICAgIH0KLSAgICBUcmVlU291cmNlRWxlbWVudHMg
c3VidHJlZSA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCk7CisgICAgVHJlZVNvdXJjZUVs
ZW1lbnRzIHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERvbnRDaGVja0ZvclN0cmljdE1v
ZGU+KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHN1YnRyZWUpOwogICAgIG1hdGNoT3JGYWls
KENMT1NFQlJBQ0UpOwogICAgIG5leHQoKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9j
a1N0YXRlbWVudChzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGluZSk7CiB9CiAKLXRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQo
VHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBj
b25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlKQogeworICAgIERlcHRoTWFuYWdlciBzdGF0ZW1l
bnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CisgICAgbV9zdGF0ZW1lbnREZXB0aCsrOworICAg
IGRpcmVjdGl2ZSA9IDA7CisgICAgaW50IG5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQgPSAwOwog
ICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7
CiAgICAgY2FzZSBPUEVOQlJBQ0U6CkBAIC04MzQsNiArMTA3MSw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoVHJl
ZUJ1aWxkZXImCiAgICAgY2FzZSBDT05TVFRPS0VOOgogICAgICAgICByZXR1cm4gcGFyc2VDb25z
dERlY2xhcmF0aW9uKGNvbnRleHQpOwogICAgIGNhc2UgRlVOQ1RJT046CisgICAgICAgIGZhaWxJ
ZlN0cmljdEZhbHNlKG1fc3RhdGVtZW50RGVwdGggPT0gMSk7CiAgICAgICAgIHJldHVybiBwYXJz
ZUZ1bmN0aW9uRGVjbGFyYXRpb24oY29udGV4dCk7CiAgICAgY2FzZSBTRU1JQ09MT046CiAgICAg
ICAgIG5leHQoKTsKQEAgLTg3MCw4ICsxMTA4LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXIm
CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIHJldHVybiBwYXJz
ZUV4cHJlc3Npb25PckxhYmVsU3RhdGVtZW50KGNvbnRleHQpOworICAgIGNhc2UgU1RSSU5HOgor
ICAgICAgICBkaXJlY3RpdmUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgbm9uVHJp
dmlhbEV4cHJlc3Npb25Db3VudCA9IG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudDsKICAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gcGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KGNvbnRleHQp
OworICAgICAgICBUcmVlU3RhdGVtZW50IGV4cHJTdGF0ZW1lbnQgPSBwYXJzZUV4cHJlc3Npb25T
dGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgIGlmIChkaXJlY3RpdmUgJiYgbm9uVHJpdmlhbEV4
cHJlc3Npb25Db3VudCAhPSBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQpCisgICAgICAgICAg
ICBkaXJlY3RpdmUgPSAwOworICAgICAgICByZXR1cm4gZXhwclN0YXRlbWVudDsKICAgICB9CiB9
CiAKQEAgLTg3OSw3ICsxMTIzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
Rm9ybWFsUGFyYW1ldGVyTGlzdCBKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWUKIHsKICAgICBt
YXRjaE9yRmFpbChJREVOVCk7CiAgICAgdXNlc0FyZ3VtZW50cyA9IG1fZ2xvYmFsRGF0YS0+cHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzID09ICptX3Rva2VuLm1fZGF0YS5pZGVudDsKLSAgICBkZWNs
YXJlVmFyaWFibGUobV90b2tlbi5tX2RhdGEuaWRlbnQpOworICAgIGZhaWxJZlN0cmljdEZhbHNl
KGRlY2xhcmVQYXJhbWV0ZXIobV90b2tlbi5tX2RhdGEuaWRlbnQpKTsKICAgICBUcmVlRm9ybWFs
UGFyYW1ldGVyTGlzdCBsaXN0ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCpt
X3Rva2VuLm1fZGF0YS5pZGVudCk7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgdGFpbCA9
IGxpc3Q7CiAgICAgbmV4dCgpOwpAQCAtODg3LDcgKzExMzEsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IEpTUGFyc2VyOjpwYXJzZUZvcm1h
bFBhcmFtZQogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKLSAg
ICAgICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgdXNlc0FyZ3VtZW50cyB8PSBt
X2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqbV90b2tlbi5tX2RhdGEu
aWRlbnQ7CisgICAgICAgIGZhaWxJZlN0cmljdEZhbHNlKGRlY2xhcmVQYXJhbWV0ZXIoaWRlbnQp
KTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICB1c2VzQXJndW1lbnRzID0gdXNlc0FyZ3VtZW50
cyB8fCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQ7CiAg
ICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QodGFpbCwgKmlk
ZW50KTsKQEAgLTg5OCwxMCArMTE0MywxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IEpTUGFyc2VyOjpwYXJzZUZvcm1hbFBhcmFtZQogdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IEpTUGFyc2VyOjpwYXJz
ZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBpZiAobWF0Y2goQ0xP
U0VCUkFDRSkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keSgpOwor
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RyaWN0TW9kZSgpKTsK
KyAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVwdGgoJm1fc3RhdGVtZW50RGVwdGgpOworICAg
IG1fc3RhdGVtZW50RGVwdGggPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5jdGlv
bkJvZHlCdWlsZGVyIGJvZHlCdWlsZGVyKG1fZ2xvYmFsRGF0YSwgbV9sZXhlcik7Ci0gICAgZmFp
bElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhib2R5QnVpbGRlcikpOwotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keSgpOworICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNl
RWxlbWVudHM8Q2hlY2tGb3JTdHJpY3RNb2RlPihib2R5QnVpbGRlcikpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdHJpY3RNb2RlKCkpOwogfQogCiB0ZW1wbGF0ZSA8
SlNQYXJzZXI6OkZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBuYW1lSXNJ
bkNvbnRhaW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgSlNQYXJzZXI6OnBhcnNl
RnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgbmFt
ZSwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMsIFRyZWVGdW5jdGlvbkJvZHkm
IGJvZHksIGludCYgb3BlbkJyYWNlUG9zLCBpbnQmIGNsb3NlQnJhY2VQb3MsIGludCYgYm9keVN0
YXJ0TGluZSkKQEAgLTkxMSw3ICsxMTU4LDcgQEAgdGVtcGxhdGUgPEpTUGFyc2VyOjpGdW5jdGlv
blJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2MKICAg
ICAgICAgbmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIGlmICghbmFtZUlzSW5Db250YWluaW5nU2NvcGUpCi0gICAgICAgICAgICBmdW5jdGlvblNj
b3BlLT5kZWNsYXJlVmFyaWFibGUobmFtZSk7CisgICAgICAgICAgICBmYWlsSWZTdHJpY3RGYWxz
ZShmdW5jdGlvblNjb3BlLT5kZWNsYXJlVmFyaWFibGUobmFtZSkpOwogICAgIH0gZWxzZSBpZiAo
cmVxdWlyZW1lbnRzID09IEZ1bmN0aW9uTmVlZHNOYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtOTMxLDcgKzExNzgsMTEgQEAgdGVt
cGxhdGUgPEpTUGFyc2VyOjpGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wg
bmFtZUlzSW5Db250YWluaW5nU2MKICAgICBmYWlsSWZGYWxzZShib2R5KTsKICAgICBpZiAodXNl
c0FyZ3VtZW50cykKICAgICAgICAgY29udGV4dC5zZXRVc2VzQXJndW1lbnRzKGJvZHkpOwotICAg
IHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUlu
Zm8pOworICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgbmFtZSkgeworICAg
ICAgICBmYWlsSWZUcnVlKG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09
ICpuYW1lKTsKKyAgICAgICAgZmFpbElmVHJ1ZShtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMt
PmV2YWwgPT0gKm5hbWUpOworICAgIH0KKyAgICBmYWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlv
blNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSk7CiAgICAgbWF0Y2hP
ckZhaWwoQ0xPU0VCUkFDRSk7CiAgICAgY2xvc2VCcmFjZVBvcyA9IG1fdG9rZW4ubV9kYXRhLmlu
dFZhbHVlOwogICAgIG5leHQoKTsKQEAgLTk1MCw3ICsxMjAxLDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVjbGFy
YXRpb24oVHIKICAgICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7CiAgICAgZmFpbElmRmFsc2UoKHBh
cnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1lLCBw
YXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExp
bmUpKSk7CiAgICAgZmFpbElmRmFsc2UobmFtZSk7Ci0gICAgZGVjbGFyZVZhcmlhYmxlKG5hbWUp
OworICAgIGZhaWxJZlN0cmljdEZhbHNlKGRlY2xhcmVWYXJpYWJsZShuYW1lKSk7CiAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobmFtZSwgYm9keSwgcGFyYW1ldGVy
cywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5l
KTsKIH0KIApAQCAtOTczLDcgKzEyMjQsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25PckxhYmVsU3RhdGUKICAg
ICBmYWlsSWZGYWxzZShjdXJyZW50VG9rZW4gKyAxID09IG1fdG9rZW5Db3VudCk7CiAgICAgaW50
IGVuZCA9IHRva2VuRW5kKCk7CiAgICAgY29uc3VtZU9yRmFpbChDT0xPTik7Ci0gICAgVHJlZVN0
YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICBjb25zdCBJ
ZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIGlmIChzdHJpY3RNb2RlKCkgJiYgIW1fc3ludGF4
QWxyZWFkeVZhbGlkYXRlZCkKKyAgICAgICAgcHVzaExhYmVsKGlkZW50KTsKKyAgICBUcmVlU3Rh
dGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CisgICAg
aWYgKHN0cmljdE1vZGUoKSAmJiAhbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKQorICAgICAgICBw
b3BMYWJlbCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQoaWRlbnQsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCk7CiB9
CkBAIC0xMDAxLDcgKzEyNTcsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQoVHJlZUJ1aWxkZQogICAgIGludCBl
bmQgPSB0b2tlbkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogCi0gICAg
VHJlZVN0YXRlbWVudCB0cnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICBj
b25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIFRyZWVTdGF0ZW1lbnQgdHJ1ZUJsb2Nr
ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBmYWlsSWZGYWxzZSh0cnVl
QmxvY2spOwogCiAgICAgaWYgKCFtYXRjaChFTFNFKSkKQEAgLTEwMTQsNyArMTI3MSw4IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VJ
ZlN0YXRlbWVudChUcmVlQnVpbGRlCiAgICAgZG8gewogICAgICAgICBuZXh0KCk7CiAgICAgICAg
IGlmICghbWF0Y2goSUYpKSB7Ci0gICAgICAgICAgICBUcmVlU3RhdGVtZW50IGJsb2NrID0gcGFy
c2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVz
ZWQgPSAwOworICAgICAgICAgICAgVHJlZVN0YXRlbWVudCBibG9jayA9IHBhcnNlU3RhdGVtZW50
KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShibG9jayk7CiAgICAg
ICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoYmxvY2spOwogICAgICAgICAgICAgdHJhaWxp
bmdFbHNlID0gdHJ1ZTsKQEAgLTEwMjksOCArMTI4Nyw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VJZlN0YXRlbWVudChUcmVlQnVp
bGRlCiAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyQ29uZGl0aW9uKTsKICAgICAgICAgaW50IGlu
bmVyRW5kID0gdG9rZW5MaW5lKCk7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7
Ci0gICAgICAgIAotICAgICAgICBUcmVlU3RhdGVtZW50IGlubmVyVHJ1ZUJsb2NrID0gcGFyc2VT
dGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7
CisgICAgICAgIFRyZWVTdGF0ZW1lbnQgaW5uZXJUcnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVudChj
b250ZXh0LCB1bnVzZWQpOwogICAgICAgICBmYWlsSWZGYWxzZShpbm5lclRydWVCbG9jayk7ICAg
ICAKICAgICAgICAgZXhwclN0YWNrLmFwcGVuZChpbm5lckNvbmRpdGlvbik7CiAgICAgICAgIHBv
c1N0YWNrLmFwcGVuZChtYWtlX3BhaXIoaW5uZXJTdGFydCwgaW5uZXJFbmQpKTsKQEAgLTEwNzAs
NiArMTMyOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
SlNQYXJzZXI6OnBhcnNlRXhwcmVzc2lvbihUcmVlQnVpbGRlCiAgICAgaWYgKCFtYXRjaChDT01N
QSkpCiAgICAgICAgIHJldHVybiBub2RlOwogICAgIG5leHQoKTsKKyAgICBtX25vblRyaXZpYWxF
eHByZXNzaW9uQ291bnQrKzsKICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAgVHJlZUV4cHJlc3Np
b24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJ
ZkZhbHNlKHJpZ2h0KTsKQEAgLTExMTUsMTEgKzEzNzQsMTcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VBc3NpZ25tZW50RXhw
cmVzc2kKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICB9
CisgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICBoYWRBc3Np
Z25tZW50ID0gdHJ1ZTsKICAgICAgICAgY29udGV4dC5hc3NpZ25tZW50U3RhY2tBcHBlbmQoYXNz
aWdubWVudFN0YWNrLCBsaHMsIHN0YXJ0LCB0b2tlblN0YXJ0KCksIG1fYXNzaWdubWVudENvdW50
LCBvcCk7CiAgICAgICAgIHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgICAgICBtX2Fzc2lnbm1l
bnRDb3VudCsrOwogICAgICAgICBuZXh0KCk7CisgICAgICAgIGlmIChzdHJpY3RNb2RlKCkgJiYg
bV9sYXN0SWRlbnRpZmllciAmJiBjb250ZXh0LmlzUmVzb2x2ZShsaHMpKSB7CisgICAgICAgICAg
ICBmYWlsSWZTdHJpY3RUcnVlKG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAq
bV9sYXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICBkZWNsYXJlV3JpdGUobV9sYXN0SWRlbnRp
Zmllcik7CisgICAgICAgICAgICBtX2xhc3RJZGVudGlmaWVyID0gMDsKKyAgICAgICAgfQogICAg
ICAgICBsaHMgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAg
ZmFpbElmRmFsc2UobGhzKTsKICAgICAgICAgaWYgKGluaXRpYWxOb25MSFNDb3VudCAhPSBtX25v
bkxIU0NvdW50KQpAQCAtMTE0NCw2ICsxNDA5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24K
ICAgICBmYWlsSWZGYWxzZShjb25kKTsKICAgICBpZiAoIW1hdGNoKFFVRVNUSU9OKSkKICAgICAg
ICAgcmV0dXJuIGNvbmQ7CisgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAg
bV9ub25MSFNDb3VudCsrOwogICAgIG5leHQoKTsKICAgICBUcmVlRXhwcmVzc2lvbiBsaHMgPSBw
YXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMTE4MSw2ICsxNDQ3LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFy
c2VCaW5hcnlFeHByZXNzaW9uKFRyZWUKICAgICAgICAgaW50IHByZWNlZGVuY2UgPSBpc0JpbmFy
eU9wZXJhdG9yKG1fdG9rZW4ubV90eXBlKTsKICAgICAgICAgaWYgKCFwcmVjZWRlbmNlKQogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwog
ICAgICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAgICAgIGludCBvcGVyYXRvclRva2VuID0gbV90
b2tlbi5tX3R5cGU7CiAgICAgICAgIG5leHQoKTsKQEAgLTExOTYsNyArMTQ2Myw2IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlQmlu
YXJ5RXhwcmVzc2lvbihUcmVlCiAgICAgICAgIH0KICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0
YWNrQXBwZW5kKG9wZXJhdG9yU3RhY2tEZXB0aCwgb3BlcmF0b3JUb2tlbiwgcHJlY2VkZW5jZSk7
CiAgICAgfQotCiAgICAgd2hpbGUgKG9wZXJhdG9yU3RhY2tEZXB0aCkgewogICAgICAgICBBU1NF
UlQob3BlcmFuZFN0YWNrRGVwdGggPiAxKTsKIApAQCAtMTMyNyw2ICsxNTkzLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VTdHJp
Y3RPYmplY3RMaXRlcmFsKFQKICAgICAgICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQp
IHsKICAgICAgICAgICAgIHN0ZDo6cGFpcjxPYmplY3RWYWxpZGF0aW9uTWFwOjppdGVyYXRvciwg
Ym9vbD4gcHJvcGVydHlFbnRyeUl0ZXIgPSBvYmplY3RWYWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0
TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpKTsKICAgICAg
ICAgICAgIGlmICghcHJvcGVydHlFbnRyeUl0ZXIuc2Vjb25kKSB7CisgICAgICAgICAgICAgICAg
ZmFpbElmVHJ1ZShzdHJpY3RNb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmICgoY29udGV4dC5n
ZXRUeXBlKHByb3BlcnR5KSAmIHByb3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNvbmQpICE9IFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQ2FuJ3QgaGF2
ZSBtdWx0aXBsZSBnZXR0ZXJzIG9yIHNldHRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lLCBub3IgY2Fu
IHdlIGRlZmluZSAKICAgICAgICAgICAgICAgICAgICAgLy8gYSBwcm9wZXJ0eSBhcyBib3RoIGFu
IGFjY2Vzc29yIGFuZCBhIGNvbnN0YW50IHZhbHVlCkBAIC0xMzg5LDYgKzE2NTYsOCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVBy
aW1hcnlFeHByZXNzaW9uKFRyZQogewogICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAg
ICBjYXNlIE9QRU5CUkFDRToKKyAgICAgICAgaWYgKHN0cmljdE1vZGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoY29udGV4dCk7CiAgICAgICAgIHJldHVy
biBwYXJzZU9iamVjdExpdGVyYWwoY29udGV4dCk7CiAgICAgY2FzZSBPUEVOQlJBQ0tFVDoKICAg
ICAgICAgcmV0dXJuIHBhcnNlQXJyYXlMaXRlcmFsKGNvbnRleHQpOwpAQCAtMTQxMCw2ICsxNjc5
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNl
cjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbihUcmUKICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBj
dXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlO
YW1lcy0+ZXZhbCA9PSAqaWRlbnQpOworICAgICAgICBtX2xhc3RJZGVudGlmaWVyID0gaWRlbnQ7
CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJlc29sdmUoaWRlbnQsIHN0YXJ0KTsKICAg
ICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKQEAgLTE0ODUsNiArMTc1NSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhw
cmVzc2lvbihUcmVlCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbmV3Q291bnQrKzsKICAgICB9
CisKICAgICBpZiAobWF0Y2goRlVOQ1RJT04pKSB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUgPSAmbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKICAg
ICAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyA9IDA7CkBAIC0xNTAyLDYg
KzE3NzMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpT
UGFyc2VyOjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZQogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICAgICAgY2FzZSBPUEVOQlJBQ0tF
VDogeworICAgICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAg
ICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgbmV4
dCgpOwogICAgICAgICAgICAgaW50IG5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKQEAgLTE1
MTUsNiArMTc4Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gSlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbihUcmVlCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIE9QRU5QQVJFTjogeworICAgICAgICAgICAgbV9u
b25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICBpZiAobmV3Q291bnQpIHsK
ICAgICAgICAgICAgICAgICBuZXdDb3VudC0tOwogICAgICAgICAgICAgICAgIGlmIChtYXRjaChP
UEVOUEFSRU4pKSB7CkBAIC0xNTM1LDYgKzE4MDgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJl
ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBET1Q6IHsKKyAg
ICAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICAgICAgaW50
IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICAgICAgICAgIG5leHQoTGV4ZXI6
Oklnbm9yZVJlc2VydmVkV29yZHMpOwogICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwpA
QCAtMTU1NiwyNSArMTgzMCw1OSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbihUcmVlQgogewogICAgIEFs
bG93SW5PdmVycmlkZSBhbGxvd0luT3ZlcnJpZGUodGhpcyk7CiAgICAgaW50IHRva2VuU3RhY2tE
ZXB0aCA9IDA7CisgICAgYm9vbCBtb2RpZmllc0V4cHIgPSBmYWxzZTsKKyAgICBib29sIHJlcXVp
cmVzTEV4cHIgPSBmYWxzZTsKICAgICB3aGlsZSAoaXNVbmFyeU9wKG1fdG9rZW4ubV90eXBlKSkg
eworICAgICAgICBpZiAoc3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fdG9r
ZW4ubV90eXBlKSB7CisgICAgICAgICAgICBjYXNlIFBMVVNQTFVTOgorICAgICAgICAgICAgY2Fz
ZSBNSU5VU01JTlVTOgorICAgICAgICAgICAgY2FzZSBBVVRPUExVU1BMVVM6CisgICAgICAgICAg
ICBjYXNlIEFVVE9NSU5VU01JTlVTOgorICAgICAgICAgICAgICAgIGZhaWxJZlRydWUocmVxdWly
ZXNMRXhwcik7CisgICAgICAgICAgICAgICAgbW9kaWZpZXNFeHByID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICByZXF1aXJlc0xFeHByID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgREVMRVRFVE9LRU46CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShy
ZXF1aXJlc0xFeHByKTsKKyAgICAgICAgICAgICAgICByZXF1aXJlc0xFeHByID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgZmFpbElmVHJ1ZShyZXF1aXJlc0xFeHByKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAgICAg
IGNvbnRleHQuYXBwZW5kVW5hcnlUb2tlbih0b2tlblN0YWNrRGVwdGgsIG1fdG9rZW4ubV90eXBl
LCB0b2tlblN0YXJ0KCkpOwogICAgICAgICBuZXh0KCk7CisgICAgICAgIG1fbm9uVHJpdmlhbEV4
cHJlc3Npb25Db3VudCsrOwogICAgIH0KICAgICBpbnQgc3ViRXhwclN0YXJ0ID0gdG9rZW5TdGFy
dCgpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZU1lbWJlckV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CisgICAgYm9vbCBpc0V2YWwgPSBmYWxzZTsK
KyAgICBpZiAoc3RyaWN0TW9kZSgpICYmICFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQpIHsKKyAg
ICAgICAgaWYgKGNvbnRleHQuaXNSZXNvbHZlKGV4cHIpKQorICAgICAgICAgICAgaXNFdmFsID0g
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICptX2xhc3RJZGVudGlmaWVyOwor
ICAgIH0KKyAgICBmYWlsSWZTdHJpY3RUcnVlKGlzRXZhbCAmJiBtb2RpZmllc0V4cHIpOwogICAg
IHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICBjYXNlIFBMVVNQTFVTOgorICAgICAgICBt
X25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwog
ICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUoZXhwciwgT3BQbHVzUGx1cywg
c3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAgIG1fYXNz
aWdubWVudENvdW50Kys7CisgICAgICAgIGZhaWxJZlN0cmljdFRydWUoaXNFdmFsKTsKKyAgICAg
ICAgZmFpbElmU3RyaWN0VHJ1ZShyZXF1aXJlc0xFeHByKTsKICAgICAgICAgbmV4dCgpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE1JTlVTTUlOVVM6CisgICAgICAgIG1fbm9uVHJpdmlhbEV4
cHJlc3Npb25Db3VudCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAgICAgIGV4cHIg
PSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShleHByLCBPcE1pbnVzTWludXMsIHN1YkV4cHJTdGFy
dCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3Vu
dCsrOworICAgICAgICBmYWlsSWZTdHJpY3RUcnVlKGlzRXZhbCk7CisgICAgICAgIGZhaWxJZlN0
cmljdFRydWUocmVxdWlyZXNMRXhwcik7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKQEAgLTE1ODMsNyArMTg5MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlVW5hcnlFeHByZXNzaW9uKFRy
ZWVCCiAKICAgICBpbnQgZW5kID0gbGFzdFRva2VuRW5kKCk7CiAKLSAgICBpZiAoIVRyZWVCdWls
ZGVyOjpDcmVhdGVzQVNUKQorICAgIGlmICghVHJlZUJ1aWxkZXI6OkNyZWF0ZXNBU1QgJiYgKG1f
c3ludGF4QWxyZWFkeVZhbGlkYXRlZCB8fCAhc3RyaWN0TW9kZSgpKSkKICAgICAgICAgcmV0dXJu
IGV4cHI7CiAKICAgICB3aGlsZSAodG9rZW5TdGFja0RlcHRoKSB7CkBAIC0xNjE3LDYgKzE5MjUs
OCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2Vy
OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbihUcmVlQgogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQu
Y3JlYXRlVm9pZChleHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERFTEVU
RVRPS0VOOgorICAgICAgICAgICAgaWYgKHN0cmljdE1vZGUoKSAmJiBjb250ZXh0LmlzUmVzb2x2
ZShleHByKSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShkZWxldGVQcm9wZXJ0eShtX2xh
c3RJZGVudGlmaWVyKSk7CiAgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlRGVsZXRlTm9k
ZShleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgp
LCBlbmQsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5oIGIvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0pTUGFyc2VyLmgKaW5kZXggYWIxOGZhYjFlOTc4ODllNDhiY2YwMWJmZDc2OTdmOGM5
ZjZlNjgwZC4uNGQ2MzBiMDUyN2QwMzFmNzUwYTI4NmJkMWQ4ZDExZTkzYTk1NDkzNiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0pTUGFyc2VyLmgKQEAgLTI4LDkgKzI4LDEwIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CiBjbGFzcyBJ
ZGVudGlmaWVyOwotY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBj
bGFzcyBTb3VyY2VDb2RlOwogCiBlbnVtIHsKQEAgLTE1NSw2ICsxNTYsNiBAQCBzdHJ1Y3QgSlNU
b2tlbiB7CiAgICAgSlNUb2tlbkluZm8gbV9pbmZvOwogfTsKIAotaW50IGpzUGFyc2UoSlNHbG9i
YWxEYXRhKiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSopOworaW50IGpz
UGFyc2UoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29kZSopOwogfQogI2VuZGlmIC8vIEpT
UGFyc2VyX2gKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGNjNDMyMWQ2MTFjM2RhMDhiNzdm
YTkzZWZkOWRkNjhmMTBjM2QzNjUuLjIzOTcyOWVlYWUxYTI4NGUwNDAzMjJhNDcwNTc0ZDI2Y2Jh
ZThmMTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNDUzLDcgKzQ1Myw3IEBAIEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI6OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSog
bHZhbHAsIExleFR5cGUgbGV4CiAgICAgcmV0dXJuIElERU5UOwogfQogCi1BTFdBWVNfSU5MSU5F
IGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCkKK0FMV0FZU19JTkxJ
TkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqIGx2YWxwLCBib29sIHN0cmlj
dE1vZGUpCiB7CiAgICAgaW50IHN0cmluZ1F1b3RlQ2hhcmFjdGVyID0gbV9jdXJyZW50OwogICAg
IHNoaWZ0KCk7CkBAIC00OTQsNiArNDk0LDggQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyOjpw
YXJzZVN0cmluZyhKU1Rva2VuRGF0YSogbHZhbHApCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJy
ZW50KSkgewogICAgICAgICAgICAgICAgIC8vIE9jdGFsIGNoYXJhY3RlciBzZXF1ZW5jZXMKKyAg
ICAgICAgICAgICAgICBpZiAoc3RyaWN0TW9kZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgICAgIGludCBjaGFyYWN0ZXIxID0gbV9jdXJyZW50OwogICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlPY3RhbERp
Z2l0KG1fY3VycmVudCkpIHsKQEAgLTY5Niw3ICs2OTgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
TGV4ZXI6OnBhcnNlTXVsdGlsaW5lQ29tbWVudCgpCiAgICAgfQogfQogCi1KU1Rva2VuVHlwZSBM
ZXhlcjo6bGV4KEpTVG9rZW5EYXRhKiBsdmFscCwgSlNUb2tlbkluZm8qIGxsb2NwLCBMZXhUeXBl
IGxleFR5cGUpCitKU1Rva2VuVHlwZSBMZXhlcjo6bGV4KEpTVG9rZW5EYXRhKiBsdmFscCwgSlNU
b2tlbkluZm8qIGxsb2NwLCBMZXhUeXBlIGxleFR5cGUsIGJvb2wgc3RyaWN0TW9kZSkKIHsKICAg
ICBBU1NFUlQoIW1fZXJyb3IpOwogICAgIEFTU0VSVChtX2J1ZmZlcjguaXNFbXB0eSgpKTsKQEAg
LTk3Niw4ICs5NzgsMTEgQEAgc3RhcnQ6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBy
ZWNvcmQ4KCcwJyk7CiAgICAgICAgICAgICBpZiAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJyZW50
KSkgewotICAgICAgICAgICAgICAgIGlmIChwYXJzZU9jdGFsKGx2YWxwLT5kb3VibGVWYWx1ZSkp
CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlT2N0YWwobHZhbHAtPmRvdWJsZVZhbHVlKSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0TW9kZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gTlVNQkVS
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAv
LyBGYWxsIHRocm91Z2ggaW50byBDaGFyYWN0ZXJOdW1iZXIKQEAgLTEwMDYsNyArMTAxMSw3IEBA
IGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2hhcmFjdGVyUXVvdGU6Ci0gICAgICAgIGlmIChV
TkxJS0VMWSghcGFyc2VTdHJpbmcobHZhbHApKSkKKyAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJz
ZVN0cmluZyhsdmFscCwgc3RyaWN0TW9kZSkpKQogICAgICAgICAgICAgZ290byByZXR1cm5FcnJv
cjsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKaW5kZXggZTZjMWVmZDE0MDdiMGM5YThhYjUwMmFkNDdkOWNjMjJhMDcyNjhh
MC4uNGQyNTEzZDBmZjQxNjBlZWI1MzRiNGI4NGMzNTM3ZGNjODNjNzFjNiAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmgKQEAgLTQ4LDEwICs0OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8g
RnVuY3Rpb25zIHRvIHNldCB1cCBwYXJzaW5nLgogICAgICAgICB2b2lkIHNldENvZGUoY29uc3Qg
U291cmNlQ29kZSYsIFBhcnNlckFyZW5hJik7CiAgICAgICAgIHZvaWQgc2V0SXNSZXBhcnNpbmco
KSB7IG1faXNSZXBhcnNpbmcgPSB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNSZXBhcnNpbmcoKSBj
b25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nOyB9CiAKICAgICAgICAgLy8gRnVuY3Rpb25zIGZv
ciB0aGUgcGFyc2VyIGl0c2VsZi4KICAgICAgICAgZW51bSBMZXhUeXBlIHsgSWRlbnRpZnlSZXNl
cnZlZFdvcmRzLCBJZ25vcmVSZXNlcnZlZFdvcmRzIH07Ci0gICAgICAgIEpTVG9rZW5UeXBlIGxl
eChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBsbG9jcCwgTGV4VHlwZSk7CisgICAg
ICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBsbG9j
cCwgTGV4VHlwZSwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICAgICAgaW50IGxpbmVOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KICAgICAgICAgdm9pZCBzZXRMYXN0TGluZU51
bWJlcihpbnQgbGFzdExpbmVOdW1iZXIpIHsgbV9sYXN0TGluZU51bWJlciA9IGxhc3RMaW5lTnVt
YmVyOyB9CiAgICAgICAgIGludCBsYXN0TGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dExpbmVOdW1iZXI7IH0KQEAgLTk1LDcgKzk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSBjb25zdDsKIAog
ICAgICAgICBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIHBhcnNlSWRlbnRpZmllcihKU1Rva2Vu
RGF0YSosIExleFR5cGUpOwotICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VTdHJpbmco
SlNUb2tlbkRhdGEqIGx2YWxwKTsKKyAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlU3Ry
aW5nKEpTVG9rZW5EYXRhKiBsdmFscCwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHBhcnNlSGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwogICAgICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgcGFyc2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKTsKICAgICAgICAg
QUxXQVlTX0lOTElORSBib29sIHBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDUzNGUyOGFlMTRmZGQ2ZmJiZDQyYWI3ZDZkMjI0ZDY2
Y2RkZWYxMWIuLjM0YWE2NzQ2ZGMwMTc0YTM5NjIxNDE2Y2YwYTk1Zjg4YjY3NjhjMmMgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcApAQCAtODksMTAgKzg5LDEwIEBAIFNjb3BlTm9kZURhdGE6OlNj
b3BlTm9kZURhdGEoUGFyc2VyQXJlbmEmIGFyZW5hLCBTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50
cywgVmFyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY29wZU5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQorU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBib29sIGluU3RyaWN0Q29udGV4dCkKICAgICA6IFN0YXRlbWVudE5vZGUoZ2xv
YmFsRGF0YSkKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZChnbG9iYWxEYXRhKQotICAgICwg
bV9mZWF0dXJlcyhOb0ZlYXR1cmVzKQorICAgICwgbV9mZWF0dXJlcyhpblN0cmljdENvbnRleHQg
PyBTdHJpY3RNb2RlRmVhdHVyZSA6IE5vRmVhdHVyZXMpCiB7CiB9CiAKQEAgLTE1NCw4ICsxNTQs
OCBAQCBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2Rl
KiBmaXJzdFBhcmFtZXRlcikKICAgICAgICAgYXBwZW5kKHBhcmFtZXRlci0+aWRlbnQoKSk7CiB9
CiAKLWlubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhKQoraW5saW5lIEZ1bmN0
aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBi
b29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBpblN0cmlj
dENvbnRleHQpCiB7CiB9CiAKQEAgLTE3Nyw5ICsxNzcsOSBAQCB2b2lkIEZ1bmN0aW9uQm9keU5v
ZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRl
cnMsCiAgICAgbV9pZGVudCA9IGlkZW50OwogfQogCi1GdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlv
bkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorRnVuY3Rpb25Cb2R5
Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Ym9vbCBpblN0cmljdENvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2Rl
KGdsb2JhbERhdGEpOworICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRh
LCBpblN0cmljdENvbnRleHQpOwogfQogCiBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IEZ1
bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVs
ZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5j
U3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCmluZGV4IGZhNjFjZGNlZDI0ZDFiNmYwNjM2ZTFmMzU4OTM5YWRmYjNh
ZTc3MjguLjZiOGY3MDRmYmMzM2QyOGM4M2I3YWU5NjNhNzYzYzQwYjg1NWFiNGYgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCkBAIC01Nyw2ICs1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNvbnN0
IENvZGVGZWF0dXJlcyBXaXRoRmVhdHVyZSA9IDEgPDwgNDsKICAgICBjb25zdCBDb2RlRmVhdHVy
ZXMgQ2F0Y2hGZWF0dXJlID0gMSA8PCA1OwogICAgIGNvbnN0IENvZGVGZWF0dXJlcyBUaGlzRmVh
dHVyZSA9IDEgPDwgNjsKKyAgICBjb25zdCBDb2RlRmVhdHVyZXMgU3RyaWN0TW9kZUZlYXR1cmUg
PSAxIDw8IDc7CiAgICAgY29uc3QgQ29kZUZlYXR1cmVzIEFsbEZlYXR1cmVzID0gRXZhbEZlYXR1
cmUgfCBDbG9zdXJlRmVhdHVyZSB8IEFzc2lnbkZlYXR1cmUgfCBBcmd1bWVudHNGZWF0dXJlIHwg
V2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUgfCBUaGlzRmVhdHVyZTsKIAogICAgIGVudW0gT3Bl
cmF0b3IgewpAQCAtMTM5Myw3ICsxMzk0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5
cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBl
ZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAg
ICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSopOworICAgICAgICBTY29wZU5vZGUoSlNHbG9i
YWxEYXRhKiwgYm9vbCBpblN0cmljdENvbnRleHQpOwogICAgICAgICBTY29wZU5vZGUoSlNHbG9i
YWxEYXRhKiwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBG
dW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CiAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFSZWZDb3VudGVkOjpvcGVyYXRvciBu
ZXc7CkBAIC0xNDEwLDYgKzE0MTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29s
IHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEV2YWxGZWF0dXJlOyB9CiAg
ICAgICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBB
cmd1bWVudHNGZWF0dXJlOyB9CisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAgICAgICAgIHZvaWQgc2V0
VXNlc0FyZ3VtZW50cygpIHsgbV9mZWF0dXJlcyB8PSBBcmd1bWVudHNGZWF0dXJlOyB9CiAgICAg
ICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgVGhpc0ZlYXR1
cmU7IH0KICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb25Gb3JNb3JlVGhhblZhcmlhYmxlcygp
IGNvbnN0IHsgQVNTRVJUKG1fZGF0YSk7IHJldHVybiBtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJl
IHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpOyB9CkBAIC0xNDc2LDcgKzE0NzgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBj
cmVhdGUoSlNHbG9iYWxEYXRhKik7CisgICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBj
cmVhdGUoSlNHbG9iYWxEYXRhKiwgYm9vbCBpc1N0cmljdE1vZGUpOwogICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAg
ICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLmdldCgpOyB9CkBAIC0xNDkyLDcgKzE0OTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gdHJ1ZTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKik7CisgICAgICAg
IEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgYm9vbCBpblN0cmljdENvbnRleHQpOwog
ICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwg
VmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIElkZW50aWZp
ZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMGMwYjJkNzRlZTgzYjEw
NTFkZmQ4YzAxMmI5ZmJkNzljMTRlY2E3ZC4uNjQyYTg0MmZmN2I3YWE1YzUxODU2ZDg4OTRlNmVj
MGE3MTgwMzhiNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTM1LDggKzM1LDkgQEAg
ZXh0ZXJuIGludCBqc2N5eXBhcnNlKHZvaWQqKTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQg
UGFyc2VyOjpwYXJzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFyYW1ldGVy
cyogcGFyYW1ldGVycywgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpCit2b2lkIFBhcnNl
cjo6cGFyc2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGluU3RyaWN0Q29udGV4
dCwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpCiB7CisgICAgQVNTRVJUKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgIG1fc291cmNlRWxlbWVudHMgPSAwOwogCiAgICAgaW50IGRlZmF1
bHRFcnJMaW5lOwpAQCAtNTAsMTAgKzUxLDEwIEBAIHZvaWQgUGFyc2VyOjpwYXJzZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgaW50CiAg
ICAgKmVyckxpbmUgPSAtMTsKICAgICAqZXJyTXNnID0gVVN0cmluZygpOwogCi0gICAgTGV4ZXIm
IGxleGVyID0gKmdsb2JhbERhdGEtPmxleGVyOworICAgIExleGVyJiBsZXhlciA9ICpleGVjLT5n
bG9iYWxEYXRhKCkubGV4ZXI7CiAgICAgbGV4ZXIuc2V0Q29kZSgqbV9zb3VyY2UsIG1fYXJlbmEp
OwogCi0gICAgaW50IHBhcnNlRXJyb3IgPSBqc1BhcnNlKGdsb2JhbERhdGEsIHBhcmFtZXRlcnMs
IG1fc291cmNlKTsKKyAgICBpbnQgcGFyc2VFcnJvciA9IGpzUGFyc2UoZXhlYywgbGV4aWNhbEds
b2JhbE9iamVjdCwgcGFyYW1ldGVycywgaW5TdHJpY3RDb250ZXh0LCBtX3NvdXJjZSk7CiAgICAg
aW50IGxpbmVOdW1iZXIgPSBsZXhlci5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBsZXhFcnJvciA9
IGxleGVyLnNhd0Vycm9yKCk7CiAgICAgbGV4ZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAppbmRleCA5MTM0ZGUxNDcxYjEwMGUyYzFhMmQ1ZGZmYWY2MDJiNTM1Nzg0ZGU4Li44MGM4YzJi
NGQ3ZDQ1NTIwMjUxZTg4MmQ4YTIxOTI5OTc1NDY2MDhkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFBhcnNlciA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyc2VkTm9kZT4KLSAgICAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBE
ZWJ1Z2dlciosIEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiwgSlNPYmplY3QqKiBleGNlcHRpb24pOworICAgICAgICBQYXNzUmVmUHRyPFBh
cnNlZE5vZGU+IHBhcnNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBEZWJ1Z2dlciosIEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
RnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9vbCBpblN0cmljdENvbnRleHQsIEpTT2JqZWN0KiogZXhj
ZXB0aW9uKTsKIAogICAgICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMq
LCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiosIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcyBmZWF0dXJlcywKQEAgLTU3LDcgKzU3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBhcnNlckFyZW5hJiBhcmVuYSgpIHsgcmV0dXJu
IG1fYXJlbmE7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgcGFyc2UoSlNHbG9iYWxE
YXRhKiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cp
OworICAgICAgICB2b2lkIHBhcnNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBGdW5jdGlvblBhcmFtZXRlcnMqLCBib29sIGluU3RyaWN0Q29udGV4dCwg
aW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpOwogCiAgICAgICAgIC8vIFVzZWQgdG8gZGV0
ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgICAgICBib29sIGlzRnVuY3Rpb25C
b2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNzUsMjAgKzc1LDIxIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9k
ZT4KLSAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjo6cGFyc2UoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRGVidWdn
ZXIqIGRlYnVnZ2VyLCBFeGVjU3RhdGUqIGRlYnVnZ2VyRXhlY1N0YXRlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgSlNPYmplY3QqKiBl
eGNlcHRpb24pCisgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI6OnBhcnNlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIERlYnVnZ2Vy
KiBkZWJ1Z2dlciwgRXhlY1N0YXRlKiBkZWJ1Z2dlckV4ZWNTdGF0ZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaW5TdHJpY3RD
b250ZXh0LCBKU09iamVjdCoqIGV4Y2VwdGlvbikKICAgICB7CisgICAgICAgIEFTU0VSVChsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbiAmJiAhKmV4Y2VwdGlv
bik7CiAgICAgICAgIGludCBlcnJMaW5lOwogICAgICAgICBVU3RyaW5nIGVyck1zZzsKIAogICAg
ICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CiAgICAgICAgIGlmIChQYXJzZWROb2RlOjpzY29wZUlz
RnVuY3Rpb24pCi0gICAgICAgICAgICBnbG9iYWxEYXRhLT5sZXhlci0+c2V0SXNSZXBhcnNpbmco
KTsKLSAgICAgICAgcGFyc2UoZ2xvYmFsRGF0YSwgcGFyYW1ldGVycywgJmVyckxpbmUsICZlcnJN
c2cpOworICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmxleGVyLT5zZXRJc1JlcGFyc2lu
ZygpOworICAgICAgICBwYXJzZShleGVjLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJhbWV0ZXJz
LCBpblN0cmljdENvbnRleHQsICZlcnJMaW5lLCAmZXJyTXNnKTsKIAogICAgICAgICBSZWZQdHI8
UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgICAgICBpZiAobV9zb3VyY2VFbGVtZW50cykgewotICAg
ICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRlKGdsb2JhbERhdGEsCisgICAgICAg
ICAgICByZXN1bHQgPSBQYXJzZWROb2RlOjpjcmVhdGUoJmV4ZWMtPmdsb2JhbERhdGEoKSwKICAg
ICAgICAgICAgICAgICBtX3NvdXJjZUVsZW1lbnRzLAogICAgICAgICAgICAgICAgIG1fdmFyRGVj
bGFyYXRpb25zID8gJm1fdmFyRGVjbGFyYXRpb25zLT5kYXRhIDogMCwKICAgICAgICAgICAgICAg
ICBtX2Z1bmNEZWNsYXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhIDogMCwKQEAg
LTEwNyw3ICsxMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChpc0Z1bmN0
aW9uQm9keU5vZGUoc3RhdGljX2Nhc3Q8UGFyc2VkTm9kZSo+KDApKSkKICAgICAgICAgICAgICAg
ICAqZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICpleGNlcHRpb24gPSBhZGRF
cnJvckluZm8oZ2xvYmFsRGF0YSwgY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgZXJyTXNnKSwgZXJyTGluZSwgc291cmNlKTsKKyAgICAgICAgICAgICAgICAqZXhjZXB0aW9u
ID0gYWRkRXJyb3JJbmZvKCZleGVjLT5nbG9iYWxEYXRhKCksIGNyZWF0ZVN5bnRheEVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxpbmUsIHNvdXJjZSk7CiAgICAgICAgIH0K
IAogICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaAppbmRleCBjZTNhYjYxMTY2YjEyNWIzMDEyNzMwN2U0M2VjYmQ0NDk3M2FmMTIzLi5mOTA5
M2E3NDQ3YTk0MzMxYjRlOGUxMDYzZDVjODZkYTkyZDQ3OWFkIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKQEAgLTMwLDE1ICszMCwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNs
YXNzIFN5bnRheENoZWNrZXIgewogcHVibGljOgogICAgIFN5bnRheENoZWNrZXIoSlNHbG9iYWxE
YXRhKiAsIExleGVyKikKKyAgICAgICAgOiBtX3RvcEJpbmFyeUV4cHIoMCkKICAgICB7CiAgICAg
fQogCiAgICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1aWxkZXI7CisgICAg
ZW51bSB7IE5vbmVFeHByID0gMCwKKyAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhw
ciwgTnVtYmVyRXhwciwgU3RyaW5nRXhwciwKKyAgICAgICAgVGhpc0V4cHIsIE51bGxFeHByLCBC
b29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIsCisgICAgICAgIEZ1bmN0aW9u
RXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAorICAgICAgICBOZXdFeHByLCBQ
cmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLAorICAgICAgICBDb25kaXRp
b25hbEV4cHIsIEFzc2lnbm1lbnRFeHByLCBUeXBlb2ZFeHByLAorICAgICAgICBEZWxldGVFeHBy
LCBBcnJheUxpdGVyYWxFeHByIH07CisgICAgdHlwZWRlZiBpbnQgRXhwcmVzc2lvblR5cGU7CiAK
LSAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uOworICAgIHR5cGVkZWYgRXhwcmVzc2lvblR5cGUg
RXhwcmVzc2lvbjsKICAgICB0eXBlZGVmIGludCBTb3VyY2VFbGVtZW50czsKICAgICB0eXBlZGVm
IGludCBBcmd1bWVudHM7Ci0gICAgdHlwZWRlZiBpbnQgQ29tbWE7CisgICAgdHlwZWRlZiBFeHBy
ZXNzaW9uVHlwZSBDb21tYTsKICAgICBzdHJ1Y3QgUHJvcGVydHkgewogICAgICAgICBBTFdBWVNf
SU5MSU5FIFByb3BlcnR5KHZvaWQqID0gMCkKICAgICAgICAgICAgIDogdHlwZSgoUHJvcGVydHlO
b2RlOjpUeXBlKTApCkBAIC03MywzOCArODIsMzggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IGZhbHNlOwogCiAgICAgaW50IGNyZWF0ZVNv
dXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gMTsgfQotICAgIGludCBtYWtlRnVuY3Rpb25DYWxsTm9k
ZShpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIHZvaWQgYXBwZW5k
VG9Db21tYShpbnQsIGludCkgeyB9Ci0gICAgaW50IGNyZWF0ZUNvbW1hRXhwcihpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBtYWtlQXNzaWduTm9kZShpbnQsIE9wZXJhdG9yLCBpbnQs
IGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgbWFrZVBy
ZWZpeE5vZGUoaW50LCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAg
IGludCBtYWtlUG9zdGZpeE5vZGUoaW50LCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQotICAgIGludCBtYWtlVHlwZU9mTm9kZShpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgbWFrZURlbGV0ZU5vZGUoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IG1ha2VOZWdhdGVOb2RlKGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBtYWtlQml0d2lz
ZU5vdE5vZGUoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUxvZ2ljYWxOb3QoaW50
KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVVuYXJ5UGx1cyhpbnQpIHsgcmV0dXJuIDE7
IH0KLSAgICBpbnQgY3JlYXRlVm9pZChpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgdGhpc0V4
cHIoKSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVJlc29sdmUoY29uc3QgSWRlbnRpZmll
ciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVPYmplY3RMaXRlcmFsKCkgeyBy
ZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVPYmplY3RMaXRlcmFsKGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBjcmVhdGVBcnJheShpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
QXJyYXkoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlTnVtYmVyRXhwcihk
b3VibGUpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlU3RyaW5nKGNvbnN0IElkZW50aWZp
ZXIqKSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJvb2xlYW4oYm9vbCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVOdWxsKCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVC
cmFja2V0QWNjZXNzKGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
Ci0gICAgaW50IGNyZWF0ZURvdEFjY2VzcyhpbnQsIGNvbnN0IElkZW50aWZpZXImLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVJlZ2V4KGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0
ZU5ld0V4cHIoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQg
Y3JlYXRlTmV3RXhwcihpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0
ZUNvbmRpdGlvbmFsRXhwcihpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSWRlbnRpZmllciYsIGludCwgYm9vbCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSWRl
bnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KCkgeyByZXR1cm4gMTsgfQorICAgIEV4cHJlc3Npb25U
eXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBDYWxsRXhwcjsgfQorICAgIHZvaWQgYXBwZW5kVG9Db21tYShFeHByZXNzaW9uVHlwZSYgYmFz
ZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgYmFzZSA9IHJpZ2h0OyB9CisgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQ29tbWFFeHByKEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdo
dCkgeyByZXR1cm4gcmlnaHQ7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShF
eHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25UeXBlLCBib29sLCBib29sLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IG1ha2VQcmVmaXhOb2RlKEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gUHJlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShF
eHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUoRXhwcmVzc2lvblR5cGUpIHsg
cmV0dXJuIFR5cGVvZkV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShF
eHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBV
bmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0d2lzZU5vdE5vZGUoRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUxvZ2ljYWxOb3QoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5h
cnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9pZChFeHByZXNzaW9uVHlwZSkg
eyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4cHIoKSB7IHJl
dHVybiBUaGlzRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlc29sdmUoY29uc3Qg
SWRlbnRpZmllciosIGludCkgeyByZXR1cm4gUmVzb2x2ZUV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKCkgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0K
KyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKGludCkgeyByZXR1cm4gT2Jq
ZWN0TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShpbnQpIHsg
cmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJh
eShpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU51bWJlckV4cHIoZG91YmxlKSB7IHJldHVybiBOdW1iZXJFeHByOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBT
dHJpbmdFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihib29sKSB7IHJl
dHVybiBCb29sRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoKSB7IHJldHVy
biBOdWxsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBCcmFja2V0RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2VzcyhFeHBy
ZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERv
dEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdleChjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgSWRlbnRpZmllciYsIGludCkgeyByZXR1cm4gUmVnRXhwRXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4
cHIoRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CisgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKEV4cHJlc3Npb25UeXBlLCBFeHByZXNz
aW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSWRlbnRpZmllciYsIEV4
cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBJZGVudGlm
aWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHBy
OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShib29sKSB7IHJldHVybiAxOyB9CiAgICAg
aW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1l
bnRzKGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCkg
eyByZXR1cm4gMTsgfQpAQCAtMTY5LDI2ICsxNzgsMzggQEAgcHVibGljOgogICAgIHZvaWQgYWRk
VmFyKGNvbnN0IElkZW50aWZpZXIqLCBib29sKSB7IH0KICAgICBpbnQgY29tYmluZUNvbW1hTm9k
ZXMoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgZXZhbENvdW50KCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQotICAgIHZvaWQgYXBwZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8oaW50JiBvcGVy
YW5kU3RhY2tEZXB0aCwgaW50LCBpbnQsIGludCwgaW50LCBib29sKSB7IG9wZXJhbmRTdGFja0Rl
cHRoKys7IH0KKyAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGludCYgb3BlcmFu
ZFN0YWNrRGVwdGgsIGludCBleHByLCBpbnQsIGludCwgaW50LCBib29sKQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX3RvcEJpbmFyeUV4cHIpCisgICAgICAgICAgICBtX3RvcEJpbmFyeUV4cHIgPSBl
eHByOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3RvcEJpbmFyeUV4cHIgPSBCaW5hcnlF
eHByOworICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOworICAgIH0KICAgICAKICAgICAvLyBM
b2dpYyB0byBoYW5kbGUgZGF0YXN0cnVjdHVyZXMgdXNlZCBkdXJpbmcgcGFyc2luZyBvZiBiaW5h
cnkgZXhwcmVzc2lvbnMKICAgICB2b2lkIG9wZXJhdG9yU3RhY2tQb3AoaW50JiBvcGVyYXRvclN0
YWNrRGVwdGgpIHsgb3BlcmF0b3JTdGFja0RlcHRoLS07IH0KICAgICBib29sIG9wZXJhdG9yU3Rh
Y2tIYXNIaWdoZXJQcmVjZWRlbmNlKGludCYsIGludCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgIEJp
bmFyeU9wZXJhbmQgZ2V0RnJvbU9wZXJhbmRTdGFjayhpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBC
aW5hcnlPcGVyYW5kIGdldEZyb21PcGVyYW5kU3RhY2soaW50KSB7IHJldHVybiBtX3RvcEJpbmFy
eUV4cHI7IH0KICAgICB2b2lkIHNocmlua09wZXJhbmRTdGFja0J5KGludCYgb3BlcmFuZFN0YWNr
RGVwdGgsIGludCBhbW91bnQpIHsgb3BlcmFuZFN0YWNrRGVwdGggLT0gYW1vdW50OyB9CiAgICAg
dm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50Jiwg
QmluYXJ5T3BlcmFuZCwgQmluYXJ5T3BlcmFuZCkgeyBvcGVyYW5kU3RhY2tEZXB0aCsrOyB9CiAg
ICAgdm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQs
IGludCkgeyBvcGVyYXRvclN0YWNrRGVwdGgrKzsgfQotICAgIGludCBwb3BPcGVyYW5kU3RhY2so
aW50JikgeyByZXR1cm4gMTsgfQorICAgIGludCBwb3BPcGVyYW5kU3RhY2soaW50JikgeyBpbnQg
cmVzID0gbV90b3BCaW5hcnlFeHByOyBtX3RvcEJpbmFyeUV4cHIgPSAwOyByZXR1cm4gcmVzOyB9
CiAgICAgCi0gICAgdm9pZCBhcHBlbmRVbmFyeVRva2VuKGludCYsIGludCwgaW50KSB7IH0KLSAg
ICBpbnQgdW5hcnlUb2tlblN0YWNrTGFzdFR5cGUoaW50JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIDE7IH0KLSAgICBpbnQgdW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KGludCYpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9Ci0gICAgdm9pZCB1bmFyeVRva2VuU3Rh
Y2tSZW1vdmVMYXN0KGludCYpIHsgfQorICAgIHZvaWQgYXBwZW5kVW5hcnlUb2tlbihpbnQmIHN0
YWNrRGVwdGgsIGludCB0b2ssIGludCkgeyBzdGFja0RlcHRoID0gMTsgbV90b3BVbmFyeVRva2Vu
ID0gdG9rOyB9CisgICAgaW50IHVuYXJ5VG9rZW5TdGFja0xhc3RUeXBlKGludCYpIHsgcmV0dXJu
IG1fdG9wVW5hcnlUb2tlbjsgfQorICAgIGludCB1bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQoaW50
JikgeyByZXR1cm4gMDsgfQorICAgIHZvaWQgdW5hcnlUb2tlblN0YWNrUmVtb3ZlTGFzdChpbnQm
IHN0YWNrRGVwdGgpIHsgc3RhY2tEZXB0aCA9IDA7IH0KICAgICAKICAgICB2b2lkIGFzc2lnbm1l
bnRTdGFja0FwcGVuZChpbnQsIGludCwgaW50LCBpbnQsIGludCwgT3BlcmF0b3IpIHsgfQogICAg
IGludCBjcmVhdGVBc3NpZ25tZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGdldE5hbWUo
Y29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSB7IEFTU0VSVChwcm9wZXJ0eS5uYW1lKTsgcmV0dXJu
ICpwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2RlOjpUeXBlIGdldFR5cGUoY29uc3Qg
UHJvcGVydHkmIHByb3BlcnR5KSB7IHJldHVybiBwcm9wZXJ0eS50eXBlOyB9CisgICAgYm9vbCBp
c1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikgeyByZXR1cm4gZXhwciA9PSBSZXNvbHZlRXhw
ciB8fCBleHByID09IFJlc29sdmVFdmFsRXhwcjsgfQorICAgIAorcHJpdmF0ZToKKyAgICBpbnQg
bV90b3BCaW5hcnlFeHByOworICAgIGludCBtX3RvcFVuYXJ5VG9rZW47CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggNDUwZGM3ZDZmNzg4ODMxZWUzNTY3Y2Fi
YmIxOTQyNDAwYjQyNWRhOC4uNWM1ZTUyMjJmYjIyN2FkNzNkZDNhNTM5YWYyZjBkYTUyZWRhNTI4
YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtMTUzLDYgKzE1MywzMCBA
QCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaSwgUHJvcGVydHlTbG90JiBzbAogCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoZXhlYywgSWRlbnRpZmllcihleGVjLCBVU3RyaW5nOjpudW1iZXIoaSkpLCBz
bG90KTsKIH0KKyAgICAKK3ZvaWQgQXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZO
ZWNlc3NhcnkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChkLT5vdmVycm9kZUNhbGxlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgZC0+b3ZlcnJvZGVDYWxsZXIgPSB0cnVlOworICAgIFBy
b3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIEpTVmFsdWUgdGhyb3dlciA9IGNyZWF0
ZVR5cGVFcnJvckZ1bmN0aW9uKGV4ZWMsICJVbmFibGUgdG8gYWNjZXNzIGNhbGxlciBvZiBzdHJp
Y3QgbW9kZSBmdW5jdGlvbiIpOworICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNzb3JEZXNjcmlwdG9y
KHRocm93ZXIsIHRocm93ZXIsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IEdldHRlciB8IFNldHRl
cik7CisgICAgZGVmaW5lT3duUHJvcGVydHkoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNh
bGxlciwgZGVzY3JpcHRvciwgZmFsc2UpOworfQorCit2b2lkIEFyZ3VtZW50czo6Y3JlYXRlU3Ry
aWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZC0+
b3ZlcnJvZGVDYWxsZWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBkLT5vdmVycm9kZUNh
bGxlZSA9IHRydWU7CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgSlNW
YWx1ZSB0aHJvd2VyID0gY3JlYXRlVHlwZUVycm9yRnVuY3Rpb24oZXhlYywgIlVuYWJsZSB0byBh
Y2Nlc3MgY2FsbGVlIG9mIHN0cmljdCBtb2RlIGZ1bmN0aW9uIik7CisgICAgZGVzY3JpcHRvci5z
ZXRBY2Nlc3NvckRlc2NyaXB0b3IodGhyb3dlciwgdGhyb3dlciwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgR2V0dGVyIHwgU2V0dGVyKTsKKyAgICBkZWZpbmVPd25Qcm9wZXJ0eShleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlLCBkZXNjcmlwdG9yLCBmYWxzZSk7Cit9CiAKIGJvb2wg
QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKQEAgLTE3MiwxMCAr
MTk2LDE2IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hCiAgICAgfQogCiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYmIExJS0VMWSghZC0+b3Zl
cnJvZGVDYWxsZWUpKSB7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUoZC0+Y2FsbGVlKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghZC0+aXNTdHJpY3RNb2RlKSB7CisgICAgICAg
ICAgICBzbG90LnNldFZhbHVlKGQtPmNhbGxlZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhl
Yyk7CiAgICAgfQogCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY2FsbGVyICYmIGQtPmlzU3RyaWN0TW9kZSkKKyAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNh
bGxlcklmTmVjZXNzYXJ5KGV4ZWMpOworCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIApAQCAtMTk3LDkgKzIyNywx
NSBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcAogICAgIH0KICAgICAKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUgJiYgTElLRUxZKCFkLT5vdmVy
cm9kZUNhbGxlZSkpIHsKLSAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGQtPmNhbGxl
ZSwgRG9udEVudW0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCFkLT5pc1N0
cmljdE1vZGUpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihkLT5jYWxs
ZWUsIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2FyeShleGVjKTsKICAgICB9CisKKyAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIgJiYgZC0+
aXNTdHJpY3RNb2RlKQorICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3Nhcnko
ZXhlYyk7CiAgICAgCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KQEAgLTI0OSwxMSArMjg1LDE3
IEBAIHZvaWQgQXJndW1lbnRzOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsCiAgICAgfQogCiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYmICFkLT5vdmVycm9kZUNhbGxlZSkg
ewotICAgICAgICBkLT5vdmVycm9kZUNhbGxlZSA9IHRydWU7Ci0gICAgICAgIHB1dERpcmVjdChw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51bSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
aWYgKCFkLT5pc1N0cmljdE1vZGUpIHsKKyAgICAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0g
dHJ1ZTsKKyAgICAgICAgICAgIHB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51
bSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY3JlYXRlU3RyaWN0
TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KGV4ZWMpOwogICAgIH0KIAorICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlciAmJiBkLT5pc1N0cmljdE1vZGUpCisg
ICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeShleGVjKTsKKwogICAgIEpT
T2JqZWN0OjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKQEAgLTI5
NCw5ICszMzYsMTUgQEAgYm9vbCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIH0KIAogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSAmJiAhZC0+b3ZlcnJv
ZGVDYWxsZWUpIHsKLSAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSB0cnVlOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCFkLT5pc1N0cmljdE1vZGUpIHsKKyAgICAgICAgICAg
IGQtPm92ZXJyb2RlQ2FsbGVlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2FyeShleGVjKTsK
ICAgICB9CisgICAgCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY2FsbGVyICYmICFkLT5pc1N0cmljdE1vZGUpCisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVD
YWxsZXJJZk5lY2Vzc2FyeShleGVjKTsKIAogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
CmluZGV4IDQ5YzhiM2I1OGFlMzg1NTQ1ZWQzOTM3YTYyYjkyNzVlZjZkOGZlNTguLjcxNWEyYWMx
NzVkYjU0YTg2MTc0Mzk5ODNmZTVmNDQ2NGU4NzU0OGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuaApAQCAtNTAsNiArNTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNGdW5j
dGlvbiogY2FsbGVlOwogICAgICAgICBib29sIG92ZXJyb2RlTGVuZ3RoIDogMTsKICAgICAgICAg
Ym9vbCBvdmVycm9kZUNhbGxlZSA6IDE7CisgICAgICAgIGJvb2wgb3ZlcnJvZGVDYWxsZXIgOiAx
OworICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA6IDE7CiAgICAgfTsKIAogCkBAIC0xMDUsNiAr
MTA3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9w
ZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB2b2lkIGNy
ZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeShFeGVjU3RhdGUqKTsKKyAgICAgICAgdm9p
ZCBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CiAKICAgICAg
ICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZp
bmZvOyB9CiAKQEAgLTE3Miw2ICsxNzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGQt
PmNhbGxlZSA9IGNhbGxlZTsKICAgICAgICAgZC0+b3ZlcnJvZGVMZW5ndGggPSBmYWxzZTsKICAg
ICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSBmYWxzZTsKKyAgICAgICAgZC0+b3ZlcnJvZGVDYWxs
ZXIgPSBmYWxzZTsKKyAgICAgICAgZC0+aXNTdHJpY3RNb2RlID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIGlmIChkLT5pc1N0cmljdE1vZGUpCisgICAg
ICAgICAgICBjb3B5UmVnaXN0ZXJzKCk7CiAgICAgfQogCiAgICAgaW5saW5lIEFyZ3VtZW50czo6
QXJndW1lbnRzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBOb1BhcmFtZXRlcnNUeXBlKQpAQCAtMjAx
LDYgKzIwOSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZC0+Y2FsbGVlID0gYXNGdW5j
dGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKICAgICAgICAgZC0+b3ZlcnJvZGVMZW5ndGggPSBm
YWxzZTsKICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSBmYWxzZTsKKyAgICAgICAgZC0+b3Zl
cnJvZGVDYWxsZXIgPSBmYWxzZTsKKyAgICAgICAgZC0+aXNTdHJpY3RNb2RlID0gY2FsbEZyYW1l
LT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIGlmIChkLT5pc1N0cmljdE1v
ZGUpCisgICAgICAgICAgICBjb3B5UmVnaXN0ZXJzKCk7CiAgICAgfQogCiAgICAgaW5saW5lIHZv
aWQgQXJndW1lbnRzOjpjb3B5UmVnaXN0ZXJzKCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggMzgzNzgxN2QwNTJmNzhlY2UwNjFhYzZkZTcxNzEw
NGRlZmI3YjdlYi4uMTU2MTEwMjM1MjA3ZjZhYzlmYjE2N2MyNzVjYTRjMzIyZDEzNTlmZCAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKICAgICAsIGVtcHR5SWRlbnRpZmllcihnbG9iYWxEYXRhLCAiIikKICAg
ICAsIHVuZGVyc2NvcmVQcm90byhnbG9iYWxEYXRhLCAiX19wcm90b19fIikKICAgICAsIHRoaXNJ
ZGVudGlmaWVyKGdsb2JhbERhdGEsICJ0aGlzIikKKyAgICAsIHVzZVN0cmljdElkZW50aWZpZXIo
Z2xvYmFsRGF0YSwgInVzZSBzdHJpY3QiKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKIHsKIH0KZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBkZTI0ZjRhMGQ0ODQ3YjVh
MmE4OTg5NmU5NjRkMDM0YmFkNzE3ZjZhLi4xZTIyYjZhYmRmZmRhZjg4NTQ3ZjU4Zjc0ZDdmMjFk
NmNlZmFlYTJhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CkBAIC05NCw2ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlm
aWVyIGVtcHR5SWRlbnRpZmllcjsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciB1bmRlcnNjb3Jl
UHJvdG87CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgdGhpc0lkZW50aWZpZXI7CisgICAgICAg
IGNvbnN0IElkZW50aWZpZXIgdXNlU3RyaWN0SWRlbnRpZmllcjsKIAogI2RlZmluZSBKU0NfSURF
TlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZp
ZXIgbmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5jcHAKaW5kZXggYTJiZTQ3MzY1OGY2MjRmMWQ3ZWYxNTYxM2ZiMjVlYzQxODU0
NGJkMy4uZTM1NDI0YmI0MjJiMzljYTc1YWI4NDU0MjJkYTkyMjk1MzViYTQ4NiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKQEAgLTE5NSw0ICsxOTUsNDcgQEAgSlNPYmplY3QqIHRocm93U3lu
dGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJTeW50YXggZXJyb3IiKSk7CiB9CiAKK2NsYXNzIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1Ymxp
YzoKKyAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKKyAgICAgICAgOiBJbnRlcm5hbEZ1bmN0
aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5n
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKQorICAgICAgICAsIG1f
bWVzc2FnZShtZXNzYWdlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjKQorICAgIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc3RhdGljX2Nhc3Q8U3Ry
aWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKKyAgICB9CisgICAgCisg
ICAgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVj
dERhdGEpCisgICAgeworICAgICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNv
bnN0cnVjdFRocm93VHlwZUVycm9yOworICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7
CisgICAgfQorICAgIAorICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCisgICAgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qPihl
eGVjLT5jYWxsZWUoKSktPm1fbWVzc2FnZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdWxsKCkpOworICAgIH0KKworICAgIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRh
JiBjYWxsRGF0YSkKKyAgICB7CisgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNh
bGxUaHJvd1R5cGVFcnJvcjsKKyAgICAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgVVN0cmluZyBtX21lc3NhZ2U7Cit9OworCitDT01QSUxFX0FTU0VSVChz
aXplb2YoU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKSA8PSBzaXplb2YoQ29sbGVjdG9yQ2Vs
bCksIHNpemVvZl9TdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25fbXVzdF9iZV9sZXNzX3RoYW5f
Q29sbGVjdG9yQ2VsbCk7CisKK0pTVmFsdWUgY3JlYXRlVHlwZUVycm9yRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHJldHVybiBuZXcgKGV4
ZWMpIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+aW50ZXJuYWxGdW5jdGlvblN0
cnVjdHVyZSgpLCBtZXNzYWdlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmgKaW5kZXggMWEwZWNlNTRiMmNjZTk3YmZjMTY3Njc1N2FmYTRlZDk1MDI1Y2YwOC4u
YmZkZTdkYzY2MjgyNGE0MGI4YjU5Y2Y0M2Y4NzQ0NzYzNzhkZDdmZSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuaApAQCAtNzMsNiArNzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikg
eyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXJyb3IoZXhlYywgZXJyb3IpKTsgfQogICAg
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykg
eyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsgfQogCisgICAg
SlNWYWx1ZSBjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVT
dHJpbmcmIG1lc3NhZ2UpOworICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
cnJvcl9oCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4NzFmM2UyMDQw
ZDgxZWQ3Mjg0MDUwYTBmOTVlZmU4NGEwYWE0NWVkLi45NWIwMzM0YjYwZmNiZDk0MDZkNjQ3ZDMx
NjUyNmQ0MWE1NzMzYmEzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAg
LTQ1LDggKzQ1LDggQEAgVlB0ckhhY2tFeGVjdXRhYmxlOjp+VlB0ckhhY2tFeGVjdXRhYmxlKCkK
IHsKIH0KIAotRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBz
b3VyY2UpCitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAgIDogU2Ny
aXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIApAQCAt
NTUsNyArNTUsNyBAQCBFdmFsRXhlY3V0YWJsZTo6fkV2YWxFeGVjdXRhYmxlKCkKIH0KIAogUHJv
Z3JhbUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2Up
CisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgZmFsc2UpCiB7CiB9CiAKQEAg
LTYzLDggKzYzLDggQEAgUHJvZ3JhbUV4ZWN1dGFibGU6On5Qcm9ncmFtRXhlY3V0YWJsZSgpCiB7
CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJh
bWV0ZXJzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCi0gICAgOiBTY3JpcHRFeGVjdXRh
YmxlKGdsb2JhbERhdGEsIHNvdXJjZSkKK0Z1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVj
dXRhYmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rp
b25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGluU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0
TGluZSwgaW50IGxhc3RMaW5lKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShnbG9iYWxEYXRhLCBz
b3VyY2UsIGluU3RyaWN0Q29udGV4dCkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMoMCkK
ICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKGZvcmNlVXNlc0FyZ3VtZW50cykKICAgICAsIG1f
cGFyYW1ldGVycyhwYXJhbWV0ZXJzKQpAQCAtNzUsOCArNzUsOCBAQCBGdW5jdGlvbkV4ZWN1dGFi
bGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElk
ZW50aWZpZQogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKIH0KIAotRnVuY3Rpb25FeGVjdXRh
YmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRz
LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGludCBmaXJzdExpbmUsIGludCBsYXN0
TGluZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYywgc291cmNlKQorRnVuY3Rpb25FeGVj
dXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1l
bnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4
ZWMsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0KQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxl
cygwKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMoZm9yY2VVc2VzQXJndW1lbnRzKQogICAg
ICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCkBAIC05Niw3ICs5Niw3IEBAIEpTT2JqZWN0KiBF
dmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlCiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7CiAgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAg
ICBSZWZQdHI8RXZhbE5vZGU+IGV2YWxOb2RlID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxF
dmFsTm9kZT4oZ2xvYmFsRGF0YSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdC0+ZGVidWdnZXIoKSwgZXhlYywgbV9zb3VyY2UsIDAsICZleGNlcHRpb24pOworICAgIFJl
ZlB0cjxFdmFsTm9kZT4gZXZhbE5vZGUgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPEV2YWxO
b2RlPihleGVjLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5kZWJ1
Z2dlcigpLCBleGVjLCBtX3NvdXJjZSwgMCwgaXNTdHJpY3RNb2RlKCksICZleGNlcHRpb24pOwog
ICAgIGlmICghZXZhbE5vZGUpIHsKICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAg
IHJldHVybiBleGNlcHRpb247CkBAIC0xMzEsNyArMTMxLDcgQEAgSlNPYmplY3QqIFByb2dyYW1F
eGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNPYmplY3QqIGV4
Y2VwdGlvbiA9IDA7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1O
b2RlID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZ2xvYmFsRGF0YSwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgZXhl
YywgbV9zb3VyY2UsIDAsICZleGNlcHRpb24pOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJv
Z3JhbU5vZGUgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPihleGVjLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLCBleGVj
LCBtX3NvdXJjZSwgMCwgZmFsc2UsICZleGNlcHRpb24pOwogICAgIGlmIChwcm9ncmFtTm9kZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CkBAIC0xNDUsNyArMTQ1
LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2MKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0g
MDsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwog
ICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwotICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBnbG9i
YWxEYXRhLT5wYXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPihnbG9iYWxEYXRhLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLCBleGVjLCBtX3NvdXJj
ZSwgMCwgJmV4Y2VwdGlvbik7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9
IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5vZGU+KGV4ZWMsIGxleGljYWxHbG9i
YWxPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCksIGV4ZWMsIG1fc291cmNl
LCAwLCBpc1N0cmljdE1vZGUoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKCFwcm9ncmFtTm9kZSkg
ewogICAgICAgICBBU1NFUlQoZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsK
QEAgLTE3OCw3ICsxNzgsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbgogewogICAgIEpTT2Jq
ZWN0KiBleGNlcHRpb24gPSAwOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IHNjb3Bl
Q2hhaW5Ob2RlLT5nbG9iYWxEYXRhOwotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5
ID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihnbG9iYWxEYXRh
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIDAsIG1fc291cmNlLCBtX3BhcmFtZXRl
cnMuZ2V0KCksICZleGNlcHRpb24pOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5
ID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIDAsIG1fc291cmNlLCBtX3BhcmFtZXRlcnMuZ2V0
KCksIGlzU3RyaWN0TW9kZSgpLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoIWJvZHkpIHsKICAgICAg
ICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBleGNlcHRpb247CkBAIC0yMTks
NyArMjE5LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKIHsKICAgICBKU09iamVjdCogZXhj
ZXB0aW9uID0gMDsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBzY29wZUNoYWluTm9k
ZS0+Z2xvYmFsRGF0YTsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IGdsb2Jh
bERhdGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZ2xvYmFsRGF0YSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJzLmdldCgp
LCAmZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IGdsb2Jh
bERhdGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJzLmdldCgpLCBpc1N0
cmljdE1vZGUoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKCFib2R5KSB7CiAgICAgICAgIEFTU0VS
VChleGNlcHRpb24pOwogICAgICAgICByZXR1cm4gZXhjZXB0aW9uOwpAQCAtMjY0LDEwICsyNjQs
MTIgQEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBt
YXJrU3RhY2spCiAgICAgICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5tYXJrQWdncmVnYXRl
KG1hcmtTdGFjayk7CiB9CiAKLVBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gRnVuY3Rpb25FeGVj
dXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCitQYXNz
T3duUHRyPEV4Y2VwdGlvbkluZm8+IEZ1bmN0aW9uRXhlY3V0YWJsZTo6cmVwYXJzZUV4Y2VwdGlv
bkluZm8oRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIENv
ZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwotICAg
IFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBuZXdGdW5jdGlvbkJvZHkgPSBnbG9iYWxEYXRhLT5w
YXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGdsb2JhbERhdGEsIDAsIDAsIDAsIG1fc291
cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCksICZleGNlcHRpb24pOworICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9IHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxEYXRhOworICAgIFJlZlB0cjxGdW5j
dGlvbkJvZHlOb2RlPiBuZXdGdW5jdGlvbkJvZHkgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNl
PEZ1bmN0aW9uQm9keU5vZGU+KGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxPYmplY3QsIDAs
IDAsIG1fc291cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCksIGlzU3RyaWN0TW9kZSgpLCAmZXhjZXB0
aW9uKTsKKyAgICBBU1NFUlQobmV3RnVuY3Rpb25Cb2R5LT5pc1N0cmljdE1vZGUoKSA9PSBpc1N0
cmljdE1vZGUoKSk7CiAgICAgaWYgKCFuZXdGdW5jdGlvbkJvZHkpCiAgICAgICAgIHJldHVybiBQ
YXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+KCk7CiAgICAgaWYgKG1fZm9yY2VVc2VzQXJndW1lbnRz
KQpAQCAtMjk4LDEwICszMDAsMTIgQEAgUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBGdW5jdGlv
bkV4ZWN1dGFibGU6OnJlcGFyc2VFeGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSoKICAgICByZXR1
cm4gbmV3Q29kZUJsb2NrLT5leHRyYWN0RXhjZXB0aW9uSW5mbygpOwogfQogCi1QYXNzT3duUHRy
PEV4Y2VwdGlvbkluZm8+IEV2YWxFeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCitQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IEV2YWxFeGVjdXRh
YmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5mbyhFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgSlNPYmplY3Qq
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgUmVmUHRyPEV2YWxOb2RlPiBuZXdFdmFsQm9keSA9IGdsb2Jh
bERhdGEtPnBhcnNlci0+cGFyc2U8RXZhbE5vZGU+KGdsb2JhbERhdGEsIDAsIDAsIDAsIG1fc291
cmNlLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBzY29w
ZUNoYWluTm9kZS0+Z2xvYmFsRGF0YTsKKyAgICBSZWZQdHI8RXZhbE5vZGU+IG5ld0V2YWxCb2R5
ID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxFdmFsTm9kZT4oZXhlYywgc2NvcGVDaGFpbk5v
ZGUtPmdsb2JhbE9iamVjdCwgMCwgMCwgbV9zb3VyY2UsIDAsIGlzU3RyaWN0TW9kZSgpLCAmZXhj
ZXB0aW9uKTsKKyAgICBBU1NFUlQobmV3RXZhbEJvZHktPmlzU3RyaWN0TW9kZSgpID09IGlzU3Ry
aWN0TW9kZSgpKTsKICAgICBpZiAoIW5ld0V2YWxCb2R5KQogICAgICAgICByZXR1cm4gUGFzc093
blB0cjxFeGNlcHRpb25JbmZvPigpOwogCkBAIC0zNDEsNyArMzQ1LDcgQEAgdm9pZCBGdW5jdGlv
bkV4ZWN1dGFibGU6OnJlY29tcGlsZShFeGVjU3RhdGUqKQogUGFzc1JlZlB0cjxGdW5jdGlvbkV4
ZWN1dGFibGU+IEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRp
ZmllciYgZnVuY3Rpb25OYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIERlYnVnZ2VyKiBkZWJ1Z2dlciwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdCoqIGV4Y2VwdGlvbikKIHsKICAgICBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBleGVjLT5nbG9iYWxE
YXRhKCkucGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oJmV4ZWMtPmdsb2JhbERhdGEoKSwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgZGVidWdnZXIsIGV4ZWMsIHNvdXJjZSwgMCwgZXhjZXB0aW9uKTsK
KyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBleGVjLT5nbG9iYWxEYXRhKCkucGFy
c2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhlYywgbGV4aWNhbEdsb2JhbE9iamVjdCwgZGVidWdn
ZXIsIGV4ZWMsIHNvdXJjZSwgMCwgZmFsc2UsIGV4Y2VwdGlvbik7CiAgICAgaWYgKCFwcm9ncmFt
KSB7CiAgICAgICAgIEFTU0VSVCgqZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0z
NTcsNyArMzYxLDcgQEAgUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmkKICAgICBGdW5jdGlvbkJvZHlO
b2RlKiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7
CiAgICAgQVNTRVJUKGJvZHkpOwogCi0gICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmN0aW9uTmFtZSwgYm9keS0+c291cmNlKCksIGJv
ZHktPnVzZXNBcmd1bWVudHMoKSwgYm9keS0+cGFyYW1ldGVycygpLCBib2R5LT5saW5lTm8oKSwg
Ym9keS0+bGFzdExpbmUoKSk7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmN0aW9uTmFtZSwgYm9keS0+c291cmNlKCksIGJvZHkt
PnVzZXNBcmd1bWVudHMoKSwgYm9keS0+cGFyYW1ldGVycygpLCBmYWxzZSwgYm9keS0+bGluZU5v
KCksIGJvZHktPmxhc3RMaW5lKCkpOwogfQogCiBVU3RyaW5nIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
cGFyYW1TdHJpbmcoKSBjb25zdApAQCAtMzcyLDcgKzM3Niw3IEBAIFVTdHJpbmcgRnVuY3Rpb25F
eGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIGJ1aWxkZXIuYnVpbGQo
KTsKIH0KIAotUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBQcm9ncmFtRXhlY3V0YWJsZTo6cmVw
YXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxv
Y2sqKQorUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBQcm9ncmFtRXhlY3V0YWJsZTo6cmVwYXJz
ZUV4Y2VwdGlvbkluZm8oRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKQog
ewogICAgIC8vIENvZGVCbG9ja3MgZm9yIHByb2dyYW0gY29kZSBhcmUgdHJhbnNpZW50IGFuZCB0
aGVyZWZvcmUgZG8gbm90IGdhaW4gZnJvbSBmcm9tIHRocm93aW5nIG91dCB0aGVpciBleGNlcHRp
b24gaW5mb3JtYXRpb24uCiAgICAgcmV0dXJuIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4oKTsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggZmVhYjdlZjkwNzEwMjE4ZGZmNGUy
OTljNmU2N2I3YjBmNWIyYjc0YS4uMTlhODgzZDgxYTFhMmY2ODA0MGQwNDA2MTA5NmVmMjc4YTc5
MmNkNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTEzOCwxMCArMTM4LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZSA6IHB1Ymxp
YyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBTY3JpcHRFeGVjdXRhYmxl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAg
ICAgICBTY3JpcHRFeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAgICAgOiBF
eGVjdXRhYmxlQmFzZShOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAgICAgICAgICAs
IG1fc291cmNlKHNvdXJjZSkKLSAgICAgICAgICAgICwgbV9mZWF0dXJlcygwKQorICAgICAgICAg
ICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAw
KQogICAgICAgICB7CiAjaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKICAgICAgICAgICAg
IHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAgfQogCi0gICAgICAgIFNjcmlwdEV4ZWN1dGFibGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgIFNjcmlw
dEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJv
b2wgaXNJblN0cmljdENvbnRleHQpCiAgICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9Q
QVJBTUVURVJTX05PVF9DT01QSUxFRCkKICAgICAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQot
ICAgICAgICAgICAgLCBtX2ZlYXR1cmVzKDApCisgICAgICAgICAgICAsIG1fZmVhdHVyZXMoaXNJ
blN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDApCiAgICAgICAgIHsKICNpZiBF
TkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQogICAgICAgICAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CkBAIC0xNzUsOCArMTc1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJv
b2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1cmU7IH0K
ICAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAm
IEFyZ3VtZW50c0ZlYXR1cmU7IH0KICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIHx8IG1fZmVhdHVyZXMgJiAoRXZhbEZl
YXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSk7IH0KKyAgICAgICAgYm9vbCBpc1N0
cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7
IH0KIAotICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4
Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiByZXBhcnNlRXhj
ZXB0aW9uSW5mbyhFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIENvZGVCbG9jayopID0gMDsK
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIGludCBmaXJzdExpbmUsIGludCBs
YXN0TGluZSkKQEAgLTIxNCw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiAqbV9ldmFsQ29kZUJsb2NrOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEV2YWxFeGVjdXRhYmxlKGV4
ZWMsIHNvdXJjZSkpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxFeGVjdXRhYmxl
PiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wg
aXNJblN0cmljdENvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmFsRXhlY3V0YWJsZShl
eGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0KSk7IH0KIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIEpJVENvZGUmIGdlbmVyYXRlZEpJVENvZGUoKQpAQCAtMjI0LDExICsyMjUsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEV2YWxFeGVj
dXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAgRXZhbEV4ZWN1
dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wpOwogCiAgICAgICAgIEpT
T2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAot
ICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlv
bkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKTsKKyAgICAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25JbmZv
KEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKik7CiAKICAgICAgICAgT3du
UHRyPEV2YWxDb2RlQmxvY2s+IG1fZXZhbENvZGVCbG9jazsKICAgICB9OwpAQCAtMjcxLDcgKzI3
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50ZXJu
YWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwg
U2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKTsKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRy
PEV4Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25JbmZvKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW5Ob2RlKiwgQ29kZUJsb2NrKik7CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+
IG1fcHJvZ3JhbUNvZGVCbG9jazsKICAgICB9OwpAQCAtMjc5LDE0ICsyODAsMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMs
IGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1l
bnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENvbnRl
eHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGdW5jdGlvbkV4ZWN1dGFibGUoZXhlYywgbmFtZSwgc291cmNl
LCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGZpcnN0TGluZSwgbGFzdExpbmUpKTsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxlKGV4ZWMs
IG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBpc0luU3RyaWN0
Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRl
cnMsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9y
Y2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJ
blN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFs
RGF0YSwgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGZpcnN0
TGluZSwgbGFzdExpbmUpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rp
b25FeGVjdXRhYmxlKGdsb2JhbERhdGEsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRz
LCBwYXJhbWV0ZXJzLCBpc0luU3RyaWN0Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgfkZ1bmN0aW9uRXhlY3V0YWJsZSgpOwpAQCAtMzU4LDEzICsz
NTksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0
aW9uRXhlY3V0YWJsZT4gZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0
ZSosIERlYnVnZ2VyKiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEq
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVz
ZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGludCBmaXJzdExpbmUsIGludCBsYXN0
TGluZSk7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMs
IEZ1bmN0aW9uUGFyYW1ldGVycyosIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7CisgICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9u
UGFyYW1ldGVycyosIGJvb2wsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7CisgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBj
b25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1l
dGVycyosIGJvb2wsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7CiAKICAgICAgICAgSlNP
YmplY3QqIGNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUq
KTsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSopOwogCi0gICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxFeGNl
cHRpb25JbmZvPiByZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERhdGEqLCBTY29wZUNoYWlu
Tm9kZSosIENvZGVCbG9jayopOworICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9u
SW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBD
b2RlQmxvY2sqKTsKIAogICAgICAgICB1bnNpZ25lZCBtX251bUNhcHR1cmVkVmFyaWFibGVzIDog
MzE7CiAgICAgICAgIGJvb2wgbV9mb3JjZVVzZXNBcmd1bWVudHMgOiAxOwpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IGQxMjE1MThmNTlmMmQzMzA5MzQ1MjlkYTk5
Yjc5MWZlMWZmYzRjNDkuLjc5NWFkMWY3MWMyMTEzN2Q2MTlhYWNkNGVhOGZkODY3OTJlZTZkYWYg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTE4Niw2ICsxODYs
MTEgQEAgSlNPYmplY3QqIEpTQWN0aXZhdGlvbjo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKK0pTVmFs
dWUgSlNBY3RpdmF0aW9uOjp0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QKK3sK
KyAgICByZXR1cm4ganNOdWxsKCk7Cit9CisgICAgCiBib29sIEpTQWN0aXZhdGlvbjo6aXNEeW5h
bWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdAogewogICAgIHJlcXVp
cmVzRHluYW1pY0NoZWNrcyA9IGQoKS0+ZnVuY3Rpb25FeGVjdXRhYmxlLT51c2VzRXZhbCgpOwpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKaW5kZXggOWZmOTE2ODVkZGRlMmExNDFk
ZGNmNGIyNzNmMDk2MTljNjgzZTM3Yy4uNmRkNmQ3MDcwYWY3OGE1NDdjYTgzZDYxMzE5N2VhZWU3
YmU3OGJmMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCkBAIC02MCw2ICs2
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAogICAgICAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBjb3B5UmVnaXN0ZXJzKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggN2ViOWJhNTI2YjUzMDk4ZTAzNDIwMTQxOWZlODY2
ZjQ4ZGNhYzNhNS4uZmRhYTUwOTliMTJjODliOTUzZWUyZDk5YjRmODJkOWRiYWZjODA1MSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMjIsNiArMTIyLDE1IEBAIEpT
RnVuY3Rpb246On5KU0Z1bmN0aW9uKCkKICAgICB9CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBT
dHJpY3RNb2RlQ2FsbGVyQWNjZXNzRXJyb3IgPSAiQ2Fubm90IGFjY2VzcyBjYWxsZXIgcHJvcGVy
dHkgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbiI7CitzdGF0aWMgY29uc3QgY2hhciogU3RyaWN0
TW9kZUFyZ3VtZW50c0FjY2Vzc0Vycm9yID0gIkNhbm5vdCBhY2Nlc3MgYXJndW1lbnRzIHByb3Bl
cnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24iOworCitzdGF0aWMgdm9pZCBjcmVhdGVEZXNj
cmlwdG9yRm9yVGhyb3dpbmdQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBKU1ZhbHVlIHRo
cm93ZXIgPSBjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbihleGVjLCBtZXNzYWdlKTsKKyAgICBkZXNj
cmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcih0aHJvd2VyLCB0aHJvd2VyLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBHZXR0ZXIgfCBTZXR0ZXIpOworfQorCiBjb25zdCBVU3RyaW5nJiBKU0Z1
bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gYXNTdHJpbmcoZ2V0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZh
bHVlKCk7CkBAIC0yMDksNiArMjE4LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOCiAgICAg
fQogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1l
bnRzKSB7CisgICAgICAgIGlmIChqc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJDYW4ndCBhY2Nlc3MgYXJndW1lbnRzIG9i
amVjdCBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBzbG90LnNldFZh
bHVlKGpzTnVsbCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAK
ICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpcywgYXJndW1lbnRzR2V0dGVyKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjE5LDYgKzIzNCwxMSBAQCBib29sIEpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TgogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNhbGxlcikgeworICAgICAgICBpZiAoanNFeGVjdXRhYmxlKCktPmlz
U3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlQ2FsbGVyQWNjZXNzRXJyb3IpOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShqc051bGwo
KSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBzbG90LnNl
dENhY2hlYWJsZUN1c3RvbSh0aGlzLCBjYWxsZXJHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0yMjYsMzUgKzI0Niw0MSBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5Tgog
ICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAotICAgIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi0gICAgewotICAgICAgICBpZiAoaXNIb3N0RnVuY3Rp
b24oKSkKLSAgICAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewotICAgICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICBnZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAgICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7Citib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIGlmIChpc0hvc3RGdW5j
dGlvbigpKQorICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4
ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CisgICAgCisgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CisgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworICAgIH0KKyAgICAKKyAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpIHsKKyAgICAgICAg
aWYgKGpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGNyZWF0ZURl
c2NyaXB0b3JGb3JUaHJvd2luZ1Byb3BlcnR5KGV4ZWMsIGRlc2NyaXB0b3IsIFN0cmljdE1vZGVB
cmd1bWVudHNBY2Nlc3NFcnJvcik7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRlc2NyaXB0
b3Iuc2V0RGVzY3JpcHRvcihleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUFyZ3VtZW50cyhl
eGVjLCB0aGlzKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewotICAgICAgICAgICAgZGVz
Y3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKGV4ZWMsIGpzRXhlY3V0YWJsZSgpLT5wYXJh
bWV0ZXJDb3VudCgpKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgeworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihq
c051bWJlcihleGVjLCBqc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKSksIFJlYWRPbmx5
IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxl
cikgeworICAgICAgICBpZiAoanNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAg
ICAgICAgY3JlYXRlRGVzY3JpcHRvckZvclRocm93aW5nUHJvcGVydHkoZXhlYywgZGVzY3JpcHRv
ciwgU3RyaWN0TW9kZUNhbGxlckFjY2Vzc0Vycm9yKTsKKyAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZl
Q2FsbGVyKGV4ZWMsIHRoaXMpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCisgICAgcmV0dXJu
IEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpOworfQorCiB2b2lkIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUpCiB7CiAgICAgaWYgKCFpc0hvc3RGdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CkBAIC0yNzIsNiArMjk4LDE2IEBAIHZvaWQgSlNGdW5j
dGlvbjo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhCiAgICAgICAgIEJhc2U6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoanNFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmFyZ3VtZW50cykgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZUFyZ3VtZW50c0FjY2Vzc0Vycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jYWxsZXIpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVDYWxsZXJBY2Nlc3NFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1l
bnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKQogICAg
ICAgICByZXR1cm47CiAgICAgQmFzZTo6cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDVlYWE1OWI3
OWUyMDQ5M2RkZjZhMmJjNDYzYTQ4MWFlOWMyNjU2NTcuLjA3M2I1NGM3YmYzOGJhMzMwYTA3YWEz
NDFlYjY0Yjc3MTU2YzUxMjkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNl
ci5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCisjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2
YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2lmIEVOQUJMRShSRUdF
WFBfVFJBQ0lORykKICNpbmNsdWRlICJSZWdFeHAuaCIKQEAgLTEyNCw2ICsxMjUsNyBAQCBKU0ds
b2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhy
ZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwgaW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvclN0cnVj
dHVyZShKU09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIHRlcm1pbmF0
ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZShKU09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVs
bCgpKSkKICAgICAsIHN0YXRpY1Njb3BlU3RydWN0dXJlKEpTU3RhdGljU2NvcGVPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCisgICAgLCBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVj
dHVyZShTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAg
ICAsIHN0cmluZ1N0cnVjdHVyZShKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkK
ICAgICAsIG5vdEFuT2JqZWN0RXJyb3JTdHViU3RydWN0dXJlKEpTTm90QW5PYmplY3RFcnJvclN0
dWI6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAgLCBub3RBbk9iamVjdFN0cnVjdHVy
ZShKU05vdEFuT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggOGUyZWQ2MTQzYTBlYzhjODk2MGRlYjVkY2ZhMDI2
Zjg3Nzk4NGZmNS4uNjdmMmVkNGJhOTZmOTUxZWJlNDg5N2FkN2IwOTUyYjlhYmVlNmZmYyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGludGVycnVwdGVkRXhlY3V0
aW9uRXJyb3JTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvclN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RhdGlj
U2NvcGVTdHJ1Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cmljdEV2YWxBY3Rp
dmF0aW9uU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJpbmdTdHJ1Y3R1
cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5vdEFuT2JqZWN0RXJyb3JTdHViU3RydWN0
dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBub3RBbk9iamVjdFN0cnVjdHVyZTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggODljMDQyYTRlZjQ5
MWY2NzYyOTQ5ZmI5NjYwNzRkMjY5NjFmMThjNC4uOTAzZTU3M2ZiODdkNDE0Yzg2NTRjOTlmZmM2
YjdmYmNjYjVhYzM0NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTIwNCw2ICsyMDQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVl
IHByb3RvdHlwZSkKIAogICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEZ1
bmN0aW9uUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoanNOdWxsKCkpKTsgLy8gVGhlIHJlYWwgcHJvdG90eXBlIHdpbGwgYmUgc2V0IG9uY2Ug
T2JqZWN0UHJvdG90eXBlIGlzIGNyZWF0ZWQuCiAgICAgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0
cnVjdHVyZSA9IFByb3RvdHlwZUZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlv
blByb3RvdHlwZSk7CisgICAgZCgpLT5pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlID0gSW50ZXJu
YWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpOwogICAg
IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogY2FsbEZ1bmN0aW9uID0gMDsKICAgICBOYXRpdmVGdW5j
dGlvbldyYXBwZXIqIGFwcGx5RnVuY3Rpb24gPSAwOwogICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5
cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyhleGVjLCB0aGlzLCBkKCktPnByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbik7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZjVkMmZiMDdjMWRhZDA4MWE1
ODBlNmMwMTAzNWE0MWY2NjcxM2QwOC4uM2I5OTQzOTExODAxY2NjYTk5ZGM5N2UwOTBkODUwYjI3
ODYyYzE2YiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTQ4
LDYgKzE0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwogICAgICAgICAgICAgUmVmUHRyPFN0cnVj
dHVyZT4gcmVnRXhwU3RydWN0dXJlOwogICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3Ry
aW5nT2JqZWN0U3RydWN0dXJlOworICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gaW50ZXJu
YWxGdW5jdGlvblN0cnVjdHVyZTsKIAogICAgICAgICAgICAgU3ltYm9sVGFibGUgc3ltYm9sVGFi
bGU7CiAgICAgICAgICAgICB1bnNpZ25lZCBwcm9maWxlR3JvdXA7CkBAIC0yNDMsNiArMjQ0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAg
IFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5u
dW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBwcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBk
KCktPnJlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCmluZGV4IDFlMjBmN2ZlMmJhZDIxNzc5ZTFkNjNmZjQzNDg1MzFlMTA3ZTQx
ODYuLmNkODlkZDIwY2UyODMzZDU5Yjg4MWYwYmE1ZDc5MDBiMjIwNDRhYmMgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC00
NTAsNyArNDUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZh
bChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJlcGFy
c2VyLnRyeUxpdGVyYWxQYXJzZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBh
cnNlZE9iamVjdCk7CiAKLSAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocykpOworICAgIFJlZlB0cjxFdmFsRXhl
Y3V0YWJsZT4gZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShz
KSwgZmFsc2UpOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBpbGUoZXhlYywgc3Rh
dGljX2Nhc3Q8SlNHbG9iYWxPYmplY3QqPih1bndyYXBwZWRPYmplY3QpLT5nbG9iYWxTY29wZUNo
YWluKCkubm9kZSgpKTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBjYWJj
NDI4YjU3NmEzOTUyNmI1MjE3YWI3NzU4ODU0MWRmOWU4ZTY3Li4zMGU0MGU0OTRjZjRkZWNlMjM2
ZTkwZGI1MGE5NTgxY2JjYTQ1MzNlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApA
QCAtNDMsNiArNDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChKU09iamVjdCk7CiAKK2NvbnN0IGNoYXIqIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvciA9ICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiI7
CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIC8vIEFkZCBwcm9wZXJ0aWVz
IGZyb20gdGhlIHN0YXRpYyBoYXNodGFibGVzIG9mIHByb3BlcnRpZXMKQEAgLTExNCwxNSArMTE2
LDE5IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1CiAgICAgZm9yIChKU09iamVjdCogb2JqID0g
dGhpczsgIW9iai0+c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgb2Jq
ID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3Rv
dHlwZSgpOwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBw
dXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUs
IDAsIHRydWUsIHNsb3QpOworICAgICAgICAgICAgaWYgKCFwdXREaXJlY3RJbnRlcm5hbChleGVj
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUsIHNsb3QpICYmIHNs
b3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAg
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBpZiAoKG1fc3RydWN0dXJlLT5nZXQocHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKSAmJiBh
dHRyaWJ1dGVzICYgUmVhZE9ubHkpCisgICAgaWYgKChtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgJiYgYXR0
cmlidXRlcyAmIFJlYWRPbmx5KSB7CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQor
ICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9
CiAKICAgICBmb3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzOyA7IG9iaiA9IGFzT2JqZWN0KHByb3Rv
dHlwZSkpIHsKICAgICAgICAgaWYgKEpTVmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChwcm9wZXJ0
eU5hbWUpKSB7CkBAIC0xNTEsNyArMTU3LDggQEAgdm9pZCBKU09iamVjdDo6cHV0KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHUKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHB1dERpcmVjdEludGVybmFsKGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1ZSwgc2xvdCk7CisgICAgaWYg
KCFwdXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFs
dWUsIDAsIHRydWUsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAg
ICAgcmV0dXJuOwogfQogCkBAIC00ODksNiArNDk2LDExIEBAIEpTT2JqZWN0KiBKU09iamVjdDo6
dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNP
YmplY3QqPih0aGlzKTsKIH0KIAorSlNWYWx1ZSBKU09iamVjdDo6dG9TdHJpY3RUaGlzT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0
aGlzKTsKK30KKwogSlNPYmplY3QqIEpTT2JqZWN0Ojp1bndyYXBwZWRPYmplY3QoKQogewogICAg
IHJldHVybiB0aGlzOwpAQCAtNzAyLDQgKzcxNCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0pTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0Lmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNDIwMTcwMzE2MjU2ZmVj
OTYxMDkzMjAwYTZkYTdlM2JiNmE4YTdkNy4uZGE5NWYwN2Q0NGUwZDk0MWViM2JmOWQwMDc5YTNl
YTE1OTg1ZTc4OSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNTUsNiArNTUsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgc3RydWN0IEhhc2hU
YWJsZTsKIAorICAgIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBV
U3RyaW5nJik7CisgICAgZXh0ZXJuIGNvbnN0IGNoYXIqIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcjsKKwogICAgIC8vIEVDTUEgMjYyLTMgOC42LjEKICAgICAvLyBQcm9wZXJ0
eSBhdHRyaWJ1dGVzCiAgICAgZW51bSBBdHRyaWJ1dGUgewpAQCAtMTQwLDYgKzE0Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3Rh
dGUqKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmpl
Y3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHVud3JhcHBl
ZE9iamVjdCgpOwogCiAgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVj
aWZpY0Z1bmN0aW9uKSBjb25zdDsKQEAgLTE3NSw5ICsxNzksOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gIW1fc3RydWN0dXJl
LT5pc0VtcHR5KCk7IH0KICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkg
eyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgfQogCi0g
ICAgICAgIHZvaWQgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpOworICAgICAgICBib29sIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFk
T25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3QoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRy
ID0gMCk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgcHV0
RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAw
KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25s
eSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKQEAgLTIwNSw2ICsyMDksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmF0aW9uT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzTm90QW5PYmpl
Y3RFcnJvclN0dWIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNTdHJpY3RNb2RlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
ICAgIHZpcnR1YWwgQ29tcGxUeXBlIGV4Y2VwdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBUaHJv
dzsgfQogCkBAIC0yNjUsOCArMjcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oJnByb3BlcnR5U3RvcmFnZSgpW29mZnNl
dF0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJv
b2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKLSAgICAg
ICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tS
ZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3RJ
bnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBK
U0NlbGwqKTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKICAgICAgICAg
dm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAogICAgICAg
ICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtNDUwLDcgKzQ1NSw3IEBAIGlu
bGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLWlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFk
T25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCitp
bmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNo
ZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0
aW9uKQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVl
KSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKQEAgLTQ2NSw3ICs0
NzAsOCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICBpZiAoY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVu
Y3Rpb24pKQogICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlLT5kZXNwZWNpZnlEaWN0aW9uYXJ5
RnVuY3Rpb24ocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmIChjaGVja1JlYWRPbmx5ICYm
IGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICAgICAgcHV0RGlyZWN0T2Zm
c2V0KG9mZnNldCwgdmFsdWUpOwogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIG9i
amVjdHMgc3RydWN0dXJlIG9ubHkgaGFzIGEgc3BlY2lmaWMgdmFsdWUgc2V0IGlmIHByZXZpb3Vz
bHkgdGhlcmUKICAgICAgICAgICAgIC8vIGhhZCBiZWVuIG9uZSBzZXQsIGFuZCBpZiB0aGUgbmV3
IHZhbHVlIGJlaW5nIHNwZWNpZmllZCBpcyB0aGUgc2FtZSAob3RoZXJ3aXNlIHdlIHdvdWxkCkBA
IC00NzUsNyArNDgxLDcgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFs
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgLy8g
SWYgdGhlcmUgd2FzIHByZXZpb3VzbHkgYSB2YWx1ZSwgYW5kIHRoZSBuZXcgdmFsdWUgaXMgdGhl
IHNhbWUsIHRoZW4gd2UgY2Fubm90IGNhY2hlLgogICAgICAgICAgICAgaWYgKCFjdXJyZW50U3Bl
Y2lmaWNGdW5jdGlvbiB8fCAoc3BlY2lmaWNGdW5jdGlvbiAhPSBjdXJyZW50U3BlY2lmaWNGdW5j
dGlvbikpCiAgICAgICAgICAgICAgICAgc2xvdC5zZXRFeGlzdGluZ1Byb3BlcnR5KHRoaXMsIG9m
ZnNldCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogCiAgICAgICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKQEAgLTQ4OCw3ICs0OTQsNyBAQCBpbmxpbmUgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlCiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3BlcnR5IGNh
bGwgYmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAgICAgICAgIHNs
b3Quc2V0TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBzaXplX3Qgb2Zmc2V0OwpAQCAtNTA0LDcgKzUx
MCw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgLy8gc28gbGVhdmUgdGhlIHNs
b3QgaW4gYW4gdW5jYWNoYWJsZSBzdGF0ZS4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9u
KQogICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGN1
cnJlbnRBdHRyaWJ1dGVzOwpAQCAtNTEyLDcgKzUxOCw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUKICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwgY3VycmVudEF0
dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAgICBpZiAob2Zmc2V0ICE9IFdU
Rjo6bm90Rm91bmQpIHsKICAgICAgICAgaWYgKGNoZWNrUmVhZE9ubHkgJiYgY3VycmVudEF0dHJp
YnV0ZXMgJiBSZWFkT25seSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICAvLyBUaGVyZSBhcmUgdGhyZWUgcG9zc2liaWxpdGllcyBoZXJl
OgogICAgICAgICAvLyAgKDEpIFRoZXJlIGlzIGFuIGV4aXN0aW5nIHNwZWNpZmljIHZhbHVlIHNl
dCwgYW5kIHdlJ3JlIG92ZXJ3cml0aW5nIHdpdGggKnRoZSBzYW1lIHZhbHVlKi4KQEAgLTUyNyw3
ICs1MzMsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICAvLyBjYXNlICgx
KSBEbyB0aGUgcHV0LCB0aGVuIHJldHVybiBsZWF2aW5nIHRoZSBzbG90IHVuY2FjaGFibGUuCiAg
ICAgICAgICAgICBpZiAoc3BlY2lmaWNGdW5jdGlvbiA9PSBjdXJyZW50U3BlY2lmaWNGdW5jdGlv
bikgewogICAgICAgICAgICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYXNlICgyKSBEZXNwZWNpZnksIGZhbGwgdGhyb3Vn
aCB0byAoMykuCiAgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpkZXNwZWNpZnlG
dW5jdGlvblRyYW5zaXRpb24obV9zdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpOwpAQCAtNTM2LDcg
KzU0Miw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgLy8gY2FzZSAoMykgc2V0
IHRoZSBzbG90LCBkbyB0aGUgcHV0LCByZXR1cm4uCiAgICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQ
cm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAg
ICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8g
dGhpcyBwb2ludCBpZiB0aGVyZSBpcwpAQCAtNTYxLDE0ICs1NjcsMTUgQEAgaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZQogICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3Rh
dGUuCiAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQogICAgICAgICBzbG90LnNldE5ld1Byb3Bl
cnR5KHRoaXMsIG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIAotICAgIHB1dERpcmVjdElu
dGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNs
b3QsIGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKKyAgICByZXR1cm4gcHV0RGly
ZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25s
eSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCiBpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCkBAIC01NzcsMTIgKzU4NCwxMiBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aQogICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMs
IGZhbHNlLCBzbG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CiB9CiAKLWlu
bGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9u
bHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwg
SGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKLSAgICBwdXREaXJlY3RJ
bnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBz
bG90LCAwKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1
ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgMCk7CiB9CiAKIGlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAtNTkxLDkgKzU5OCw5IEBAIGlubGlu
ZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1CiAgICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2
YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERp
cmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUs
IHZhbHVlLCAwLCBmYWxzZSwgc2xvdCwgMCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFs
KHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIGZhbHNlLCBzbG90LCAwKTsKIH0KIAogaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRP
bmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC02OTgsMTAgKzcwNSwxMSBAQCBpbmxpbmUg
dm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdQogICAgIGFzQ2VsbCgpLT5wdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dERpcmVjdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSB2b2lkIEpTVmFsdWU6OnB1dERpcmVjdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVChpc0NlbGwoKSAmJiBpc09iamVj
dCgpKTsKLSAgICBhc09iamVjdChhc0NlbGwoKSktPnB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKKyAgICBpZiAoIWFzT2JqZWN0KGFzQ2VsbCgpKS0+cHV0RGlyZWN0KHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
CiB9CiAKIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTc1Niw2ICs3NjQsMTMgQEAgaW5saW5l
IEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1RoaXNKU1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiAgICAgcmV0dXJuIGlzU3RyaW5nKCkgPyBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgp
KSA6IGpzU3RyaW5nKGV4ZWMsIHRvVGhpc09iamVjdChleGVjKS0+dG9TdHJpbmcoZXhlYykpOwog
fQogCitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAoreworICAgIGlmICghaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIHJldHVybiBhc09iamVjdChhc0NlbGwoKSktPnRvU3RyaWN0VGhpc09iamVjdChl
eGVjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU09iamVjdF9oCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCBh
ZDEwMjE4MDkzODZmNjk1ZTdlMjI1MzhhYTNlZGYzNjU5ODM4NGQzLi43YWIxZDFjMTA3NDRmNTAz
YmZhODFkMTc5YTdiM2Y0YjNkYjA2NDQzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdGF0aWNTY29wZU9iamVjdC5jcHAKQEAgLTQyLDYgKzQyLDExIEBAIEpTT2JqZWN0KiBKU1N0
YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAg
IHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKIH0KIAorSlNWYWx1ZSBKU1N0YXRpY1Nj
b3BlT2JqZWN0Ojp0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBy
ZXR1cm4ganNOdWxsKCk7Cit9CisKIHZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JikKIHsKICAgICBpZiAoc3ltYm9sVGFibGVQdXQocHJvcGVydHlOYW1lLCB2
YWx1ZSkpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVP
YmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCmlu
ZGV4IGMwNTE5YzFmYzYwNDRmZjQxYzBjNzIyY2M0YTdlNzc4ZDhjYmVjYzUuLmU2OTM1NmEzMjVl
NmZjMDJjZTgwMzQ1OTY0MTNjMWU4ZTY2Y2VhNTIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0N7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAgICAgICAg
IGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSop
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFsdWUuaAppbmRleCBiNTgzNGMxOTY2MGM5ZjllMGIxZjc3NDg0Y2E1YWQyYzkxNTI0
NDc5Li5mNzc2MTU3M2RlOTFmNDEwNzdkOTMyOTE1N2NjODc4YjU4ZDgxZjllIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuaApAQCAtMTkzLDYgKzE5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIGJvb2wgbmVlZHNUaGlzQ29udmVyc2lvbigpIGNvbnN0OwogICAgICAgICBKU09iamVj
dCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU1ZhbHVlIHRvU3Ry
aWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgVVN0cmluZyB0b1RoaXNT
dHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpTU3RyaW5nKiB0b1RoaXNKU1N0cmlu
ZyhFeGVjU3RhdGUqKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1pvbWJpZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCmluZGV4IDcx
MWY2NzMyYmNjZWFlYjgxYzBlMDc3NzBjMjM0ZDI3MjAxNTBmNTQuLmRhNDU2OTliOTYxNTc0NmY2
NTEzZWRmNDc3MjE2NGRmY2JmZWEzM2YgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNab21iaWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgKQEAg
LTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RU
aGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBKU1ZhbHVlKCk7IH0KICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIoKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4ganNOdWxsKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNs
b3QmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNs
b3QmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmggYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCmluZGV4IGViOGVhOGE5OTQyZjdhYWYxY2I4MDAz
YzkyY2VkNzZiYjRkZDNjYmYuLjRiMGIzOTQ4ZmJiMjlmMDgyYTMxNjIxZDY2NWQzNWMzZGMyNmY3
MTcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaApAQCAtMzgsOSAr
MzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5cGUg
eyBVbmNhY2hhYmxlLCBFeGlzdGluZ1Byb3BlcnR5LCBOZXdQcm9wZXJ0eSB9OwogCi0gICAgICAg
IFB1dFByb3BlcnR5U2xvdCgpCisgICAgICAgIFB1dFByb3BlcnR5U2xvdChib29sIGlzU3RyaWN0
TW9kZSA9IGZhbHNlKQogICAgICAgICAgICAgOiBtX3R5cGUoVW5jYWNoYWJsZSkKICAgICAgICAg
ICAgICwgbV9iYXNlKDApCisgICAgICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9k
ZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTYxLDYgKzYyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgICAg
ICBKU09iamVjdCogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogCisgICAgICAgIGJv
b2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICAg
ICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBVbmNhY2hhYmxl
OyB9CiAgICAgICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CiAgICAgICAgICAgICBB
U1NFUlQoaXNDYWNoZWFibGUoKSk7CkBAIC03MCw2ICs3Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgSlNPYmplY3QqIG1fYmFzZTsKICAgICAgICAg
c2l6ZV90IG1fb2Zmc2V0OworICAgICAgICBib29sIG1faXNTdHJpY3RNb2RlOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2
YWxBY3RpdmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmIwMTNiNzNlMjVhMTA0MjY1MDQyNWRlZDhl
ZTEyMTFlNmY5MzU2Ci0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworU3RyaWN0RXZhbEFjdGl2YXRpb246OlN0cmljdEV2YWxBY3RpdmF0
aW9uKEV4ZWNTdGF0ZSogZXhlYykKKyAgICA6IEpTT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5z
dHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSkKK3sKK30KKworYm9vbCBTdHJpY3RFdmFsQWN0
aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitKU09iamVjdCogU3RyaWN0RXZhbEFjdGl2YXRpb246
OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV4ZWMt
Pmdsb2JhbFRoaXNWYWx1ZSgpOworfQorCitKU1ZhbHVlIFN0cmljdEV2YWxBY3RpdmF0aW9uOjp0
b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICByZXR1cm4ganNOdWxs
KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZGI4NDI5NTUxMjlkNTU0Y2EzMTQ0ZjI3ODQ5NWI2NzQ2OGFkNzMw
Ci0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0cmljdEV2
YWxBY3RpdmF0aW9uX2gKKyNkZWZpbmUgU3RyaWN0RXZhbEFjdGl2YXRpb25faAorCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cmljdEV2YWxBY3Rp
dmF0aW9uIDogcHVibGljIEpTT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBTdHJpY3RFdmFsQWN0aXZh
dGlvbihFeGVjU3RhdGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09i
amVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlz
T2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworfTsKKworfQorCisjZW5kaWYgLy8gU3RyaWN0RXZh
bEFjdGl2YXRpb25faApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFlMmIzOTU5MGJhNmY2MjY0YjhlYWQyYjU4ZWE5MmQ5Y2Mw
ODNhZjMuLmU1YTdjYjQ3Mzc5MDdjYTJlZjAwMTcyY2ZhYjcxYjk0ZGZmODMwYWQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMC0xMC0wMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFUzVd
IEltcGxlbWVudCBzdHJpY3QgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA3MDEKKworICAgICAgICBUZXN0cyBmb3IgdGhlIG1hbnkgZGlmZmVy
ZW50IGJlaGF2aW91cnMgd2UgZ2V0IGluIHN0cmljdCBtb2RlLgorCisgICAgICAgICogZmFzdC9q
cy9iYXNpYy1zdHJpY3QtbW9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
anMvYmFzaWMtc3RyaWN0LW1vZGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3Jp
cHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanM6IEFkZGVkLgorICAgICAgICAodGVzdFRoaXMp
OgorICAgICAgICAodGVzdEdsb2JhbEFjY2Vzcyk6CisKIDIwMTAtMDktMzAgIFpoZW55YW8gTW8g
IDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXN0cmljdC1tb2RlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc3RyaWN0LW1vZGUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdiZThlYTJlODE3NmNkZDIzYjkyZGFhMGEzZjMxNWZhZWE1ODc3ZTMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXN0cmljdC1tb2Rl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk5IEBACitUZXN0IGJlaGF2aW91ciBvZiBzdHJpY3Qg
bW9kZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0VGhpcy5jYWxs
KG51bGwpIGlzIG51bGwKK1BBU1MgdGVzdFRoaXMuY2FsbCgxKSBpcyAxCitQQVNTIHRlc3RUaGlz
LmNhbGwodHJ1ZSkgaXMgdHJ1ZQorUEFTUyB0ZXN0VGhpcy5jYWxsKGZhbHNlKSBpcyBmYWxzZQor
UEFTUyB0ZXN0VGhpcy5jYWxsKHVuZGVmaW5lZCkgaXMgdW5kZWZpbmVkCitQQVNTIHRlc3RUaGlz
LmNhbGwoJ2Egc3RyaW5nJykgaXMgJ2Egc3RyaW5nJworUEFTUyB0ZXN0R2xvYmFsQWNjZXNzKCkg
aXMgbnVsbAorUEFTUyAoZnVuY3Rpb24gZXZhbCgpeyd1c2Ugc3RyaWN0Jzt9KSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKGV2YWwpeyd1
c2Ugc3RyaWN0Jzt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgor
UEFTUyAoZnVuY3Rpb24gYXJndW1lbnRzKCl7J3VzZSBzdHJpY3QnO30pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoYXJndW1lbnRzKXsn
dXNlIHN0cmljdCc7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4K
K1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgdmFyIGV2YWw7fSkgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3Ry
aWN0JzsgdmFyIGFyZ3VtZW50czt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNl
IGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyB0cnl7fWNhdGNoKGV2YWwp
e319KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVu
Y3Rpb24gKCl7J3VzZSBzdHJpY3QnOyB0cnl7fWNhdGNoKGFyZ3VtZW50cyl7fX0pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoYSwgYSl7
J3VzZSBzdHJpY3QnO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3Iu
CitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBkZWxldGUgYTt9KSgpIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoKXsndXNl
IHN0cmljdCc7IHZhciBhOyBkZWxldGUgYTt9KSgpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoKXt2YXIgYTsgZnVuY3Rpb24gZigpIHsn
dXNlIHN0cmljdCc7IGRlbGV0ZSBhO30gfSkoKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyB3aXRoKDEpe307
fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0
aW9uICgpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzLmNhbGxlZTsgfSkoKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBVbmFibGUgdG8gYWNjZXNzIGNhbGxlZSBvZiBzdHJpY3QgbW9kZSBmdW5j
dGlvbi4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzLmNhbGxlcjsg
fSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBVbmFibGUgdG8gYWNjZXNzIGNhbGxlciBv
ZiBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIGYoKXsndXNlIHN0cmljdCc7
IGYuYXJndW1lbnRzOyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbid0IGFjY2Vz
cyBhcmd1bWVudHMgb2JqZWN0IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTIChmdW5j
dGlvbiBmKCl7J3VzZSBzdHJpY3QnOyBmLmNhbGxlcjsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBDYW5ub3QgYWNjZXNzIGNhbGxlciBwcm9wZXJ0eSBvZiBhIHN0cmljdCBtb2RlIGZ1
bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gZigpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM9NTsg
fSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3QgYWNjZXNzIGFyZ3VtZW50cyBw
cm9wZXJ0eSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gZigpeyd1
c2Ugc3RyaWN0JzsgZi5jYWxsZXI9NTsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBD
YW5ub3QgYWNjZXNzIGNhbGxlciBwcm9wZXJ0eSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgor
UEFTUyAoZnVuY3Rpb24gKGFyZyl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHMuY2FsbGVlOyB9KSgp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVuYWJsZSB0byBhY2Nlc3MgY2FsbGVlIG9mIHN0
cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gKGFyZyl7J3VzZSBzdHJpY3QnOyBh
cmd1bWVudHMuY2FsbGVyOyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVuYWJsZSB0
byBhY2Nlc3MgY2FsbGVyIG9mIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24g
Zihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQ2FuJ3QgYWNjZXNzIGFyZ3VtZW50cyBvYmplY3Qgb2YgYSBzdHJpY3QgbW9kZSBm
dW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IGYuY2FsbGVyOyB9
KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBhY2Nlc3MgY2FsbGVyIHByb3Bl
cnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3Vz
ZSBzdHJpY3QnOyBmLmFyZ3VtZW50cz01OyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IENhbm5vdCBhY2Nlc3MgYXJndW1lbnRzIHByb3BlcnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rp
b24uCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyBmLmNhbGxlcj01OyB9KSgp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBhY2Nlc3MgY2FsbGVyIHByb3BlcnR5
IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9u
ICgpe3dpdGgoMSl7fTt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9y
LgorUEFTUyAndXNlIHN0cmljdCc7IChmdW5jdGlvbiAoKXt2YXIgYTsgZGVsZXRlIGE7fSkgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3Qn
OyB2YXIgYTsgKGZ1bmN0aW9uICgpeyBkZWxldGUgYTt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyB2YXIgYTsgKGZ1bmN0aW9uICgpeyAndXNlIHN0cmlj
dCc7IGRlbGV0ZSBhO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3Iu
CitQQVNTICdtaXNjIGRpcmVjdGl2ZSc7ICd1c2Ugc3RyaWN0Jzsgd2l0aCh7fSl7fSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IHJl
dHVybiB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFsaWQgcmV0dXJuIHN0YXRlbWVu
dC4uCitQQVNTICd1c2Ugc3RyaWN0JzsgYnJlYWsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBjb250aW51ZSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGZvcig7Oyly
ZXR1cm4gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIHJldHVybiBzdGF0ZW1l
bnQuLgorUEFTUyAndXNlIHN0cmljdCc7IGZvcig7OylicmVhayBtaXNzaW5nTGFiZWwgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBm
b3IoOzspY29udGludWUgbWlzc2luZ0xhYmVsIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
UGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgMDA3OyB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7ICdcMDA3JzsgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ1wwMDcnOyAndXNlIHN0
cmljdCc7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1
c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpeyBkZWxldGUgc29tZURlY2xhcmVkR2xvYmFsO30pIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAo
KXsgJ3VzZSBzdHJpY3QnOyBkZWxldGUgc29tZURlY2xhcmVkR2xvYmFsO30pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0Jzsgc29tZUds
b2JhbCA9ICdTaG91bGRuXCd0IGJlIGFibGUgdG8gYXNzaWduIHRoaXMuJzsgc29tZUdsb2JhbDsg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJp
Y3QnOyBldmFsKCd2YXIgaW50cm9kdWNlZFZhcmlhYmxlID0gIkZBSUw6IHZhcmlhYmxlIGludHJv
ZHVjZWQgaW50byBjb250YWluaW5nIHNjb3BlIjsnKTsgaW50cm9kdWNlZFZhcmlhYmxlIHRocmV3
IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogaW50cm9kdWNl
ZFZhcmlhYmxlLgorUEFTUyAndXNlIHN0cmljdCc7IG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5
LnByb3AgPSAnZmFpbCcgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFz
c2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4uCitQQVNTICd1c2Ugc3RyaWN0JzsgZGVsZXRlIG9i
amVjdFdpdGhSZWFkb25seVByb3BlcnR5LnByb3AgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4uCitQQVNTICd1c2Ugc3RyaWN0JzsgKytldmFsIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0
JzsgZXZhbCsrIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNT
ICd1c2Ugc3RyaWN0JzsgLS1ldmFsIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2Ug
ZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgZXZhbC0tIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgaWYgKDApIGRlbGV0ZSArYS5i
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3Ry
aWN0JzsgaWYgKDApIGRlbGV0ZSArK2EuYiB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBh
cnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGlmICgwKSBkZWxldGUgdm9pZCBhLmIgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uIChh
KXsndXNlIHN0cmljdCc7IGEgPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsgfSko
dHJ1ZSkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRz
WzBdID0gZmFsc2U7IHJldHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0pKHRydWUpIGlzIHRydWUK
K1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVu
dHM7IH0pKHRydWUpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7
IGFyZ3VtZW50c1swXT1mYWxzZTsgcmV0dXJuIGE7IH0pKHRydWUpIGlzIHRydWUKK1BBU1MgKGZ1
bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1l
bnRzOyB9KShmYWxzZSlbMF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3Qn
OyAgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSBpcyB0
cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09dHJ1ZTsg
YT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlv
biAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09ZmFsc2U7IGE9dHJ1ZTsgcmV0dXJuIGE7
IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRz
WzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rp
b24gKCl7J3VzZSBzdHJpY3QnOyAgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7
IH0pKClbMF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxv
Y2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYSA9IGZhbHNlOyByZXR1cm4gYSAhPT0gYXJn
dW1lbnRzWzBdOyB9KSh0cnVlKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJp
Y3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF0gPSBm
YWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsgfSkodHJ1ZSkgaXMgdHJ1ZQorUEFTUyAo
ZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7
fSkoKTsgYT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkodHJ1ZSlbMF0gaXMgdHJ1ZQorUEFT
UyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9j
YWw7fSkoKTsgYXJndW1lbnRzWzBdPWZhbHNlOyByZXR1cm4gYTsgfSkodHJ1ZSkgaXMgdHJ1ZQor
UEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7
bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNl
KVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7ICB2YXIgbG9jYWw7
IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3Vt
ZW50czsgfSkoZmFsc2UpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmlj
dCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50c1swXT10cnVl
OyBhPWZhbHNlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0
aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7
IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIGlzIHRydWUKK1BB
U1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xv
Y2FsO30pKCk7IGFyZ3VtZW50c1swXT1mYWxzZTsgYT10cnVlOyByZXR1cm4gYTsgfSkoKSBpcyB0
cnVlCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7ICB2YXIgbG9jYWw7IChmdW5jdGlv
biAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSko
KVswXSBpcyB0cnVlCitQQVNTICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpe3ZhciBhID0gdHJ1
ZTsgZXZhbCgndmFyIGEgPSBmYWxzZScpOyByZXR1cm4gYTsgfSkoKSBpcyB0cnVlCitQQVNTIChm
dW5jdGlvbiAoKXt2YXIgYSA9IHRydWU7IGV2YWwoJyJ1c2Ugc3RyaWN0IjsgdmFyIGEgPSBmYWxz
ZScpOyByZXR1cm4gYTsgfSkoKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBz
dHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmLCAnYXJndW1l
bnRzJykudmFsdWU7IH0pKCkgaXMgdW5kZWZpbmVkLgorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1
c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZiwgJ2Nh
bGxlcicpLnZhbHVlOyB9KSgpIGlzIHVuZGVmaW5lZC4KK1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsn
dXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3Vt
ZW50cywgJ2NhbGxlZScpLnZhbHVlOyB9KSgpIGlzIHVuZGVmaW5lZC4KK1BBU1MgKGZ1bmN0aW9u
IGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGFyZ3VtZW50cywgJ2NhbGxlcicpLnZhbHVlOyB9KSgpIGlzIHVuZGVmaW5lZC4KK1BBU1Mg
KGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZXInKTsgcmV0dXJuIGRlc2Ny
aXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSBpcyB0cnVlCitQQVNTIChmdW5jdGlv
biBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVlJyk7IHJldHVybiBkZXNjcmlwdG9yLmdl
dCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gZihhcmcp
eyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGYsICdjYWxsZXInKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9y
LnNldDsgfSkoKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2
YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZiwgJ2FyZ3Vt
ZW50cycpOyByZXR1cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIGlz
IHRydWUKK1BBU1MgJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gZigpIHsgZm9yKHZhciBpIGluIHRo
aXMpOyB9KSgpOyB0cnVlOyBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNp
Yy1zdHJpY3QtbW9kZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9k
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjllNzcxZGYwMTM4NTIwZGIwOGU5YTQ4Y2I2NTRjZDNiZThlMTcx
YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXN0cmljdC1t
b2RlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9iYXNpYy1zdHJpY3QtbW9kZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1zdHJpY3Qt
bW9kZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLXN0cmljdC1t
b2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNmNWIzY2YxMGFhZTBiMjg2YzA4NmY4ZDBlZmE0N2IwOTgwYzk0
ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9i
YXNpYy1zdHJpY3QtbW9kZS5qcwpAQCAtMCwwICsxLDExMyBAQAorZGVzY3JpcHRpb24oIlRlc3Qg
YmVoYXZpb3VyIG9mIHN0cmljdCBtb2RlIik7CisKK3ZhciBnbG9iYWxUaGlzVGVzdDsKK2Z1bmN0
aW9uIHRlc3RUaGlzKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICByZXR1cm4gdGhpczsKK30K
K2Z1bmN0aW9uIHRlc3RHbG9iYWxBY2Nlc3MoKSB7CisgICAgcmV0dXJuIHRlc3RUaGlzKCk7Cit9
CitzaG91bGRCZSgidGVzdFRoaXMuY2FsbChudWxsKSIsICJudWxsIik7CitzaG91bGRCZSgidGVz
dFRoaXMuY2FsbCgxKSIsICIxIik7CitzaG91bGRCZSgidGVzdFRoaXMuY2FsbCh0cnVlKSIsICJ0
cnVlIik7CitzaG91bGRCZSgidGVzdFRoaXMuY2FsbChmYWxzZSkiLCAiZmFsc2UiKTsKK3Nob3Vs
ZEJlKCJ0ZXN0VGhpcy5jYWxsKHVuZGVmaW5lZCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgi
dGVzdFRoaXMuY2FsbCgnYSBzdHJpbmcnKSIsICInYSBzdHJpbmcnIik7CisKK3Nob3VsZEJlKCJ0
ZXN0R2xvYmFsQWNjZXNzKCkiLCAibnVsbCIpOworCitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGV2
YWwoKXsndXNlIHN0cmljdCc7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKGV2YWwpeyd1
c2Ugc3RyaWN0Jzt9KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiBhcmd1bWVudHMoKXsndXNl
IHN0cmljdCc7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKGFyZ3VtZW50cyl7J3VzZSBz
dHJpY3QnO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgdmFy
IGV2YWw7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyB2YXIg
YXJndW1lbnRzO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0Jzsg
dHJ5e31jYXRjaChldmFsKXt9fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKCl7J3VzZSBz
dHJpY3QnOyB0cnl7fWNhdGNoKGFyZ3VtZW50cyl7fX0pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0
aW9uIChhLCBhKXsndXNlIHN0cmljdCc7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKGEp
eyd1c2Ugc3RyaWN0JzsgZGVsZXRlIGE7fSkoKSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAo
KXsndXNlIHN0cmljdCc7IHZhciBhOyBkZWxldGUgYTt9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1
bmN0aW9uICgpe3ZhciBhOyBmdW5jdGlvbiBmKCkgeyd1c2Ugc3RyaWN0JzsgZGVsZXRlIGE7fSB9
KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0Jzsgd2l0aCgxKXt9
O30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRz
LmNhbGxlZTsgfSkoKSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7
IGFyZ3VtZW50cy5jYWxsZXI7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gZigpeyd1
c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24g
Zigpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rp
b24gZigpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM9NTsgfSkoKSIpOworc2hvdWxkVGhyb3co
IihmdW5jdGlvbiBmKCl7J3VzZSBzdHJpY3QnOyBmLmNhbGxlcj01OyB9KSgpIik7CitzaG91bGRU
aHJvdygiKGZ1bmN0aW9uIChhcmcpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzLmNhbGxlZTsgfSko
KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoYXJnKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50
cy5jYWxsZXI7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3Ry
aWN0JzsgZi5hcmd1bWVudHM7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gZihhcmcp
eyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24g
Zihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM9NTsgfSkoKSIpOworc2hvdWxkVGhyb3co
IihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyBmLmNhbGxlcj01OyB9KSgpIik7CitzaG91
bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7d2l0aCgxKXt9O30pIik7CitzaG91
bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7dmFyIGE7IGRlbGV0ZSBhO30pIik7
CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyB2YXIgYTsgKGZ1bmN0aW9uICgpeyBkZWxldGUg
YTt9KSIpOworc2hvdWxkVGhyb3coInZhciBhOyAoZnVuY3Rpb24gKCl7ICd1c2Ugc3RyaWN0Jzsg
ZGVsZXRlIGE7fSkiKTsKK3Nob3VsZFRocm93KCInbWlzYyBkaXJlY3RpdmUnOyAndXNlIHN0cmlj
dCc7IHdpdGgoe30pe30iKTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7IHJldHVybiIpOwor
c2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgYnJlYWsiKTsKK3Nob3VsZFRocm93KCIndXNlIHN0
cmljdCc7IGNvbnRpbnVlIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBmb3IoOzspcmV0
dXJuIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBmb3IoOzspYnJlYWsgbWlzc2luZ0xh
YmVsIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBmb3IoOzspY29udGludWUgbWlzc2lu
Z0xhYmVsIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyAwMDc7Iik7CitzaG91bGRUaHJv
dygiJ3VzZSBzdHJpY3QnOyAnXFwwMDcnOyIpOworc2hvdWxkVGhyb3coIidcXDAwNyc7ICd1c2Ug
c3RyaWN0JzsiKTsKKwordmFyIHNvbWVEZWNsYXJlZEdsb2JhbDsKK3Nob3VsZFRocm93KCIndXNl
IHN0cmljdCc7IChmdW5jdGlvbiAoKXsgZGVsZXRlIHNvbWVEZWNsYXJlZEdsb2JhbDt9KSIpOwor
c2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsgJ3VzZSBzdHJpY3QnOyBkZWxldGUgc29tZURlY2xh
cmVkR2xvYmFsO30pIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBzb21lR2xvYmFsID0g
J1Nob3VsZG5cXCd0IGJlIGFibGUgdG8gYXNzaWduIHRoaXMuJzsgc29tZUdsb2JhbDsiKTsKK3No
b3VsZFRocm93KCIndXNlIHN0cmljdCc7IGV2YWwoJ3ZhciBpbnRyb2R1Y2VkVmFyaWFibGUgPSBc
IkZBSUw6IHZhcmlhYmxlIGludHJvZHVjZWQgaW50byBjb250YWluaW5nIHNjb3BlXCI7Jyk7IGlu
dHJvZHVjZWRWYXJpYWJsZSIpOwordmFyIG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5ID0ge307
CitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0V2l0aFJlYWRvbmx5UHJvcGVydHksICJwcm9w
Iiwge3ZhbHVlOiAidmFsdWUiLCB3cml0YWJsZTpmYWxzZX0pOworc2hvdWxkVGhyb3coIid1c2Ug
c3RyaWN0Jzsgb2JqZWN0V2l0aFJlYWRvbmx5UHJvcGVydHkucHJvcCA9ICdmYWlsJyIpOworc2hv
dWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZGVsZXRlIG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5
LnByb3AiKTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7ICsrZXZhbCIpOworc2hvdWxkVGhy
b3coIid1c2Ugc3RyaWN0JzsgZXZhbCsrIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyAt
LWV2YWwiKTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7IGV2YWwtLSIpOworc2hvdWxkVGhy
b3coIid1c2Ugc3RyaWN0JzsgaWYgKDApIGRlbGV0ZSArYS5iIik7CitzaG91bGRUaHJvdygiJ3Vz
ZSBzdHJpY3QnOyBpZiAoMCkgZGVsZXRlICsrYS5iIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJp
Y3QnOyBpZiAoMCkgZGVsZXRlIHZvaWQgYS5iIik7CisKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9u
IChhKXsndXNlIHN0cmljdCc7IGEgPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsg
fSkodHJ1ZSkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGFy
Z3VtZW50c1swXSA9IGZhbHNlOyByZXR1cm4gYSAhPT0gYXJndW1lbnRzWzBdOyB9KSh0cnVlKSIp
Oworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYT1mYWxzZTsgcmV0
dXJuIGFyZ3VtZW50czsgfSkodHJ1ZSlbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChh
KXsndXNlIHN0cmljdCc7IGFyZ3VtZW50c1swXT1mYWxzZTsgcmV0dXJuIGE7IH0pKHRydWUpIik7
CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09
dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoZmFsc2UpWzBdIik7CitzaG91bGRCZVRydWUoIihm
dW5jdGlvbiAoKXsndXNlIHN0cmljdCc7ICBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3Vt
ZW50czsgfSkoZmFsc2UpWzBdIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBz
dHJpY3QnOyBhcmd1bWVudHNbMF09dHJ1ZTsgYT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50czsgfSko
KVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1l
bnRzWzBdPWZhbHNlOyBhPXRydWU7IHJldHVybiBhOyB9KSgpIik7CitzaG91bGRCZVRydWUoIihm
dW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3Vt
ZW50czsgfSkoKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3Qn
OyAgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0iKTsKKworLy8g
U2FtZSB0ZXN0cyBhZ2FpbiwgdGhpcyB0aW1lIGZvcmNpbmcgYW4gYWN0aXZhdGlvbiB0byBiZSBj
cmVhdGVkIGFzIHdlbGwKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7
IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGEgPSBmYWxzZTsgcmV0dXJuIGEg
IT09IGFyZ3VtZW50c1swXTsgfSkodHJ1ZSkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChh
KXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3Vt
ZW50c1swXSA9IGZhbHNlOyByZXR1cm4gYSAhPT0gYXJndW1lbnRzWzBdOyB9KSh0cnVlKSIpOwor
c2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVu
Y3Rpb24gKCl7bG9jYWw7fSkoKTsgYT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkodHJ1ZSlb
MF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2Nh
bDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50c1swXT1mYWxzZTsgcmV0dXJuIGE7
IH0pKHRydWUpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2
YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0
dXJuIGFyZ3VtZW50czsgfSkoZmFsc2UpWzBdIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAo
KXsndXNlIHN0cmljdCc7ICB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1
bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoZmFsc2UpWzBdIik7CitzaG91bGRC
ZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAo
KXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsgYT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50
czsgfSkoKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0Jzsg
dmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJl
dHVybiBhcmd1bWVudHM7IH0pKClbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsn
dXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50
c1swXT1mYWxzZTsgYT10cnVlOyByZXR1cm4gYTsgfSkoKSIpOworc2hvdWxkQmVUcnVlKCIoZnVu
Y3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSko
KTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0iKTsKKworc2hv
dWxkQmVUcnVlKCIndXNlIHN0cmljdCc7IChmdW5jdGlvbiAoKXt2YXIgYSA9IHRydWU7IGV2YWwo
J3ZhciBhID0gZmFsc2UnKTsgcmV0dXJuIGE7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0
aW9uICgpe3ZhciBhID0gdHJ1ZTsgZXZhbCgnXCJ1c2Ugc3RyaWN0XCI7IHZhciBhID0gZmFsc2Un
KTsgcmV0dXJuIGE7IH0pKCkiKTsKKworc2hvdWxkQmVVbmRlZmluZWQoIihmdW5jdGlvbiBmKGFy
Zyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihm
LCAnYXJndW1lbnRzJykudmFsdWU7IH0pKCkiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCIoZnVuY3Rp
b24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZiwgJ2NhbGxlcicpLnZhbHVlOyB9KSgpIik7CitzaG91bGRCZVVuZGVmaW5lZCgiKGZ1
bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlZScpLnZhbHVlOyB9KSgpIik7CitzaG91bGRCZVVu
ZGVmaW5lZCgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlcicpLnZhbHVlOyB9KSgpIik7
CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3Jp
cHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVy
Jyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKK3No
b3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9y
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZWUnKTsg
cmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIpOworc2hvdWxk
QmVUcnVlKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYsICdjYWxsZXInKTsgcmV0dXJuIGRlc2Ny
aXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIpOworc2hvdWxkQmVUcnVlKCIoZnVu
Y3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGYsICdhcmd1bWVudHMnKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0
ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIpOworc2hvdWxkQmVUcnVlKCIndXNlIHN0cmljdCc7
IChmdW5jdGlvbiBmKCkgeyBmb3IodmFyIGkgaW4gdGhpcyk7IH0pKCk7IHRydWU7IikKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJmYjllYmNlMzAzOWY3N2ZiNjExNzExMjRlZGI5
ZjNhNjU2NjRjYWYuLmI3N2U2ZjJkOTgyZjY5ZGFhNmNiY2ZiZmY5NTQ2Yjk0MGQ4Y2QwZGEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTAtMTAtMDEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRVM1XSBJ
bXBsZW1lbnQgc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNzAxCisKKyAgICAgICAgVGVzdDogZmFzdC9qcy9iYXNpYy1zdHJpY3Qt
bW9kZS5odG1sCisKKyAgICAgICAgT3ZlcnJpZGUgdG9TdHJpY3RUaGlzT2JqZWN0IG9uIHRoZSBk
b213aW5kb3cgc28gdGhhdAorICAgICAgICBpdCBjb3JyZWN0bHkgcHJvdmlkZXMgdGhlIHNoZWxs
IG9iamVjdCB3aGVuIHVzZWQgYXMgdGhpcworICAgICAgICBpbiBhIHN0cmljdCBtb2RlIGZ1bmN0
aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6dG9TdHJpY3RUaGlzT2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKwogMjAxMC0wOS0zMCAgWmhlbnlh
byBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVz
c2VsbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA4MmFjMWNl
ZTI1MWY2MDg5MzM3YWMyMDg1M2E4NmUzYTIyNzBhM2Q3Li4yODcyYTU0OWM1YTQ1MTViNjZhMTJk
MDg2NDA1Njk1ZGFjNmRkYzk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCkBAIC0xNDYsNiArMTQ2LDExIEBAIEpTT2JqZWN0KiBKU0RPTVdpbmRvd0Jhc2U6OnRvVGhp
c09iamVjdChFeGVjU3RhdGUqKSBjb25zdAogICAgIHJldHVybiBzaGVsbCgpOwogfQogCitKU1Zh
bHVlIEpTRE9NV2luZG93QmFzZTo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0
Cit7CisgICAgcmV0dXJuIHNoZWxsKCk7Cit9CisKIEpTRE9NV2luZG93U2hlbGwqIEpTRE9NV2lu
ZG93QmFzZTo6c2hlbGwoKSBjb25zdAogewogICAgIHJldHVybiBkKCktPnNoZWxsOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggZjRmMWVmOWVlYTAxNjY5MzJlY2E5NTVl
Y2QwOWJhNmQxMjk2ODZmOC4uY2FmY2E3M2FjOTNkZjAwYzhjNzNmNTUwNzViNDNlNTlmY2VmY2Y2
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBAIC02OSw4ICs2OSw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBEb24ndCBjYWxsIHRoaXMgdmVyc2lv
biBvZiBhbGxvd3NBY2Nlc3NGcm9tIC0tIGl0J3MgYSBzbGlnaHRseSBpbmNvcnJlY3QgaW1wbGVt
ZW50YXRpb24gdXNlZCBvbmx5IGJ5IFdlYlNjcmlwdE9iamVjdAogICAgICAgICB2aXJ0dWFsIGJv
b2wgYWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0K
KyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogdG9UaGlzT2JqZWN0KEpT
Qzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHRvU3Ry
aWN0VGhpc09iamVjdChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU0RPTVdpbmRv
d1NoZWxsKiBzaGVsbCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU0M6OkpTR2xvYmFsRGF0
YSogY29tbW9uSlNHbG9iYWxEYXRhKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69558</attachid>
            <date>2010-10-01 18:32:51 -0700</date>
            <delta_ts>2010-10-02 12:31:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-10701-20101001183250.patch</filename>
            <type>text/plain</type>
            <size>196274</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODljOWVmMWQ0NWM2ZjcyZTEzZTI1MjA3NGI3ZDcxNWY1
NDhlNGMwZC4uN2M5MGExODdjMDgxZWFjYjI3ZGM3YmViZWFjMmQ4OTI5ZTk5Njc1MyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE1Nyw2ICsxNTcsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIHJ1bnRpbWUvUm9wZUltcGwuY3BwCiAgICAgcnVudGltZS9TY29wZUNoYWluLmNw
cAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAorICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL1N0cmluZ09iamVjdC5jcHAKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCAzNjgyMjZiMzg1MzFmYTY2NmRhYzJjODFkZmFkZWY1MGU4NThkZWEzLi43ZThj
OGQyNGM5OGI4ZDZlN2YzNDM3MDNhOTQ5MzQ5NzgzYzY2ZmQ0IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjc0IEBACisyMDEwLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VTNV0gSW1w
bGVtZW50IHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDcwMQorCisgICAgICAgIEluaXRpYWwgc3RyaWN0IG1vZGUgaW1wbGVtZW50
YXRpb24uICBUaGlzIGlzIHRoZSBzaW1wbGVzdAorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0aGF0
IGNvdWxkIHBvc3NpYmx5IHdvcmsgYW5kIGFkZHMgKGhvcGVmdWxseSkKKyAgICAgICAgYWxsIG9m
IHRoZSByZXN0cmljdGlvbnMgcmVxdWlyZWQgYnkgc3RyaWN0IG1vZGUuICBUaGVyZSBhcmUKKyAg
ICAgICAgYSBudW1iZXIgb2YgaW5lZmZpY2llbmNpZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGhhbmRs
aW5nIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQgZXZhbCBhcyBzbWFydCBpbXBsZW1lbnRhdGlv
bnMgd291bGQgbWFrZSB0aGlzCisgICAgICAgIHBhdGNoIG1vcmUgY29tcGxpY2F0ZWQuICAKKwor
ICAgICAgICBUaGUgU3ludGF4Q2hlY2tlciBBU1QgYnVpbGRlciBoYXMgYmVjb21lIHNvbWV3aGF0
IG1vcmUgY29tcGxleAorICAgICAgICBhcyBzdHJpY3QgbW9kZSBkb2VzIHJlcXVpcmUgbW9yZSBw
YXJzZSB0cmVlIGluZm9ybWF0aW9uIHRvCisgICAgICAgIHZhbGlkYXRlIHRoZSBzeW50YXguCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJv
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVwYXJzZUZvckV4Y2VwdGlvbkluZm9JZk5l
Y2Vzc2FyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aXNTdHJpY3RNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNh
Y2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldCk6CisgICAgICAgICogYnl0
ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZUFyZ3VtZW50c0lmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6aXNTdHJpY3RNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIu
Y3BwOgorICAgICAgICAoSlNDOjpldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
Q2FsbEZyYW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2FsbEV2YWwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRl
ci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1Jlc29sdmUpOgorICAgICAgICAqIHBhcnNlci9KU1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpuZXh0KToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnN0YXJ0TG9vcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjplbmRMb29wKToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6SlNQ
YXJzZXI6OmVuZFN3aXRjaCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpzZXRTdHJpY3RNb2Rl
KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6aXNWYWxpZFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZGVj
bGFyZVBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpicmVha0lzVmFsaWQpOgor
ICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cHVzaExhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OnBvcExhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6Omhhc0xhYmVsKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OkRlcHRoTWFuYWdlcjo6RGVwdGhNYW5hZ2VyKToKKyAgICAgICAg
KEpTQzo6SlNQYXJzZXI6OkRlcHRoTWFuYWdlcjo6fkRlcHRoTWFuYWdlcik6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2Nv
cGU6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjplbmRTd2l0
Y2gpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OnN0YXJ0TG9vcCk6CisgICAgICAg
IChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZW5kTG9vcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2Vy
OjpTY29wZTo6aW5Mb29wKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpicmVha0lz
VmFsaWQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6cG9wTGFiZWwpOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6Omhhc0xhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpp
c0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpkZWNsYXJlVmFyaWFi
bGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OmRlY2xhcmVXcml0ZSk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU1BhcnNlcjo6U2NvcGU6OmRlY2xhcmVQYXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6OnNldE5lZWRzRnVsbEFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6OmNvbGxlY3RGcmVlVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OlNjb3BlOjpnZXRVbmNhcHR1cmVkV3JpdHRlblZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6
OkpTUGFyc2VyOjpTY29wZTo6Z2V0RGVsZXRlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkpT
UGFyc2VyOjpTY29wZTo6c2V0U3RyaWN0TW9kZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpT
Y29wZTo6c3RyaWN0TW9kZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6aXNWYWxp
ZFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cHVzaFNjb3BlKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnBvcFNjb3BlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OmRl
Y2xhcmVWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpkZWNsYXJlV3JpdGUpOgor
ICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpq
c1BhcnNlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OkpTUGFyc2VyKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJz
ZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRG9XaGlsZVN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVdoaWxlU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAo
SlNDOjpKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUNv
bnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlUmV0dXJuU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlV2l0aFN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVN3aXRjaFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpwYXJzZVN3aXRjaENsYXVzZXMpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQmxvY2tTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25E
ZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25Pckxh
YmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlU3RyaWN0T2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVBy
aW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6
CisgICAgICAgICogcGFyc2VyL0pTUGFyc2VyLmg6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OkxleGVy
Ojppc1JlcGFyc2luZyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2NvcGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6U2NvcGVOb2Rl
Ojppc1N0cmljdE1vZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OlN5bnRheENoZWNrZXIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmFwcGVuZFRvQ29tbWEpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtl
QXNzaWduTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQcmVmaXhOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVBvc3RmaXhOb2RlKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVR5cGVPZk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlRGVsZXRlTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUJp
dHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTG9naWNh
bE5vdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVVuYXJ5UGx1cyk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVZvaWQpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjp0aGlzRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVPYmplY3RM
aXRlcmFsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXJyYXkpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdW1iZXJFeHByKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZU51bGwpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCcmFja2V0QWNjZXNz
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVnZXgpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1
bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9u
Qm9keSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmFwcGVuZEJpbmFyeUV4cHJlc3Np
b25JbmZvKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6
CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OkFy
Z3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpT
Qzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6
cHV0KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpBcmd1bWVu
dHMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAo
SlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rp
b246OmNvbnN0cnVjdFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjYWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlVHlwZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoK
KyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhl
Y3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJs
ZTo6UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21w
aWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50
YXgpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFs
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnJlcGFyc2VFeGNl
cHRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnJlcGFyc2VFeGNlcHRp
b25JbmZvKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29k
ZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5m
byk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlw
dEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOjppc1N0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
Ojp0b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
RGVzY3JpcHRvckZvclRocm93aW5nUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0
b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAoSlNDOjp0aHJvd1R5cGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNTdHJp
Y3RNb2RlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpY3RUaGlz
T2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1N0cmljdFRoaXNPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNab21iaWUuaDoKKyAgICAgICAgKEpTQzo6
SlNab21iaWU6OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAgICogcnVudGltZS9QdXRQcm9w
ZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpQdXRQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmlzU3RyaWN0TW9kZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24pOgorICAgICAg
ICAoSlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6dG9UaGlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
U3RyaWN0RXZhbEFjdGl2YXRpb246OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOiBBZGRlZC4KKwogMjAxMC0xMC0wMSAgUHJhdGlr
IFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBi
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDg4ZDE3NjE3YjNhNGI4ODg0YzA0
YTI2ODY4YzZmMDZkMTczMWM3NTAuLjdkNjM3YjM1MDQxYzU4ZDg4YWE5YjcwMWRkNGQ4MWVlNjgy
YWQ3MDIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zODgsNiArMzg4LDggQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluTWFy
ay5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgXAogCUphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uaFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0J1aWxk
ZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25jYXRlbmF0ZS5oIFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBcCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKaW5kZXggZmYzZDliMzc5OGM2NTVlOGJiNzdiMzU4OTUxNDJhYTA3OWNl
N2FmOC4uMTdiZTkyODU0MjZmNzI4NmRhNGI4N2EyYmIyYjNjYzNhYmI2ZTZjYiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cApAQCAtNTMxLDYgKzUzMSw3IEBAIF9fWk5LM0pTQzhKU09iamVj
dDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOSzNK
U0M4SlNPYmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKIF9fWk5LM0pTQzhKU09i
amVjdDEyZGVmYXVsdFZhbHVlRVBOU185RXhlY1N0YXRlRU5TXzIyUHJlZmVycmVkUHJpbWl0aXZl
VHlwZUUKIF9fWk5LM0pTQzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQor
X19aTkszSlNDOEpTT2JqZWN0MTh0b1N0cmljdFRoaXNPYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBf
X1pOSzNKU0M4SlNPYmplY3Q4dG9OdW1iZXJFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNKU0M4SlNP
YmplY3Q4dG9PYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNKU0M4SlNPYmplY3Q4dG9TdHJp
bmdFUE5TXzlFeGVjU3RhdGVFCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcm8gYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8KaW5kZXggZjQ2M2Y0
MWQ1ZjYyNWIyZWJhMjJhYTZiZGYwYTdjYTQyY2RmZjUzZi4uZjgzYmY0YzRlZGUyOTE5MmU1MTdh
NWFjNzdiMjRhNTFkNzUxYmMxYiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUucHJvCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwpAQCAtMTk3
LDYgKzE5Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvUm9wZUltcGwuY3BwIFwKICAg
ICBydW50aW1lL1Njb3BlQ2hhaW4uY3BwIFwKICAgICBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAg
XAorICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIFwKICAgICBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIFwKICAg
ICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgXApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggODNkMzRlMzdiMmZkNGM0ZTdmNzE5NDFlNzM0
ZTVkZDg2NzJlY2JhZi4uNDc5YjNkZDAyMmJmOTFmYjdjNWFkNTQyYTI5MGFkNTQ0MDA5ZmNhMCAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCkBAIC0x
MTczLDYgKzExNzMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50
aW1lXFN0cmljdEV2YWxBY3RpdmF0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN0cmluZ0NvbnN0cnVjdG9yLmNw
cCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NzVkMjZkZDZjYjZk
ZTAwMTg2NTRlOThmM2E1Yjg3NjJhYjRlNDU5Li5hNDVmOTgyNTQxYjBjNjIwNjA2NDQ3MmVjNzkx
MDI1YTUyNTcyMWQ1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxOCw2ICszMTgsOCBAQAogCQlBNzI3
MDFCOTBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3
IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgfTsKIAkJQTcyN0ZGNkIwREEzMDkyMjAwRTU0OEQ3
IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyN0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8qIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlBNzI4MEEyODExNTU3RTMwMDBENTY5NTcgLyog
SlNPYmplY3RSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcz
MEI2MTIxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzMwQjYxMDEyNTAwNjhGMDA5
RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCAqLzsgfTsKKwkJQTczMEI2MTMxMjUwMDY4
RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBT
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgKi87IH07CiAJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3
OSAvKiBTcGVjaWFsaXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRU
aHVua0pJVC5oICovOyB9OwogCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5l
cmF0b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Mzg2NTUyMTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwICovOyB9Owog
CQlBNzM4NjU1NjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1MzExODY5N0I0MDA1
NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk1MSw2ICs5NTMsOCBAQAogCQlBNzI3MDFCMzBEQURFOTQ5
MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFeGNlcHRpb25IZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MjdGRjY1MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyN0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8q
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzMwQjYxMTEyNTAwNjhGMDA5RDI1
QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVjaWFsaXplZFRodW5rSklU
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Mzg2NTUyMTE4Njk3QjQwMDU0MDI3
OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGh1bmtHZW5lcmF0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUaHVua0dlbmVyYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE4MTQsNiArMTgxOCw4IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAw
MzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJCTE0MDM1REIwMTBEQkZCMkEwMEZGRkZFNyAv
KiBXZWFrR0NQdHIuaCAqLywKIAkJCQkxNDIwQkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1Jh
bmRvbS5oICovLAorCQkJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0
aXZhdGlvbi5oICovLAorCQkJCUE3MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFs
QWN0aXZhdGlvbi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjMxNCw2ICsyMzIwLDcgQEAKIAkJCQk5NzE0QUY1RjEyMkYz
MjA3MDA5MkQ5RjUgLyogUGFyc2VkVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzE0QUY2MDEy
MkYzMjA3MDA5MkQ5RjUgLyogVVJMU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDIxM0Uz
RTEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTczMEI2MTIxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI3NjgsNiArMjc3NSw3IEBACiAJCQkJOTcxNEFGNDYxMjJGMjg4NTAw
OTJEOUY1IC8qIFVSTFNlZ21lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTRBRjVFMTIy
RjMyMDcwMDkyRDlGNSAvKiBQYXJzZWRVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTAyMTNF
M0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTczMEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
NmMwNjk2ZWY3NGFiOGZhMzU3NDlkNWYwMTk5MmZhMWE0ZjQ2ZTE1Ny4uODljOGEzNmZiZWEzNGI2
OTFhZTMyZDA5YzdlZDVmYmZlYWYzOWM0OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkBAIC01MTYsNiArNTE2LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImCiAgICAg
ICAgICAgICBwcmludGYoIlslNGRdIGNvbnZlcnRfdGhpcyAlc1xuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlzX3N0cmljdDogeworICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludGYoIlslNGRdIGNvbnZl
cnRfdGhpc19zdHJpY3QgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25l
d19vYmplY3Q6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CkBAIC0xMzcxLDYgKzEzNzYsNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIENvZGVUeXBl
IGNvZGVUeXBlLCBKU0dsbwogICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKG93bmVyRXhlY3V0
YWJsZS0+bmVlZHNBY3RpdmF0aW9uKCkpCiAgICAgLCBtX3VzZXNFdmFsKG93bmVyRXhlY3V0YWJs
ZS0+dXNlc0V2YWwoKSkKICAgICAsIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGZhbHNlKQor
ICAgICwgbV9pc1N0cmljdE1vZGUob3duZXJFeGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAsIG1fY29kZVR5cGUoY29kZVR5cGUpCiAgICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRlcikK
ICAgICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKQEAgLTE1NTMsNyArMTU1OSw3IEBA
IGJvb2wgQ29kZUJsb2NrOjpyZXBhcnNlRm9yRXhjZXB0aW9uSW5mb0lmTmVjZXNzYXJ5KENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgICAgICAgICAgc2NvcGVDaGFpbiA9IHNjb3BlQ2hhaW4tPm5l
eHQ7CiAgICAgfQogCi0gICAgbV9leGNlcHRpb25JbmZvID0gbV9vd25lckV4ZWN1dGFibGUtPnJl
cGFyc2VFeGNlcHRpb25JbmZvKG1fZ2xvYmFsRGF0YSwgc2NvcGVDaGFpbiwgdGhpcyk7CisgICAg
bV9leGNlcHRpb25JbmZvID0gbV9vd25lckV4ZWN1dGFibGUtPnJlcGFyc2VFeGNlcHRpb25JbmZv
KGNhbGxGcmFtZSwgc2NvcGVDaGFpbiwgdGhpcyk7CiAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5m
bzsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjZGE0NTMwZDNhMTc5
NzBjY2E1ODE0ZmNmOTAzMmIyYWE5MDRlYjllLi41MTE1MTljZjNiN2YyM2E0N2E2ZTg4YWU3YjI0
YmI0ZjQ0ODk0MTk2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjk3LDYg
KzI5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RyaWN0TW9kZTsgfQorCiAgICAgICAgIGlubGluZSBib29sIGlzS25vd25Ob3RJbW1lZGlhdGUo
aW50IGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaW5kZXggPT0gbV90aGlzUmVn
aXN0ZXIpCkBAIC01NTIsNiArNTU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
bV9uZWVkc0Z1bGxTY29wZUNoYWluOwogICAgICAgICBib29sIG1fdXNlc0V2YWw7CiAgICAgICAg
IGJvb2wgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247CisgICAgICAgIGJvb2wgbV9pc1N0cmlj
dE1vZGU7CiAKICAgICAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDdjNGNiMzNlNDAxYWU2OWEyOTc1MWJjMmQ2YjIw
NTBmZDVhZDYzZDYuLmVkZDU3NWZlNmUwMjkzNGZmMDk0MDQ4OTE2MWMwOTc2MDc3MDQxNjcgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTQzLDIwICs0MywyMCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUGFzc1JlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZ2V0KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgVVN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4s
IEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQorICAgICAgICBQYXNzUmVmUHRyPEV2YWxFeGVjdXRh
YmxlPiBnZXQoRXhlY1N0YXRlKiBleGVjLCBib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgVVN0
cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUmIGV4
Y2VwdGlvblZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8RXZhbEV4ZWN1dGFi
bGU+IGV2YWxFeGVjdXRhYmxlOwogCi0gICAgICAgICAgICBpZiAoZXZhbFNvdXJjZS5sZW5ndGgo
KSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4tPmJlZ2luKCkpLT5p
c1ZhcmlhYmxlT2JqZWN0KCkpCisgICAgICAgICAgICBpZiAoIWluU3RyaWN0Q29udGV4dCAmJiBl
dmFsU291cmNlLmxlbmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVD
aGFpbi0+YmVnaW4oKSktPmlzVmFyaWFibGVPYmplY3QoKSkKICAgICAgICAgICAgICAgICBldmFs
RXhlY3V0YWJsZSA9IG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKTsKIAogICAgICAg
ICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkgewotICAgICAgICAgICAgICAgIGV2YWxFeGVjdXRh
YmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2Up
KTsKKyAgICAgICAgICAgICAgICBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0KTsKICAgICAg
ICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGV2YWxFeGVjdXRhYmxlLT5jb21waWxlKGV4ZWMs
IHNjb3BlQ2hhaW4pOwogICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb25WYWx1ZSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgICAgICAgICBpZiAoZXZhbFNvdXJj
ZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4tPmJl
Z2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhDYWNo
ZUVudHJpZXMpCisgICAgICAgICAgICAgICAgaWYgKCFpblN0cmljdENvbnRleHQgJiYgZXZhbFNv
dXJjZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4t
PmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhD
YWNoZUVudHJpZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3Vy
Y2UuaW1wbCgpLCBldmFsRXhlY3V0YWJsZSk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmgKaW5kZXggMDNmNjU3MzMwMWMxMjk5NDdjNjE5YjkyNmY1ZWE0YzAwMjNlNWZj
Mi4uMzgyZGQyNTM3N2MwZjhhZTMzOTZlZWVkYzYxY2YzM2QwZmFkZGJkYiAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IG1hY3JvKG9wX2NyZWF0ZV90aGlzLCAzKSBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9jYWxsZWUs
IDIpIFwKICAgICAgICAgbWFjcm8ob3BfY29udmVydF90aGlzLCAyKSBcCisgICAgICAgIG1hY3Jv
KG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIDIpIFwKICAgICAgICAgXAogICAgICAgICBtYWNybyhv
cF9uZXdfb2JqZWN0LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX25ld19hcnJheSwgNCkgXApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggOTg2NzA5YmJlYmJiYTk3ZDgzOGM0MGRhYTg5OWNkN2QxYWZhZmNjMi4uYzZiNzhiMTA2N2Yw
NGE4MDZmZWIzZThhNGVmYzVkNDg0YzdjODgxZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNDEsNiArMzQxLDExIEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW5jdGlvbkJvZHlOb2RlKiBmdW5j
dGlvbkJvZHksIGNvbnN0IERlYnVnCiAKICAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIoYXJn
dW1lbnRzUmVnaXN0ZXIpOwogICAgICAgICBlbWl0SW5pdExhenlSZWdpc3Rlcih1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1l
bnRzKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdpc3Rl
ci0+aW5kZXgoKSk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgZGVidWdnZXIgY3VycmVu
dGx5IHJldHJpZXZlcyB0aGUgYXJndW1lbnRzIG9iamVjdCBmcm9tIGFuIGFjdGl2YXRpb24gcmF0
aGVyIHRoYW4gcHVsbGluZwogICAgICAgICAvLyBpdCBmcm9tIGEgY2FsbCBmcmFtZS4gIEluIHRo
ZSBsb25nLXRlcm0gaXQgc2hvdWxkIHN0b3AgZG9pbmcgdGhhdCAoPHJkYXI6Ly9wcm9ibGVtLzY5
MTE4ODY+KSwKQEAgLTQyOSw3ICs0MzQsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgY29uc3QgRGVidWcKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuY1Byb3RvLT5pbmRleCgpKTsKICAgICB9IGVs
c2UgaWYgKGZ1bmN0aW9uQm9keS0+dXNlc1RoaXMoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
KSB7Ci0gICAgICAgIGVtaXRPcGNvZGUob3BfY29udmVydF90aGlzKTsKKyAgICAgICAgaWYgKGNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2NvbnZl
cnRfdGhpc19zdHJpY3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9w
X2NvbnZlcnRfdGhpcyk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdp
c3Rlci5pbmRleCgpKTsKICAgICB9CiB9CkBAIC0xNTQxLDYgKzE1NDksOSBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVy
bjsKICAgICBBU1NFUlQobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSk7CiAKKyAgICBpZiAo
bV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBlbWl0
T3Bjb2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSk7CiB9CkBAIC0xNjQ4LDcgKzE2NTksOCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBz
cmMpCiAgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0
ZXIoKSk7Ci0gICAgfSBlbHNlIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmIG1f
Y29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMgPiAxKSB7IC8vIElmIHRoZXJlIGFyZSBubyBuYW1l
ZCBwYXJhbWV0ZXJzLCB0aGVyZSdzIG5vdGhpbmcgdG8gdGVhciBvZmYsIHNpbmNlIGV4dHJhIC8g
dW5uYW1lZCBwYXJhbWV0ZXJzIGdldCBjb3BpZWQgdG8gdGhlIGFyZ3VtZW50cyBvYmplY3QgYXQg
Y29uc3RydWN0IHRpbWUuCisgICAgfSBlbHNlIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50
cygpICYmIG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMgPiAxCisgICAgICAgICAgICAgICAm
JiAhbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7IC8vIElmIHRoZXJlIGFyZSBubyBuYW1l
ZCBwYXJhbWV0ZXJzLCB0aGVyZSdzIG5vdGhpbmcgdG8gdGVhciBvZmYsIHNpbmNlIGV4dHJhIC8g
dW5uYW1lZCBwYXJhbWV0ZXJzIGdldCBjb3BpZWQgdG8gdGhlIGFyZ3VtZW50cyBvYmplY3QgYXQg
Y29uc3RydWN0IHRpbWUuCiAgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYXJndW1lbnRz
KTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hcmd1bWVudHNS
ZWdpc3RlcigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IDg2MTcxMWFjNmFiYThmZjExZDJhYWZjNzA1ZWNiNzhkY2Nm
YzM4ZjUuLmQwZmYxZjQ0ODU4OGQwNjk0MzkzNzNjOWQxZmFjYTRmM2YxNjhlM2IgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MTks
NiArNDE5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIHNo
b3VsZEVtaXRQcm9maWxlSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3M7
IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
b2lkIGVtaXRPcGNvZGUoT3Bjb2RlSUQpOwpAQCAtNDk5LDEyICs1MDEsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IG1ha2VGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBib2R5
LT5pZGVudCgpLCBib2R5LT5zb3VyY2UoKSwgYm9keS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5w
YXJhbWV0ZXJzKCksIGJvZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBib2R5LT5pZGVudCgp
LCBib2R5LT5zb3VyY2UoKSwgYm9keS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5wYXJhbWV0ZXJz
KCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExpbmUo
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4g
bWFrZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIGJvZHktPmlkZW50KCksIGJvZHktPnNvdXJjZSgpLCBib2R5LT51
c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+bGluZU5vKCksIGJvZHkt
Pmxhc3RMaW5lKCkpOworICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIGJvZHktPmlkZW50KCksIGJvZHktPnNvdXJjZSgpLCBib2R5LT51c2Vz
QXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGJv
ZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCBjYmNiZDIxYTk2ZThlMmQzZTEyMjZiM2U3MTIyYWEx
YjE5NzNkODFjLi4xN2RmZGY3NjlhNWI1NzdmZjIyY2M2NGQwZTdkYjA3N2E0YWViZGIyIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgSlNWYWx1
ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1
ZSYgZXhjZXB0aW9uLCBKU0cKIHsKICAgICBDYWxsRnJhbWUqIGdsb2JhbENhbGxGcmFtZSA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBl
dmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxDYWxsRnJhbWUsIG1ha2VTb3VyY2Uo
c2NyaXB0KSk7CisgICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShnbG9iYWxDYWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0KSwgZmFsc2UpOwog
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBpbGUoZ2xvYmFsQ2FsbEZyYW1lLCBnbG9i
YWxDYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKSk7CiAgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1
cm4gZXJyb3I7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNh
bGxGcmFtZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKaW5kZXggMzJmNjVkZGI4MDQwMTZkNTlhMjgzZmIyYzg4ZThlZTQ4NTM4NGFkZS4uYzk4Yzdj
Y2RkYzE3MGMwNGZhYzM4MDg0ZmM0ZmQ1YTM5MmU4ZGNlMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtODgsNyArODgsNyBAQCBKU1ZhbHVl
IERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFs
dWUmIGV4Y2VwdGlvbikgYwogICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFs
ID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShtX2NhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQp
KTsKKyAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKG1fY2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCksIG1fY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBp
bGUobV9jYWxsRnJhbWUsIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOwogICAgIGlmIChlcnJv
cikKICAgICAgICAgcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IDU5NDNlY2ViNzRlZmZmMDY3N2E1MjM2YzU2NjQ3MTI3NTZkMDMw
M2MuLjk3NTk0Y2UxYTFhMjRhNjIyMmNmZDlhYmNlMDZhZmQ5MjFmNzJkYmYgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNp
bmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1
ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CkBAIC0zNzEsMTQgKzM3MiwxOCBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6Y2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSogcgog
ICAgIFVTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShjYWxs
RnJhbWUpOwogICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwotCi0gICAgTGl0ZXJhbFBhcnNlciBwcmVwYXJzZXIoY2FsbEZyYW1lLCBw
cm9ncmFtU291cmNlLCBMaXRlcmFsUGFyc2VyOjpOb25TdHJpY3RKU09OKTsKLSAgICBpZiAoSlNW
YWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpCi0gICAgICAg
IHJldHVybiBwYXJzZWRPYmplY3Q7CisgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkgeworICAgICAgICAvLyBGSVhNRTogV2UgY2FuIHVzZSB0aGUgcHJlcGFyc2VyIGluIHN0cmlj
dCBtb2RlLCB3ZSBqdXN0IG5lZWQgYWRkaXRpb25hbCBsb2dpYworICAgICAgICAvLyB0byBwcmV2
ZW50IGR1cGxpY2F0ZXMuCisgICAgICAgIExpdGVyYWxQYXJzZXIgcHJlcGFyc2VyKGNhbGxGcmFt
ZSwgcHJvZ3JhbVNvdXJjZSwgTGl0ZXJhbFBhcnNlcjo6Tm9uU3RyaWN0SlNPTik7CisgICAgICAg
IGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBwYXJzZWRPYmplY3Q7CisgICAgfQogCiAgICAgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKLSAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgUmVmUHRyPEV2YWxF
eGVjdXRhYmxlPiBldmFsID0gY29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0KGNhbGxGcmFt
ZSwgcHJvZ3JhbVNvdXJjZSwgc2NvcGVDaGFpbiwgZXhjZXB0aW9uVmFsdWUpOworICAgIFJlZlB0
cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IGNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldChj
YWxsRnJhbWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dyYW1Tb3VyY2UsIHNjb3Bl
Q2hhaW4sIGV4Y2VwdGlvblZhbHVlKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNVbmRlZmlu
ZWQoKTsKICAgICBpZiAoZXZhbCkKQEAgLTUzOSw5ICs1NDQsMTEgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpT
VmFsdWUgZXgKICAgICAgICAgICAgIHNjb3BlQ2hhaW4gPSBzY29wZUNoYWluLT5wb3AoKTsKICAg
ICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKHNjb3BlQ2hhaW4t
Pm9iamVjdCk7CiAgICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKLSAgICAgICAg
aWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3RlcihvbGRDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKS5qc1ZhbHVlKCkpCi0g
ICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRp
b24pOwotICAgIH0gZWxzZSBpZiAob2xkQ29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHsKKyAg
ICAgICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihvbGRDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKS5qc1ZhbHVl
KCkpIHsKKyAgICAgICAgICAgIGlmICghb2xkQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2
YXRpb24pOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChvbGRDb2RlQmxvY2stPnVzZXNBcmd1
bWVudHMoKSAmJiAhb2xkQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAo
SlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkKICAgICAg
ICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPmNvcHlSZWdpc3RlcnMoKTsKICAgICB9CkBA
IC0xMDM2LDcgKzEwNDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogICAgIH0KICAgICBF
dmFsQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXZhbC0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKIAot
ICAgIEpTVmFyaWFibGVPYmplY3QqIHZhcmlhYmxlT2JqZWN0OworICAgIEpTT2JqZWN0KiB2YXJp
YWJsZU9iamVjdDsKICAgICBmb3IgKFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gc2NvcGVDaGFpbjsg
OyBub2RlID0gbm9kZS0+bmV4dCkgewogICAgICAgICBBU1NFUlQobm9kZSk7CiAgICAgICAgIGlm
IChub2RlLT5vYmplY3QtPmlzVmFyaWFibGVPYmplY3QoKSkgewpAQCAtMTA0Nyw3ICsxMDU0LDEz
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjCiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMg
PSBjb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOwogICAgIGludCBudW1GdW5jdGlvbnMgPSBjb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOworICAgIGJvb2wgcHVzaGVkU2NvcGUgPSBm
YWxzZTsKICAgICBpZiAobnVtVmFyaWFibGVzIHx8IG51bUZ1bmN0aW9ucykgeworICAgICAgICBp
ZiAoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgdmFyaWFibGVPYmpl
Y3QgPSBuZXcgKGNhbGxGcmFtZSkgU3RyaWN0RXZhbEFjdGl2YXRpb24oY2FsbEZyYW1lKTsKKyAg
ICAgICAgICAgIHNjb3BlQ2hhaW4gPSBzY29wZUNoYWluLT5wdXNoKHZhcmlhYmxlT2JqZWN0KTsK
KyAgICAgICAgICAgIHB1c2hlZFNjb3BlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICAvLyBT
Y29wZSBmb3IgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIKICAgICAgICAgQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIgb3B0aW1pemVyKHZhcmlhYmxlT2JqZWN0KTsKIApAQCAtMTA3MCw2ICsx
MDgzLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZh
bCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWMKICAgICBSZWdpc3RlciogbmV3RW5kID0g
bV9yZWdpc3RlckZpbGUuc3RhcnQoKSArIGdsb2JhbFJlZ2lzdGVyT2Zmc2V0ICsgY29kZUJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVyczsKICAgICBpZiAoIW1fcmVnaXN0ZXJGaWxlLmdyb3cobmV3
RW5kKSkgewogICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNh
bGxGcmFtZSk7CisgICAgICAgIGlmIChwdXNoZWRTY29wZSkKKyAgICAgICAgICAgIHNjb3BlQ2hh
aW4tPnBvcCgpOwogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgfQogCkBAIC0xMTEyLDYg
KzExMjcsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBl
dmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogICAgICAgICAoKnByb2ZpbGVyKS0+
ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGV2YWwtPnNvdXJjZVVSTCgpLCBldmFsLT5saW5lTm8oKSk7
CiAKICAgICBtX3JlZ2lzdGVyRmlsZS5zaHJpbmsob2xkRW5kKTsKKyAgICBpZiAocHVzaGVkU2Nv
cGUpCisgICAgICAgIHNjb3BlQ2hhaW4tPnBvcCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTM5ODcsOCArNDAwNCwxMCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICBKU0Fj
dGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oY2FsbEZyYW1lLT5yKHNyYzEpLmpz
VmFsdWUoKSk7CiAgICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKIAotICAgICAg
ICBpZiAoSlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKHNyYzIpKS5qc1ZhbHVlKCkpCi0gICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1
bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24pOworICAgICAgICBpZiAoSlNWYWx1ZSBh
cmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHNyYzIp
KS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9u
KGFjdGl2YXRpb24pOworICAgICAgICB9CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgo
b3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKQEAg
LTQxODQsNiArNDIwMywyNSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICB2UEMgKz0g
T1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXMpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9O
KCk7CiAgICAgfQorICAgIERFRklORV9PUENPREUob3BfY29udmVydF90aGlzKSB7CisgICAgICAg
IC8qIGNvbnZlcnRfdGhpc19zdHJpY3QgdGhpcyhyKQorICAgICAgICAgCisgICAgICAgICBUYWtl
cyB0aGUgdmFsdWUgaW4gdGhlICd0aGlzJyByZWdpc3RlciwgYW5kIGNvbnZlcnRzIGl0IHRvCisg
ICAgICAgICBpdHMgInRoaXMiIGZvcm0gaWYgKGFuZCBvbmx5IGlmKSAidGhpcyIgaXMgYW4gb2Jq
ZWN0IHdpdGggYQorICAgICAgICAgY3VzdG9tIHRoaXMgY29udmVyc2lvbgorICAgICAgICAgCisg
ICAgICAgICBUaGlzIG9wY29kZSBzaG91bGQgb25seSBiZSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcg
b2YgYSBjb2RlCisgICAgICAgICBibG9jay4KKyAgICAgICAgICovCisgICAgICAgIAorICAgICAg
ICBpbnQgdGhpc1JlZ2lzdGVyID0gdlBDWzFdLnUub3BlcmFuZDsKKyAgICAgICAgSlNWYWx1ZSB0
aGlzVmFsID0gY2FsbEZyYW1lLT5yKHRoaXNSZWdpc3RlcikuanNWYWx1ZSgpOworICAgICAgICBp
ZiAodGhpc1ZhbC5uZWVkc1RoaXNDb252ZXJzaW9uKCkpCisgICAgICAgICAgICBjYWxsRnJhbWUt
PnIodGhpc1JlZ2lzdGVyKSA9IEpTVmFsdWUodGhpc1ZhbC50b1RoaXNPYmplY3QoY2FsbEZyYW1l
KSk7CisgICAgICAgIAorICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3Ro
aXMpOworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgfQogICAgIERFRklORV9PUENP
REUob3BfaW5pdF9sYXp5X3JlZykgewogICAgICAgICAvKiBpbml0X2xhenlfcmVnIGRzdChyKQog
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IGE1MDhkMGM3ODAxYTYyZjdkZDU4OWViMmIxNTE0OWQ3MzA0Y2M3
NmIuLjQxNDU3MWVkMWMxYzMzMTk1ZjlkZWMwYTFiNDQ1NTUyMGQ5YzQwODkgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0yMjUsNiArMjI1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2NhbGxlZSkKICAgICAgICAgREVGSU5FX09QKG9w
X2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29udmVydF90aGlzKQorICAgICAg
ICBERUZJTkVfT1Aob3BfY29udmVydF90aGlzX3N0cmljdCkKICAgICAgICAgREVGSU5FX09QKG9w
X2luaXRfbGF6eV9yZWcpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfYXJndW1lbnRzKQog
ICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2NhbGxfdmFyYXJncykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0cnVjdCkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnZlcnRfdGhpcykKKyAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpCiAjaWYgIVVTRShKU1ZBTFVF
MzIpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApp
bmRleCA2YjJlNzBlMWQ1ZjllNDg1MTVjMDdkMGFmYWZhYTM0MjdlMjliMWIwLi4wNWU1N2ZlNzEw
NjI0OTUwNWU0MDQwNDJlMzU0MjA5Y2Y1MTQwYmQyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC03MzgsNiArNzM4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfY2FsbGVlKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CkBAIC04NDUsNiArODQ2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kaXYoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCmluZGV4IGM4MTkzMmE2MGJjMWEwZTFmOTk1MTlkZjU2N2MwZjViZDkzYzVkMDUuLmIzNDhh
YzY5ZTllODI0YjBkMTFmYTE2ZjJkYmEyNzNkMTA5ODZiODMgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKQEAgLTg2NSw3ICs4NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCByZWdUMCk7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVk
aWF0ZShiYXNlKSkKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0Nl
bGwocmVnVDApKTsKLSAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkp
IHsKKyAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkgfHwgbV9jb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
T0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgcmVnVDIpOwogICAgICAgICBp
c05vdE9iamVjdC5hcHBlbmQoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX3R5cGUpKSwgSW1tMzIoT2JqZWN0VHlw
ZSkpKTsKICAgICB9CkBAIC0xMjI3LDYgKzEyMjcsMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29u
dmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKFN0
cnVjdHVyZSwgbV90eXBlSW5mby5tX2ZsYWdzKSksIEltbTMyKE5lZWRzVGhpc0NvbnZlcnNpb24p
KSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBKdW1wIG5vdE51bGwg
PSBicmFuY2hUZXN0UHRyKE5vblplcm8sIHJlZ1QwKTsKKyAgICBtb3ZlKEltbVB0cihKU1ZhbHVl
OjplbmNvZGUoanNOdWxsKCkpKSwgcmVnVDApOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOworICAgIEp1bXAgc2V0VGhp
cyA9IGp1bXAoKTsKKyAgICBub3ROdWxsLmxpbmsodGhpcyk7CisgICAgSnVtcCBpc0ltbWVkaWF0
ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgcmVnVDEpOworICAgIEp1
bXAgbm90QW5PYmplY3QgPSBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QzLCBPQkpFQ1Rf
T0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fdHlwZSkpLCBJbW0zMihPYmplY3RUeXBl
KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMSwg
T0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX2ZsYWdzKSksIEltbTMyKE5l
ZWRzVGhpc0NvbnZlcnNpb24pKSk7CisgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKKyAgICBu
b3RBbk9iamVjdC5saW5rKHRoaXMpOworICAgIHNldFRoaXMubGluayh0aGlzKTsKK30KKwogdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CkBAIC0xMjc2LDYgKzEyOTMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRf
dGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBz
dHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfY29udmVydF90aGlzX3N0cmljdCk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVn
VDApOworICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCmluZGV4IGFkM2I1NTgyNmEyZmVhMGE5NmFmNjQ5M2IzYzc0MTUxMGZkN2RlZmUuLmJm
Y2M4ZWE0ZjEwNjgyMTMyNTQ5MmZlNjA5ODhhOGQwMzg3ZWMyODcgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xMjE1LDcgKzEyMTUsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfcG5hbWVzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3du
Tm90SW1tZWRpYXRlKGJhc2UpKQogICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoYnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGlmIChiYXNl
ICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSkgeworICAgIGlmIChiYXNlICE9IG1fY29k
ZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsK
ICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBt
X3N0cnVjdHVyZSkpLCByZWdUMik7CiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2g4
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5
cGVJbmZvLm1fdHlwZSkpLCBJbW0zMihPYmplY3RUeXBlKSkpOwogICAgIH0KQEAgLTE1MjgsNiAr
MTUyOCwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5H
VEgob3BfY29udmVydF90aGlzKSwgdGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICAKKyAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJl
Z1QxLCByZWdUMCk7CisgICAgCisgICAgSnVtcCBub3ROdWxsID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgZW1pdFN0b3JlKHRo
aXNSZWdpc3RlciwganNOdWxsKCkpOworICAgIEp1bXAgc2V0VGhpcyA9IGp1bXAoKTsKKyAgICBu
b3ROdWxsLmxpbmsodGhpcyk7CisgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMSwgSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgcmVnVDEpOwor
ICAgIEp1bXAgbm90QW5PYmplY3QgPSBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QzLCBP
QkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fdHlwZSkpLCBJbW0zMihPYmpl
Y3RUeXBlKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMSwgT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX2ZsYWdzKSksIElt
bTMyKE5lZWRzVGhpc0NvbnZlcnNpb24pKSk7CisgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsK
KyAgICBub3RBbk9iamVjdC5saW5rKHRoaXMpOworICAgIHNldFRoaXMubGluayh0aGlzKTsKKyAg
ICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90aGlzKSwg
dGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOworfQorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Y29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVy
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTE1NDAsNiArMTU2MCwxOCBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIHN0dWJDYWxsLmNhbGwodGhpc1JlZ2lzdGVy
KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3sKKyAgICB1bnNpZ25lZCB0aGlzUmVnaXN0ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOworICAgIAorICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7CisgICAgCisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3Rp
X29wX2NvbnZlcnRfdGhpc19zdHJpY3QpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1Qx
LCByZWdUMCk7CisgICAgc3R1YkNhbGwuY2FsbCh0aGlzUmVnaXN0ZXIpOworfQorCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9wcm9maWxlX3dpbGxfY2FsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIHBlZWsocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihKSVRTdGFja0ZyYW1lLCBl
bmFibGVkUHJvZmlsZXJSZWZlcmVuY2UpIC8gc2l6ZW9mKHZvaWQqKSk7CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAppbmRleCBmMWVjMDc5NjI5NmQyOWUwYjE4OTg1NGU2NzQyOTg2OGEzZmM1NTFjLi44
ZDU0NGU3MzM5MDY0NGE0ZTJlNmZhNjFmYmFlZTljN2E3NzUyMDZmIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKQEAgLTEwNjUsNyArMTA2NSw5IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgdm9pZCB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxECiAg
ICAgICAgIHJldHVybiAwOyBcCiAgICAgfSB3aGlsZSAoMCkKICNkZWZpbmUgVk1fVEhST1dfRVhD
RVBUSU9OX0FUX0VORCgpIFwKLSAgICByZXR1cm5Ub1Rocm93VHJhbXBvbGluZShzdGFja0ZyYW1l
Lmdsb2JhbERhdGEsIFNUVUJfUkVUVVJOX0FERFJFU1MsIFNUVUJfUkVUVVJOX0FERFJFU1MpCisg
ICAgZG8ge1wKKyAgICAgICAgcmV0dXJuVG9UaHJvd1RyYW1wb2xpbmUoc3RhY2tGcmFtZS5nbG9i
YWxEYXRhLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBTVFVCX1JFVFVSTl9BRERSRVNTKTtcCisgICAg
fSB3aGlsZSAoMCkKIAogI2RlZmluZSBDSEVDS19GT1JfRVhDRVBUSU9OKCkgXAogICAgIGRvIHsg
XApAQCAtMTI5NSwxMiArMTI5NywyMiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfY29udmVydF90aGlzKQogCiAgICAgSlNWYWx1ZSB2MSA9IHN0YWNrRnJhbWUuYXJn
c1swXS5qc1ZhbHVlKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNh
bGxGcmFtZTsKLQogICAgIEpTT2JqZWN0KiByZXN1bHQgPSB2MS50b1RoaXNPYmplY3QoY2FsbEZy
YW1lKTsKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpT
VmFsdWUsIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpCit7CisgICAgU1RVQl9JTklUX1NUQUNLX0ZS
QU1FKHN0YWNrRnJhbWUpOworICAgIAorICAgIEpTVmFsdWUgdjEgPSBzdGFja0ZyYW1lLmFyZ3Nb
MF0uanNWYWx1ZSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxs
RnJhbWU7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB2MS50b1N0cmljdFRoaXNPYmplY3QoY2FsbEZy
YW1lKTsKKyAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3Bf
ZW5kKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKQEAgLTE0MDQs
NyArMTQxNiw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZF9nZW5l
cmljKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAotICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90OworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHN0YWNrRnJhbWUu
YXJnc1swXS5qc1ZhbHVlKCkucHV0KHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFy
Z3NbMV0uaWRlbnRpZmllcigpLCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsK
ICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogfQpAQCAtMTQxMyw3ICsxNDI1LDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lkX2RpcmVjdF9nZW5lcmlj
KQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICAKLSAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzdGFja0ZyYW1l
LmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICBzdGFja0ZyYW1l
LmFyZ3NbMF0uanNWYWx1ZSgpLnB1dERpcmVjdChzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3RhY2tG
cmFtZS5hcmdzWzFdLmlkZW50aWZpZXIoKSwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwg
c2xvdCk7CiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKIH0KQEAgLTE0NDEsNyAr
MTQ1Myw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZCkKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgIElkZW50aWZp
ZXImIGlkZW50ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50aWZpZXIoKTsKICAgICAKLSAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgc3RhY2tGcmFtZS5hcmdzWzBdLmpz
VmFsdWUoKS5wdXQoY2FsbEZyYW1lLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUo
KSwgc2xvdCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0xNDYwLDcgKzE0NzIsNyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfZGlyZWN0KQogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBzdGFj
a0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpOwogICAgIAotICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90OworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlz
U3RyaWN0TW9kZSgpKTsKICAgICBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLnB1dERpcmVj
dChjYWxsRnJhbWUsIGlkZW50LCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsK
ICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5j
b2RlQmxvY2soKTsKQEAgLTE0NzksOCArMTQ5MSw4IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQsIG9wX3B1dF9ieV9pZF9mYWlsKQogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFj
a0ZyYW1lLmNhbGxGcmFtZTsKICAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0YWNrRnJhbWUuYXJn
c1sxXS5pZGVudGlmaWVyKCk7Ci0KLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1v
ZGUoKSk7CiAgICAgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS5wdXQoY2FsbEZyYW1lLCBp
ZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAKICAgICBDSEVDS19G
T1JfRVhDRVBUSU9OX0FUX0VORCgpOwpAQCAtMTQ5Myw3ICsxNTA1LDcgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lkX2RpcmVjdF9mYWlsKQogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAgICAgSWRlbnRpZmllciYgaWRlbnQg
PSBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpOwogICAgIAotICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90OworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLnB1
dERpcmVjdChjYWxsRnJhbWUsIGlkZW50LCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBz
bG90KTsKICAgICAKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwpAQCAtMTg4MCw3
ICsxODkyLDExIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9kZWxf
YnlfaWQpCiAgICAgCiAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
Qm9vbGVhbihiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJn
c1sxXS5pZGVudGlmaWVyKCkpKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+ZGVs
ZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihjb3VsZERlbGV0ZSk7CisgICAgaWYgKCFj
b3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3Io
c3RhY2tGcmFtZS5jYWxsRnJhbWUsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworCiAg
ICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0yMjE1LDggKzIyMzEsMTAgQEAgREVGSU5FX1NUVUJfRlVOQ1RJ
T04odm9pZCwgb3BfdGVhcl9vZmZfYWN0aXZhdGlvbikKICAgICBBU1NFUlQoc3RhY2tGcmFtZS5j
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOwogICAgIEpTQWN0
aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpKTsKICAgICBhY3RpdmF0aW9uLT5jb3B5UmVnaXN0ZXJzKCk7Ci0gICAgaWYgKEpTVmFs
dWUgdiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCkpCi0gICAgICAgIGFzQXJndW1lbnRz
KHYpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24pOworICAgIGlmIChKU1ZhbHVlIHYgPSBzdGFj
a0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpKSB7CisgICAgICAgIGlmICghc3RhY2tGcmFtZS5jYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGFzQXJndW1l
bnRzKHYpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24pOworICAgIH0KIH0KIAogREVGSU5FX1NU
VUJfRlVOQ1RJT04odm9pZCwgb3BfdGVhcl9vZmZfYXJndW1lbnRzKQpAQCAtMjQ5Niw3ICsyNTE0
LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X3ZhbCkKICAgICB9IGVs
c2UgewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgc3Vic2NyaXB0LnRv
U3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICBpZiAoIXN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uKSB7IC8vIERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhyZXcg
YW4gZXhjZXB0aW9uLgotICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKSk7CiAgICAgICAgICAgICBiYXNlVmFsdWUucHV0KGNhbGxGcmFtZSwgcHJvcGVydHks
IHZhbHVlLCBzbG90KTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1MzksNyArMjU1Nyw3IEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV92YWxfYnl0ZV9hcnJheSkKICAgICB9
IGVsc2UgewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgc3Vic2NyaXB0
LnRvU3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICBpZiAoIXN0YWNrRnJhbWUuZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uKSB7IC8vIERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhy
ZXcgYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSk7CiAgICAgICAgICAgICBiYXNlVmFsdWUucHV0KGNhbGxGcmFtZSwgcHJvcGVy
dHksIHZhbHVlLCBzbG90KTsKICAgICAgICAgfQogICAgIH0KQEAgLTM0ODYsMTkgKzM1MDQsMjIg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2RlbF9ieV92YWwpCiAg
ICAgSlNPYmplY3QqIGJhc2VPYmogPSBiYXNlVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsgLy8g
bWF5IHRocm93CiAKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5q
c1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgYm9vbCByZXN1bHQ7CiAgICAgdWlu
dDMyX3QgaTsKICAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKLSAgICAgICAgcmVzdWx0
ID0ganNCb29sZWFuKGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgaSkpOworICAg
ICAgICByZXN1bHQgPSBiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIGkpOwogICAg
IGVsc2UgewogICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CiAgICAgICAgIElkZW50aWZp
ZXIgcHJvcGVydHkoY2FsbEZyYW1lLCBzdWJzY3JpcHQudG9TdHJpbmcoY2FsbEZyYW1lKSk7CiAg
ICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgcmVzdWx0ID0ganNCb29sZWFu
KGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgcHJvcGVydHkpKTsKKyAgICAgICAg
cmVzdWx0ID0gYmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBwcm9wZXJ0eSk7CiAg
ICAgfQogCisgICAgaWYgKCFyZXN1bHQgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gY3Jl
YXRlVHlwZUVycm9yKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9w
ZXJ0eS4iKTsKKwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHJlc3VsdCkpOwogfQogCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRf
Z2V0dGVyKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmggYi9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAppbmRleCAyYjIyZTZkNDQ5YzVmY2NiZGNlOThhZmYw
OWQ3ODk0MzhlNzcyNzA5Li5iZDdkMTljZGQ2YzdjZDE2YjY4Zjk5MDhiM2U2NDQ5YmE5Nzg3ZjJh
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIGV4dGVybiAiQyIgewog
ICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1
Y3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBj
dGlfb3BfY3JlYXRlX3RoaXMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNW
YWx1ZSBKSVRfU1RVQiBjdGlfb3BfY29udmVydF90aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTik7
CisgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NvbnZlcnRfdGhpc19zdHJpY3Qo
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlf
b3BfY3JlYXRlX2FyZ3VtZW50cyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRK
U1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jcmVhdGVfYXJndW1lbnRzX25vX3BhcmFtcyhTVFVCX0FS
R1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9kZWxf
YnlfaWQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CmluZGV4IDQwMDIzZjhiNjlkNzI2YzU0MDNkYzc5NmM4NmIxYzc3OWVkODIzYjEuLmEzMzZmZDVj
MjAwZjJhYzE2MjVhMjQzZmY1MWVjOWJlNGY3MzNjOTEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaApAQCAtMjQ5LDEwICsyNDksMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keSgp
CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGJvb2wgaW5TdHJpY3RD
b250ZXh0KQogICAgIHsKICAgICAgICAgdXNlc0Nsb3N1cmVzKCk7Ci0gICAgICAgIHJldHVybiBG
dW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEsIGluU3RyaWN0Q29udGV4dCk7CiAg
ICAgfQogICAgIAogICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkoUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZp
ZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwg
aW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBp
bnQgYm9keUVuZExpbmUpCkBAIC01NzgsNiArNTc4LDggQEAgcHVibGljOgogICAgIAogICAgIGNv
bnN0IElkZW50aWZpZXImIGdldE5hbWUoUHJvcGVydHkgcHJvcGVydHkpIHsgcmV0dXJuIHByb3Bl
cnR5LT5uYW1lKCk7IH0KICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShQcm9wZXJ0eSBw
cm9wZXJ0eSkgeyByZXR1cm4gcHJvcGVydHktPnR5cGUoKTsgfQorCisgICAgYm9vbCBpc1Jlc29s
dmUoRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIGV4cHItPmlzUmVzb2x2ZU5vZGUoKTsg
fQogcHJpdmF0ZToKICAgICBzdHJ1Y3QgU2NvcGUgewogICAgICAgICBTY29wZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJz
ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcAppbmRleCAwZTUyNmFj
NzdmZGRkNzRiY2JjNjBhNzAwZTFmNzU3ZmRlZmFhMGVjLi5iYzdlMTE4ZWYwOTdiODk0MGY1MzUx
NmFiZTlkZmRiYjE0YjNiNDMxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQ
YXJzZXIuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAKQEAgLTQy
LDYgKzQyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIGZhaWwoKSBkbyB7IG1fZXJyb3Ig
PSB0cnVlOyByZXR1cm4gMDsgfSB3aGlsZSAoMCkKICNkZWZpbmUgZmFpbElmRmFsc2UoY29uZCkg
ZG8geyBpZiAoIShjb25kKSkgZmFpbCgpOyB9IHdoaWxlICgwKQogI2RlZmluZSBmYWlsSWZUcnVl
KGNvbmQpIGRvIHsgaWYgKChjb25kKSkgZmFpbCgpOyB9IHdoaWxlICgwKQorI2RlZmluZSBmYWls
SWZTdHJpY3RUcnVlKGNvbmQpIGRvIHsgaWYgKChjb25kKSAmJiBzdHJpY3RNb2RlKCkpIGZhaWwo
KTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZmFpbElmU3RyaWN0RmFsc2UoY29uZCkgZG8geyBpZiAo
KCEoY29uZCkpICYmIHN0cmljdE1vZGUoKSkgZmFpbCgpOyB9IHdoaWxlICgwKQogI2RlZmluZSBj
b25zdW1lT3JGYWlsKHRva2VuVHlwZSkgZG8geyBpZiAoIWNvbnN1bWUodG9rZW5UeXBlKSkgZmFp
bCgpOyB9IHdoaWxlICgwKQogI2RlZmluZSBtYXRjaE9yRmFpbCh0b2tlblR5cGUpIGRvIHsgaWYg
KCFtYXRjaCh0b2tlblR5cGUpKSBmYWlsKCk7IH0gd2hpbGUgKDApCiAjZGVmaW5lIGZhaWxJZlN0
YWNrT3ZlcmZsb3coKSBkbyB7IGZhaWxJZkZhbHNlKGNhblJlY3Vyc2UoKSk7IH0gd2hpbGUgKDAp
CkBAIC02Nyw4ICs2OSw4IEBAIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga01heFBhcnNlclN0YWNr
VXNhZ2UgPSAxMjggKiBzaXplb2Yodm9pZCopICogMTAyNDsKIAogY2xhc3MgSlNQYXJzZXIgewog
cHVibGljOgotICAgIEpTUGFyc2VyKExleGVyKiwgSlNHbG9iYWxEYXRhKiwgRnVuY3Rpb25QYXJh
bWV0ZXJzKiwgU291cmNlUHJvdmlkZXIqKTsKLSAgICBib29sIHBhcnNlUHJvZ3JhbSgpOworICAg
IEpTUGFyc2VyKExleGVyKiwgSlNHbG9iYWxEYXRhKiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9v
bCBpc1N0cmljdENvbnRleHQsIFNvdXJjZVByb3ZpZGVyKik7CisgICAgYm9vbCBwYXJzZVByb2dy
YW0oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCopOwogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgQWxsb3dJbk92ZXJyaWRlIHsKICAgICAgICAgQWxsb3dJbk92ZXJyaWRlKEpTUGFyc2VyKiBw
YXJzZXIpCkBAIC05MCw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fbGFzdExpbmUgPSBt
X3Rva2VuLm1faW5mby5saW5lOwogICAgICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9p
bmZvLmVuZE9mZnNldDsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVOdW1iZXIobV9sYXN0
TGluZSk7Ci0gICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4KCZtX3Rva2VuLm1f
ZGF0YSwgJm1fdG9rZW4ubV9pbmZvLCBsZXhUeXBlKTsKKyAgICAgICAgbV90b2tlbi5tX3R5cGUg
PSBtX2xleGVyLT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2luZm8sIGxleFR5cGUs
IHN0cmljdE1vZGUoKSk7CiAgICAgICAgIG1fdG9rZW5Db3VudCsrOwogICAgIH0KIApAQCAtMTIx
LDkgKzEyMywyMyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9p
bmZvLmVuZE9mZnNldDsKICAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJik7Ci0g
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVt
ZW50KFRyZWVCdWlsZGVyJik7CisgICAgCisgICAgdm9pZCBzdGFydExvb3AoKSB7IGN1cnJlbnRT
Y29wZSgpLT5zdGFydExvb3AoKTsgfQorICAgIHZvaWQgZW5kTG9vcCgpIHsgY3VycmVudFNjb3Bl
KCktPmVuZExvb3AoKTsgfQorICAgIHZvaWQgc3RhcnRTd2l0Y2goKSB7IGN1cnJlbnRTY29wZSgp
LT5zdGFydFN3aXRjaCgpOyB9CisgICAgdm9pZCBlbmRTd2l0Y2goKSB7IGN1cnJlbnRTY29wZSgp
LT5lbmRTd2l0Y2goKTsgfQorICAgIHZvaWQgc2V0U3RyaWN0TW9kZSgpIHsgY3VycmVudFNjb3Bl
KCktPnNldFN0cmljdE1vZGUoKTsgfQorICAgIGJvb2wgc3RyaWN0TW9kZSgpIHsgcmV0dXJuIGN1
cnJlbnRTY29wZSgpLT5zdHJpY3RNb2RlKCk7IH0KKyAgICBib29sIGlzVmFsaWRTdHJpY3RNb2Rl
KCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPmlzVmFsaWRTdHJpY3RNb2RlKCk7IH0KKyAgICBi
b29sIGRlY2xhcmVQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciogaWRlbnQpIHsgcmV0dXJuIGN1
cnJlbnRTY29wZSgpLT5kZWNsYXJlUGFyYW1ldGVyKGlkZW50KTsgfQorICAgIGJvb2wgYnJlYWtJ
c1ZhbGlkKCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPmJyZWFrSXNWYWxpZCgpOyB9CisgICAg
dm9pZCBwdXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFiZWwpIHsgY3VycmVudFNjb3BlKCkt
PnB1c2hMYWJlbChsYWJlbCk7IH0KKyAgICB2b2lkIHBvcExhYmVsKCkgeyBjdXJyZW50U2NvcGUo
KS0+cG9wTGFiZWwoKTsgfQorICAgIGJvb2wgaGFzTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFi
ZWwpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgpLT5oYXNMYWJlbChsYWJlbCk7IH0KKworICAgIGVu
dW0gU291cmNlRWxlbWVudHNNb2RlIHsgQ2hlY2tGb3JTdHJpY3RNb2RlLCBEb250Q2hlY2tGb3JT
dHJpY3RNb2RlIH07CisgICAgdGVtcGxhdGUgPFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlLCBjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJl
ZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0
aXZlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFy
c2VGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlVmFyRGVjbGFyYXRpb24oVHJlZUJ1aWxk
ZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFy
c2VDb25zdERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7CkBAIC0xOTksMzIgKzIxNSwxMTMgQEAg
cHJpdmF0ZToKICAgICBpbnQgbV9hc3NpZ25tZW50Q291bnQ7CiAgICAgaW50IG1fbm9uTEhTQ291
bnQ7CiAgICAgYm9vbCBtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQ7CisgICAgaW50IG1fc3RhdGVt
ZW50RGVwdGg7CisgICAgaW50IG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudDsKKyAgICBjb25z
dCBJZGVudGlmaWVyKiBtX2xhc3RJZGVudGlmaWVyOworCisgICAgc3RydWN0IERlcHRoTWFuYWdl
ciB7CisgICAgICAgIERlcHRoTWFuYWdlcihpbnQqIGRlcHRoKQorICAgICAgICAgICAgOiBtX29y
aWdpbmFsRGVwdGgoKmRlcHRoKQorICAgICAgICAgICAgLCBtX2RlcHRoKGRlcHRoKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIH5EZXB0aE1hbmFnZXIoKQorICAgICAg
ICB7CisgICAgICAgICAgICAqbV9kZXB0aCA9IG1fb3JpZ2luYWxEZXB0aDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV9vcmlnaW5hbERlcHRoOworICAg
ICAgICBpbnQqIG1fZGVwdGg7CisgICAgfTsKIAogICAgIHN0cnVjdCBTY29wZSB7Ci0gICAgICAg
IFNjb3BlKCkKLSAgICAgICAgICAgIDogbV91c2VzRXZhbChmYWxzZSkKKyAgICAgICAgU2NvcGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIHN0cmljdE1vZGUpCisgICAgICAgICAgICA6
IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQorICAgICAgICAgICAgLCBtX3VzZXNFdmFsKGZhbHNl
KQogICAgICAgICAgICAgLCBtX25lZWRzRnVsbEFjdGl2YXRpb24oZmFsc2UpCiAgICAgICAgICAg
ICAsIG1fYWxsb3dzTmV3RGVjbHModHJ1ZSkKKyAgICAgICAgICAgICwgbV9zdHJpY3RNb2RlKHN0
cmljdE1vZGUpCisgICAgICAgICAgICAsIG1faXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKKyAgICAg
ICAgICAgICwgbV9sb29wRGVwdGgoMCkKKyAgICAgICAgICAgICwgbV9zd2l0Y2hEZXB0aCgwKQor
ICAgICAgICAgICAgLCBtX2xhYmVscygwKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIHZvaWQgZGVjbGFyZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQor
ICAgICAgICB2b2lkIHN0YXJ0U3dpdGNoKCkgeyBtX3N3aXRjaERlcHRoKys7IH0KKyAgICAgICAg
dm9pZCBlbmRTd2l0Y2goKSB7IG1fc3dpdGNoRGVwdGgtLTsgfQorICAgICAgICB2b2lkIHN0YXJ0
TG9vcCgpIHsgbV9sb29wRGVwdGgrKzsgfQorICAgICAgICB2b2lkIGVuZExvb3AoKSB7IEFTU0VS
VChtX2xvb3BEZXB0aCk7IG1fbG9vcERlcHRoLS07IH0KKyAgICAgICAgYm9vbCBpbkxvb3AoKSB7
IHJldHVybiAhIW1fbG9vcERlcHRoOyB9CisgICAgICAgIGJvb2wgYnJlYWtJc1ZhbGlkKCkgeyBy
ZXR1cm4gbV9sb29wRGVwdGggfHwgbV9zd2l0Y2hEZXB0aDsgfQorICAgICAgICB2b2lkIHB1c2hM
YWJlbChjb25zdCBJZGVudGlmaWVyKiBsYWJlbCkKICAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFtX2xhYmVscykKKyAgICAgICAgICAgICAgICBtX2xhYmVscyA9IG5ldyBMYWJlbFN0YWNrOwor
ICAgICAgICAgICAgbV9sYWJlbHMtPmFwcGVuZChsYWJlbC0+aW1wbCgpKTsKKyAgICAgICAgfQor
ICAgICAgICB2b2lkIHBvcExhYmVsKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1f
bGFiZWxzKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2xhYmVscy0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIG1fbGFiZWxzLT5yZW1vdmVMYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBoYXNM
YWJlbChjb25zdCBJZGVudGlmaWVyKiBsYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFtX2xhYmVscykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBm
b3IgKGludCBpID0gbV9sYWJlbHMtPnNpemUoKTsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAg
ICAgIGlmIChtX2xhYmVscy0+YXQoaSAtIDEpID09IGxhYmVsLT5pbXBsKCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc0Z1bmN0aW9uKCkgeyByZXR1cm4g
dHJ1ZTsgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBkZWNsYXJlVmFyaWFibGUoY29uc3QgSWRl
bnRpZmllciogaWRlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgaXNWYWxpZFN0cmlj
dE1vZGUgPSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmIG1f
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzICE9ICppZGVudDsKKyAgICAgICAg
ICAgIG1faXNWYWxpZFN0cmljdE1vZGUgPSBtX2lzVmFsaWRTdHJpY3RNb2RlICYmIGlzVmFsaWRT
dHJpY3RNb2RlOwogICAgICAgICAgICAgbV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnVz
dHJpbmcoKS5pbXBsKCkpOworICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGRlY2xhcmVXcml0ZShjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fc3RyaWN0TW9k
ZSk7CisgICAgICAgICAgICBtX3dyaXR0ZW5WYXJpYWJsZXMuYWRkKGlkZW50LT5pbXBsKCkpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGRlbGV0ZVByb3BlcnR5KGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9kZWNsYXJlZFZh
cmlhYmxlcy5jb250YWlucyhpZGVudC0+aW1wbCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBtX2RlbGV0ZWRWYXJpYWJsZXMuYWRkKGlkZW50LT5pbXBsKCkp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHZvaWQgcHJldmVudE5ld0RlY2xzKCkgeyBtX2FsbG93c05ld0RlY2xzID0gZmFsc2U7IH0KICAg
ICAgICAgYm9vbCBhbGxvd3NOZXdEZWNscygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzTmV3RGVj
bHM7IH0KIAorICAgICAgICBib29sIGRlY2xhcmVQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciog
aWRlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBt
X2RlY2xhcmVkVmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSkuc2Vjb25kICYm
IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCAhPSAqaWRlbnQgJiYgbV9nbG9iYWxE
YXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgIT0gKmlkZW50OworICAgICAgICAgICAgbV9p
c1ZhbGlkU3RyaWN0TW9kZSA9IG1faXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1v
ZGU7CisgICAgICAgICAgICByZXR1cm4gaXNWYWxpZFN0cmljdE1vZGU7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IGJvb2wgaXNFdmFsKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3VzZXNFdmFsIHw9IGlzRXZh
bDsKICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnVzdHJpbmcoKS5pbXBs
KCkpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIG5lZWRzRnVsbEFjdGl2YXRp
b24oKSB7IG1fbmVlZHNGdWxsQWN0aXZhdGlvbiA9IHRydWU7IH0KKyAgICAgICAgdm9pZCBzZXRO
ZWVkc0Z1bGxBY3RpdmF0aW9uKCkgeyBtX25lZWRzRnVsbEFjdGl2YXRpb24gPSB0cnVlOyB9CiAg
ICAgICAgIAotICAgICAgICB2b2lkIGNvbGxlY3RGcmVlVmFyaWFibGVzKFNjb3BlKiBuZXN0ZWRT
Y29wZSwgYm9vbCBzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcykKKyAgICAgICAgYm9vbCBjb2xs
ZWN0RnJlZVZhcmlhYmxlcyhTY29wZSogbmVzdGVkU2NvcGUsIGJvb2wgc2hvdWxkVHJhY2tDbG9z
ZWRWYXJpYWJsZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV91
c2VzRXZhbCkKICAgICAgICAgICAgICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKQEAgLTIzNiw2ICsz
MzMsNDUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9zZWRW
YXJpYWJsZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVzLmFkZCgqcHRy
KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV93cml0dGVu
VmFyaWFibGVzLnNpemUoKSkgeworICAgICAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJh
dG9yIGVuZCA9IG5lc3RlZFNjb3BlLT5tX3dyaXR0ZW5WYXJpYWJsZXMuZW5kKCk7CisgICAgICAg
ICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+
bV93cml0dGVuVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlu
cygqcHRyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgICAgICBtX3dyaXR0ZW5WYXJpYWJsZXMuYWRkKCpwdHIpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV9kZWxldGVkVmFy
aWFibGVzLnNpemUoKSkgeworICAgICAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9y
IGVuZCA9IG5lc3RlZFNjb3BlLT5tX2RlbGV0ZWRWYXJpYWJsZXMuZW5kKCk7CisgICAgICAgICAg
ICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+bV9k
ZWxldGVkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucygq
cHRyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG1fZGVs
ZXRlZFZhcmlhYmxlcy5hZGQoKnB0cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGdl
dFVuY2FwdHVyZWRXcml0dGVuVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIHdyaXR0ZW5WYXJpYWJs
ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9
IG1fd3JpdHRlblZhcmlhYmxlcy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoSWRlbnRpZmllclNl
dDo6aXRlcmF0b3IgcHRyID0gbV93cml0dGVuVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7
ICsrcHRyKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRh
aW5zKCpwdHIpKQorICAgICAgICAgICAgICAgICAgICB3cml0dGVuVmFyaWFibGVzLmFkZCgqcHRy
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgZ2V0RGVsZXRlZFZh
cmlhYmxlcyhJZGVudGlmaWVyU2V0JiBkZWxldGVkVmFyaWFibGVzKQorICAgICAgICB7CisgICAg
ICAgICAgICBJZGVudGlmaWVyU2V0OjppdGVyYXRvciBlbmQgPSBtX2RlbGV0ZWRWYXJpYWJsZXMu
ZW5kKCk7CisgICAgICAgICAgICBmb3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG1f
ZGVsZXRlZFZhcmlhYmxlcy5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgeworICAgICAgICAg
ICAgICAgIGlmIChtX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWxl
dGVkVmFyaWFibGVzLnN3YXAobV9kZWxldGVkVmFyaWFibGVzKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBnZXRDYXB0dXJlZFZhcmlhYmxlcyhJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcykKQEAgLTI1MCwxMyArMzg2LDI2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgY2FwdHVyZWRWYXJpYWJsZXMuYWRkKCpwdHIpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIHZvaWQgc2V0U3RyaWN0TW9kZSgpIHsgbV9z
dHJpY3RNb2RlID0gdHJ1ZTsgfQorICAgICAgICBib29sIHN0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmljdE1vZGU7IH0KKyAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNWYWxpZFN0cmljdE1vZGU7IH0KKwogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGJvb2wgbV91c2VzRXZhbDsKLSAgICAgICAgYm9vbCBtX25lZWRzRnVsbEFjdGl2YXRpb247
Ci0gICAgICAgIGJvb2wgbV9hbGxvd3NOZXdEZWNsczsKKyAgICAgICAgSlNHbG9iYWxEYXRhKiBt
X2dsb2JhbERhdGE7CisgICAgICAgIGJvb2wgbV91c2VzRXZhbCA6IDE7CisgICAgICAgIGJvb2wg
bV9uZWVkc0Z1bGxBY3RpdmF0aW9uIDogMTsKKyAgICAgICAgYm9vbCBtX2FsbG93c05ld0RlY2xz
IDogMTsKKyAgICAgICAgYm9vbCBtX3N0cmljdE1vZGUgOiAxOworICAgICAgICBib29sIG1faXNW
YWxpZFN0cmljdE1vZGUgOiAxOworICAgICAgICBpbnQgbV9sb29wRGVwdGg7CisgICAgICAgIGlu
dCBtX3N3aXRjaERlcHRoOworICAgICAgICB0eXBlZGVmIFZlY3RvcjxTdHJpbmdJbXBsKiwgMj4g
TGFiZWxTdGFjazsKKyAgICAgICAgTGFiZWxTdGFjayogbV9sYWJlbHM7CiAgICAgICAgIElkZW50
aWZpZXJTZXQgbV9kZWNsYXJlZFZhcmlhYmxlczsKICAgICAgICAgSWRlbnRpZmllclNldCBtX3Vz
ZWRWYXJpYWJsZXM7CiAgICAgICAgIElkZW50aWZpZXJTZXQgbV9jbG9zZWRWYXJpYWJsZXM7Cisg
ICAgICAgIElkZW50aWZpZXJTZXQgbV93cml0dGVuVmFyaWFibGVzOworICAgICAgICBJZGVudGlm
aWVyU2V0IG1fZGVsZXRlZFZhcmlhYmxlczsKICAgICB9OwogICAgIAogICAgIHR5cGVkZWYgVmVj
dG9yPFNjb3BlLCAxMD4gU2NvcGVTdGFjazsKQEAgLTI4MSwxOSArNDMwLDIwIEBAIHByaXZhdGU6
CiAgICAgCiAgICAgU2NvcGVSZWYgcHVzaFNjb3BlKCkKICAgICB7Ci0gICAgICAgIG1fc2NvcGVT
dGFjay5hcHBlbmQoU2NvcGUoKSk7CisgICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGUo
bV9nbG9iYWxEYXRhLCBtX3Njb3BlU3RhY2suaXNFbXB0eSgpID8gZmFsc2UgOiBtX3Njb3BlU3Rh
Y2subGFzdCgpLnN0cmljdE1vZGUoKSkpOwogICAgICAgICByZXR1cm4gY3VycmVudFNjb3BlKCk7
CiAgICAgfQogCi0gICAgdm9pZCBwb3BTY29wZShTY29wZVJlZiBzY29wZSwgYm9vbCBzaG91bGRU
cmFja0Nsb3NlZFZhcmlhYmxlcykKKyAgICBib29sIHBvcFNjb3BlKFNjb3BlUmVmIHNjb3BlLCBi
b29sIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChzY29wZSwgc2NvcGUuaW5kZXgoKSA9PSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMSk7CiAg
ICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpID4gMSk7Ci0gICAgICAgIG1fc2NvcGVT
dGFja1ttX3Njb3BlU3RhY2suc2l6ZSgpIC0gMl0uY29sbGVjdEZyZWVWYXJpYWJsZXMoJm1fc2Nv
cGVTdGFjay5sYXN0KCksIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKTsKKyAgICAgICAgYm9v
bCByZXN1bHQgPSBtX3Njb3BlU3RhY2tbbV9zY29wZVN0YWNrLnNpemUoKSAtIDJdLmNvbGxlY3RG
cmVlVmFyaWFibGVzKCZtX3Njb3BlU3RhY2subGFzdCgpLCBzaG91bGRUcmFja0Nsb3NlZFZhcmlh
Ymxlcyk7CiAgICAgICAgIG1fc2NvcGVTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHZvaWQgZGVjbGFyZVZhcmlhYmxlKGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50KQorICAgIGJvb2wgZGVjbGFyZVZhcmlhYmxlKGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50KQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXpl
KCkgLSAxOwogICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOwpAQCAtMzAx
LDE5ICs0NTEsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgIEFT
U0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9zY29w
ZVN0YWNrW2ldLmRlY2xhcmVWYXJpYWJsZShpZGVudCk7CisgICAgICAgIHJldHVybiBtX3Njb3Bl
U3RhY2tbaV0uZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBk
ZWNsYXJlV3JpdGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCisgICAgeworICAgICAgICBpZiAo
IW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkKKyAgICAgICAgICAgIG1fc2NvcGVTdGFjay5sYXN0
KCkuZGVjbGFyZVdyaXRlKGlkZW50KTsKICAgICB9CiAKKyAgICBib29sIGRlbGV0ZVByb3BlcnR5
KGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFtX3N5bnRheEFs
cmVhZHlWYWxpZGF0ZWQpCisgICAgICAgICAgICByZXR1cm4gbV9zY29wZVN0YWNrLmxhc3QoKS5k
ZWxldGVQcm9wZXJ0eShpZGVudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAK
ICAgICBTY29wZVN0YWNrIG1fc2NvcGVTdGFjazsKIH07CiAKLWludCBqc1BhcnNlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBjb25zdCBT
b3VyY2VDb2RlKiBzb3VyY2UpCitpbnQganNQYXJzZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRl
cnMsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBTb3VyY2VDb2RlKiBzb3VyY2UpCiB7Ci0g
ICAgSlNQYXJzZXIgcGFyc2VyKGdsb2JhbERhdGEtPmxleGVyLCBnbG9iYWxEYXRhLCBwYXJhbWV0
ZXJzLCBzb3VyY2UtPnByb3ZpZGVyKCkpOwotICAgIHJldHVybiBwYXJzZXIucGFyc2VQcm9ncmFt
KCk7CisgICAgSlNQYXJzZXIgcGFyc2VyKGV4ZWMtPmdsb2JhbERhdGEoKS5sZXhlciwgJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgcGFyYW1ldGVycywgaW5TdHJpY3RDb250ZXh0LCBzb3VyY2UtPnByb3Zp
ZGVyKCkpOworICAgIHJldHVybiBwYXJzZXIucGFyc2VQcm9ncmFtKGV4ZWMsIGxleGljYWxHbG9i
YWxPYmplY3QpOwogfQogCi1KU1BhcnNlcjo6SlNQYXJzZXIoTGV4ZXIqIGxleGVyLCBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgU291cmNl
UHJvdmlkZXIqIHByb3ZpZGVyKQorSlNQYXJzZXI6OkpTUGFyc2VyKExleGVyKiBsZXhlciwgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIpCiAgICAgOiBtX2xl
eGVyKGxleGVyKQogICAgICwgbV9lbmRBZGRyZXNzKDApCiAgICAgLCBtX2Vycm9yKGZhbHNlKQpA
QCAtMzI1LDI4ICs0ODgsNTQgQEAgSlNQYXJzZXI6OkpTUGFyc2VyKExleGVyKiBsZXhlciwgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBGdW5jdGlvblBhcmFtZXRlcnMqIHAKICAgICAsIG1fYXNz
aWdubWVudENvdW50KDApCiAgICAgLCBtX25vbkxIU0NvdW50KDApCiAgICAgLCBtX3N5bnRheEFs
cmVhZHlWYWxpZGF0ZWQocHJvdmlkZXItPmlzVmFsaWQoKSkKKyAgICAsIG1fc3RhdGVtZW50RGVw
dGgoMCkKKyAgICAsIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCgwKQorICAgICwgbV9sYXN0
SWRlbnRpZmllcigwKQogewogICAgIG1fZW5kQWRkcmVzcyA9IHd0ZlRocmVhZERhdGEoKS5hcHBy
b3hpbWF0ZWRTdGFja1N0YXJ0KCkgLSBrTWF4UGFyc2VyU3RhY2tVc2FnZTsKLSAgICBuZXh0KCk7
Ci0gICAgbV9sZXhlci0+c2V0TGFzdExpbmVOdW1iZXIodG9rZW5MaW5lKCkpOwogICAgIFNjb3Bl
UmVmIHNjb3BlID0gcHVzaFNjb3BlKCk7CisgICAgaWYgKGluU3RyaWN0Q29udGV4dCkKKyAgICAg
ICAgc2NvcGUtPnNldFN0cmljdE1vZGUoKTsKICAgICBpZiAocGFyYW1ldGVycykgewogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgpOyBpKyspCi0gICAg
ICAgICAgICBzY29wZS0+ZGVjbGFyZVZhcmlhYmxlKCZwYXJhbWV0ZXJzLT5hdChpKSk7CisgICAg
ICAgICAgICBzY29wZS0+ZGVjbGFyZVBhcmFtZXRlcigmcGFyYW1ldGVycy0+YXQoaSkpOwogICAg
IH0KKyAgICBuZXh0KCk7CisgICAgbV9sZXhlci0+c2V0TGFzdExpbmVOdW1iZXIodG9rZW5MaW5l
KCkpOwogfQogCi1ib29sIEpTUGFyc2VyOjpwYXJzZVByb2dyYW0oKQorYm9vbCBKU1BhcnNlcjo6
cGFyc2VQcm9ncmFtKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QpCiB7CiAgICAgQVNUQnVpbGRlciBjb250ZXh0KG1fZ2xvYmFsRGF0YSwgbV9sZXhl
cik7CisgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nKCkpCisgICAgICAgIG1fc3RhdGVtZW50
RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1cnJlbnRTY29wZSgpOwotICAgIFNvdXJj
ZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8QVNUQnVpbGRl
cj4oY29udGV4dCk7CisgICAgU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VT
b3VyY2VFbGVtZW50czxDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgIGlmICghc291
cmNlRWxlbWVudHMgfHwgIWNvbnN1bWUoRU9GVE9LKSkKICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQpIHsKKyAgICAgICAgSWRlbnRpZmllclNl
dCB3cml0dGVuVmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0VW5jYXB0dXJlZFdyaXR0ZW5W
YXJpYWJsZXMod3JpdHRlblZhcmlhYmxlcyk7CisgICAgICAgIElkZW50aWZpZXJTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IHdyaXR0ZW5WYXJpYWJsZXMuZW5kKCk7CisgICAgICAgIGZvciAoSWRl
bnRpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgcHRyID0gd3JpdHRlblZhcmlhYmxlcy5iZWdpbigp
OyBwdHIgIT0gZW5kOyArK3B0cikgeworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBpZiAoIWxleGljYWxHbG9iYWxPYmplY3Qt
PmdldFByb3BlcnR5U2xvdChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICpwdHIpLCBzbG90KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBJZGVudGlmaWVy
U2V0IGRlbGV0ZWRWYXJpYWJsZXM7CisgICAgICAgIGlmICghc2NvcGUtPmdldERlbGV0ZWRWYXJp
YWJsZXMoZGVsZXRlZFZhcmlhYmxlcykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgZW5kID0gZGVsZXRlZFZhcmlhYmxlcy5lbmQoKTsKKyAgICAgICAgU3ltYm9sVGFibGUmIGds
b2JhbEVudlJlY29yZCA9IGxleGljYWxHbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCk7CisgICAg
ICAgIGZvciAoSWRlbnRpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgcHRyID0gZGVsZXRlZFZhcmlh
Ymxlcy5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgeworICAgICAgICAgICAgaWYgKCFnbG9i
YWxFbnZSZWNvcmQuZ2V0KCpwdHIpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgfQogICAgIElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJs
ZXM7CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFyaWFibGVzKGNhcHR1cmVkVmFyaWFibGVzKTsK
LSAgICBtX2dsb2JhbERhdGEtPnBhcnNlci0+ZGlkRmluaXNoUGFyc2luZyhzb3VyY2VFbGVtZW50
cywgY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVjbGFyYXRpb25zKCks
IGNvbnRleHQuZmVhdHVyZXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbGFzdExpbmUsIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFi
bGVzKTsKKyAgICBtX2dsb2JhbERhdGEtPnBhcnNlci0+ZGlkRmluaXNoUGFyc2luZyhzb3VyY2VF
bGVtZW50cywgY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVjbGFyYXRp
b25zKCksIGNvbnRleHQuZmVhdHVyZXMoKSB8IChzY29wZS0+c3RyaWN0TW9kZSgpID8gU3RyaWN0
TW9kZUZlYXR1cmUgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2xhc3RMaW5lLCBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxl
cyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0zNTUsMTEgKzU0NCwzMCBAQCBib29sIEpT
UGFyc2VyOjphbGxvd0F1dG9tYXRpY1NlbWljb2xvbigpCiAgICAgcmV0dXJuIG1hdGNoKENMT1NF
QlJBQ0UpIHx8IG1hdGNoKEVPRlRPSykgfHwgbV9sZXhlci0+cHJldlRlcm1pbmF0b3IoKTsKIH0K
IAotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgSlNQYXJz
ZXI6OnBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8
SlNQYXJzZXI6OlNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVNvdXJjZUVsZW1lbnRzIEpTUGFyc2VyOjpwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVy
JiBjb250ZXh0KQogewogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzb3VyY2VFbGVtZW50cyA9IGNv
bnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKLSAgICB3aGlsZSAoVHJlZVN0YXRlbWVudCBz
dGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KSkKKyAgICBib29sIHNlZW5Ob25EaXJl
Y3RpdmUgPSBmYWxzZTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBkaXJlY3RpdmUgPSAwOworICAg
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2luZm8uc3RhcnRPZmZzZXQ7CisgICAg
Ym9vbCBoYXNTZXRTdHJpY3QgPSBmYWxzZTsKKyAgICB3aGlsZSAoVHJlZVN0YXRlbWVudCBzdGF0
ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCBkaXJlY3RpdmUpKSB7CisgICAgICAgIGlm
IChtb2RlID09IENoZWNrRm9yU3RyaWN0TW9kZSAmJiAhc2Vlbk5vbkRpcmVjdGl2ZSkgeworICAg
ICAgICAgICAgaWYgKGRpcmVjdGl2ZSkgeworICAgICAgICAgICAgICAgIGlmICghaGFzU2V0U3Ry
aWN0ICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+dXNlU3RyaWN0SWRlbnRpZmllciA9
PSAqZGlyZWN0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgIHNldFN0cmljdE1vZGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaGFzU2V0U3RyaWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgZmFpbElmRmFsc2UoaXNWYWxpZFN0cmljdE1vZGUoKSk7CisgICAgICAgICAgICAgICAgICAg
IG1fbGV4ZXItPnNldE9mZnNldChzdGFydE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtX2Vycm9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgc2Vlbk5vbkRpcmVjdGl2ZSA9IHRydWU7CisgICAgICAgIH0K
ICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIHN0YXRlbWVu
dCk7CisgICAgfQogCiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIGZhaWwoKTsKQEAgLTM5OSw3
ICs2MDcsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpT
UGFyc2VyOjpwYXJzZURvV2hpbGVTdGF0ZW1lbnQoVHJlZUIKICAgICBBU1NFUlQobWF0Y2goRE8p
KTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwotICAgIFRy
ZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgY29u
c3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICBzdGFydExvb3AoKTsKKyAgICBUcmVlU3Rh
dGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CisgICAg
ZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgaW50IGVuZExpbmUg
PSB0b2tlbkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWlsKFdISUxFKTsKQEAgLTQyMiw3ICs2MzMs
MTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2Vy
OjpwYXJzZVdoaWxlU3RhdGVtZW50KFRyZWVCdWkKICAgICBmYWlsSWZGYWxzZShleHByKTsKICAg
ICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJF
Tik7Ci0gICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0
KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIHN0YXJ0TG9vcCgpOwor
ICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51
c2VkKTsKKyAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVXaGlsZVN0YXRlbWVudChleHByLCBzdGF0ZW1lbnQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CiB9CkBAIC00NDEsNyArNjU1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VWYXJEZWNsYXJhdGlvbkxp
c3QoVHIKICAgICAgICAgbGFzdElkZW50ID0gbmFtZTsKICAgICAgICAgbmV4dCgpOwogICAgICAg
ICBib29sIGhhc0luaXRpYWxpemVyID0gbWF0Y2goRVFVQUwpOwotICAgICAgICBkZWNsYXJlVmFy
aWFibGUobmFtZSk7CisgICAgICAgIGZhaWxJZlN0cmljdEZhbHNlKGRlY2xhcmVWYXJpYWJsZShu
YW1lKSk7CiAgICAgICAgIGNvbnRleHQuYWRkVmFyKG5hbWUsIChoYXNJbml0aWFsaXplciB8fCAo
IW1fYWxsb3dzSW4gJiYgbWF0Y2goSU5UT0tFTikpKSA/IERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJ
bml0aWFsaXplciA6IDApOwogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIpIHsKICAgICAgICAg
ICAgIGludCB2YXJEaXZvdCA9IHRva2VuU3RhcnQoKSArIDE7CkBAIC00NjUsNiArNjc5LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFy
c2VWYXJEZWNsYXJhdGlvbkxpc3QoVHIKIAogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlQ29uc3REZWNsTGlzdCBKU1BhcnNlcjo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdChUcmVl
QnVpbGRlciYgY29udGV4dCkKIHsKKyAgICBmYWlsSWZUcnVlKHN0cmljdE1vZGUoKSk7CiAgICAg
VHJlZUNvbnN0RGVjbExpc3QgY29uc3REZWNscyA9IDA7CiAgICAgVHJlZUNvbnN0RGVjbExpc3Qg
dGFpbCA9IDA7CiAgICAgZG8gewpAQCAtNTMyLDcgKzc0NywxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlRm9yU3RhdGVtZW50KFRy
ZWVCdWlsZAogICAgICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgICAgICBjb25z
dW1lT3JGYWlsKENMT1NFUEFSRU4pOwogCi0gICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50
ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHVu
dXNlZCA9IDA7CisgICAgICAgIHN0YXJ0TG9vcCgpOworICAgICAgICBUcmVlU3RhdGVtZW50IHN0
YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CisgICAgICAgIGVuZExv
b3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKIAogICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGb3JJbkxvb3AoZm9ySW5UYXJnZXQsIGZvckluSW5pdGlhbGl6ZXIsIGV4
cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgaW5Mb2NhdGlvbiwgZXhwckVuZCwgaW5pdFN0YXJ0
LCBpbml0RW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwpAQCAtNTY2LDcgKzc4NCwxMCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlRm9y
U3RhdGVtZW50KFRyZWVCdWlsZAogICAgICAgICB9CiAgICAgICAgIGludCBlbmRMaW5lID0gdG9r
ZW5MaW5lKCk7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7Ci0gICAgICAgIFRy
ZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CisgICAgICAgIHN0YXJ0TG9vcCgpOworICAg
ICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVu
dXNlZCk7CisgICAgICAgIGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50
KTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcChkZWNscywgY29uZGl0aW9u
LCBpbmNyZW1lbnQsIHN0YXRlbWVudCwgaGFzRGVjbGFyYXRpb24sIHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CiAgICAgfQpAQCAtNTc5LDcgKzgwMCwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlRm9yU3RhdGVtZW50KFRyZWVCdWlsZAog
ICAgIGludCBleHByRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgaW50IGVuZExpbmUgPSB0b2tl
bkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwotICAgIFRyZWVTdGF0ZW1l
bnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgY29uc3QgSWRlbnRp
ZmllciogdW51c2VkID0gMDsKKyAgICBzdGFydExvb3AoKTsKKyAgICBUcmVlU3RhdGVtZW50IHN0
YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CisgICAgZW5kTG9vcCgp
OwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgCiAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRm9ySW5Mb29wKGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xz
RW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwpAQCAtNTk0LDEwICs4MTgsMTMgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJz
ZUJyZWFrU3RhdGVtZW50KFRyZWVCdWkKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwog
ICAgIG5leHQoKTsKIAotICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpCisgICAgaWYgKGF1dG9TZW1p
Q29sb24oKSkgeworICAgICAgICBmYWlsSWZTdHJpY3RGYWxzZShicmVha0lzVmFsaWQoKSk7CiAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KHN0YXJ0Q29sLCBlbmRD
b2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgfQogICAgIG1hdGNoT3JGYWlsKElERU5UKTsK
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAg
IGZhaWxJZlN0cmljdEZhbHNlKGhhc0xhYmVsKGlkZW50KSk7CiAgICAgZW5kQ29sID0gdG9rZW5F
bmQoKTsKICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwpAQCAtNjE0LDEw
ICs4NDEsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpT
UGFyc2VyOjpwYXJzZUNvbnRpbnVlU3RhdGVtZW50KFRyZWUKICAgICBpbnQgZW5kTGluZSA9IHRv
a2VuTGluZSgpOwogICAgIG5leHQoKTsKIAotICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpCisgICAg
aWYgKGF1dG9TZW1pQ29sb24oKSkgeworICAgICAgICBmYWlsSWZTdHJpY3RGYWxzZShicmVha0lz
VmFsaWQoKSk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50
KHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgfQogICAgIG1hdGNo
T3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9k
YXRhLmlkZW50OworICAgIGZhaWxJZlN0cmljdEZhbHNlKGhhc0xhYmVsKGlkZW50KSk7CiAgICAg
ZW5kQ29sID0gdG9rZW5FbmQoKTsKICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4
dCgpOwpAQCAtNjI4LDYgKzg1OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VDb250aW51ZVN0YXRlbWVudChUcmVlCiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlUmV0dXJu
U3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChSRVRV
Uk4pKTsKKyAgICBmYWlsSWZTdHJpY3RGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNGdW5jdGlvbigp
KTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZExpbmUgPSBz
dGFydExpbmU7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwpAQCAtNjY4LDcgKzg5OSw4
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6
cGFyc2VUaHJvd1N0YXRlbWVudChUcmVlQnVpCiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlV2l0aFN0YXRlbWVudChUcmVlQnVpbGRlciYg
Y29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0lUSCkpOwotICAgIGN1cnJlbnRTY29wZSgp
LT5uZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CisgICAgZmFpbElmVHJ1ZShzdHJpY3RNb2RlKCkpOwor
ICAgIGN1cnJlbnRTY29wZSgpLT5zZXROZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CiAgICAgaW50IHN0
YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBjb25zdW1lT3JGYWlsKE9Q
RU5QQVJFTik7CkBAIC02NzksOCArOTExLDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZVdpdGhTdGF0ZW1lbnQoVHJlZUJ1aWwKIAog
ICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBB
UkVOKTsKLSAgICAKLSAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50
KGNvbnRleHQpOworICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CisgICAgVHJlZVN0
YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAg
IGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRo
U3RhdGVtZW50KGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKQEAgLTY5Nyw3ICs5MjksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3dpdGNoU3RhdGVtZW50KFRyZWVCdQogICAgIGludCBl
bmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAg
ICBjb25zdW1lT3JGYWlsKE9QRU5CUkFDRSk7Ci0KKyAgICBzdGFydFN3aXRjaCgpOwogICAgIFRy
ZWVDbGF1c2VMaXN0IGZpcnN0Q2xhdXNlcyA9IHBhcnNlU3dpdGNoQ2xhdXNlcyhjb250ZXh0KTsK
ICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOwogCkBAIC03MDYsNiArOTM4LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZVN3aXRjaFN0
YXRlbWVudChUcmVlQnUKIAogICAgIFRyZWVDbGF1c2VMaXN0IHNlY29uZENsYXVzZXMgPSBwYXJz
ZVN3aXRjaENsYXVzZXMoY29udGV4dCk7CiAgICAgZmFpbElmVHJ1ZShtX2Vycm9yKTsKKyAgICBl
bmRTd2l0Y2goKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UpOwogCiAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlU3dpdGNoU3RhdGVtZW50KGV4cHIsIGZpcnN0Q2xhdXNlcywgZGVmYXVs
dENsYXVzZSwgc2Vjb25kQ2xhdXNlcywgc3RhcnRMaW5lLCBlbmRMaW5lKTsKQEAgLTcyMCw3ICs5
NTMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGF1c2VMaXN0IEpTUGFy
c2VyOjpwYXJzZVN3aXRjaENsYXVzZXMoVHJlZUJ1aQogICAgIFRyZWVFeHByZXNzaW9uIGNvbmRp
dGlvbiA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShjb25kaXRp
b24pOwogICAgIGNvbnN1bWVPckZhaWwoQ09MT04pOwotICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
dGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKKyAgICBUcmVlU291cmNl
RWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3Ry
aWN0TW9kZT4oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50cyk7CiAgICAgVHJl
ZUNsYXVzZSBjbGF1c2UgPSBjb250ZXh0LmNyZWF0ZUNsYXVzZShjb25kaXRpb24sIHN0YXRlbWVu
dHMpOwogICAgIFRyZWVDbGF1c2VMaXN0IGNsYXVzZUxpc3QgPSBjb250ZXh0LmNyZWF0ZUNsYXVz
ZUxpc3QoY2xhdXNlKTsKQEAgLTczMSw3ICs5NjQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVDbGF1c2VMaXN0IEpTUGFyc2VyOjpwYXJzZVN3aXRjaENsYXVzZXMoVHJlZUJ1
aQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlvbik7CiAgICAgICAgIGNvbnN1bWVP
ckZhaWwoQ09MT04pOwotICAgICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBh
cnNlU291cmNlRWxlbWVudHMoY29udGV4dCk7CisgICAgICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
dGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihj
b250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50cyk7CiAgICAgICAgIGNsYXVz
ZSA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3RhdGVtZW50cyk7CiAgICAgICAg
IHRhaWwgPSBjb250ZXh0LmNyZWF0ZUNsYXVzZUxpc3QodGFpbCwgY2xhdXNlKTsKQEAgLTc0NSw3
ICs5NzgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGF1c2UgSlNQYXJz
ZXI6OnBhcnNlU3dpdGNoRGVmYXVsdENsYXVzZShUcmVlQgogICAgICAgICByZXR1cm4gMDsKICAg
ICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChDT0xPTik7Ci0gICAgVHJlZVNvdXJjZUVsZW1l
bnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOworICAgIFRyZWVT
b3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tG
b3JTdHJpY3RNb2RlPihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnRzKTsKICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVDbGF1c2UoMCwgc3RhdGVtZW50cyk7CiB9CkBAIC03Njcs
MTQgKzEwMDAsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IEpTUGFyc2VyOjpwYXJzZVRyeVN0YXRlbWVudChUcmVlQnVpbGQKICAgICBpbnQgbGFzdExpbmUg
PSBtX2xhc3RMaW5lOwogCiAgICAgaWYgKG1hdGNoKENBVENIKSkgewotICAgICAgICBjdXJyZW50
U2NvcGUoKS0+bmVlZHNGdWxsQWN0aXZhdGlvbigpOworICAgICAgICBjdXJyZW50U2NvcGUoKS0+
c2V0TmVlZHNGdWxsQWN0aXZhdGlvbigpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGNvbnN1
bWVPckZhaWwoT1BFTlBBUkVOKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAg
ICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7CiAgICAgICAg
IFNjb3BlUmVmIGNhdGNoU2NvcGUgPSBwdXNoU2NvcGUoKTsKLSAgICAgICAgY2F0Y2hTY29wZS0+
ZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgZmFpbElmU3RyaWN0RmFsc2UoY2F0Y2hT
Y29wZS0+ZGVjbGFyZVZhcmlhYmxlKGlkZW50KSk7CiAgICAgICAgIGNhdGNoU2NvcGUtPnByZXZl
bnROZXdEZWNscygpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogICAgICAg
ICBtYXRjaE9yRmFpbChPUEVOQlJBQ0UpOwpAQCAtNzgyLDcgKzEwMTUsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlVHJ5U3RhdGVt
ZW50KFRyZWVCdWlsZAogICAgICAgICBjYXRjaEJsb2NrID0gcGFyc2VCbG9ja1N0YXRlbWVudChj
b250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoY2F0Y2hCbG9jayk7CiAgICAgICAgIGNhdGNo
SGFzRXZhbCA9IGluaXRpYWxFdmFsQ291bnQgIT0gY29udGV4dC5ldmFsQ291bnQoKTsKLSAgICAg
ICAgcG9wU2NvcGUoY2F0Y2hTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5m
byk7CisgICAgICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGNhdGNoU2NvcGUsIFRyZWVCdWlsZGVy
OjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pKTsKICAgICB9CiAKICAgICBpZiAobWF0Y2goRklOQUxM
WSkpIHsKQEAgLTgxNiwxNSArMTA0OSwxOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlQmxvY2tTdGF0ZW1lbnQoVHJlZUJ1aQogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50
KDAsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKICAgICB9Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1
YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOworICAgIFRyZWVTb3VyY2VFbGVt
ZW50cyBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2Rl
Pihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShzdWJ0cmVlKTsKICAgICBtYXRjaE9yRmFpbChD
TE9TRUJSQUNFKTsKICAgICBuZXh0KCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tT
dGF0ZW1lbnQoc3VidHJlZSwgc3RhcnQsIG1fbGFzdExpbmUpOwogfQogCi10ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KFRy
ZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IEpTUGFyc2VyOjpwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCwgY29u
c3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSkKIHsKKyAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50
RGVwdGgoJm1fc3RhdGVtZW50RGVwdGgpOworICAgIG1fc3RhdGVtZW50RGVwdGgrKzsKKyAgICBk
aXJlY3RpdmUgPSAwOworICAgIGludCBub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50ID0gMDsKICAg
ICBmYWlsSWZTdGFja092ZXJmbG93KCk7CiAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewog
ICAgIGNhc2UgT1BFTkJSQUNFOgpAQCAtODM0LDYgKzEwNzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KFRyZWVC
dWlsZGVyJgogICAgIGNhc2UgQ09OU1RUT0tFTjoKICAgICAgICAgcmV0dXJuIHBhcnNlQ29uc3RE
ZWNsYXJhdGlvbihjb250ZXh0KTsKICAgICBjYXNlIEZVTkNUSU9OOgorICAgICAgICBmYWlsSWZT
dHJpY3RGYWxzZShtX3N0YXRlbWVudERlcHRoID09IDEpOwogICAgICAgICByZXR1cm4gcGFyc2VG
dW5jdGlvbkRlY2xhcmF0aW9uKGNvbnRleHQpOwogICAgIGNhc2UgU0VNSUNPTE9OOgogICAgICAg
ICBuZXh0KCk7CkBAIC04NzAsOCArMTEwOCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJgog
ICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIElERU5UOgogICAgICAgICByZXR1cm4gcGFyc2VF
eHByZXNzaW9uT3JMYWJlbFN0YXRlbWVudChjb250ZXh0KTsKKyAgICBjYXNlIFNUUklORzoKKyAg
ICAgICAgZGlyZWN0aXZlID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgIG5vblRyaXZp
YWxFeHByZXNzaW9uQ291bnQgPSBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQ7CiAgICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudChjb250ZXh0KTsK
KyAgICAgICAgVHJlZVN0YXRlbWVudCBleHByU3RhdGVtZW50ID0gcGFyc2VFeHByZXNzaW9uU3Rh
dGVtZW50KGNvbnRleHQpOworICAgICAgICBpZiAoZGlyZWN0aXZlICYmIG5vblRyaXZpYWxFeHBy
ZXNzaW9uQ291bnQgIT0gbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50KQorICAgICAgICAgICAg
ZGlyZWN0aXZlID0gMDsKKyAgICAgICAgcmV0dXJuIGV4cHJTdGF0ZW1lbnQ7CiAgICAgfQogfQog
CkBAIC04NzksNyArMTEyMyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZv
cm1hbFBhcmFtZXRlckxpc3QgSlNQYXJzZXI6OnBhcnNlRm9ybWFsUGFyYW1lCiB7CiAgICAgbWF0
Y2hPckZhaWwoSURFTlQpOwogICAgIHVzZXNBcmd1bWVudHMgPSBtX2dsb2JhbERhdGEtPnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqbV90b2tlbi5tX2RhdGEuaWRlbnQ7Ci0gICAgZGVjbGFy
ZVZhcmlhYmxlKG1fdG9rZW4ubV9kYXRhLmlkZW50KTsKKyAgICBmYWlsSWZTdHJpY3RGYWxzZShk
ZWNsYXJlUGFyYW1ldGVyKG1fdG9rZW4ubV9kYXRhLmlkZW50KSk7CiAgICAgVHJlZUZvcm1hbFBh
cmFtZXRlckxpc3QgbGlzdCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgqbV90
b2tlbi5tX2RhdGEuaWRlbnQpOwogICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHRhaWwgPSBs
aXN0OwogICAgIG5leHQoKTsKQEAgLTg4Nyw3ICsxMTMxLDggQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBKU1BhcnNlcjo6cGFyc2VGb3JtYWxQ
YXJhbWUKICAgICAgICAgbmV4dCgpOwogICAgICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7Ci0gICAg
ICAgIGRlY2xhcmVWYXJpYWJsZShpZGVudCk7CisgICAgICAgIHVzZXNBcmd1bWVudHMgfD0gbV9n
bG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKm1fdG9rZW4ubV9kYXRhLmlk
ZW50OworICAgICAgICBmYWlsSWZTdHJpY3RGYWxzZShkZWNsYXJlUGFyYW1ldGVyKGlkZW50KSk7
CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgdXNlc0FyZ3VtZW50cyA9IHVzZXNBcmd1bWVudHMg
fHwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50OwogICAg
ICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHRhaWwsICppZGVu
dCk7CkBAIC04OTgsMTAgKzExNDMsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWUKIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBKU1BhcnNlcjo6cGFyc2VG
dW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgaWYgKG1hdGNoKENMT1NF
QlJBQ0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0cmljdE1vZGUoKSk7Cisg
ICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVudERlcHRoKCZtX3N0YXRlbWVudERlcHRoKTsKKyAgICBt
X3N0YXRlbWVudERlcHRoID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25C
b2R5QnVpbGRlciBib2R5QnVpbGRlcihtX2dsb2JhbERhdGEsIG1fbGV4ZXIpOwotICAgIGZhaWxJ
ZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoYm9keUJ1aWxkZXIpKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoKTsKKyAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVs
ZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oYm9keUJ1aWxkZXIpKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RyaWN0TW9kZSgpKTsKIH0KIAogdGVtcGxhdGUgPEpT
UGFyc2VyOjpGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5D
b250YWluaW5nU2NvcGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIEpTUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIG5hbWUs
IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzLCBUcmVlRnVuY3Rpb25Cb2R5JiBi
b2R5LCBpbnQmIG9wZW5CcmFjZVBvcywgaW50JiBjbG9zZUJyYWNlUG9zLCBpbnQmIGJvZHlTdGFy
dExpbmUpCkBAIC05MTEsNyArMTE1OCw3IEBAIHRlbXBsYXRlIDxKU1BhcnNlcjo6RnVuY3Rpb25S
ZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1NjCiAgICAg
ICAgIG5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgpOwogICAgICAg
ICBpZiAoIW5hbWVJc0luQ29udGFpbmluZ1Njb3BlKQotICAgICAgICAgICAgZnVuY3Rpb25TY29w
ZS0+ZGVjbGFyZVZhcmlhYmxlKG5hbWUpOworICAgICAgICAgICAgZmFpbElmU3RyaWN0RmFsc2Uo
ZnVuY3Rpb25TY29wZS0+ZGVjbGFyZVZhcmlhYmxlKG5hbWUpKTsKICAgICB9IGVsc2UgaWYgKHJl
cXVpcmVtZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTkzMSw3ICsxMTc4LDExIEBAIHRlbXBs
YXRlIDxKU1BhcnNlcjo6RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5h
bWVJc0luQ29udGFpbmluZ1NjCiAgICAgZmFpbElmRmFsc2UoYm9keSk7CiAgICAgaWYgKHVzZXNB
cmd1bWVudHMpCiAgICAgICAgIGNvbnRleHQuc2V0VXNlc0FyZ3VtZW50cyhib2R5KTsKLSAgICBw
b3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KTsKKyAgICBpZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIG5hbWUpIHsKKyAgICAg
ICAgZmFpbElmVHJ1ZShtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAq
bmFtZSk7CisgICAgICAgIGZhaWxJZlRydWUobV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5l
dmFsID09ICpuYW1lKTsKKyAgICB9CisgICAgZmFpbElmRmFsc2UocG9wU2NvcGUoZnVuY3Rpb25T
Y29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwogICAgIG1hdGNoT3JG
YWlsKENMT1NFQlJBQ0UpOwogICAgIGNsb3NlQnJhY2VQb3MgPSBtX3Rva2VuLm1fZGF0YS5pbnRW
YWx1ZTsKICAgICBuZXh0KCk7CkBAIC05NTAsNyArMTIwMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0
aW9uKFRyCiAgICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwogICAgIGZhaWxJZkZhbHNlKChwYXJz
ZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5lZWRzTmFtZSwgdHJ1ZT4oY29udGV4dCwgbmFtZSwgcGFy
YW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5l
KSkpOwogICAgIGZhaWxJZkZhbHNlKG5hbWUpOwotICAgIGRlY2xhcmVWYXJpYWJsZShuYW1lKTsK
KyAgICBmYWlsSWZTdHJpY3RGYWxzZShkZWNsYXJlVmFyaWFibGUobmFtZSkpOwogICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KG5hbWUsIGJvZHksIHBhcmFtZXRlcnMs
IG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7
CiB9CiAKQEAgLTk3Myw3ICsxMjI0LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0YXRlCiAgICAg
ZmFpbElmRmFsc2UoY3VycmVudFRva2VuICsgMSA9PSBtX3Rva2VuQ291bnQpOwogICAgIGludCBl
bmQgPSB0b2tlbkVuZCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ09MT04pOwotICAgIFRyZWVTdGF0
ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgY29uc3QgSWRl
bnRpZmllciogdW51c2VkID0gMDsKKyAgICBpZiAoc3RyaWN0TW9kZSgpICYmICFtX3N5bnRheEFs
cmVhZHlWYWxpZGF0ZWQpCisgICAgICAgIHB1c2hMYWJlbChpZGVudCk7CisgICAgVHJlZVN0YXRl
bWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOworICAgIGlm
IChzdHJpY3RNb2RlKCkgJiYgIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkKKyAgICAgICAgcG9w
TGFiZWwoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUxhYmVsU3RhdGVtZW50KGlkZW50LCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQpOwogfQpA
QCAtMTAwMSw3ICsxMjU3LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IEpTUGFyc2VyOjpwYXJzZUlmU3RhdGVtZW50KFRyZWVCdWlsZGUKICAgICBpbnQgZW5k
ID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKIAotICAgIFRy
ZWVTdGF0ZW1lbnQgdHJ1ZUJsb2NrID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgY29u
c3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICBUcmVlU3RhdGVtZW50IHRydWVCbG9jayA9
IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgZmFpbElmRmFsc2UodHJ1ZUJs
b2NrKTsKIAogICAgIGlmICghbWF0Y2goRUxTRSkpCkBAIC0xMDE0LDcgKzEyNzEsOCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlSWZT
dGF0ZW1lbnQoVHJlZUJ1aWxkZQogICAgIGRvIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBp
ZiAoIW1hdGNoKElGKSkgewotICAgICAgICAgICAgVHJlZVN0YXRlbWVudCBibG9jayA9IHBhcnNl
U3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogdW51c2Vk
ID0gMDsKKyAgICAgICAgICAgIFRyZWVTdGF0ZW1lbnQgYmxvY2sgPSBwYXJzZVN0YXRlbWVudChj
b250ZXh0LCB1bnVzZWQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoYmxvY2spOwogICAgICAg
ICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGJsb2NrKTsKICAgICAgICAgICAgIHRyYWlsaW5n
RWxzZSA9IHRydWU7CkBAIC0xMDI5LDggKzEyODcsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZQogICAgICAgICBmYWlsSWZGYWxzZShpbm5lckNvbmRpdGlvbik7CiAgICAgICAgIGludCBpbm5l
ckVuZCA9IHRva2VuTGluZSgpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwot
ICAgICAgICAKLSAgICAgICAgVHJlZVN0YXRlbWVudCBpbm5lclRydWVCbG9jayA9IHBhcnNlU3Rh
dGVtZW50KGNvbnRleHQpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOwor
ICAgICAgICBUcmVlU3RhdGVtZW50IGlubmVyVHJ1ZUJsb2NrID0gcGFyc2VTdGF0ZW1lbnQoY29u
dGV4dCwgdW51c2VkKTsKICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJUcnVlQmxvY2spOyAgICAg
CiAgICAgICAgIGV4cHJTdGFjay5hcHBlbmQoaW5uZXJDb25kaXRpb24pOwogICAgICAgICBwb3NT
dGFjay5hcHBlbmQobWFrZV9wYWlyKGlubmVyU3RhcnQsIGlubmVyRW5kKSk7CkBAIC0xMDcwLDYg
KzEzMjgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpT
UGFyc2VyOjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZQogICAgIGlmICghbWF0Y2goQ09NTUEp
KQogICAgICAgICByZXR1cm4gbm9kZTsKICAgICBuZXh0KCk7CisgICAgbV9ub25Ucml2aWFsRXhw
cmVzc2lvbkNvdW50Kys7CiAgICAgbV9ub25MSFNDb3VudCsrOwogICAgIFRyZWVFeHByZXNzaW9u
IHJpZ2h0ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZG
YWxzZShyaWdodCk7CkBAIC0xMTE1LDExICsxMzc0LDE3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlQXNzaWdubWVudEV4cHJl
c3NpCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgfQor
ICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgaGFkQXNzaWdu
bWVudCA9IHRydWU7CiAgICAgICAgIGNvbnRleHQuYXNzaWdubWVudFN0YWNrQXBwZW5kKGFzc2ln
bm1lbnRTdGFjaywgbGhzLCBzdGFydCwgdG9rZW5TdGFydCgpLCBtX2Fzc2lnbm1lbnRDb3VudCwg
b3ApOwogICAgICAgICBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgbV9hc3NpZ25tZW50
Q291bnQrKzsKICAgICAgICAgbmV4dCgpOworICAgICAgICBpZiAoc3RyaWN0TW9kZSgpICYmIG1f
bGFzdElkZW50aWZpZXIgJiYgY29udGV4dC5pc1Jlc29sdmUobGhzKSkgeworICAgICAgICAgICAg
ZmFpbElmU3RyaWN0VHJ1ZShtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKm1f
bGFzdElkZW50aWZpZXIpOworICAgICAgICAgICAgZGVjbGFyZVdyaXRlKG1fbGFzdElkZW50aWZp
ZXIpOworICAgICAgICAgICAgbV9sYXN0SWRlbnRpZmllciA9IDA7CisgICAgICAgIH0KICAgICAg
ICAgbGhzID0gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZh
aWxJZkZhbHNlKGxocyk7CiAgICAgICAgIGlmIChpbml0aWFsTm9uTEhTQ291bnQgIT0gbV9ub25M
SFNDb3VudCkKQEAgLTExNDQsNiArMTQwOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uCiAg
ICAgZmFpbElmRmFsc2UoY29uZCk7CiAgICAgaWYgKCFtYXRjaChRVUVTVElPTikpCiAgICAgICAg
IHJldHVybiBjb25kOworICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIG1f
bm9uTEhTQ291bnQrKzsKICAgICBuZXh0KCk7CiAgICAgVHJlZUV4cHJlc3Npb24gbGhzID0gcGFy
c2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTExODEsNiArMTQ0Nyw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNl
QmluYXJ5RXhwcmVzc2lvbihUcmVlCiAgICAgICAgIGludCBwcmVjZWRlbmNlID0gaXNCaW5hcnlP
cGVyYXRvcihtX3Rva2VuLm1fdHlwZSk7CiAgICAgICAgIGlmICghcHJlY2VkZW5jZSkKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAg
ICAgICAgbV9ub25MSFNDb3VudCsrOwogICAgICAgICBpbnQgb3BlcmF0b3JUb2tlbiA9IG1fdG9r
ZW4ubV90eXBlOwogICAgICAgICBuZXh0KCk7CkBAIC0xMTk2LDcgKzE0NjMsNiBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZUJpbmFy
eUV4cHJlc3Npb24oVHJlZQogICAgICAgICB9CiAgICAgICAgIGNvbnRleHQub3BlcmF0b3JTdGFj
a0FwcGVuZChvcGVyYXRvclN0YWNrRGVwdGgsIG9wZXJhdG9yVG9rZW4sIHByZWNlZGVuY2UpOwog
ICAgIH0KLQogICAgIHdoaWxlIChvcGVyYXRvclN0YWNrRGVwdGgpIHsKICAgICAgICAgQVNTRVJU
KG9wZXJhbmRTdGFja0RlcHRoID4gMSk7CiAKQEAgLTEzMjcsNiArMTU5Myw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlU3RyaWN0
T2JqZWN0TGl0ZXJhbChUCiAgICAgICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKSB7
CiAgICAgICAgICAgICBzdGQ6OnBhaXI8T2JqZWN0VmFsaWRhdGlvbk1hcDo6aXRlcmF0b3IsIGJv
b2w+IHByb3BlcnR5RW50cnlJdGVyID0gb2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0LmdldE5h
bWUocHJvcGVydHkpLmltcGwoKSwgY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7CiAgICAgICAg
ICAgICBpZiAoIXByb3BlcnR5RW50cnlJdGVyLnNlY29uZCkgeworICAgICAgICAgICAgICAgIGZh
aWxJZlRydWUoc3RyaWN0TW9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoKGNvbnRleHQuZ2V0
VHlwZShwcm9wZXJ0eSkgJiBwcm9wZXJ0eUVudHJ5SXRlci5maXJzdC0+c2Vjb25kKSAhPSBQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIENhbid0IGhhdmUg
bXVsdGlwbGUgZ2V0dGVycyBvciBzZXR0ZXJzIHdpdGggdGhlIHNhbWUgbmFtZSwgbm9yIGNhbiB3
ZSBkZWZpbmUgCiAgICAgICAgICAgICAgICAgICAgIC8vIGEgcHJvcGVydHkgYXMgYm90aCBhbiBh
Y2Nlc3NvciBhbmQgYSBjb25zdGFudCB2YWx1ZQpAQCAtMTM4OSw2ICsxNjU2LDggQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VQcmlt
YXJ5RXhwcmVzc2lvbihUcmUKIHsKICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAg
Y2FzZSBPUEVOQlJBQ0U6CisgICAgICAgIGlmIChzdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgICAgICByZXR1cm4g
cGFyc2VPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgIGNhc2UgT1BFTkJSQUNLRVQ6CiAgICAg
ICAgIHJldHVybiBwYXJzZUFycmF5TGl0ZXJhbChjb250ZXh0KTsKQEAgLTE0MTAsNiArMTY3OSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6
OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24oVHJlCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgY3Vy
cmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFt
ZXMtPmV2YWwgPT0gKmlkZW50KTsKKyAgICAgICAgbV9sYXN0SWRlbnRpZmllciA9IGlkZW50Owog
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKGlkZW50LCBzdGFydCk7CiAgICAg
fQogICAgIGNhc2UgU1RSSU5HOiB7CkBAIC0xNDg1LDYgKzE3NTUsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZU1lbWJlckV4cHJl
c3Npb24oVHJlZQogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG5ld0NvdW50Kys7CiAgICAgfQor
CiAgICAgaWYgKG1hdGNoKEZVTkNUSU9OKSkgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBu
YW1lID0gJm1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CiAgICAg
ICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwpAQCAtMTUwMiw2ICsx
NzczLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1Bh
cnNlcjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWUKICAgICB3aGlsZSAodHJ1ZSkgewogICAg
ICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6
IHsKKyAgICAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICAg
ICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICAgICAgICAgIG5leHQo
KTsKICAgICAgICAgICAgIGludCBub25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CkBAIC0xNTE1
LDYgKzE3ODcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IEpTUGFyc2VyOjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBPUEVOUEFSRU46IHsKKyAgICAgICAgICAgIG1fbm9u
VHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICAgICAgaWYgKG5ld0NvdW50KSB7CiAg
ICAgICAgICAgICAgICAgbmV3Q291bnQtLTsKICAgICAgICAgICAgICAgICBpZiAobWF0Y2goT1BF
TlBBUkVOKSkgewpAQCAtMTUzNSw2ICsxODA4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWUK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRE9UOiB7CisgICAg
ICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgICAgIGludCBl
eHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAgICBuZXh0KExleGVyOjpJ
Z25vcmVSZXNlcnZlZFdvcmRzKTsKICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKQEAg
LTE1NTYsMjUgKzE4MzAsNTkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VVbmFyeUV4cHJlc3Npb24oVHJlZUIKIHsKICAgICBBbGxv
d0luT3ZlcnJpZGUgYWxsb3dJbk92ZXJyaWRlKHRoaXMpOwogICAgIGludCB0b2tlblN0YWNrRGVw
dGggPSAwOworICAgIGJvb2wgbW9kaWZpZXNFeHByID0gZmFsc2U7CisgICAgYm9vbCByZXF1aXJl
c0xFeHByID0gZmFsc2U7CiAgICAgd2hpbGUgKGlzVW5hcnlPcChtX3Rva2VuLm1fdHlwZSkpIHsK
KyAgICAgICAgaWYgKHN0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgc3dpdGNoIChtX3Rva2Vu
Lm1fdHlwZSkgeworICAgICAgICAgICAgY2FzZSBQTFVTUExVUzoKKyAgICAgICAgICAgIGNhc2Ug
TUlOVVNNSU5VUzoKKyAgICAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgorICAgICAgICAgICAg
Y2FzZSBBVVRPTUlOVVNNSU5VUzoKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKHJlcXVpcmVz
TEV4cHIpOworICAgICAgICAgICAgICAgIG1vZGlmaWVzRXhwciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgcmVxdWlyZXNMRXhwciA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIERFTEVURVRPS0VOOgorICAgICAgICAgICAgICAgIGZhaWxJZlRydWUocmVx
dWlyZXNMRXhwcik7CisgICAgICAgICAgICAgICAgcmVxdWlyZXNMRXhwciA9IHRydWU7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGZhaWxJZlRydWUocmVxdWlyZXNMRXhwcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgbV9ub25MSFNDb3VudCsrOwogICAgICAgICBj
b250ZXh0LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5TdGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwg
dG9rZW5TdGFydCgpKTsKICAgICAgICAgbmV4dCgpOworICAgICAgICBtX25vblRyaXZpYWxFeHBy
ZXNzaW9uQ291bnQrKzsKICAgICB9CiAgICAgaW50IHN1YkV4cHJTdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VNZW1iZXJFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHIpOworICAgIGJvb2wgaXNFdmFsID0gZmFsc2U7Cisg
ICAgaWYgKHN0cmljdE1vZGUoKSAmJiAhbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKSB7CisgICAg
ICAgIGlmIChjb250ZXh0LmlzUmVzb2x2ZShleHByKSkKKyAgICAgICAgICAgIGlzRXZhbCA9IG1f
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqbV9sYXN0SWRlbnRpZmllcjsKKyAg
ICB9CisgICAgZmFpbElmU3RyaWN0VHJ1ZShpc0V2YWwgJiYgbW9kaWZpZXNFeHByKTsKICAgICBz
d2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgY2FzZSBQTFVTUExVUzoKKyAgICAgICAgbV9u
b25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKICAg
ICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGV4cHIsIE9wUGx1c1BsdXMsIHN1
YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2ln
bm1lbnRDb3VudCsrOworICAgICAgICBmYWlsSWZTdHJpY3RUcnVlKGlzRXZhbCk7CisgICAgICAg
IGZhaWxJZlN0cmljdFRydWUocmVxdWlyZXNMRXhwcik7CiAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBNSU5VU01JTlVTOgorICAgICAgICBtX25vblRyaXZpYWxFeHBy
ZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwogICAgICAgICBleHByID0g
Y29udGV4dC5tYWtlUG9zdGZpeE5vZGUoZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQs
IGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQr
KzsKKyAgICAgICAgZmFpbElmU3RyaWN0VHJ1ZShpc0V2YWwpOworICAgICAgICBmYWlsSWZTdHJp
Y3RUcnVlKHJlcXVpcmVzTEV4cHIpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CkBAIC0xNTgzLDcgKzE4OTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbihUcmVl
QgogCiAgICAgaW50IGVuZCA9IGxhc3RUb2tlbkVuZCgpOwogCi0gICAgaWYgKCFUcmVlQnVpbGRl
cjo6Q3JlYXRlc0FTVCkKKyAgICBpZiAoIVRyZWVCdWlsZGVyOjpDcmVhdGVzQVNUICYmIChtX3N5
bnRheEFscmVhZHlWYWxpZGF0ZWQgfHwgIXN0cmljdE1vZGUoKSkpCiAgICAgICAgIHJldHVybiBl
eHByOwogCiAgICAgd2hpbGUgKHRva2VuU3RhY2tEZXB0aCkgewpAQCAtMTYxNyw2ICsxOTI1LDgg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6
cGFyc2VVbmFyeUV4cHJlc3Npb24oVHJlZUIKICAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNy
ZWF0ZVZvaWQoZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVU
T0tFTjoKKyAgICAgICAgICAgIGlmIChzdHJpY3RNb2RlKCkgJiYgY29udGV4dC5pc1Jlc29sdmUo
ZXhwcikpCisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoZGVsZXRlUHJvcGVydHkobV9sYXN0
SWRlbnRpZmllcikpOwogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUo
ZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwg
ZW5kLCBlbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuaCBiL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9KU1BhcnNlci5oCmluZGV4IGFiMThmYWIxZTk3ODg5ZTQ4YmNmMDFiZmQ3Njk3ZjhjOWY2
ZTY4MGQuLjRkNjMwYjA1MjdkMDMxZjc1MGEyODZiZDFkOGQxMWU5M2E5NTQ5MzYgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9KU1BhcnNlci5oCkBAIC0yOCw5ICsyOCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzOwogY2xhc3MgSWRl
bnRpZmllcjsKLWNsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xh
c3MgU291cmNlQ29kZTsKIAogZW51bSB7CkBAIC0xNTUsNiArMTU2LDYgQEAgc3RydWN0IEpTVG9r
ZW4gewogICAgIEpTVG9rZW5JbmZvIG1faW5mbzsKIH07CiAKLWludCBqc1BhcnNlKEpTR2xvYmFs
RGF0YSosIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUqKTsKK2ludCBqc1Bh
cnNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9v
bCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUqKTsKIH0KICNlbmRpZiAvLyBKU1Bh
cnNlcl9oCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCBjYzQzMjFkNjExYzNkYTA4Yjc3ZmE5
M2VmZDlkZDY4ZjEwYzNkMzY1Li4yMzk3MjllZWFlMWEyODRlMDQwMzIyYTQ3MDU3NGQyNmNiYWU4
ZjE5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBBTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyOjpwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIGx2
YWxwLCBMZXhUeXBlIGxleAogICAgIHJldHVybiBJREVOVDsKIH0KIAotQUxXQVlTX0lOTElORSBi
b29sIExleGVyOjpwYXJzZVN0cmluZyhKU1Rva2VuRGF0YSogbHZhbHApCitBTFdBWVNfSU5MSU5F
IGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCwgYm9vbCBzdHJpY3RN
b2RlKQogewogICAgIGludCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKICAgICBz
aGlmdCgpOwpAQCAtNDk0LDYgKzQ5NCw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFy
c2VTdHJpbmcoSlNUb2tlbkRhdGEqIGx2YWxwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVu
dCkpIHsKICAgICAgICAgICAgICAgICAvLyBPY3RhbCBjaGFyYWN0ZXIgc2VxdWVuY2VzCisgICAg
ICAgICAgICAgICAgaWYgKHN0cmljdE1vZGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICBpbnQgY2hhcmFjdGVyMSA9IG1fY3VycmVudDsKICAgICAg
ICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJT2N0YWxEaWdp
dChtX2N1cnJlbnQpKSB7CkBAIC02OTYsNyArNjk4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIExl
eGVyOjpwYXJzZU11bHRpbGluZUNvbW1lbnQoKQogICAgIH0KIH0KIAotSlNUb2tlblR5cGUgTGV4
ZXI6OmxleChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBsbG9jcCwgTGV4VHlwZSBs
ZXhUeXBlKQorSlNUb2tlblR5cGUgTGV4ZXI6OmxleChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9r
ZW5JbmZvKiBsbG9jcCwgTGV4VHlwZSBsZXhUeXBlLCBib29sIHN0cmljdE1vZGUpCiB7CiAgICAg
QVNTRVJUKCFtX2Vycm9yKTsKICAgICBBU1NFUlQobV9idWZmZXI4LmlzRW1wdHkoKSk7CkBAIC05
NzYsOCArOTc4LDExIEBAIHN0YXJ0OgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVj
b3JkOCgnMCcpOwogICAgICAgICAgICAgaWYgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VPY3RhbChsdmFscC0+ZG91YmxlVmFsdWUpKQor
ICAgICAgICAgICAgICAgIGlmIChwYXJzZU9jdGFsKGx2YWxwLT5kb3VibGVWYWx1ZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHN0cmljdE1vZGUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IE5VTUJFUjsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLy8g
RmFsbCB0aHJvdWdoIGludG8gQ2hhcmFjdGVyTnVtYmVyCkBAIC0xMDA2LDcgKzEwMTEsNyBAQCBp
bk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENoYXJhY3RlclF1b3RlOgotICAgICAgICBpZiAoVU5M
SUtFTFkoIXBhcnNlU3RyaW5nKGx2YWxwKSkpCisgICAgICAgIGlmIChVTkxJS0VMWSghcGFyc2VT
dHJpbmcobHZhbHAsIHN0cmljdE1vZGUpKSkKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7
CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCmluZGV4IGU2YzFlZmQxNDA3YjBjOWE4YWI1MDJhZDQ3ZDljYzIyYTA3MjY4YTAu
LjRkMjUxM2QwZmY0MTYwZWViNTM0YjRiODRjMzUzN2RjYzgzYzcxYzYgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCkBAIC00OCwxMCArNDgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIEZ1
bmN0aW9ucyB0byBzZXQgdXAgcGFyc2luZy4KICAgICAgICAgdm9pZCBzZXRDb2RlKGNvbnN0IFNv
dXJjZUNvZGUmLCBQYXJzZXJBcmVuYSYpOwogICAgICAgICB2b2lkIHNldElzUmVwYXJzaW5nKCkg
eyBtX2lzUmVwYXJzaW5nID0gdHJ1ZTsgfQorICAgICAgICBib29sIGlzUmVwYXJzaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9pc1JlcGFyc2luZzsgfQogCiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3Ig
dGhlIHBhcnNlciBpdHNlbGYuCiAgICAgICAgIGVudW0gTGV4VHlwZSB7IElkZW50aWZ5UmVzZXJ2
ZWRXb3JkcywgSWdub3JlUmVzZXJ2ZWRXb3JkcyB9OwotICAgICAgICBKU1Rva2VuVHlwZSBsZXgo
SlNUb2tlbkRhdGEqIGx2YWxwLCBKU1Rva2VuSW5mbyogbGxvY3AsIExleFR5cGUpOworICAgICAg
ICBKU1Rva2VuVHlwZSBsZXgoSlNUb2tlbkRhdGEqIGx2YWxwLCBKU1Rva2VuSW5mbyogbGxvY3As
IExleFR5cGUsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgICAgIGludCBsaW5lTnVtYmVyKCkgY29u
c3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAgICAgICAgIHZvaWQgc2V0TGFzdExpbmVOdW1i
ZXIoaW50IGxhc3RMaW5lTnVtYmVyKSB7IG1fbGFzdExpbmVOdW1iZXIgPSBsYXN0TGluZU51bWJl
cjsgfQogICAgICAgICBpbnQgbGFzdExpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RM
aW5lTnVtYmVyOyB9CkBAIC05NSw3ICs5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3Q7CiAKICAg
ICAgICAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRh
dGEqLCBMZXhUeXBlKTsKLSAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlU3RyaW5nKEpT
VG9rZW5EYXRhKiBsdmFscCk7CisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZVN0cmlu
ZyhKU1Rva2VuRGF0YSogbHZhbHAsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBwYXJzZUhleChkb3VibGUmIHJldHVyblZhbHVlKTsKICAgICAgICAgQUxXQVlT
X0lOTElORSBib29sIHBhcnNlT2N0YWwoZG91YmxlJiByZXR1cm5WYWx1ZSk7CiAgICAgICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBwYXJzZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1ZSk7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcAppbmRleCA1MzRlMjhhZTE0ZmRkNmZiYmQ0MmFiN2Q2ZDIyNGQ2NmNk
ZGVmMTFiLi4zNGFhNjc0NmRjMDE3NGEzOTYyMTQxNmNmMGE5NWY4OGI2NzY4YzJjIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTg5LDEwICs4OSwxMCBAQCBTY29wZU5vZGVEYXRhOjpTY29w
ZU5vZGVEYXRhKFBhcnNlckFyZW5hJiBhcmVuYSwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMs
IFZhcgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgYm9vbCBpblN0cmljdENvbnRleHQpCiAgICAgOiBTdGF0ZW1lbnROb2RlKGdsb2Jh
bERhdGEpCiAgICAgLCBQYXJzZXJBcmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkKLSAgICAsIG1f
ZmVhdHVyZXMoTm9GZWF0dXJlcykKKyAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RDb250ZXh0ID8g
U3RyaWN0TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogewogfQogCkBAIC0xNTQsOCArMTU0LDgg
QEAgRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1ldGVyTm9kZSog
Zmlyc3RQYXJhbWV0ZXIpCiAgICAgICAgIGFwcGVuZChwYXJhbWV0ZXItPmlkZW50KCkpOwogfQog
Ci1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSkKK2lubGluZSBGdW5jdGlv
bkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9v
bCBpblN0cmljdENvbnRleHQpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgaW5TdHJpY3RD
b250ZXh0KQogewogfQogCkBAIC0xNzcsOSArMTc3LDkgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2Rl
OjpmaW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJz
LAogICAgIG1faWRlbnQgPSBpZGVudDsKIH0KIAotRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25C
b2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK0Z1bmN0aW9uQm9keU5v
ZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJv
b2wgaW5TdHJpY3RDb250ZXh0KQogewotICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShn
bG9iYWxEYXRhKTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwg
aW5TdHJpY3RDb250ZXh0KTsKIH0KIAogUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5j
dGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAppbmRleCBmYTYxY2RjZWQyNGQxYjZmMDYzNmUxZjM1ODkzOWFkZmIzYWU3
NzI4Li42YjhmNzA0ZmJjMzNkMjhjODNiN2FlOTYzYTc2M2M0MGI4NTVhYjRmIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaApAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjb25zdCBD
b2RlRmVhdHVyZXMgV2l0aEZlYXR1cmUgPSAxIDw8IDQ7CiAgICAgY29uc3QgQ29kZUZlYXR1cmVz
IENhdGNoRmVhdHVyZSA9IDEgPDwgNTsKICAgICBjb25zdCBDb2RlRmVhdHVyZXMgVGhpc0ZlYXR1
cmUgPSAxIDw8IDY7CisgICAgY29uc3QgQ29kZUZlYXR1cmVzIFN0cmljdE1vZGVGZWF0dXJlID0g
MSA8PCA3OwogICAgIGNvbnN0IENvZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxGZWF0dXJl
IHwgQ2xvc3VyZUZlYXR1cmUgfCBBc3NpZ25GZWF0dXJlIHwgQXJndW1lbnRzRmVhdHVyZSB8IFdp
dGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlIHwgVGhpc0ZlYXR1cmU7CiAKICAgICBlbnVtIE9wZXJh
dG9yIHsKQEAgLTEzOTMsNyArMTM5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBl
ZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRl
ZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAg
ICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFs
RGF0YSosIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKICAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFs
RGF0YSosIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVu
Y3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpOwogCiAgICAgICAgIHVzaW5nIFBhcnNlckFyZW5hUmVmQ291bnRlZDo6b3BlcmF0b3IgbmV3
OwpAQCAtMTQxMCw2ICsxNDExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCB1
c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBFdmFsRmVhdHVyZTsgfQogICAg
ICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgQXJn
dW1lbnRzRmVhdHVyZTsgfQorICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RNb2RlRmVhdHVyZTsgfQogICAgICAgICB2b2lkIHNldFVz
ZXNBcmd1bWVudHMoKSB7IG1fZmVhdHVyZXMgfD0gQXJndW1lbnRzRmVhdHVyZTsgfQogICAgICAg
ICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFRoaXNGZWF0dXJl
OyB9CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMoKSBj
b25zdCB7IEFTU0VSVChtX2RhdGEpOyByZXR1cm4gbV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8
IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKTsgfQpAQCAtMTQ3Niw3ICsxNDc4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIFNjb3Bl
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3Jl
YXRlKEpTR2xvYmFsRGF0YSopOworICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3Jl
YXRlKEpTR2xvYmFsRGF0YSosIGJvb2wgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAg
IEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy5nZXQoKTsgfQpAQCAtMTQ5Miw3ICsxNDk0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IHRydWU7CiAKICAgICBwcml2
YXRlOgotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSopOworICAgICAgICBG
dW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKICAg
ICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZh
clN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2Rl
JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBJZGVudGlmaWVy
IG1faWRlbnQ7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBi
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDBjMGIyZDc0ZWU4M2IxMDUx
ZGZkOGMwMTJiOWZiZDc5YzE0ZWNhN2QuLjY0MmE4NDJmZjdiN2FhNWM1MTg1NmQ4ODk0ZTZlYzBh
NzE4MDM4YjQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisr
KyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0zNSw4ICszNSw5IEBAIGV4
dGVybiBpbnQganNjeXlwYXJzZSh2b2lkKik7CiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lkIFBh
cnNlcjo6cGFyc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBGdW5jdGlvblBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMsIGludCogZXJyTGluZSwgVVN0cmluZyogZXJyTXNnKQordm9pZCBQYXJzZXI6
OnBhcnNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQs
IGludCogZXJyTGluZSwgVVN0cmluZyogZXJyTXNnKQogeworICAgIEFTU0VSVChsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gMDsKIAogICAgIGludCBkZWZhdWx0
RXJyTGluZTsKQEAgLTUwLDEwICs1MSwxMCBAQCB2b2lkIFBhcnNlcjo6cGFyc2UoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGludAogICAg
ICplcnJMaW5lID0gLTE7CiAgICAgKmVyck1zZyA9IFVTdHJpbmcoKTsKIAotICAgIExleGVyJiBs
ZXhlciA9ICpnbG9iYWxEYXRhLT5sZXhlcjsKKyAgICBMZXhlciYgbGV4ZXIgPSAqZXhlYy0+Z2xv
YmFsRGF0YSgpLmxleGVyOwogICAgIGxleGVyLnNldENvZGUoKm1fc291cmNlLCBtX2FyZW5hKTsK
IAotICAgIGludCBwYXJzZUVycm9yID0ganNQYXJzZShnbG9iYWxEYXRhLCBwYXJhbWV0ZXJzLCBt
X3NvdXJjZSk7CisgICAgaW50IHBhcnNlRXJyb3IgPSBqc1BhcnNlKGV4ZWMsIGxleGljYWxHbG9i
YWxPYmplY3QsIHBhcmFtZXRlcnMsIGluU3RyaWN0Q29udGV4dCwgbV9zb3VyY2UpOwogICAgIGlu
dCBsaW5lTnVtYmVyID0gbGV4ZXIubGluZU51bWJlcigpOwogICAgIGJvb2wgbGV4RXJyb3IgPSBs
ZXhlci5zYXdFcnJvcigpOwogICAgIGxleGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
aW5kZXggOTEzNGRlMTQ3MWIxMDBlMmMxYTJkNWRmZmFmNjAyYjUzNTc4NGRlOC4uODBjOGMyYjRk
N2Q0NTUyMDI1MWU4ODJkOGEyMTkyOTk3NTQ2NjA4ZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQYXJzZXIgOiBwdWJs
aWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFBh
cnNlZE5vZGU+Ci0gICAgICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRGVi
dWdnZXIqLCBFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFy
YW1ldGVycyosIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKKyAgICAgICAgUGFzc1JlZlB0cjxQYXJz
ZWROb2RlPiBwYXJzZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRGVidWdnZXIqLCBFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uUGFyYW1ldGVycyosIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBKU09iamVjdCoqIGV4Y2Vw
dGlvbik7CiAKICAgICAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwg
UGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6
RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsCkBAIC01Nyw3ICs1Nyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQYXJzZXJBcmVuYSYgYXJlbmEoKSB7IHJldHVybiBt
X2FyZW5hOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHBhcnNlKEpTR2xvYmFsRGF0
YSosIEZ1bmN0aW9uUGFyYW1ldGVycyosIGludCogZXJyTGluZSwgVVN0cmluZyogZXJyTXNnKTsK
KyAgICAgICAgdm9pZCBwYXJzZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9vbCBpblN0cmljdENvbnRleHQsIGlu
dCogZXJyTGluZSwgVVN0cmluZyogZXJyTXNnKTsKIAogICAgICAgICAvLyBVc2VkIHRvIGRldGVy
bWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQm9k
eU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc1LDIwICs3NSwyMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+
Ci0gICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI6OnBhcnNlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIERlYnVnZ2Vy
KiBkZWJ1Z2dlciwgRXhlY1N0YXRlKiBkZWJ1Z2dlckV4ZWNTdGF0ZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIEpTT2JqZWN0KiogZXhj
ZXB0aW9uKQorICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyOjpwYXJzZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBEZWJ1Z2dlciog
ZGVidWdnZXIsIEV4ZWNTdGF0ZSogZGVidWdnZXJFeGVjU3RhdGUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGluU3RyaWN0Q29u
dGV4dCwgSlNPYmplY3QqKiBleGNlcHRpb24pCiAgICAgeworICAgICAgICBBU1NFUlQobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24gJiYgISpleGNlcHRpb24p
OwogICAgICAgICBpbnQgZXJyTGluZTsKICAgICAgICAgVVN0cmluZyBlcnJNc2c7CiAKICAgICAg
ICAgbV9zb3VyY2UgPSAmc291cmNlOwogICAgICAgICBpZiAoUGFyc2VkTm9kZTo6c2NvcGVJc0Z1
bmN0aW9uKQotICAgICAgICAgICAgZ2xvYmFsRGF0YS0+bGV4ZXItPnNldElzUmVwYXJzaW5nKCk7
Ci0gICAgICAgIHBhcnNlKGdsb2JhbERhdGEsIHBhcmFtZXRlcnMsICZlcnJMaW5lLCAmZXJyTXNn
KTsKKyAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5sZXhlci0+c2V0SXNSZXBhcnNpbmco
KTsKKyAgICAgICAgcGFyc2UoZXhlYywgbGV4aWNhbEdsb2JhbE9iamVjdCwgcGFyYW1ldGVycywg
aW5TdHJpY3RDb250ZXh0LCAmZXJyTGluZSwgJmVyck1zZyk7CiAKICAgICAgICAgUmVmUHRyPFBh
cnNlZE5vZGU+IHJlc3VsdDsKICAgICAgICAgaWYgKG1fc291cmNlRWxlbWVudHMpIHsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IFBhcnNlZE5vZGU6OmNyZWF0ZShnbG9iYWxEYXRhLAorICAgICAgICAg
ICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRlKCZleGVjLT5nbG9iYWxEYXRhKCksCiAgICAg
ICAgICAgICAgICAgbV9zb3VyY2VFbGVtZW50cywKICAgICAgICAgICAgICAgICBtX3ZhckRlY2xh
cmF0aW9ucyA/ICZtX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCiAgICAgICAgICAgICAgICAg
bV9mdW5jRGVjbGFyYXRpb25zID8gJm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCkBAIC0x
MDcsNyArMTA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAoaXNGdW5jdGlv
bkJvZHlOb2RlKHN0YXRpY19jYXN0PFBhcnNlZE5vZGUqPigwKSkpCiAgICAgICAgICAgICAgICAg
KmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gYWRkRXJy
b3JJbmZvKGdsb2JhbERhdGEsIGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IGVyck1zZyksIGVyckxpbmUsIHNvdXJjZSk7CisgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9
IGFkZEVycm9ySW5mbygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBzb3VyY2UpOwogICAgICAgICB9CiAK
ICAgICAgICAgbV9hcmVuYS5yZXNldCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKaW5kZXggY2UzYWI2MTE2NmIxMjViMzAxMjczMDdlNDNlY2JkNDQ5NzNhZjEyMy4uZjkwOTNh
NzQ0N2E5NDMzMWI0ZThlMTA2M2Q1Yzg2ZGE5MmQ0NzlhZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCkBAIC0zMCwxNSArMzAsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBTeW50YXhDaGVja2VyIHsKIHB1YmxpYzoKICAgICBTeW50YXhDaGVja2VyKEpTR2xvYmFsRGF0
YSogLCBMZXhlciopCisgICAgICAgIDogbV90b3BCaW5hcnlFeHByKDApCiAgICAgewogICAgIH0K
IAogICAgIHR5cGVkZWYgU3ludGF4Q2hlY2tlciBGdW5jdGlvbkJvZHlCdWlsZGVyOworICAgIGVu
dW0geyBOb25lRXhwciA9IDAsCisgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIs
IE51bWJlckV4cHIsIFN0cmluZ0V4cHIsCisgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9v
bEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAorICAgICAgICBGdW5jdGlvbkV4
cHIsIEJyYWNrZXRFeHByLCBEb3RFeHByLCBDYWxsRXhwciwKKyAgICAgICAgTmV3RXhwciwgUHJl
RXhwciwgUG9zdEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwKKyAgICAgICAgQ29uZGl0aW9u
YWxFeHByLCBBc3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwKKyAgICAgICAgRGVsZXRlRXhwciwg
QXJyYXlMaXRlcmFsRXhwciB9OworICAgIHR5cGVkZWYgaW50IEV4cHJlc3Npb25UeXBlOwogCi0g
ICAgdHlwZWRlZiBpbnQgRXhwcmVzc2lvbjsKKyAgICB0eXBlZGVmIEV4cHJlc3Npb25UeXBlIEV4
cHJlc3Npb247CiAgICAgdHlwZWRlZiBpbnQgU291cmNlRWxlbWVudHM7CiAgICAgdHlwZWRlZiBp
bnQgQXJndW1lbnRzOwotICAgIHR5cGVkZWYgaW50IENvbW1hOworICAgIHR5cGVkZWYgRXhwcmVz
c2lvblR5cGUgQ29tbWE7CiAgICAgc3RydWN0IFByb3BlcnR5IHsKICAgICAgICAgQUxXQVlTX0lO
TElORSBQcm9wZXJ0eSh2b2lkKiA9IDApCiAgICAgICAgICAgICA6IHR5cGUoKFByb3BlcnR5Tm9k
ZTo6VHlwZSkwKQpAQCAtNzMsMzggKzgyLDM4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBOZWVkc0ZyZWVWYXJpYWJsZUluZm8gPSBmYWxzZTsKIAogICAgIGludCBjcmVhdGVTb3Vy
Y2VFbGVtZW50cygpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgbWFrZUZ1bmN0aW9uQ2FsbE5vZGUo
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICB2b2lkIGFwcGVuZFRv
Q29tbWEoaW50LCBpbnQpIHsgfQotICAgIGludCBjcmVhdGVDb21tYUV4cHIoaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KLSAgICBpbnQgbWFrZUFzc2lnbk5vZGUoaW50LCBPcGVyYXRvciwgaW50LCBi
b29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IG1ha2VQcmVm
aXhOb2RlKGludCwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgbWFrZVBvc3RmaXhOb2RlKGludCwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgbWFrZVR5cGVPZk5vZGUoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50
IG1ha2VEZWxldGVOb2RlKGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBtYWtlTmVnYXRlTm9kZShpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgbWFrZUJpdHdpc2VO
b3ROb2RlKGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVMb2dpY2FsTm90KGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVVbmFyeVBsdXMoaW50KSB7IHJldHVybiAxOyB9
Ci0gICAgaW50IGNyZWF0ZVZvaWQoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IHRoaXNFeHBy
KCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVSZXNvbHZlKGNvbnN0IElkZW50aWZpZXIq
LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlT2JqZWN0TGl0ZXJhbCgpIHsgcmV0
dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIDE7IH0K
LSAgICBpbnQgY3JlYXRlQXJyYXkoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUFy
cmF5KGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZU51bWJlckV4cHIoZG91
YmxlKSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVN0cmluZyhjb25zdCBJZGVudGlmaWVy
KikgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCb29sZWFuKGJvb2wpIHsgcmV0dXJuIDE7
IH0KLSAgICBpbnQgY3JlYXRlTnVsbCgpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQnJh
Y2tldEFjY2VzcyhpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQot
ICAgIGludCBjcmVhdGVEb3RBY2Nlc3MoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVSZWdleChjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgSWRlbnRpZmllciYsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVO
ZXdFeHByKGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZU5ld0V4cHIoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVD
b25kaXRpb25hbEV4cHIoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVBc3NpZ25SZXNvbHZlKGNvbnN0IElkZW50aWZpZXImLCBpbnQsIGJvb2wsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IElkZW50
aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IGNyZWF0ZUZ1bmN0aW9uQm9keSgpIHsgcmV0dXJuIDE7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
Q2FsbEV4cHI7IH0KKyAgICB2b2lkIGFwcGVuZFRvQ29tbWEoRXhwcmVzc2lvblR5cGUmIGJhc2Us
IEV4cHJlc3Npb25UeXBlIHJpZ2h0KSB7IGJhc2UgPSByaWdodDsgfQorICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZUNvbW1hRXhwcihFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQp
IHsgcmV0dXJuIHJpZ2h0OyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUFzc2lnbk5vZGUoRXhw
cmVzc2lvblR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgYm9vbCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBt
YWtlUHJlZml4Tm9kZShFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIFByZUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlUG9zdGZpeE5vZGUoRXhw
cmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VUeXBlT2ZOb2RlKEV4cHJlc3Npb25UeXBlKSB7IHJl
dHVybiBUeXBlb2ZFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZURlbGV0ZU5vZGUoRXhw
cmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KKyAgICBF
eHByZXNzaW9uVHlwZSBtYWtlTmVnYXRlTm9kZShFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5h
cnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2RlKEV4cHJlc3Np
b25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVM
b2dpY2FsTm90KEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQoRXhwcmVzc2lvblR5cGUpIHsg
cmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIHRoaXNFeHByKCkgeyByZXR1
cm4gVGhpc0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNvbHZlKGNvbnN0IElk
ZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbCgpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Cisg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIE9iamVj
dExpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoaW50KSB7IHJl
dHVybiBBcnJheUxpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXko
aW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVOdW1iZXJFeHByKGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVN0cmluZyhjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gU3Ry
aW5nRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oYm9vbCkgeyByZXR1
cm4gQm9vbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKCkgeyByZXR1cm4g
TnVsbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
QnJhY2tldEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoRXhwcmVz
c2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXImLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnZXgoY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IElkZW50aWZpZXImLCBpbnQpIHsgcmV0dXJuIFJlZ0V4cEV4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHBy
KEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KKyAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGNvbnN0IElkZW50aWZpZXImLCBFeHBy
ZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7
IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSWRlbnRpZmll
ciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsg
fQorICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoYm9vbCkgeyByZXR1cm4gMTsgfQogICAgIGlu
dCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50
cyhpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChpbnQpIHsg
cmV0dXJuIDE7IH0KQEAgLTE2OSwyNiArMTc4LDM4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFZh
cihjb25zdCBJZGVudGlmaWVyKiwgYm9vbCkgeyB9CiAgICAgaW50IGNvbWJpbmVDb21tYU5vZGVz
KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIDA7IH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGludCYgb3BlcmFu
ZFN0YWNrRGVwdGgsIGludCwgaW50LCBpbnQsIGludCwgYm9vbCkgeyBvcGVyYW5kU3RhY2tEZXB0
aCsrOyB9CisgICAgdm9pZCBhcHBlbmRCaW5hcnlFeHByZXNzaW9uSW5mbyhpbnQmIG9wZXJhbmRT
dGFja0RlcHRoLCBpbnQgZXhwciwgaW50LCBpbnQsIGludCwgYm9vbCkKKyAgICB7CisgICAgICAg
IGlmICghbV90b3BCaW5hcnlFeHByKQorICAgICAgICAgICAgbV90b3BCaW5hcnlFeHByID0gZXhw
cjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90b3BCaW5hcnlFeHByID0gQmluYXJ5RXhw
cjsKKyAgICAgICAgb3BlcmFuZFN0YWNrRGVwdGgrKzsKKyAgICB9CiAgICAgCiAgICAgLy8gTG9n
aWMgdG8gaGFuZGxlIGRhdGFzdHJ1Y3R1cmVzIHVzZWQgZHVyaW5nIHBhcnNpbmcgb2YgYmluYXJ5
IGV4cHJlc3Npb25zCiAgICAgdm9pZCBvcGVyYXRvclN0YWNrUG9wKGludCYgb3BlcmF0b3JTdGFj
a0RlcHRoKSB7IG9wZXJhdG9yU3RhY2tEZXB0aC0tOyB9CiAgICAgYm9vbCBvcGVyYXRvclN0YWNr
SGFzSGlnaGVyUHJlY2VkZW5jZShpbnQmLCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBCaW5h
cnlPcGVyYW5kIGdldEZyb21PcGVyYW5kU3RhY2soaW50KSB7IHJldHVybiAxOyB9CisgICAgQmlu
YXJ5T3BlcmFuZCBnZXRGcm9tT3BlcmFuZFN0YWNrKGludCkgeyByZXR1cm4gbV90b3BCaW5hcnlF
eHByOyB9CiAgICAgdm9pZCBzaHJpbmtPcGVyYW5kU3RhY2tCeShpbnQmIG9wZXJhbmRTdGFja0Rl
cHRoLCBpbnQgYW1vdW50KSB7IG9wZXJhbmRTdGFja0RlcHRoIC09IGFtb3VudDsgfQogICAgIHZv
aWQgYXBwZW5kQmluYXJ5T3BlcmF0aW9uKGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIEJp
bmFyeU9wZXJhbmQsIEJpbmFyeU9wZXJhbmQpIHsgb3BlcmFuZFN0YWNrRGVwdGgrKzsgfQogICAg
IHZvaWQgb3BlcmF0b3JTdGFja0FwcGVuZChpbnQmIG9wZXJhdG9yU3RhY2tEZXB0aCwgaW50LCBp
bnQpIHsgb3BlcmF0b3JTdGFja0RlcHRoKys7IH0KLSAgICBpbnQgcG9wT3BlcmFuZFN0YWNrKGlu
dCYpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgcG9wT3BlcmFuZFN0YWNrKGludCYpIHsgaW50IHJl
cyA9IG1fdG9wQmluYXJ5RXhwcjsgbV90b3BCaW5hcnlFeHByID0gMDsgcmV0dXJuIHJlczsgfQog
ICAgIAotICAgIHZvaWQgYXBwZW5kVW5hcnlUb2tlbihpbnQmLCBpbnQsIGludCkgeyB9Ci0gICAg
aW50IHVuYXJ5VG9rZW5TdGFja0xhc3RUeXBlKGludCYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiAxOyB9Ci0gICAgaW50IHVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydChpbnQmKSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQotICAgIHZvaWQgdW5hcnlUb2tlblN0YWNr
UmVtb3ZlTGFzdChpbnQmKSB7IH0KKyAgICB2b2lkIGFwcGVuZFVuYXJ5VG9rZW4oaW50JiBzdGFj
a0RlcHRoLCBpbnQgdG9rLCBpbnQpIHsgc3RhY2tEZXB0aCA9IDE7IG1fdG9wVW5hcnlUb2tlbiA9
IHRvazsgfQorICAgIGludCB1bmFyeVRva2VuU3RhY2tMYXN0VHlwZShpbnQmKSB7IHJldHVybiBt
X3RvcFVuYXJ5VG9rZW47IH0KKyAgICBpbnQgdW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KGludCYp
IHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHVuYXJ5VG9rZW5TdGFja1JlbW92ZUxhc3QoaW50JiBz
dGFja0RlcHRoKSB7IHN0YWNrRGVwdGggPSAwOyB9CiAgICAgCiAgICAgdm9pZCBhc3NpZ25tZW50
U3RhY2tBcHBlbmQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IH0KICAgICBp
bnQgY3JlYXRlQXNzaWdubWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBnZXROYW1lKGNv
bnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgeyBBU1NFUlQocHJvcGVydHkubmFtZSk7IHJldHVybiAq
cHJvcGVydHkubmFtZTsgfQogICAgIFByb3BlcnR5Tm9kZTo6VHlwZSBnZXRUeXBlKGNvbnN0IFBy
b3BlcnR5JiBwcm9wZXJ0eSkgeyByZXR1cm4gcHJvcGVydHkudHlwZTsgfQorICAgIGJvb2wgaXNS
ZXNvbHZlKEV4cHJlc3Npb25UeXBlIGV4cHIpIHsgcmV0dXJuIGV4cHIgPT0gUmVzb2x2ZUV4cHIg
fHwgZXhwciA9PSBSZXNvbHZlRXZhbEV4cHI7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgaW50IG1f
dG9wQmluYXJ5RXhwcjsKKyAgICBpbnQgbV90b3BVbmFyeVRva2VuOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDQ1MGRjN2Q2Zjc4ODgzMWVlMzU2N2NhYmJi
MTk0MjQwMGI0MjVkYTguLjVjNWU1MjIyZmIyMjdhZDczZGQzYTUzOWFmMmYwZGE1MmVkYTUyOGEg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTE1Myw2ICsxNTMsMzAgQEAg
Ym9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGksIFByb3BlcnR5U2xvdCYgc2wKIAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSwgc2xv
dCk7CiB9CisgICAgCit2b2lkIEFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVj
ZXNzYXJ5KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZC0+b3ZlcnJvZGVDYWxsZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIGQtPm92ZXJyb2RlQ2FsbGVyID0gdHJ1ZTsKKyAgICBQcm9w
ZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgICBKU1ZhbHVlIHRocm93ZXIgPSBjcmVhdGVU
eXBlRXJyb3JGdW5jdGlvbihleGVjLCAiVW5hYmxlIHRvIGFjY2VzcyBjYWxsZXIgb2Ygc3RyaWN0
IG1vZGUgZnVuY3Rpb24iKTsKKyAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcih0
aHJvd2VyLCB0aHJvd2VyLCBEb250RW51bSB8IERvbnREZWxldGUgfCBHZXR0ZXIgfCBTZXR0ZXIp
OworICAgIGRlZmluZU93blByb3BlcnR5KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxs
ZXIsIGRlc2NyaXB0b3IsIGZhbHNlKTsKK30KKwordm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmlj
dE1vZGVDYWxsZWVJZk5lY2Vzc2FyeShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGQtPm92
ZXJyb2RlQ2FsbGVlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZC0+b3ZlcnJvZGVDYWxs
ZWUgPSB0cnVlOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIEpTVmFs
dWUgdGhyb3dlciA9IGNyZWF0ZVR5cGVFcnJvckZ1bmN0aW9uKGV4ZWMsICJVbmFibGUgdG8gYWNj
ZXNzIGNhbGxlZSBvZiBzdHJpY3QgbW9kZSBmdW5jdGlvbiIpOworICAgIGRlc2NyaXB0b3Iuc2V0
QWNjZXNzb3JEZXNjcmlwdG9yKHRocm93ZXIsIHRocm93ZXIsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IEdldHRlciB8IFNldHRlcik7CisgICAgZGVmaW5lT3duUHJvcGVydHkoZXhlYywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNhbGxlZSwgZGVzY3JpcHRvciwgZmFsc2UpOworfQogCiBib29sIEFy
Z3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CkBAIC0xNzIsMTAgKzE5
NiwxNiBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYQogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSAmJiBMSUtFTFkoIWQtPm92ZXJy
b2RlQ2FsbGVlKSkgewotICAgICAgICBzbG90LnNldFZhbHVlKGQtPmNhbGxlZSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWQtPmlzU3RyaWN0TW9kZSkgeworICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZShkLT5jYWxsZWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KGV4ZWMp
OwogICAgIH0KIAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNhbGxlciAmJiBkLT5pc1N0cmljdE1vZGUpCisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxs
ZXJJZk5lY2Vzc2FyeShleGVjKTsKKwogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKQEAgLTE5Nyw5ICsyMjcsMTUg
QEAgYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3AKICAgICB9CiAgICAgCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYmIExJS0VMWSghZC0+b3ZlcnJv
ZGVDYWxsZWUpKSB7Ci0gICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihkLT5jYWxsZWUs
IERvbnRFbnVtKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghZC0+aXNTdHJp
Y3RNb2RlKSB7CisgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZC0+Y2FsbGVl
LCBEb250RW51bSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgfQorCisgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyICYmIGQtPmlz
U3RyaWN0TW9kZSkKKyAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVjZXNzYXJ5KGV4
ZWMpOwogICAgIAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkBAIC0yNDksMTEgKzI4NSwxNyBA
QCB2b2lkIEFyZ3VtZW50czo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbAogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSAmJiAhZC0+b3ZlcnJvZGVDYWxsZWUpIHsK
LSAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSB0cnVlOwotICAgICAgICBwdXREaXJlY3QocHJv
cGVydHlOYW1lLCB2YWx1ZSwgRG9udEVudW0pOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlm
ICghZC0+aXNTdHJpY3RNb2RlKSB7CisgICAgICAgICAgICBkLT5vdmVycm9kZUNhbGxlZSA9IHRy
dWU7CisgICAgICAgICAgICBwdXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSwgRG9udEVudW0p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNyZWF0ZVN0cmljdE1v
ZGVDYWxsZWVJZk5lY2Vzc2FyeShleGVjKTsKICAgICB9CiAKKyAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIgJiYgZC0+aXNTdHJpY3RNb2RlKQorICAg
ICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3NhcnkoZXhlYyk7CisKICAgICBKU09i
amVjdDo6cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCkBAIC0yOTQs
OSArMzM2LDE1IEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICB9CiAKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUgJiYgIWQtPm92ZXJyb2Rl
Q2FsbGVlKSB7Ci0gICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gdHJ1ZTsKLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGlmICghZC0+aXNTdHJpY3RNb2RlKSB7CisgICAgICAgICAgICBk
LT5vdmVycm9kZUNhbGxlZSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7CiAg
ICAgfQorICAgIAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNhbGxlciAmJiAhZC0+aXNTdHJpY3RNb2RlKQorICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2Fs
bGVySWZOZWNlc3NhcnkoZXhlYyk7CiAKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApp
bmRleCA0OWM4YjNiNThhZTM4NTU0NWVkMzkzN2E2MmI5Mjc1ZWY2ZDhmZTU4Li43MTVhMmFjMTc1
ZGI1NGE4NjE3NDM5OTgzZmU1ZjQ0NjRlODc1NDhjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmgKQEAgLTUwLDYgKzUwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTRnVuY3Rp
b24qIGNhbGxlZTsKICAgICAgICAgYm9vbCBvdmVycm9kZUxlbmd0aCA6IDE7CiAgICAgICAgIGJv
b2wgb3ZlcnJvZGVDYWxsZWUgOiAxOworICAgICAgICBib29sIG92ZXJyb2RlQ2FsbGVyIDogMTsK
KyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgOiAxOwogICAgIH07CiAKIApAQCAtMTA1LDYgKzEw
Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgdm9pZCBjcmVh
dGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CisgICAgICAgIHZvaWQg
Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSopOwogCiAgICAgICAg
IHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5m
bzsgfQogCkBAIC0xNzIsNiArMTc2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBkLT5j
YWxsZWUgPSBjYWxsZWU7CiAgICAgICAgIGQtPm92ZXJyb2RlTGVuZ3RoID0gZmFsc2U7CiAgICAg
ICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gZmFsc2U7CisgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVy
ID0gZmFsc2U7CisgICAgICAgIGQtPmlzU3RyaWN0TW9kZSA9IGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpOworICAgICAgICBpZiAoZC0+aXNTdHJpY3RNb2RlKQorICAgICAg
ICAgICAgY29weVJlZ2lzdGVycygpOwogICAgIH0KIAogICAgIGlubGluZSBBcmd1bWVudHM6OkFy
Z3VtZW50cyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgTm9QYXJhbWV0ZXJzVHlwZSkKQEAgLTIwMSw2
ICsyMDksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGQtPmNhbGxlZSA9IGFzRnVuY3Rp
b24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7CiAgICAgICAgIGQtPm92ZXJyb2RlTGVuZ3RoID0gZmFs
c2U7CiAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gZmFsc2U7CisgICAgICAgIGQtPm92ZXJy
b2RlQ2FsbGVyID0gZmFsc2U7CisgICAgICAgIGQtPmlzU3RyaWN0TW9kZSA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOworICAgICAgICBpZiAoZC0+aXNTdHJpY3RNb2Rl
KQorICAgICAgICAgICAgY29weVJlZ2lzdGVycygpOwogICAgIH0KIAogICAgIGlubGluZSB2b2lk
IEFyZ3VtZW50czo6Y29weVJlZ2lzdGVycygpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDM4Mzc4MTdkMDUyZjc4ZWNlMDYxYWM2ZGU3MTcxMDRk
ZWZiN2I3ZWIuLjE1NjExMDIzNTIwN2Y2YWM5ZmIxNjdjMjc1Y2E0YzMyMmQxMzU5ZmQgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zMiw2ICsz
Miw3IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCiAgICAgLCBlbXB0eUlkZW50aWZpZXIoZ2xvYmFsRGF0YSwgIiIpCiAgICAg
LCB1bmRlcnNjb3JlUHJvdG8oZ2xvYmFsRGF0YSwgIl9fcHJvdG9fXyIpCiAgICAgLCB0aGlzSWRl
bnRpZmllcihnbG9iYWxEYXRhLCAidGhpcyIpCisgICAgLCB1c2VTdHJpY3RJZGVudGlmaWVyKGds
b2JhbERhdGEsICJ1c2Ugc3RyaWN0IikKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hf
UFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiB7CiB9CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZGUyNGY0YTBkNDg0N2I1YTJh
ODk4OTZlOTY0ZDAzNGJhZDcxN2Y2YS4uMWUyMmI2YWJkZmZkYWY4ODU0N2Y1OGY3NGQ3ZjIxZDZj
ZWZhZWEyYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApA
QCAtOTQsNiArOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciBlbXB0eUlkZW50aWZpZXI7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgdW5kZXJzY29yZVBy
b3RvOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHRoaXNJZGVudGlmaWVyOworICAgICAgICBj
b25zdCBJZGVudGlmaWVyIHVzZVN0cmljdElkZW50aWZpZXI7CiAKICNkZWZpbmUgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVy
IG5hbWU7CiAgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1F
KEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuY3BwCmluZGV4IGEyYmU0NzM2NThmNjI0ZjFkN2VmMTU2MTNmYjI1ZWM0MTg1NDRi
ZDMuLmUzNTQyNGJiNDIyYjM5Y2E3NWFiODQ1NDIyZGE5MjI5NTM1YmE0ODYgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCkBAIC0xOTUsNCArMTk1LDQ3IEBAIEpTT2JqZWN0KiB0aHJvd1N5bnRh
eEVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVTeW50YXhFcnJvcihleGVjLCAiU3ludGF4IGVycm9yIikpOwogfQogCitjbGFzcyBTdHJpY3RN
b2RlVHlwZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6
CisgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlv
bigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZXhlYy0+Z2xv
YmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcikKKyAgICAgICAgLCBtX21l
c3NhZ2UobWVzc2FnZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhl
YykKKyAgICB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHN0YXRpY19jYXN0PFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CisgICAgfQorICAgIAorICAg
IENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQorICAgIHsKKyAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25z
dHJ1Y3RUaHJvd1R5cGVFcnJvcjsKKyAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0Owor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
VGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorICAgIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhl
Yy0+Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKKyAgICB9CisKKyAgICBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYg
Y2FsbERhdGEpCisgICAgeworICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
VGhyb3dUeXBlRXJyb3I7CisgICAgICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CisgICAgfQorCitw
cml2YXRlOgorICAgIFVTdHJpbmcgbV9tZXNzYWdlOworfTsKKworQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbikgPD0gc2l6ZW9mKENvbGxlY3RvckNlbGwp
LCBzaXplb2ZfU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uX211c3RfYmVfbGVzc190aGFuX0Nv
bGxlY3RvckNlbGwpOworCitKU1ZhbHVlIGNyZWF0ZVR5cGVFcnJvckZ1bmN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gbmV3IChleGVj
KSBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmludGVybmFsRnVuY3Rpb25TdHJ1
Y3R1cmUoKSwgbWVzc2FnZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5oCmluZGV4IDFhMGVjZTU0YjJjY2U5N2JmYzE2NzY3NTdhZmE0ZWQ5NTAyNWNmMDguLmJm
ZGU3ZGM2NjI4MjRhNDBiOGI1OWNmNDNmODc0NDc2Mzc4ZGQ3ZmUgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgKQEAgLTczLDYgKzczLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGVycm9yKSk7IH0KICAgICBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7IH0KIAorICAgIEpT
VmFsdWUgY3JlYXRlVHlwZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRXJy
b3JfaApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODcxZjNlMjA0MGQ4
MWVkNzI4NDA1MGEwZjk1ZWZlODRhMGFhNDVlZC4uOTViMDMzNGI2MGZjYmQ5NDA2ZDY0N2QzMTY1
MjZkNDFhNTczM2JhMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC00
NSw4ICs0NSw4IEBAIFZQdHJIYWNrRXhlY3V0YWJsZTo6flZQdHJIYWNrRXhlY3V0YWJsZSgpCiB7
CiB9CiAKLUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYywgc291
cmNlKQorRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjcmlw
dEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpblN0cmljdENvbnRleHQpCiB7CiB9CiAKQEAgLTU1
LDcgKzU1LDcgQEAgRXZhbEV4ZWN1dGFibGU6On5FdmFsRXhlY3V0YWJsZSgpCiB9CiAKIFByb2dy
YW1FeGVjdXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYywgc291cmNlKQor
ICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGZhbHNlKQogewogfQogCkBAIC02
Myw4ICs2Myw4IEBAIFByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUoKQogewog
fQogCi1GdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1l
dGVycywgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQotICAgIDogU2NyaXB0RXhlY3V0YWJs
ZShnbG9iYWxEYXRhLCBzb3VyY2UpCitGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0
YWJsZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9u
UGFyYW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGludCBmaXJzdExp
bmUsIGludCBsYXN0TGluZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgc291
cmNlLCBpblN0cmljdENvbnRleHQpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKDApCiAg
ICAgLCBtX2ZvcmNlVXNlc0FyZ3VtZW50cyhmb3JjZVVzZXNBcmd1bWVudHMpCiAgICAgLCBtX3Bh
cmFtZXRlcnMocGFyYW1ldGVycykKQEAgLTc1LDggKzc1LDggQEAgRnVuY3Rpb25FeGVjdXRhYmxl
OjpGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWUKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJs
ZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywg
RnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExp
bmUpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSkKK0Z1bmN0aW9uRXhlY3V0
YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50
cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGluU3RyaWN0Q29udGV4dCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVj
LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMo
MCkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKGZvcmNlVXNlc0FyZ3VtZW50cykKICAgICAs
IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQpAQCAtOTYsNyArOTYsNyBAQCBKU09iamVjdCogRXZh
bEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5O
b2RlKiBzY29wZQogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwogICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAg
UmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RXZh
bE5vZGU+KGdsb2JhbERhdGEsIGxleGljYWxHbG9iYWxPYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QtPmRlYnVnZ2VyKCksIGV4ZWMsIG1fc291cmNlLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBSZWZQ
dHI8RXZhbE5vZGU+IGV2YWxOb2RlID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxFdmFsTm9k
ZT4oZXhlYywgbGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZGVidWdn
ZXIoKSwgZXhlYywgbV9zb3VyY2UsIDAsIGlzU3RyaWN0TW9kZSgpLCAmZXhjZXB0aW9uKTsKICAg
ICBpZiAoIWV2YWxOb2RlKSB7CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwogICAgICAgICBy
ZXR1cm4gZXhjZXB0aW9uOwpAQCAtMTMxLDcgKzEzMSw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhl
Y3V0YWJsZTo6Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTT2JqZWN0KiBleGNl
cHRpb24gPSAwOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9k
ZSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5vZGU+KGdsb2JhbERhdGEsIGxl
eGljYWxHbG9iYWxPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCksIGV4ZWMs
IG1fc291cmNlLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dy
YW1Ob2RlID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhlYywgbGV4
aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgZXhlYywg
bV9zb3VyY2UsIDAsIGZhbHNlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAocHJvZ3JhbU5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChleGNlcHRpb24pOwpAQCAtMTQ1LDcgKzE0NSw3
IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0
ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjCiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7
CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAg
ICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gZ2xvYmFs
RGF0YS0+cGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZ2xvYmFsRGF0YSwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgZXhlYywgbV9zb3VyY2Us
IDAsICZleGNlcHRpb24pOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBn
bG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPihleGVjLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLCBleGVjLCBtX3NvdXJjZSwg
MCwgaXNTdHJpY3RNb2RlKCksICZleGNlcHRpb24pOwogICAgIGlmICghcHJvZ3JhbU5vZGUpIHsK
ICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBleGNlcHRpb247CkBA
IC0xNzgsNyArMTc4LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
ckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW4KIHsKICAgICBKU09iamVj
dCogZXhjZXB0aW9uID0gMDsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBzY29wZUNo
YWluTm9kZS0+Z2xvYmFsRGF0YTsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9
IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZ2xvYmFsRGF0YSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJz
LmdldCgpLCAmZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9
IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJzLmdldCgp
LCBpc1N0cmljdE1vZGUoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKCFib2R5KSB7CiAgICAgICAg
IEFTU0VSVChleGNlcHRpb24pOwogICAgICAgICByZXR1cm4gZXhjZXB0aW9uOwpAQCAtMjE5LDcg
KzIxOSw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1
Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlCiB7CiAgICAgSlNPYmplY3QqIGV4Y2Vw
dGlvbiA9IDA7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gc2NvcGVDaGFpbk5vZGUt
Pmdsb2JhbERhdGE7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBnbG9iYWxE
YXRhLT5wYXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGdsb2JhbERhdGEsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgMCwgMCwgbV9zb3VyY2UsIG1fcGFyYW1ldGVycy5nZXQoKSwg
JmV4Y2VwdGlvbik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBnbG9iYWxE
YXRhLT5wYXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgMCwgMCwgbV9zb3VyY2UsIG1fcGFyYW1ldGVycy5nZXQoKSwgaXNTdHJp
Y3RNb2RlKCksICZleGNlcHRpb24pOwogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQo
ZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKQEAgLTI2NCwxMCArMjY0LDEy
IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFy
a1N0YWNrKQogICAgICAgICBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+bWFya0FnZ3JlZ2F0ZSht
YXJrU3RhY2spOwogfQogCi1QYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IEZ1bmN0aW9uRXhlY3V0
YWJsZTo6cmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIENvZGVCbG9jayogY29kZUJsb2NrKQorUGFzc093
blB0cjxFeGNlcHRpb25JbmZvPiBGdW5jdGlvbkV4ZWN1dGFibGU6OnJlcGFyc2VFeGNlcHRpb25J
bmZvKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsKLSAgICBS
ZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbmV3RnVuY3Rpb25Cb2R5ID0gZ2xvYmFsRGF0YS0+cGFy
c2VyLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihnbG9iYWxEYXRhLCAwLCAwLCAwLCBtX3NvdXJj
ZSwgbV9wYXJhbWV0ZXJzLmdldCgpLCAmZXhjZXB0aW9uKTsKKyAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEgPSBzY29wZUNoYWluTm9kZS0+Z2xvYmFsRGF0YTsKKyAgICBSZWZQdHI8RnVuY3Rp
b25Cb2R5Tm9kZT4gbmV3RnVuY3Rpb25Cb2R5ID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxG
dW5jdGlvbkJvZHlOb2RlPihleGVjLCBzY29wZUNoYWluTm9kZS0+Z2xvYmFsT2JqZWN0LCAwLCAw
LCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJzLmdldCgpLCBpc1N0cmljdE1vZGUoKSwgJmV4Y2VwdGlv
bik7CisgICAgQVNTRVJUKG5ld0Z1bmN0aW9uQm9keS0+aXNTdHJpY3RNb2RlKCkgPT0gaXNTdHJp
Y3RNb2RlKCkpOwogICAgIGlmICghbmV3RnVuY3Rpb25Cb2R5KQogICAgICAgICByZXR1cm4gUGFz
c093blB0cjxFeGNlcHRpb25JbmZvPigpOwogICAgIGlmIChtX2ZvcmNlVXNlc0FyZ3VtZW50cykK
QEAgLTI5OCwxMCArMzAwLDEyIEBAIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gRnVuY3Rpb25F
eGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERhdGEqCiAgICAgcmV0dXJu
IG5ld0NvZGVCbG9jay0+ZXh0cmFjdEV4Y2VwdGlvbkluZm8oKTsKIH0KIAotUGFzc093blB0cjxF
eGNlcHRpb25JbmZvPiBFdmFsRXhlY3V0YWJsZTo6cmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIENvZGVC
bG9jayogY29kZUJsb2NrKQorUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBFdmFsRXhlY3V0YWJs
ZTo6cmVwYXJzZUV4Y2VwdGlvbkluZm8oRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbk5vZGUsIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIEpTT2JqZWN0KiBl
eGNlcHRpb24gPSAwOwotICAgIFJlZlB0cjxFdmFsTm9kZT4gbmV3RXZhbEJvZHkgPSBnbG9iYWxE
YXRhLT5wYXJzZXItPnBhcnNlPEV2YWxOb2RlPihnbG9iYWxEYXRhLCAwLCAwLCAwLCBtX3NvdXJj
ZSwgMCwgJmV4Y2VwdGlvbik7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gc2NvcGVD
aGFpbk5vZGUtPmdsb2JhbERhdGE7CisgICAgUmVmUHRyPEV2YWxOb2RlPiBuZXdFdmFsQm9keSA9
IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RXZhbE5vZGU+KGV4ZWMsIHNjb3BlQ2hhaW5Ob2Rl
LT5nbG9iYWxPYmplY3QsIDAsIDAsIG1fc291cmNlLCAwLCBpc1N0cmljdE1vZGUoKSwgJmV4Y2Vw
dGlvbik7CisgICAgQVNTRVJUKG5ld0V2YWxCb2R5LT5pc1N0cmljdE1vZGUoKSA9PSBpc1N0cmlj
dE1vZGUoKSk7CiAgICAgaWYgKCFuZXdFdmFsQm9keSkKICAgICAgICAgcmV0dXJuIFBhc3NPd25Q
dHI8RXhjZXB0aW9uSW5mbz4oKTsKIApAQCAtMzQxLDcgKzM0NSw3IEBAIHZvaWQgRnVuY3Rpb25F
eGVjdXRhYmxlOjpyZWNvbXBpbGUoRXhlY1N0YXRlKikKIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVj
dXRhYmxlPiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZp
ZXImIGZ1bmN0aW9uTmFtZSwgRXhlY1N0YXRlKiBleGVjLCBEZWJ1Z2dlciogZGVidWdnZXIsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNPYmplY3QqKiBleGNlcHRpb24pCiB7CiAgICAgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gZXhlYy0+Z2xvYmFsRGF0
YSgpLnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5vZGU+KCZleGVjLT5nbG9iYWxEYXRhKCksIGxleGlj
YWxHbG9iYWxPYmplY3QsIGRlYnVnZ2VyLCBleGVjLCBzb3VyY2UsIDAsIGV4Y2VwdGlvbik7Cisg
ICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gZXhlYy0+Z2xvYmFsRGF0YSgpLnBhcnNl
ci0+cGFyc2U8UHJvZ3JhbU5vZGU+KGV4ZWMsIGxleGljYWxHbG9iYWxPYmplY3QsIGRlYnVnZ2Vy
LCBleGVjLCBzb3VyY2UsIDAsIGZhbHNlLCBleGNlcHRpb24pOwogICAgIGlmICghcHJvZ3JhbSkg
ewogICAgICAgICBBU1NFUlQoKmV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMzU3
LDcgKzM2MSw3IEBAIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBGdW5jdGlvbkV4ZWN1
dGFibGU6OmZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpCiAgICAgRnVuY3Rpb25Cb2R5Tm9k
ZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOwog
ICAgIEFTU0VSVChib2R5KTsKIAotICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbk5hbWUsIGJvZHktPnNvdXJjZSgpLCBib2R5
LT51c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+bGluZU5vKCksIGJv
ZHktPmxhc3RMaW5lKCkpOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbk5hbWUsIGJvZHktPnNvdXJjZSgpLCBib2R5LT51
c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgZmFsc2UsIGJvZHktPmxpbmVObygp
LCBib2R5LT5sYXN0TGluZSgpKTsKIH0KIAogVVN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBh
cmFtU3RyaW5nKCkgY29uc3QKQEAgLTM3Miw3ICszNzYsNyBAQCBVU3RyaW5nIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6cGFyYW1TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7
CiB9CiAKLVBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gUHJvZ3JhbUV4ZWN1dGFibGU6OnJlcGFy
c2VFeGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2Nr
KikKK1Bhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gUHJvZ3JhbUV4ZWN1dGFibGU6OnJlcGFyc2VF
eGNlcHRpb25JbmZvKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKikKIHsK
ICAgICAvLyBDb2RlQmxvY2tzIGZvciBwcm9ncmFtIGNvZGUgYXJlIHRyYW5zaWVudCBhbmQgdGhl
cmVmb3JlIGRvIG5vdCBnYWluIGZyb20gZnJvbSB0aHJvd2luZyBvdXQgdGhlaXIgZXhjZXB0aW9u
IGluZm9ybWF0aW9uLgogICAgIHJldHVybiBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+KCk7CmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGZlYWI3ZWY5MDcxMDIxOGRmZjRlMjk5
YzZlNjdiN2IwZjViMmI3NGEuLjE5YTg4M2Q4MWExYTJmNjgwNDBkMDQwNjEwOTZlZjI3OGE3OTJj
ZDQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0xMzgsMTAgKzEzOCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMg
RXhlY3V0YWJsZUJhc2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgU2NyaXB0RXhlY3V0YWJsZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAg
ICAgU2NyaXB0RXhlY3V0YWJsZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgICAgIDogRXhl
Y3V0YWJsZUJhc2UoTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQogICAgICAgICAgICAgLCBt
X3NvdXJjZShzb3VyY2UpCi0gICAgICAgICAgICAsIG1fZmVhdHVyZXMoMCkKKyAgICAgICAgICAg
ICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCkK
ICAgICAgICAgewogI2lmIEVOQUJMRShDT0RFQkxPQ0tfU0FNUExJTkcpCiAgICAgICAgICAgICBy
ZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKQEAgLTE1MiwxMCArMTUyLDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogI2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICBTY3JpcHRF
eGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29s
IGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShOVU1fUEFS
QU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAgICAgICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAg
ICAgICAgICAgICwgbV9mZWF0dXJlcygwKQorICAgICAgICAgICAgLCBtX2ZlYXR1cmVzKGlzSW5T
dHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQogICAgICAgICB7CiAjaWYgRU5B
QkxFKENPREVCTE9DS19TQU1QTElORykKICAgICAgICAgICAgIHJlbGF4QWRvcHRpb25SZXF1aXJl
bWVudCgpOwpAQCAtMTc1LDggKzE3NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29s
IHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEV2YWxGZWF0dXJlOyB9CiAg
ICAgICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBB
cmd1bWVudHNGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyB8fCBtX2ZlYXR1cmVzICYgKEV2YWxGZWF0
dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpOyB9CisgICAgICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9
CiAKLSAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNl
cHRpb25JbmZvKEpTR2xvYmFsRGF0YSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKikgPSAw
OworICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2Vw
dGlvbkluZm8oRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKSA9IDA7CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZl
YXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUpCkBAIC0yMTQsNyArMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gKm1fZXZhbENvZGVCbG9jazsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmFsRXhlY3V0YWJsZShleGVj
LCBzb3VyY2UpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsRXhlY3V0YWJsZT4g
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlz
SW5TdHJpY3RDb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRXZhbEV4ZWN1dGFibGUoZXhl
Yywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCkpOyB9CiAKICNpZiBFTkFCTEUoSklUKQogICAg
ICAgICBKSVRDb2RlJiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAgLTIyNCwxMSArMjI1LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBwcml2YXRlOgotICAgICAgICBFdmFsRXhlY3V0
YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgICAgIEV2YWxFeGVjdXRh
YmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sKTsKIAogICAgICAgICBKU09i
amVjdCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAKLSAg
ICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25J
bmZvKEpTR2xvYmFsRGF0YSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKik7CisgICAgICAg
IHZpcnR1YWwgUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiByZXBhcnNlRXhjZXB0aW9uSW5mbyhF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIENvZGVCbG9jayopOwogCiAgICAgICAgIE93blB0
cjxFdmFsQ29kZUJsb2NrPiBtX2V2YWxDb2RlQmxvY2s7CiAgICAgfTsKQEAgLTI3MSw3ICsyNzIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU09iamVjdCogY29tcGlsZUludGVybmFs
KEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAKLSAgICAgICAgdmlydHVhbCBQYXNzT3du
UHRyPEV4Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSosIFNj
b3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKik7CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxF
eGNlcHRpb25JbmZvPiByZXBhcnNlRXhjZXB0aW9uSW5mbyhFeGVjU3RhdGUqLCBTY29wZUNoYWlu
Tm9kZSosIENvZGVCbG9jayopOwogCiAgICAgICAgIE93blB0cjxQcm9ncmFtQ29kZUJsb2NrPiBt
X3Byb2dyYW1Db2RlQmxvY2s7CiAgICAgfTsKQEAgLTI3OSwxNCArMjgwLDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBp
bnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1
bmN0aW9uRXhlY3V0YWJsZT4gY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50
cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGlzSW5TdHJpY3RDb250ZXh0
LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxlKGV4ZWMsIG5hbWUsIHNvdXJjZSwg
Zm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBmaXJzdExpbmUsIGxhc3RMaW5lKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBu
YW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENv
bnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZ1bmN0aW9uRXhlY3V0YWJsZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNl
VXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGlzSW5T
dHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxlKGdsb2JhbERh
dGEsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBmaXJzdExp
bmUsIGxhc3RMaW5lKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZ1bmN0aW9u
RXhlY3V0YWJsZShnbG9iYWxEYXRhLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywg
cGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIH5GdW5jdGlvbkV4ZWN1dGFibGUoKTsKQEAgLTM1OCwxMyArMzU5
LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlv
bkV4ZWN1dGFibGU+IGZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUq
LCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2Vz
QXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExp
bmUpOwotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBG
dW5jdGlvblBhcmFtZXRlcnMqLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBh
cmFtZXRlcnMqLCBib29sLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29u
c3QgU291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRl
cnMqLCBib29sLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwogCiAgICAgICAgIEpTT2Jq
ZWN0KiBjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7
CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRl
KiwgU2NvcGVDaGFpbk5vZGUqKTsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0
aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5v
ZGUqLCBDb2RlQmxvY2sqKTsKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEV4Y2VwdGlvbklu
Zm8+IHJlcGFyc2VFeGNlcHRpb25JbmZvKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29k
ZUJsb2NrKik7CiAKICAgICAgICAgdW5zaWduZWQgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyA6IDMx
OwogICAgICAgICBib29sIG1fZm9yY2VVc2VzQXJndW1lbnRzIDogMTsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCBkMTIxNTE4ZjU5ZjJkMzMwOTM0NTI5ZGE5OWI3
OTFmZTFmZmM0YzQ5Li43OTVhZDFmNzFjMjExMzdkNjE5YWFjZDRlYThmZDg2NzkyZWU2ZGFmIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC0xODYsNiArMTg2LDEx
IEBAIEpTT2JqZWN0KiBKU0FjdGl2YXRpb246OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiAgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpOwogfQogCitKU1ZhbHVl
IEpTQWN0aXZhdGlvbjo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGpzTnVsbCgpOworfQorICAgIAogYm9vbCBKU0FjdGl2YXRpb246OmlzRHluYW1p
Y1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3QKIHsKICAgICByZXF1aXJl
c0R5bmFtaWNDaGVja3MgPSBkKCktPmZ1bmN0aW9uRXhlY3V0YWJsZS0+dXNlc0V2YWwoKTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmggYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCmluZGV4IDlmZjkxNjg1ZGRkZTJhMTQxZGRj
ZjRiMjczZjA5NjE5YzY4M2UzN2MuLjZkZDZkNzA3MGFmNzhhNTQ3Y2E4M2Q2MTMxOTdlYWVlN2Jl
NzhiZjMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaApAQCAtNjAsNiArNjAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAg
dmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Owog
CiAgICAgICAgIHZvaWQgY29weVJlZ2lzdGVycygpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDdlYjliYTUyNmI1MzA5OGUwMzQyMDE0MTlmZTg2NmY0
OGRjYWMzYTUuLmZkYWE1MDk5YjEyYzg5Yjk1M2VlMmQ5OWI0ZjgyZDlkYmFmYzgwNTEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTIyLDYgKzEyMiwxNSBAQCBKU0Z1
bmN0aW9uOjp+SlNGdW5jdGlvbigpCiAgICAgfQogfQogCitzdGF0aWMgY29uc3QgY2hhciogU3Ry
aWN0TW9kZUNhbGxlckFjY2Vzc0Vycm9yID0gIkNhbm5vdCBhY2Nlc3MgY2FsbGVyIHByb3BlcnR5
IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24iOworc3RhdGljIGNvbnN0IGNoYXIqIFN0cmljdE1v
ZGVBcmd1bWVudHNBY2Nlc3NFcnJvciA9ICJDYW5ub3QgYWNjZXNzIGFyZ3VtZW50cyBwcm9wZXJ0
eSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uIjsKKworc3RhdGljIHZvaWQgY3JlYXRlRGVzY3Jp
cHRvckZvclRocm93aW5nUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgSlNWYWx1ZSB0aHJv
d2VyID0gY3JlYXRlVHlwZUVycm9yRnVuY3Rpb24oZXhlYywgbWVzc2FnZSk7CisgICAgZGVzY3Jp
cHRvci5zZXRBY2Nlc3NvckRlc2NyaXB0b3IodGhyb3dlciwgdGhyb3dlciwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgR2V0dGVyIHwgU2V0dGVyKTsKK30KKwogY29uc3QgVVN0cmluZyYgSlNGdW5j
dGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIGFzU3RyaW5nKGdldERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSkpLT50cnlHZXRWYWx1
ZSgpOwpAQCAtMjA5LDYgKzIxOCwxMiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TgogICAgIH0K
IAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50
cykgeworICAgICAgICBpZiAoanNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKSB7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiQ2FuJ3QgYWNjZXNzIGFyZ3VtZW50cyBvYmpl
Y3Qgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbiIpOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZShqc051bGwoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgCiAg
ICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGFyZ3VtZW50c0dldHRlcik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIxOSw2ICsyMzQsMTEgQEAgYm9vbCBKU0Z1
bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU4KICAgICB9CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKKyAgICAgICAgaWYgKGpzRXhlY3V0YWJsZSgpLT5pc1N0
cmljdE1vZGUoKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZUNhbGxlckFjY2Vzc0Vycm9yKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUoanNOdWxsKCkp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgc2xvdC5zZXRD
YWNoZWFibGVDdXN0b20odGhpcywgY2FsbGVyR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtMjI2LDM1ICsyNDYsNDEgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU4KICAg
ICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKLSAgICBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotICAgIHsKLSAgICAgICAgaWYgKGlzSG9zdEZ1bmN0aW9u
KCkpCi0gICAgICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4
ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Ci0gICAgICAgIAotICAgICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKLSAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICAgICAgZ2V0T3duUHJvcGVydHlTbG90KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmFyZ3VtZW50cykgeworYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBpZiAoaXNIb3N0RnVuY3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworICAgIAorICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgeworICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICAgICAgZ2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CisgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKKyAgICB9CisgICAgCisgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7CisgICAgICAgIGlm
IChqc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBjcmVhdGVEZXNj
cmlwdG9yRm9yVGhyb3dpbmdQcm9wZXJ0eShleGVjLCBkZXNjcmlwdG9yLCBTdHJpY3RNb2RlQXJn
dW1lbnRzQWNjZXNzRXJyb3IpOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBkZXNjcmlwdG9y
LnNldERlc2NyaXB0b3IoZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVBcmd1bWVudHMoZXhl
YywgdGhpcyksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIGRlc2Ny
aXB0b3Iuc2V0RGVzY3JpcHRvcihqc051bWJlcihleGVjLCBqc0V4ZWN1dGFibGUoKS0+cGFyYW1l
dGVyQ291bnQoKSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoanNO
dW1iZXIoZXhlYywganNFeGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIp
IHsKKyAgICAgICAgaWYgKGpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgIGNyZWF0ZURlc2NyaXB0b3JGb3JUaHJvd2luZ1Byb3BlcnR5KGV4ZWMsIGRlc2NyaXB0b3Is
IFN0cmljdE1vZGVDYWxsZXJBY2Nlc3NFcnJvcik7CisgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUNh
bGxlcihleGVjLCB0aGlzKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVy
biBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAorICAgIHJldHVybiBC
YXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKTsKK30KKwogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQogewogICAgIGlmICghaXNIb3N0RnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKSkgewpAQCAtMjcyLDYgKzI5OCwxNiBAQCB2b2lkIEpTRnVuY3Rp
b246OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YQogICAgICAgICBCYXNlOjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKGpzRXhlY3V0YWJsZSgpLT5p
c1N0cmljdE1vZGUoKSkgeworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5hcmd1bWVudHMpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVBcmd1bWVudHNBY2Nlc3NFcnJvcik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY2FsbGVyKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
Q2FsbGVyQWNjZXNzRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50
cyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkKICAgICAg
ICAgcmV0dXJuOwogICAgIEJhc2U6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCA1ZWFhNTliNzll
MjA0OTNkZGY2YTJiYzQ2M2E0ODFhZTljMjY1NjU3Li4wNzNiNTRjN2JmMzhiYTMzMGEwN2FhMzQx
ZWI2NGI3NzE1NmM1MTI5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
CkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXIu
aCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgorI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpZiBFTkFCTEUoUkVHRVhQ
X1RSQUNJTkcpCiAjaW5jbHVkZSAiUmVnRXhwLmgiCkBAIC0xMjQsNiArMTI1LDcgQEAgSlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVh
ZFN0YWNrVHlwZSB0aHJlYWQKICAgICAsIGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1
cmUoSlNPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAgLCB0ZXJtaW5hdGVk
RXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUoSlNPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwo
KSkpCiAgICAgLCBzdGF0aWNTY29wZVN0cnVjdHVyZShKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQorICAgICwgc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1
cmUoU3RyaWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAg
LCBzdHJpbmdTdHJ1Y3R1cmUoSlNTdHJpbmc6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAg
ICAgLCBub3RBbk9iamVjdEVycm9yU3R1YlN0cnVjdHVyZShKU05vdEFuT2JqZWN0RXJyb3JTdHVi
OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQogICAgICwgbm90QW5PYmplY3RTdHJ1Y3R1cmUo
SlNOb3RBbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDhlMmVkNjE0M2EwZWM4Yzg5NjBkZWI1ZGNmYTAyNmY4
Nzc5ODRmZjUuLjY3ZjJlZDRiYTk2Zjk1MWViZTQ4OTdhZDdiMDk1MmI5YWJlZTZmZmMgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBpbnRlcnJ1cHRlZEV4ZWN1dGlv
bkVycm9yU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiB0ZXJtaW5hdGVkRXhl
Y3V0aW9uRXJyb3JTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0YXRpY1Nj
b3BlU3RydWN0dXJlOworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RyaW5nU3RydWN0dXJl
OwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBub3RBbk9iamVjdEVycm9yU3R1YlN0cnVjdHVy
ZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbm90QW5PYmplY3RTdHJ1Y3R1cmU7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDg5YzA0MmE0ZWY0OTFm
Njc2Mjk0OWZiOTY2MDc0ZDI2OTYxZjE4YzQuLjkwM2U1NzNmYjg3ZDQxNGM4NjU0Yzk5ZmZjNmI3
ZmJjY2I1YWMzNDYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0yMDQsNiArMjA0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBw
cm90b3R5cGUpCiAKICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlID0gbmV3IChleGVjKSBGdW5j
dGlvblByb3RvdHlwZShleGVjLCB0aGlzLCBGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGpzTnVsbCgpKSk7IC8vIFRoZSByZWFsIHByb3RvdHlwZSB3aWxsIGJlIHNldCBvbmNlIE9i
amVjdFByb3RvdHlwZSBpcyBjcmVhdGVkLgogICAgIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1
Y3R1cmUgPSBQcm90b3R5cGVGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Q
cm90b3R5cGUpOworICAgIGQoKS0+aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICBO
YXRpdmVGdW5jdGlvbldyYXBwZXIqIGNhbGxGdW5jdGlvbiA9IDA7CiAgICAgTmF0aXZlRnVuY3Rp
b25XcmFwcGVyKiBhcHBseUZ1bmN0aW9uID0gMDsKICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBl
LT5hZGRGdW5jdGlvblByb3BlcnRpZXMoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgJmNhbGxGdW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGY1ZDJmYjA3YzFkYWQwODFhNTgw
ZTZjMDEwMzVhNDFmNjY3MTNkMDguLjNiOTk0MzkxMTgwMWNjY2E5OWRjOTdlMDkwZDg1MGIyNzg2
MmMxNmIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE0OCw2
ICsxNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IHJlZ0V4cFN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cmlu
Z09iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGludGVybmFs
RnVuY3Rpb25TdHJ1Y3R1cmU7CiAKICAgICAgICAgICAgIFN5bWJvbFRhYmxlIHN5bWJvbFRhYmxl
OwogICAgICAgICAgICAgdW5zaWduZWQgcHJvZmlsZUdyb3VwOwpAQCAtMjQzLDYgKzI0NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBT
dHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+bnVt
YmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBl
RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPnByb3RvdHlwZUZ1bmN0aW9u
U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIGQoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9
CiAgICAgICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgp
LT5yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPnN0cmluZ09iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcAppbmRleCAxZTIwZjdmZTJiYWQyMTc3OWUxZDYzZmY0MzQ4NTMxZTEwN2U0MTg2
Li5jZDg5ZGQyMGNlMjgzM2Q1OWI4ODFmMGJhNWQ3OTAwYjIyMDQ0YWJjIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNDUw
LDcgKzQ1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwo
RXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNl
ci50cnlMaXRlcmFsUGFyc2UoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwYXJz
ZWRPYmplY3QpOwogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKHMpKTsKKyAgICBSZWZQdHI8RXZhbEV4ZWN1
dGFibGU+IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2Uocyks
IGZhbHNlKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBldmFsLT5jb21waWxlKGV4ZWMsIHN0YXRp
Y19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+Z2xvYmFsU2NvcGVDaGFp
bigpLm5vZGUoKSk7CiAgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGVycm9yKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggY2FiYzQy
OGI1NzZhMzk1MjZiNTIxN2FiNzc1ODg1NDFkZjllOGU2Ny4uMzBlNDBlNDk0Y2Y0ZGVjZTIzNmU5
MGRiNTBhOTU4MWNiY2E0NTMzZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTQzLDYgKzQzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NF
TEwoSlNPYmplY3QpOwogCitjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3IgPSAiQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iOwor
CiBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICAvLyBBZGQgcHJvcGVydGllcyBm
cm9tIHRoZSBzdGF0aWMgaGFzaHRhYmxlcyBvZiBwcm9wZXJ0aWVzCkBAIC0xMTQsMTUgKzExNiwx
OSBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdQogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRo
aXM7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IG9iaiA9
IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5
cGUoKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkgewotICAgICAgICAgICAgcHV0
RGlyZWN0SW50ZXJuYWwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAw
LCB0cnVlLCBzbG90KTsKKyAgICAgICAgICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWwoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCB0cnVlLCBzbG90KSAmJiBzbG90
LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBK
U0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgaWYgKChtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgJiYgYXR0
cmlidXRlcyAmIFJlYWRPbmx5KQorICAgIGlmICgobV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpICYmIGF0dHJp
YnV0ZXMgJiBSZWFkT25seSkgeworICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1cm47CisgICAgfQog
CiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpczsgOyBvYmogPSBhc09iamVjdChwcm90b3R5
cGUpKSB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3QocHJvcGVydHlO
YW1lKSkgewpAQCAtMTUxLDcgKzE1Nyw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1CiAgICAg
ICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBwdXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9i
YWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUsIHNsb3QpOworICAgIGlmICgh
cHV0RGlyZWN0SW50ZXJuYWwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCAwLCB0cnVlLCBzbG90KSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAg
IHJldHVybjsKIH0KIApAQCAtNDg5LDYgKzQ5NiwxMSBAQCBKU09iamVjdCogSlNPYmplY3Q6OnRv
VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdAogICAgIHJldHVybiBjb25zdF9jYXN0PEpTT2Jq
ZWN0Kj4odGhpcyk7CiB9CiAKK0pTVmFsdWUgSlNPYmplY3Q6OnRvU3RyaWN0VGhpc09iamVjdChF
eGVjU3RhdGUqKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhp
cyk7Cit9CisKIEpTT2JqZWN0KiBKU09iamVjdDo6dW53cmFwcGVkT2JqZWN0KCkKIHsKICAgICBy
ZXR1cm4gdGhpczsKQEAgLTcwMiw0ICs3MTQsOSBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZQog
ICAgIHJldHVybiB0cnVlOwogfQogCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtZXNzYWdlKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDQyMDE3MDMxNjI1NmZlYzk2
MTA5MzIwMGE2ZGE3ZTNiYjZhOGE3ZDcuLmRhOTVmMDdkNDRlMGQ5NDFlYjNiZjlkMDA3OWEzZWEx
NTk4NWU3ODkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTU1LDYgKzU1LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIHN0cnVjdCBIYXNoVGFi
bGU7CiAKKyAgICBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0
cmluZyYpOworICAgIGV4dGVybiBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3I7CisKICAgICAvLyBFQ01BIDI2Mi0zIDguNi4xCiAgICAgLy8gUHJvcGVydHkg
YXR0cmlidXRlcwogICAgIGVudW0gQXR0cmlidXRlIHsKQEAgLTE0MCw2ICsxNDMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRl
KikgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNT
dGF0ZSopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB1bndyYXBwZWRP
YmplY3QoKTsKIAogICAgICAgICBib29sIGdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lm
aWNGdW5jdGlvbikgY29uc3Q7CkBAIC0xNzUsOSArMTc5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuICFtX3N0cnVjdHVyZS0+
aXNFbXB0eSgpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsg
cmV0dXJuIG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIAotICAg
ICAgICB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9u
bHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0KGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9
IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBib29sIHB1dERp
cmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogCiAgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7
CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHks
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CkBAIC0yMDUsNiArMjA5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGlvbk9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc05vdEFuT2JqZWN0
RXJyb3JTdHViKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IGlzU3RyaWN0TW9kZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAg
ICB2aXJ0dWFsIENvbXBsVHlwZSBleGNlcHRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gVGhyb3c7
IH0KIApAQCAtMjY1LDggKzI3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KCZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRd
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKik7Ci0gICAgICAg
IHZvaWQgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVh
ZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50
ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlND
ZWxsKik7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRy
LCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CiAgICAgICAgIHZv
aWQgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CiAKICAgICAgICAg
Ym9vbCBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTQ1MCw3ICs0NTUsNyBAQCBpbmxp
bmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lKSBjb25zdAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1pbmxpbmUgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9u
bHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uKQoraW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVj
a1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlv
bikKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkg
fHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CkBAIC00NjUsNyArNDcw
LDggQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGVj
aWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVjaWZpY0Z1bmN0
aW9uKSkKICAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1
bmN0aW9uKHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoY2hlY2tSZWFkT25seSAmJiBj
dXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgICAgIHB1dERpcmVjdE9mZnNl
dChvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSBvYmpl
Y3RzIHN0cnVjdHVyZSBvbmx5IGhhcyBhIHNwZWNpZmljIHZhbHVlIHNldCBpZiBwcmV2aW91c2x5
IHRoZXJlCiAgICAgICAgICAgICAvLyBoYWQgYmVlbiBvbmUgc2V0LCBhbmQgaWYgdGhlIG5ldyB2
YWx1ZSBiZWluZyBzcGVjaWZpZWQgaXMgdGhlIHNhbWUgKG90aGVyd2lzZSB3ZSB3b3VsZApAQCAt
NDc1LDcgKzQ4MSw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIC8vIElm
IHRoZXJlIHdhcyBwcmV2aW91c2x5IGEgdmFsdWUsIGFuZCB0aGUgbmV3IHZhbHVlIGlzIHRoZSBz
YW1lLCB0aGVuIHdlIGNhbm5vdCBjYWNoZS4KICAgICAgICAgICAgIGlmICghY3VycmVudFNwZWNp
ZmljRnVuY3Rpb24gfHwgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rp
b24pKQogICAgICAgICAgICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZz
ZXQpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAogICAgICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CkBAIC00ODgsNyArNDk0LDcgQEAgaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZQogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxs
IGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCiAgICAgICAgICAgICBzbG90
LnNldE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2l6ZV90IG9mZnNldDsKQEAgLTUwNCw3ICs1MTAs
NyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90
IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikK
ICAgICAgICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0KTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBjdXJy
ZW50QXR0cmlidXRlczsKQEAgLTUxMiw3ICs1MTgsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
CiAgICAgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRy
aWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6
Om5vdEZvdW5kKSB7CiAgICAgICAgIGlmIChjaGVja1JlYWRPbmx5ICYmIGN1cnJlbnRBdHRyaWJ1
dGVzICYgUmVhZE9ubHkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgLy8gVGhlcmUgYXJlIHRocmVlIHBvc3NpYmlsaXRpZXMgaGVyZToK
ICAgICAgICAgLy8gICgxKSBUaGVyZSBpcyBhbiBleGlzdGluZyBzcGVjaWZpYyB2YWx1ZSBzZXQs
IGFuZCB3ZSdyZSBvdmVyd3JpdGluZyB3aXRoICp0aGUgc2FtZSB2YWx1ZSouCkBAIC01MjcsNyAr
NTMzLDcgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgLy8gY2FzZSAoMSkg
RG8gdGhlIHB1dCwgdGhlbiByZXR1cm4gbGVhdmluZyB0aGUgc2xvdCB1bmNhY2hhYmxlLgogICAg
ICAgICAgICAgaWYgKHNwZWNpZmljRnVuY3Rpb24gPT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24p
IHsKICAgICAgICAgICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgLy8gY2FzZSAoMikgRGVzcGVjaWZ5LCBmYWxsIHRocm91Z2gg
dG8gKDMpLgogICAgICAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVu
Y3Rpb25UcmFuc2l0aW9uKG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKTsKQEAgLTUzNiw3ICs1
NDIsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIC8vIGNhc2UgKDMpIHNldCB0
aGUgc2xvdCwgZG8gdGhlIHB1dCwgcmV0dXJuLgogICAgICAgICBzbG90LnNldEV4aXN0aW5nUHJv
cGVydHkodGhpcywgb2Zmc2V0KTsKICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFs
dWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAg
IC8vIElmIHdlIGhhdmUgYSBzcGVjaWZpYyBmdW5jdGlvbiwgd2UgbWF5IGhhdmUgZ290IHRvIHRo
aXMgcG9pbnQgaWYgdGhlcmUgaXMKQEAgLTU2MSwxNCArNTY3LDE1IEBAIGlubGluZSB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUKICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRl
LgogICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0
eSh0aGlzLCBvZmZzZXQpOworICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVh
cDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKLSAgICBwdXREaXJlY3RJbnRl
cm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90
LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CisgICAgcmV0dXJuIHB1dERpcmVj
dEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHks
IHNsb3QsIGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKIH0KIAogaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQpAQCAtNTc3LDEyICs1ODQsMTIgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkK
ICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBm
YWxzZSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCi1pbmxp
bmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogCi0gICAgcHV0RGlyZWN0SW50
ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xv
dCwgMCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIDApOwogfQogCiBpbmxpbmUgdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKQEAgLTU5MSw5ICs1OTgsOSBAQCBpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdQogICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFs
dWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCAwKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2
YWx1ZSwgMCwgZmFsc2UsIHNsb3QsIDApOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChw
cm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBmYWxzZSwgc2xvdCwgMCk7CiB9CiAKIGlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25s
eSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtNjk4LDEwICs3MDUsMTEgQEAgaW5saW5lIHZv
aWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHUKICAgICBhc0NlbGwoKS0+cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwogfQogCi1pbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXREaXJlY3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXREaXJlY3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQoaXNDZWxsKCkgJiYgaXNPYmplY3Qo
KSk7Ci0gICAgYXNPYmplY3QoYXNDZWxsKCkpLT5wdXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CisgICAgaWYgKCFhc09iamVjdChhc0NlbGwoKSktPnB1dERpcmVjdChwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwog
fQogCiBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCkBAIC03NTYsNiArNzY0LDEzIEBAIGlubGluZSBK
U1N0cmluZyogSlNWYWx1ZTo6dG9UaGlzSlNTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAog
ICAgIHJldHVybiBpc1N0cmluZygpID8gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSkg
OiBqc1N0cmluZyhleGVjLCB0b1RoaXNPYmplY3QoZXhlYyktPnRvU3RyaW5nKGV4ZWMpKTsKIH0K
IAoraW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKK3sKKyAgICBpZiAoIWlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICByZXR1cm4gYXNPYmplY3QoYXNDZWxsKCkpLT50b1N0cmljdFRoaXNPYmplY3QoZXhl
Yyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNPYmplY3RfaApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcCBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKaW5kZXggYWQx
MDIxODA5Mzg2ZjY5NWU3ZTIyNTM4YWEzZWRmMzY1OTgzODRkMy4uN2FiMWQxYzEwNzQ0ZjUwM2Jm
YTgxZDE3OWE3YjNmNGIzZGIwNjQ0MyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RhdGljU2NvcGVPYmplY3QuY3BwCkBAIC00Miw2ICs0MiwxMSBAQCBKU09iamVjdCogSlNTdGF0
aWNTY29wZU9iamVjdDo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBy
ZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKK0pTVmFsdWUgSlNTdGF0aWNTY29w
ZU9iamVjdDo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgcmV0
dXJuIGpzTnVsbCgpOworfQorCiB2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpCiB7CiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0KHByb3BlcnR5TmFtZSwgdmFs
dWUpKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAppbmRl
eCBjMDUxOWMxZmM2MDQ0ZmY0MWMwYzcyMmNjNGE3ZTc3OGQ4Y2JlY2M1Li5lNjkzNTZhMzI1ZTZm
YzAyY2U4MDM0NTk2NDEzYzFlOGU2NmNlYTUyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RhdGljU2NvcGVPYmplY3QuaApAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3BhY2UgSlNDewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogICAgICAgICBi
b29sIGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogICAgICAgICB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmgKaW5kZXggYjU4MzRjMTk2NjBjOWY5ZTBiMWY3NzQ4NGNhNWFkMmM5MTUyNDQ3
OS4uZjc3NjE1NzNkZTkxZjQxMDc3ZDkzMjkxNTdjYzg3OGI1OGQ4MWY5ZSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmgKQEAgLTE5Myw2ICsxOTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBib29sIG5lZWRzVGhpc0NvbnZlcnNpb24oKSBjb25zdDsKICAgICAgICAgSlNPYmplY3Qq
IHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNWYWx1ZSB0b1N0cmlj
dFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFVTdHJpbmcgdG9UaGlzU3Ry
aW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU1N0cmluZyogdG9UaGlzSlNTdHJpbmco
RXhlY1N0YXRlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNab21iaWUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAppbmRleCA3MTFm
NjczMmJjY2VhZWI4MWMwZTA3NzcwYzIzNGQyNzIwMTUwZjU0Li5kYTQ1Njk5Yjk2MTU3NDZmNjUx
M2VkZjQ3NzIxNjRkZmNiZmVhMzNmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTWm9tYmllLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCkBAIC02
MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1
bnNpZ25lZCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0IHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhp
c09iamVjdChFeGVjU3RhdGUqKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
SlNWYWx1ZSgpOyB9CiAgICAgdmlydHVhbCBKU1ZhbHVlIGdldEpTTnVtYmVyKCkgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIGpzTnVsbCgpOyB9CiAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90
JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90
JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAppbmRleCBlYjhlYThhOTk0MmY3YWFmMWNiODAwM2M5
MmNlZDc2YmI0ZGQzY2JmLi40YjBiMzk0OGZiYjI5ZjA4MmEzMTYyMWQ2NjVkMzVjM2RjMjZmNzE3
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKQEAgLTM4LDkgKzM4
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBUeXBlIHsg
VW5jYWNoYWJsZSwgRXhpc3RpbmdQcm9wZXJ0eSwgTmV3UHJvcGVydHkgfTsKIAotICAgICAgICBQ
dXRQcm9wZXJ0eVNsb3QoKQorICAgICAgICBQdXRQcm9wZXJ0eVNsb3QoYm9vbCBpc1N0cmljdE1v
ZGUgPSBmYWxzZSkKICAgICAgICAgICAgIDogbV90eXBlKFVuY2FjaGFibGUpCiAgICAgICAgICAg
ICAsIG1fYmFzZSgwKQorICAgICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC02MSw2ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICAgICAg
SlNPYmplY3QqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KIAorICAgICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAg
IGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsg
fQogICAgICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgewogICAgICAgICAgICAgQVNT
RVJUKGlzQ2FjaGVhYmxlKCkpOwpAQCAtNzAsNiArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVHlwZSBtX3R5cGU7CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7CiAgICAgICAgIHNp
emVfdCBtX29mZnNldDsKKyAgICAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJiMDEzYjczZTI1YTEwNDI2NTA0MjVkZWQ4ZWUx
MjExZTZmOTM1NgotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK1N0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlv
bihFeGVjU3RhdGUqIGV4ZWMpCisgICAgOiBKU09iamVjdChleGVjLT5nbG9iYWxEYXRhKCkuc3Ry
aWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpCit7Cit9CisKK2Jvb2wgU3RyaWN0RXZhbEFjdGl2
YXRpb246OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKworSlNPYmplY3QqIFN0cmljdEV2YWxBY3RpdmF0aW9uOjp0
b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBleGVjLT5n
bG9iYWxUaGlzVmFsdWUoKTsKK30KKworSlNWYWx1ZSBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6dG9T
dHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIGpzTnVsbCgp
OworfQorCit9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmRiODQyOTU1MTI5ZDU1NGNhMzE0NGYyNzg0OTViNjc0NjhhZDczMAot
LS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2
YXRpb24uaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJpY3RFdmFs
QWN0aXZhdGlvbl9oCisjZGVmaW5lIFN0cmljdEV2YWxBY3RpdmF0aW9uX2gKKworI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTdHJpY3RFdmFsQWN0aXZh
dGlvbiA6IHB1YmxpYyBKU09iamVjdCB7CitwdWJsaWM6CisgICAgU3RyaWN0RXZhbEFjdGl2YXRp
b24oRXhlY1N0YXRlKik7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmpl
Y3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09i
amVjdChFeGVjU3RhdGUqKSBjb25zdDsKK307CisKK30KKworI2VuZGlmIC8vIFN0cmljdEV2YWxB
Y3RpdmF0aW9uX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBhZTJiMzk1OTBiYTZmNjI2NGI4ZWFkMmI1OGVhOTJkOWNjMDgz
YWYzLi5lNWE3Y2I0NzM3OTA3Y2EyZWYwMDE3MmNmYWI3MWI5NGRmZjgzMGFkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTAtMTAtMDEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRVM1XSBJ
bXBsZW1lbnQgc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNzAxCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBtYW55IGRpZmZlcmVu
dCBiZWhhdmlvdXJzIHdlIGdldCBpbiBzdHJpY3QgbW9kZS4KKworICAgICAgICAqIGZhc3QvanMv
YmFzaWMtc3RyaWN0LW1vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L2Jhc2ljLXN0cmljdC1tb2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0
LXRlc3RzL2Jhc2ljLXN0cmljdC1tb2RlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RUaGlzKToK
KyAgICAgICAgKHRlc3RHbG9iYWxBY2Nlc3MpOgorCiAyMDEwLTA5LTMwICBaaGVueWFvIE1vICA8
em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9kZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXN0cmljdC1tb2RlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43YmU4ZWEyZTgxNzZjZGQyM2I5MmRhYTBhM2YzMTVmYWVhNTg3N2UzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9kZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw5OSBAQAorVGVzdCBiZWhhdmlvdXIgb2Ygc3RyaWN0IG1v
ZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdFRoaXMuY2FsbChu
dWxsKSBpcyBudWxsCitQQVNTIHRlc3RUaGlzLmNhbGwoMSkgaXMgMQorUEFTUyB0ZXN0VGhpcy5j
YWxsKHRydWUpIGlzIHRydWUKK1BBU1MgdGVzdFRoaXMuY2FsbChmYWxzZSkgaXMgZmFsc2UKK1BB
U1MgdGVzdFRoaXMuY2FsbCh1bmRlZmluZWQpIGlzIHVuZGVmaW5lZAorUEFTUyB0ZXN0VGhpcy5j
YWxsKCdhIHN0cmluZycpIGlzICdhIHN0cmluZycKK1BBU1MgdGVzdEdsb2JhbEFjY2VzcygpIGlz
IG51bGwKK1BBU1MgKGZ1bmN0aW9uIGV2YWwoKXsndXNlIHN0cmljdCc7fSkgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uIChldmFsKXsndXNl
IHN0cmljdCc7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BB
U1MgKGZ1bmN0aW9uIGFyZ3VtZW50cygpeyd1c2Ugc3RyaWN0Jzt9KSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKGFyZ3VtZW50cyl7J3Vz
ZSBzdHJpY3QnO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQ
QVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHZhciBldmFsO30pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmlj
dCc7IHZhciBhcmd1bWVudHM7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBl
cnJvci4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgdHJ5e31jYXRjaChldmFsKXt9
fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0
aW9uICgpeyd1c2Ugc3RyaWN0JzsgdHJ5e31jYXRjaChhcmd1bWVudHMpe319KSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKGEsIGEpeyd1
c2Ugc3RyaWN0Jzt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgor
UEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgZGVsZXRlIGE7fSkoKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBz
dHJpY3QnOyB2YXIgYTsgZGVsZXRlIGE7fSkoKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKCl7dmFyIGE7IGZ1bmN0aW9uIGYoKSB7J3Vz
ZSBzdHJpY3QnOyBkZWxldGUgYTt9IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQ
YXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0Jzsgd2l0aCgxKXt9O30p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlv
biAoKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50cy5jYWxsZWU7IH0pKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVW5hYmxlIHRvIGFjY2VzcyBjYWxsZWUgb2Ygc3RyaWN0IG1vZGUgZnVuY3Rp
b24uCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50cy5jYWxsZXI7IH0p
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVW5hYmxlIHRvIGFjY2VzcyBjYWxsZXIgb2Yg
c3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTIChmdW5jdGlvbiBmKCl7J3VzZSBzdHJpY3QnOyBm
LmFyZ3VtZW50czsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW4ndCBhY2Nlc3Mg
YXJndW1lbnRzIG9iamVjdCBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rp
b24gZigpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQ2Fubm90IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkgb2YgYSBzdHJpY3QgbW9kZSBmdW5j
dGlvbi4KK1BBU1MgKGZ1bmN0aW9uIGYoKXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzPTU7IH0p
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IGFjY2VzcyBhcmd1bWVudHMgcHJv
cGVydHkgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIGYoKXsndXNl
IHN0cmljdCc7IGYuY2FsbGVyPTU7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fu
bm90IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BB
U1MgKGZ1bmN0aW9uIChhcmcpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzLmNhbGxlZTsgfSkoKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBVbmFibGUgdG8gYWNjZXNzIGNhbGxlZSBvZiBzdHJp
Y3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIChhcmcpeyd1c2Ugc3RyaWN0JzsgYXJn
dW1lbnRzLmNhbGxlcjsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBVbmFibGUgdG8g
YWNjZXNzIGNhbGxlciBvZiBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIGYo
YXJnKXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzOyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IENhbid0IGFjY2VzcyBhcmd1bWVudHMgb2JqZWN0IG9mIGEgc3RyaWN0IG1vZGUgZnVu
Y3Rpb24uCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyBmLmNhbGxlcjsgfSko
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3QgYWNjZXNzIGNhbGxlciBwcm9wZXJ0
eSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ug
c3RyaWN0JzsgZi5hcmd1bWVudHM9NTsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBD
YW5ub3QgYWNjZXNzIGFyZ3VtZW50cyBwcm9wZXJ0eSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9u
LgorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI9NTsgfSkoKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3QgYWNjZXNzIGNhbGxlciBwcm9wZXJ0eSBv
ZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAndXNlIHN0cmljdCc7IChmdW5jdGlvbiAo
KXt3aXRoKDEpe307fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4K
K1BBU1MgJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7dmFyIGE7IGRlbGV0ZSBhO30pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0Jzsg
dmFyIGE7IChmdW5jdGlvbiAoKXsgZGVsZXRlIGE7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgdmFyIGE7IChmdW5jdGlvbiAoKXsgJ3VzZSBzdHJpY3Qn
OyBkZWxldGUgYTt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgor
UEFTUyAnbWlzYyBkaXJlY3RpdmUnOyAndXNlIHN0cmljdCc7IHdpdGgoe30pe30gdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyByZXR1
cm4gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIHJldHVybiBzdGF0ZW1lbnQu
LgorUEFTUyAndXNlIHN0cmljdCc7IGJyZWFrIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
UGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgY29udGludWUgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBmb3IoOzspcmV0
dXJuIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSW52YWxpZCByZXR1cm4gc3RhdGVtZW50
Li4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBmb3IoOzspYnJlYWsgbWlzc2luZ0xhYmVsIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgZm9y
KDs7KWNvbnRpbnVlIG1pc3NpbmdMYWJlbCB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBh
cnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IDAwNzsgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyAnXDAwNyc7IHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICdcMDA3JzsgJ3VzZSBzdHJp
Y3QnOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNl
IHN0cmljdCc7IChmdW5jdGlvbiAoKXsgZGVsZXRlIHNvbWVEZWNsYXJlZEdsb2JhbDt9KSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKCl7
ICd1c2Ugc3RyaWN0JzsgZGVsZXRlIHNvbWVEZWNsYXJlZEdsb2JhbDt9KSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IHNvbWVHbG9i
YWwgPSAnU2hvdWxkblwndCBiZSBhYmxlIHRvIGFzc2lnbiB0aGlzLic7IHNvbWVHbG9iYWw7IHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0
JzsgZXZhbCgndmFyIGludHJvZHVjZWRWYXJpYWJsZSA9ICJGQUlMOiB2YXJpYWJsZSBpbnRyb2R1
Y2VkIGludG8gY29udGFpbmluZyBzY29wZSI7Jyk7IGludHJvZHVjZWRWYXJpYWJsZSB0aHJldyBl
eGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGludHJvZHVjZWRW
YXJpYWJsZS4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBvYmplY3RXaXRoUmVhZG9ubHlQcm9wZXJ0eS5w
cm9wID0gJ2ZhaWwnIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3Np
Z24gdG8gcmVhZG9ubHkgcHJvcGVydHkuLgorUEFTUyAndXNlIHN0cmljdCc7IGRlbGV0ZSBvYmpl
Y3RXaXRoUmVhZG9ubHlQcm9wZXJ0eS5wcm9wIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVu
YWJsZSB0byBkZWxldGUgcHJvcGVydHkuLgorUEFTUyAndXNlIHN0cmljdCc7ICsrZXZhbCB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7
IGV2YWwrKyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAn
dXNlIHN0cmljdCc7IC0tZXZhbCB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVy
cm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGV2YWwtLSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGlmICgwKSBkZWxldGUgK2EuYiB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmlj
dCc7IGlmICgwKSBkZWxldGUgKythLmIgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJz
ZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBpZiAoMCkgZGVsZXRlIHZvaWQgYS5iIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoYSl7
J3VzZSBzdHJpY3QnOyBhID0gZmFsc2U7IHJldHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0pKHRy
dWUpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50c1sw
XSA9IGZhbHNlOyByZXR1cm4gYSAhPT0gYXJndW1lbnRzWzBdOyB9KSh0cnVlKSBpcyB0cnVlCitQ
QVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhPWZhbHNlOyByZXR1cm4gYXJndW1lbnRz
OyB9KSh0cnVlKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBh
cmd1bWVudHNbMF09ZmFsc2U7IHJldHVybiBhOyB9KSh0cnVlKSBpcyB0cnVlCitQQVNTIChmdW5j
dGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50
czsgfSkoZmFsc2UpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0Jzsg
IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KShmYWxzZSlbMF0gaXMgdHJ1
ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPXRydWU7IGE9
ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24g
KGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPWZhbHNlOyBhPXRydWU7IHJldHVybiBhOyB9
KSgpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50c1sw
XT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9u
ICgpeyd1c2Ugc3RyaWN0JzsgIGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9
KSgpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2Nh
bDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGEgPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3Vt
ZW50c1swXTsgfSkodHJ1ZSkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0
JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdID0gZmFs
c2U7IHJldHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0pKHRydWUpIGlzIHRydWUKK1BBU1MgKGZ1
bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30p
KCk7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKHRydWUpWzBdIGlzIHRydWUKK1BBU1Mg
KGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2Fs
O30pKCk7IGFyZ3VtZW50c1swXT1mYWxzZTsgcmV0dXJuIGE7IH0pKHRydWUpIGlzIHRydWUKK1BB
U1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xv
Y2FsO30pKCk7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KShmYWxzZSlb
MF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgdmFyIGxvY2FsOyAo
ZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVu
dHM7IH0pKGZhbHNlKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3Qn
OyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsg
YT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlv
biAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBh
cmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoKVswXSBpcyB0cnVlCitQQVNT
IChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2Nh
bDt9KSgpOyBhcmd1bWVudHNbMF09ZmFsc2U7IGE9dHJ1ZTsgcmV0dXJuIGE7IH0pKCkgaXMgdHJ1
ZQorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgdmFyIGxvY2FsOyAoZnVuY3Rpb24g
KCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClb
MF0gaXMgdHJ1ZQorUEFTUyAndXNlIHN0cmljdCc7IChmdW5jdGlvbiAoKXt2YXIgYSA9IHRydWU7
IGV2YWwoJ3ZhciBhID0gZmFsc2UnKTsgcmV0dXJuIGE7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVu
Y3Rpb24gKCl7dmFyIGEgPSB0cnVlOyBldmFsKCcidXNlIHN0cmljdCI7IHZhciBhID0gZmFsc2Un
KTsgcmV0dXJuIGE7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3Ry
aWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZiwgJ2FyZ3VtZW50
cycpLnZhbHVlOyB9KSgpIGlzIHVuZGVmaW5lZC4KK1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNl
IHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYsICdjYWxs
ZXInKS52YWx1ZTsgfSkoKSBpcyB1bmRlZmluZWQuCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3Vz
ZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVu
dHMsICdjYWxsZWUnKS52YWx1ZTsgfSkoKSBpcyB1bmRlZmluZWQuCitQQVNTIChmdW5jdGlvbiBm
KGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihhcmd1bWVudHMsICdjYWxsZXInKS52YWx1ZTsgfSkoKSBpcyB1bmRlZmluZWQuCitQQVNTIChm
dW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVyJyk7IHJldHVybiBkZXNjcmlw
dG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24g
Zihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlZScpOyByZXR1cm4gZGVzY3JpcHRvci5nZXQg
PT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsn
dXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihmLCAnY2FsbGVyJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5z
ZXQ7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFy
IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYsICdhcmd1bWVu
dHMnKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSBpcyB0
cnVlCitQQVNTICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uIGYoKSB7IGZvcih2YXIgaSBpbiB0aGlz
KTsgfSkoKTsgdHJ1ZTsgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMt
c3RyaWN0LW1vZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc3RyaWN0LW1vZGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZTc3MWRmMDEzODUyMGRiMDhlOWE0OGNiNjU0Y2QzYmU4ZTE3MWM4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9k
ZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1v
ZGUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1zdHJpY3QtbW9k
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZjViM2NmMTBhYWUwYjI4NmMwODZmOGQwZWZhNDdiMDk4MGM5NGQx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvYmFz
aWMtc3RyaWN0LW1vZGUuanMKQEAgLTAsMCArMSwxMTMgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGJl
aGF2aW91ciBvZiBzdHJpY3QgbW9kZSIpOworCit2YXIgZ2xvYmFsVGhpc1Rlc3Q7CitmdW5jdGlv
biB0ZXN0VGhpcygpIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgcmV0dXJuIHRoaXM7Cit9Citm
dW5jdGlvbiB0ZXN0R2xvYmFsQWNjZXNzKCkgeworICAgIHJldHVybiB0ZXN0VGhpcygpOworfQor
c2hvdWxkQmUoInRlc3RUaGlzLmNhbGwobnVsbCkiLCAibnVsbCIpOworc2hvdWxkQmUoInRlc3RU
aGlzLmNhbGwoMSkiLCAiMSIpOworc2hvdWxkQmUoInRlc3RUaGlzLmNhbGwodHJ1ZSkiLCAidHJ1
ZSIpOworc2hvdWxkQmUoInRlc3RUaGlzLmNhbGwoZmFsc2UpIiwgImZhbHNlIik7CitzaG91bGRC
ZSgidGVzdFRoaXMuY2FsbCh1bmRlZmluZWQpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoInRl
c3RUaGlzLmNhbGwoJ2Egc3RyaW5nJykiLCAiJ2Egc3RyaW5nJyIpOworCitzaG91bGRCZSgidGVz
dEdsb2JhbEFjY2VzcygpIiwgIm51bGwiKTsKKworc2hvdWxkVGhyb3coIihmdW5jdGlvbiBldmFs
KCl7J3VzZSBzdHJpY3QnO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIChldmFsKXsndXNl
IHN0cmljdCc7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gYXJndW1lbnRzKCl7J3VzZSBz
dHJpY3QnO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIChhcmd1bWVudHMpeyd1c2Ugc3Ry
aWN0Jzt9KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHZhciBl
dmFsO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgdmFyIGFy
Z3VtZW50czt9KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHRy
eXt9Y2F0Y2goZXZhbCl7fX0pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3Ry
aWN0JzsgdHJ5e31jYXRjaChhcmd1bWVudHMpe319KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlv
biAoYSwgYSl7J3VzZSBzdHJpY3QnO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIChhKXsn
dXNlIHN0cmljdCc7IGRlbGV0ZSBhO30pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKCl7
J3VzZSBzdHJpY3QnOyB2YXIgYTsgZGVsZXRlIGE7fSkoKSIpOworc2hvdWxkVGhyb3coIihmdW5j
dGlvbiAoKXt2YXIgYTsgZnVuY3Rpb24gZigpIHsndXNlIHN0cmljdCc7IGRlbGV0ZSBhO30gfSko
KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHdpdGgoMSl7fTt9
KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50cy5j
YWxsZWU7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyBh
cmd1bWVudHMuY2FsbGVyOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYoKXsndXNl
IHN0cmljdCc7IGYuYXJndW1lbnRzOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYo
KXsndXNlIHN0cmljdCc7IGYuY2FsbGVyOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9u
IGYoKXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzPTU7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIo
ZnVuY3Rpb24gZigpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI9NTsgfSkoKSIpOworc2hvdWxkVGhy
b3coIihmdW5jdGlvbiAoYXJnKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50cy5jYWxsZWU7IH0pKCki
KTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKGFyZyl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHMu
Y2FsbGVyOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmlj
dCc7IGYuYXJndW1lbnRzOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYoYXJnKXsn
dXNlIHN0cmljdCc7IGYuY2FsbGVyOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYo
YXJnKXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzPTU7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIo
ZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI9NTsgfSkoKSIpOworc2hvdWxk
VGhyb3coIid1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpe3dpdGgoMSl7fTt9KSIpOworc2hvdWxk
VGhyb3coIid1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpe3ZhciBhOyBkZWxldGUgYTt9KSIpOwor
c2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgdmFyIGE7IChmdW5jdGlvbiAoKXsgZGVsZXRlIGE7
fSkiKTsKK3Nob3VsZFRocm93KCJ2YXIgYTsgKGZ1bmN0aW9uICgpeyAndXNlIHN0cmljdCc7IGRl
bGV0ZSBhO30pIik7CitzaG91bGRUaHJvdygiJ21pc2MgZGlyZWN0aXZlJzsgJ3VzZSBzdHJpY3Qn
OyB3aXRoKHt9KXt9Iik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyByZXR1cm4iKTsKK3No
b3VsZFRocm93KCIndXNlIHN0cmljdCc7IGJyZWFrIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJp
Y3QnOyBjb250aW51ZSIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZm9yKDs7KXJldHVy
biIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZm9yKDs7KWJyZWFrIG1pc3NpbmdMYWJl
bCIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZm9yKDs7KWNvbnRpbnVlIG1pc3NpbmdM
YWJlbCIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgMDA3OyIpOworc2hvdWxkVGhyb3co
Iid1c2Ugc3RyaWN0JzsgJ1xcMDA3JzsiKTsKK3Nob3VsZFRocm93KCInXFwwMDcnOyAndXNlIHN0
cmljdCc7Iik7CisKK3ZhciBzb21lRGVjbGFyZWRHbG9iYWw7CitzaG91bGRUaHJvdygiJ3VzZSBz
dHJpY3QnOyAoZnVuY3Rpb24gKCl7IGRlbGV0ZSBzb21lRGVjbGFyZWRHbG9iYWw7fSkiKTsKK3No
b3VsZFRocm93KCIoZnVuY3Rpb24gKCl7ICd1c2Ugc3RyaWN0JzsgZGVsZXRlIHNvbWVEZWNsYXJl
ZEdsb2JhbDt9KSIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0Jzsgc29tZUdsb2JhbCA9ICdT
aG91bGRuXFwndCBiZSBhYmxlIHRvIGFzc2lnbiB0aGlzLic7IHNvbWVHbG9iYWw7Iik7CitzaG91
bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBldmFsKCd2YXIgaW50cm9kdWNlZFZhcmlhYmxlID0gXCJG
QUlMOiB2YXJpYWJsZSBpbnRyb2R1Y2VkIGludG8gY29udGFpbmluZyBzY29wZVwiOycpOyBpbnRy
b2R1Y2VkVmFyaWFibGUiKTsKK3ZhciBvYmplY3RXaXRoUmVhZG9ubHlQcm9wZXJ0eSA9IHt9Owor
T2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5LCAicHJvcCIs
IHt2YWx1ZTogInZhbHVlIiwgd3JpdGFibGU6ZmFsc2V9KTsKK3Nob3VsZFRocm93KCIndXNlIHN0
cmljdCc7IG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5LnByb3AgPSAnZmFpbCciKTsKK3Nob3Vs
ZFRocm93KCIndXNlIHN0cmljdCc7IGRlbGV0ZSBvYmplY3RXaXRoUmVhZG9ubHlQcm9wZXJ0eS5w
cm9wIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyArK2V2YWwiKTsKK3Nob3VsZFRocm93
KCIndXNlIHN0cmljdCc7IGV2YWwrKyIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgLS1l
dmFsIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBldmFsLS0iKTsKK3Nob3VsZFRocm93
KCIndXNlIHN0cmljdCc7IGlmICgwKSBkZWxldGUgK2EuYiIpOworc2hvdWxkVGhyb3coIid1c2Ug
c3RyaWN0JzsgaWYgKDApIGRlbGV0ZSArK2EuYiIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0
JzsgaWYgKDApIGRlbGV0ZSB2b2lkIGEuYiIpOworCitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAo
YSl7J3VzZSBzdHJpY3QnOyBhID0gZmFsc2U7IHJldHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0p
KHRydWUpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1
bWVudHNbMF0gPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsgfSkodHJ1ZSkiKTsK
K3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGE9ZmFsc2U7IHJldHVy
biBhcmd1bWVudHM7IH0pKHRydWUpWzBdIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7
J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09ZmFsc2U7IHJldHVybiBhOyB9KSh0cnVlKSIpOwor
c2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPXRy
dWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVu
Y3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVu
dHM7IH0pKGZhbHNlKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3Ry
aWN0JzsgYXJndW1lbnRzWzBdPXRydWU7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKClb
MF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50
c1swXT1mYWxzZTsgYT10cnVlOyByZXR1cm4gYTsgfSkoKSIpOworc2hvdWxkQmVUcnVlKCIoZnVu
Y3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVu
dHM7IH0pKClbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0Jzsg
IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIik7CisKKy8vIFNh
bWUgdGVzdHMgYWdhaW4sIHRoaXMgdGltZSBmb3JjaW5nIGFuIGFjdGl2YXRpb24gdG8gYmUgY3Jl
YXRlZCBhcyB3ZWxsCitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2
YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhID0gZmFsc2U7IHJldHVybiBhICE9
PSBhcmd1bWVudHNbMF07IH0pKHRydWUpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7
J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVu
dHNbMF0gPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsgfSkodHJ1ZSkiKTsKK3No
b3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0
aW9uICgpe2xvY2FsO30pKCk7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKHRydWUpWzBd
Iik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7
IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09ZmFsc2U7IHJldHVybiBhOyB9
KSh0cnVlKSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFy
IGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVy
biBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKCl7
J3VzZSBzdHJpY3QnOyAgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1l
bnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSIpOworc2hvdWxkQmVU
cnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7
bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7
IH0pKClbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZh
ciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1
cm4gYXJndW1lbnRzOyB9KSgpWzBdIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3Vz
ZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNb
MF09ZmFsc2U7IGE9dHJ1ZTsgcmV0dXJuIGE7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0
aW9uICgpeyd1c2Ugc3RyaWN0JzsgIHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7
IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIik7CisKK3Nob3Vs
ZEJlVHJ1ZSgiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7dmFyIGEgPSB0cnVlOyBldmFsKCd2
YXIgYSA9IGZhbHNlJyk7IHJldHVybiBhOyB9KSgpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlv
biAoKXt2YXIgYSA9IHRydWU7IGV2YWwoJ1widXNlIHN0cmljdFwiOyB2YXIgYSA9IGZhbHNlJyk7
IHJldHVybiBhOyB9KSgpIik7CisKK3Nob3VsZEJlVW5kZWZpbmVkKCIoZnVuY3Rpb24gZihhcmcp
eyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZiwg
J2FyZ3VtZW50cycpLnZhbHVlOyB9KSgpIik7CitzaG91bGRCZVVuZGVmaW5lZCgiKGZ1bmN0aW9u
IGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGYsICdjYWxsZXInKS52YWx1ZTsgfSkoKSIpOworc2hvdWxkQmVVbmRlZmluZWQoIihmdW5j
dGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihhcmd1bWVudHMsICdjYWxsZWUnKS52YWx1ZTsgfSkoKSIpOworc2hvdWxkQmVVbmRl
ZmluZWQoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZXInKS52YWx1ZTsgfSkoKSIpOwor
c2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0
b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlcicp
OyByZXR1cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIik7CitzaG91
bGRCZVRydWUoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVlJyk7IHJl
dHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKK3Nob3VsZEJl
VHJ1ZSgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmLCAnY2FsbGVyJyk7IHJldHVybiBkZXNjcmlw
dG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0
aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihmLCAnYXJndW1lbnRzJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9
PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3VzZSBzdHJpY3QnOyAo
ZnVuY3Rpb24gZigpIHsgZm9yKHZhciBpIGluIHRoaXMpOyB9KSgpOyB0cnVlOyIpCisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZmI5ZWJjZTMwMzlmNzdmYjYxMTcxMTI0ZWRiOWYz
YTY1NjY0Y2FmLi5iNzdlNmYyZDk4MmY2OWRhYTZjYmNmYmZmOTU0NmI5NDBkOGNkMGRhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIwIEBACisyMDEwLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VTNV0gSW1w
bGVtZW50IHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDcwMQorCisgICAgICAgIFRlc3Q6IGZhc3QvanMvYmFzaWMtc3RyaWN0LW1v
ZGUuaHRtbAorCisgICAgICAgIE92ZXJyaWRlIHRvU3RyaWN0VGhpc09iamVjdCBvbiB0aGUgZG9t
d2luZG93IHNvIHRoYXQKKyAgICAgICAgaXQgY29ycmVjdGx5IHByb3ZpZGVzIHRoZSBzaGVsbCBv
YmplY3Qgd2hlbiB1c2VkIGFzIHRoaXMKKyAgICAgICAgaW4gYSBzdHJpY3QgbW9kZSBmdW5jdGlv
bi4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisKIDIwMTAtMDktMzAgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3Nl
bGwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggODJhYzFjZWUy
NTFmNjA4OTMzN2FjMjA4NTNhODZlM2EyMjcwYTNkNy4uMjg3MmE1NDljNWE0NTE1YjY2YTEyZDA4
NjQwNTY5NWRhYzZkZGM5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cApAQCAtMTQ2LDYgKzE0NiwxMSBAQCBKU09iamVjdCogSlNET01XaW5kb3dCYXNlOjp0b1RoaXNP
YmplY3QoRXhlY1N0YXRlKikgY29uc3QKICAgICByZXR1cm4gc2hlbGwoKTsKIH0KIAorSlNWYWx1
ZSBKU0RPTVdpbmRvd0Jhc2U6OnRvU3RyaWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdAor
eworICAgIHJldHVybiBzaGVsbCgpOworfQorCiBKU0RPTVdpbmRvd1NoZWxsKiBKU0RPTVdpbmRv
d0Jhc2U6OnNoZWxsKCkgY29uc3QKIHsKICAgICByZXR1cm4gZCgpLT5zaGVsbDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCmluZGV4IGY0ZjFlZjllZWEwMTY2OTMyZWNhOTU1ZWNk
MDliYTZkMTI5Njg2ZjguLmNhZmNhNzNhYzkzZGYwMGM4YzczZjU1MDc1YjQzZTU5ZmNlZmNmNjYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNjksOCArNjksOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gRG9uJ3QgY2FsbCB0aGlzIHZlcnNpb24g
b2YgYWxsb3dzQWNjZXNzRnJvbSAtLSBpdCdzIGEgc2xpZ2h0bHkgaW5jb3JyZWN0IGltcGxlbWVu
dGF0aW9uIHVzZWQgb25seSBieSBXZWJTY3JpcHRPYmplY3QKICAgICAgICAgdmlydHVhbCBib29s
IGFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotCisg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHRvVGhpc09iamVjdChKU0M6
OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSB0b1N0cmlj
dFRoaXNPYmplY3QoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNET01XaW5kb3dT
aGVsbCogc2hlbGwoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNDOjpKU0dsb2JhbERhdGEq
IGNvbW1vbkpTR2xvYmFsRGF0YSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69578</attachid>
            <date>2010-10-02 12:31:47 -0700</date>
            <delta_ts>2010-10-09 17:10:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-10701-20101002123145.patch</filename>
            <type>text/plain</type>
            <size>200215</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODljOWVmMWQ0NWM2ZjcyZTEzZTI1MjA3NGI3ZDcxNWY1
NDhlNGMwZC4uN2M5MGExODdjMDgxZWFjYjI3ZGM3YmViZWFjMmQ4OTI5ZTk5Njc1MyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE1Nyw2ICsxNTcsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIHJ1bnRpbWUvUm9wZUltcGwuY3BwCiAgICAgcnVudGltZS9TY29wZUNoYWluLmNw
cAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAorICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL1N0cmluZ09iamVjdC5jcHAKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCAzNjgyMjZiMzg1MzFmYTY2NmRhYzJjODFkZmFkZWY1MGU4NThkZWEzLi43ZThj
OGQyNGM5OGI4ZDZlN2YzNDM3MDNhOTQ5MzQ5NzgzYzY2ZmQ0IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjc0IEBACisyMDEwLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VTNV0gSW1w
bGVtZW50IHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDcwMQorCisgICAgICAgIEluaXRpYWwgc3RyaWN0IG1vZGUgaW1wbGVtZW50
YXRpb24uICBUaGlzIGlzIHRoZSBzaW1wbGVzdAorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0aGF0
IGNvdWxkIHBvc3NpYmx5IHdvcmsgYW5kIGFkZHMgKGhvcGVmdWxseSkKKyAgICAgICAgYWxsIG9m
IHRoZSByZXN0cmljdGlvbnMgcmVxdWlyZWQgYnkgc3RyaWN0IG1vZGUuICBUaGVyZSBhcmUKKyAg
ICAgICAgYSBudW1iZXIgb2YgaW5lZmZpY2llbmNpZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGhhbmRs
aW5nIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQgZXZhbCBhcyBzbWFydCBpbXBsZW1lbnRhdGlv
bnMgd291bGQgbWFrZSB0aGlzCisgICAgICAgIHBhdGNoIG1vcmUgY29tcGxpY2F0ZWQuICAKKwor
ICAgICAgICBUaGUgU3ludGF4Q2hlY2tlciBBU1QgYnVpbGRlciBoYXMgYmVjb21lIHNvbWV3aGF0
IG1vcmUgY29tcGxleAorICAgICAgICBhcyBzdHJpY3QgbW9kZSBkb2VzIHJlcXVpcmUgbW9yZSBw
YXJzZSB0cmVlIGluZm9ybWF0aW9uIHRvCisgICAgICAgIHZhbGlkYXRlIHRoZSBzeW50YXguCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJv
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVwYXJzZUZvckV4Y2VwdGlvbkluZm9JZk5l
Y2Vzc2FyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aXNTdHJpY3RNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNh
Y2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldCk6CisgICAgICAgICogYnl0
ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZUFyZ3VtZW50c0lmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6aXNTdHJpY3RNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIu
Y3BwOgorICAgICAgICAoSlNDOjpldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
Q2FsbEZyYW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2FsbEV2YWwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRl
ci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1Jlc29sdmUpOgorICAgICAgICAqIHBhcnNlci9KU1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpuZXh0KToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnN0YXJ0TG9vcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjplbmRMb29wKToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6SlNQ
YXJzZXI6OmVuZFN3aXRjaCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpzZXRTdHJpY3RNb2Rl
KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6aXNWYWxpZFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZGVj
bGFyZVBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpicmVha0lzVmFsaWQpOgor
ICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cHVzaExhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OnBvcExhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6Omhhc0xhYmVsKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OkRlcHRoTWFuYWdlcjo6RGVwdGhNYW5hZ2VyKToKKyAgICAgICAg
KEpTQzo6SlNQYXJzZXI6OkRlcHRoTWFuYWdlcjo6fkRlcHRoTWFuYWdlcik6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2Nv
cGU6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjplbmRTd2l0
Y2gpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OnN0YXJ0TG9vcCk6CisgICAgICAg
IChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZW5kTG9vcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2Vy
OjpTY29wZTo6aW5Mb29wKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpicmVha0lz
VmFsaWQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6cG9wTGFiZWwpOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6Omhhc0xhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpp
c0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpkZWNsYXJlVmFyaWFi
bGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OmRlY2xhcmVXcml0ZSk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU1BhcnNlcjo6U2NvcGU6OmRlY2xhcmVQYXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6OnNldE5lZWRzRnVsbEFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6OmNvbGxlY3RGcmVlVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OlNjb3BlOjpnZXRVbmNhcHR1cmVkV3JpdHRlblZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6
OkpTUGFyc2VyOjpTY29wZTo6Z2V0RGVsZXRlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkpT
UGFyc2VyOjpTY29wZTo6c2V0U3RyaWN0TW9kZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpT
Y29wZTo6c3RyaWN0TW9kZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6aXNWYWxp
ZFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cHVzaFNjb3BlKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnBvcFNjb3BlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OmRl
Y2xhcmVWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpkZWNsYXJlV3JpdGUpOgor
ICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpq
c1BhcnNlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OkpTUGFyc2VyKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJz
ZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRG9XaGlsZVN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVdoaWxlU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAo
SlNDOjpKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUNv
bnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlUmV0dXJuU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlV2l0aFN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVN3aXRjaFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpwYXJzZVN3aXRjaENsYXVzZXMpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQmxvY2tTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25E
ZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25Pckxh
YmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlU3RyaWN0T2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVBy
aW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6
CisgICAgICAgICogcGFyc2VyL0pTUGFyc2VyLmg6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OkxleGVy
Ojppc1JlcGFyc2luZyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2NvcGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6U2NvcGVOb2Rl
Ojppc1N0cmljdE1vZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OlN5bnRheENoZWNrZXIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmFwcGVuZFRvQ29tbWEpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtl
QXNzaWduTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQcmVmaXhOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVBvc3RmaXhOb2RlKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVR5cGVPZk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlRGVsZXRlTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUJp
dHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTG9naWNh
bE5vdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVVuYXJ5UGx1cyk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVZvaWQpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjp0aGlzRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVPYmplY3RM
aXRlcmFsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXJyYXkpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdW1iZXJFeHByKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZU51bGwpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCcmFja2V0QWNjZXNz
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVnZXgpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1
bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9u
Qm9keSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmFwcGVuZEJpbmFyeUV4cHJlc3Np
b25JbmZvKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6
CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OkFy
Z3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpT
Qzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6
cHV0KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpBcmd1bWVu
dHMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAo
SlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rp
b246OmNvbnN0cnVjdFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjYWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlVHlwZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoK
KyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhl
Y3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJs
ZTo6UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21w
aWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50
YXgpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFs
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnJlcGFyc2VFeGNl
cHRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnJlcGFyc2VFeGNlcHRp
b25JbmZvKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29k
ZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5m
byk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlw
dEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOjppc1N0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
Ojp0b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
RGVzY3JpcHRvckZvclRocm93aW5nUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0
b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAoSlNDOjp0aHJvd1R5cGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNTdHJp
Y3RNb2RlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpY3RUaGlz
T2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1N0cmljdFRoaXNPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNab21iaWUuaDoKKyAgICAgICAgKEpTQzo6
SlNab21iaWU6OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAgICogcnVudGltZS9QdXRQcm9w
ZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpQdXRQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmlzU3RyaWN0TW9kZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24pOgorICAgICAg
ICAoSlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6dG9UaGlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
U3RyaWN0RXZhbEFjdGl2YXRpb246OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOiBBZGRlZC4KKwogMjAxMC0xMC0wMSAgUHJhdGlr
IFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBi
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDg4ZDE3NjE3YjNhNGI4ODg0YzA0
YTI2ODY4YzZmMDZkMTczMWM3NTAuLjdkNjM3YjM1MDQxYzU4ZDg4YWE5YjcwMWRkNGQ4MWVlNjgy
YWQ3MDIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zODgsNiArMzg4LDggQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluTWFy
ay5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgXAogCUphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uaFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0J1aWxk
ZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25jYXRlbmF0ZS5oIFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBcCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKaW5kZXggZmYzZDliMzc5OGM2NTVlOGJiNzdiMzU4OTUxNDJhYTA3OWNl
N2FmOC4uMTdiZTkyODU0MjZmNzI4NmRhNGI4N2EyYmIyYjNjYzNhYmI2ZTZjYiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cApAQCAtNTMxLDYgKzUzMSw3IEBAIF9fWk5LM0pTQzhKU09iamVj
dDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOSzNK
U0M4SlNPYmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKIF9fWk5LM0pTQzhKU09i
amVjdDEyZGVmYXVsdFZhbHVlRVBOU185RXhlY1N0YXRlRU5TXzIyUHJlZmVycmVkUHJpbWl0aXZl
VHlwZUUKIF9fWk5LM0pTQzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQor
X19aTkszSlNDOEpTT2JqZWN0MTh0b1N0cmljdFRoaXNPYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBf
X1pOSzNKU0M4SlNPYmplY3Q4dG9OdW1iZXJFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNKU0M4SlNP
YmplY3Q4dG9PYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNKU0M4SlNPYmplY3Q4dG9TdHJp
bmdFUE5TXzlFeGVjU3RhdGVFCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcm8gYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8KaW5kZXggZjQ2M2Y0
MWQ1ZjYyNWIyZWJhMjJhYTZiZGYwYTdjYTQyY2RmZjUzZi4uZjgzYmY0YzRlZGUyOTE5MmU1MTdh
NWFjNzdiMjRhNTFkNzUxYmMxYiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUucHJvCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwpAQCAtMTk3
LDYgKzE5Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvUm9wZUltcGwuY3BwIFwKICAg
ICBydW50aW1lL1Njb3BlQ2hhaW4uY3BwIFwKICAgICBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAg
XAorICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIFwKICAgICBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIFwKICAg
ICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgXApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggODNkMzRlMzdiMmZkNGM0ZTdmNzE5NDFlNzM0
ZTVkZDg2NzJlY2JhZi4uNDc5YjNkZDAyMmJmOTFmYjdjNWFkNTQyYTI5MGFkNTQ0MDA5ZmNhMCAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCkBAIC0x
MTczLDYgKzExNzMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50
aW1lXFN0cmljdEV2YWxBY3RpdmF0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN0cmluZ0NvbnN0cnVjdG9yLmNw
cCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NzVkMjZkZDZjYjZk
ZTAwMTg2NTRlOThmM2E1Yjg3NjJhYjRlNDU5Li5hNDVmOTgyNTQxYjBjNjIwNjA2NDQ3MmVjNzkx
MDI1YTUyNTcyMWQ1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxOCw2ICszMTgsOCBAQAogCQlBNzI3
MDFCOTBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3
IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgfTsKIAkJQTcyN0ZGNkIwREEzMDkyMjAwRTU0OEQ3
IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyN0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8qIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlBNzI4MEEyODExNTU3RTMwMDBENTY5NTcgLyog
SlNPYmplY3RSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcz
MEI2MTIxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzMwQjYxMDEyNTAwNjhGMDA5
RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCAqLzsgfTsKKwkJQTczMEI2MTMxMjUwMDY4
RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBT
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgKi87IH07CiAJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3
OSAvKiBTcGVjaWFsaXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRU
aHVua0pJVC5oICovOyB9OwogCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5l
cmF0b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Mzg2NTUyMTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwICovOyB9Owog
CQlBNzM4NjU1NjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1MzExODY5N0I0MDA1
NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk1MSw2ICs5NTMsOCBAQAogCQlBNzI3MDFCMzBEQURFOTQ5
MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFeGNlcHRpb25IZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MjdGRjY1MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyN0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8q
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzMwQjYxMTEyNTAwNjhGMDA5RDI1
QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVjaWFsaXplZFRodW5rSklU
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Mzg2NTUyMTE4Njk3QjQwMDU0MDI3
OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGh1bmtHZW5lcmF0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUaHVua0dlbmVyYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE4MTQsNiArMTgxOCw4IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAw
MzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJCTE0MDM1REIwMTBEQkZCMkEwMEZGRkZFNyAv
KiBXZWFrR0NQdHIuaCAqLywKIAkJCQkxNDIwQkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1Jh
bmRvbS5oICovLAorCQkJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0
aXZhdGlvbi5oICovLAorCQkJCUE3MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFs
QWN0aXZhdGlvbi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjMxNCw2ICsyMzIwLDcgQEAKIAkJCQk5NzE0QUY1RjEyMkYz
MjA3MDA5MkQ5RjUgLyogUGFyc2VkVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzE0QUY2MDEy
MkYzMjA3MDA5MkQ5RjUgLyogVVJMU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDIxM0Uz
RTEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTczMEI2MTIxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI3NjgsNiArMjc3NSw3IEBACiAJCQkJOTcxNEFGNDYxMjJGMjg4NTAw
OTJEOUY1IC8qIFVSTFNlZ21lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTRBRjVFMTIy
RjMyMDcwMDkyRDlGNSAvKiBQYXJzZWRVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTAyMTNF
M0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTczMEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
NmMwNjk2ZWY3NGFiOGZhMzU3NDlkNWYwMTk5MmZhMWE0ZjQ2ZTE1Ny4uODljOGEzNmZiZWEzNGI2
OTFhZTMyZDA5YzdlZDVmYmZlYWYzOWM0OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkBAIC01MTYsNiArNTE2LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImCiAgICAg
ICAgICAgICBwcmludGYoIlslNGRdIGNvbnZlcnRfdGhpcyAlc1xuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlzX3N0cmljdDogeworICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludGYoIlslNGRdIGNvbnZl
cnRfdGhpc19zdHJpY3QgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25l
d19vYmplY3Q6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CkBAIC0xMzcxLDYgKzEzNzYsNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIENvZGVUeXBl
IGNvZGVUeXBlLCBKU0dsbwogICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKG93bmVyRXhlY3V0
YWJsZS0+bmVlZHNBY3RpdmF0aW9uKCkpCiAgICAgLCBtX3VzZXNFdmFsKG93bmVyRXhlY3V0YWJs
ZS0+dXNlc0V2YWwoKSkKICAgICAsIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGZhbHNlKQor
ICAgICwgbV9pc1N0cmljdE1vZGUob3duZXJFeGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAsIG1fY29kZVR5cGUoY29kZVR5cGUpCiAgICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRlcikK
ICAgICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKQEAgLTE1NTMsNyArMTU1OSw3IEBA
IGJvb2wgQ29kZUJsb2NrOjpyZXBhcnNlRm9yRXhjZXB0aW9uSW5mb0lmTmVjZXNzYXJ5KENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgICAgICAgICAgc2NvcGVDaGFpbiA9IHNjb3BlQ2hhaW4tPm5l
eHQ7CiAgICAgfQogCi0gICAgbV9leGNlcHRpb25JbmZvID0gbV9vd25lckV4ZWN1dGFibGUtPnJl
cGFyc2VFeGNlcHRpb25JbmZvKG1fZ2xvYmFsRGF0YSwgc2NvcGVDaGFpbiwgdGhpcyk7CisgICAg
bV9leGNlcHRpb25JbmZvID0gbV9vd25lckV4ZWN1dGFibGUtPnJlcGFyc2VFeGNlcHRpb25JbmZv
KGNhbGxGcmFtZSwgc2NvcGVDaGFpbiwgdGhpcyk7CiAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5m
bzsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjZGE0NTMwZDNhMTc5
NzBjY2E1ODE0ZmNmOTAzMmIyYWE5MDRlYjllLi41MTE1MTljZjNiN2YyM2E0N2E2ZTg4YWU3YjI0
YmI0ZjQ0ODk0MTk2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjk3LDYg
KzI5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RyaWN0TW9kZTsgfQorCiAgICAgICAgIGlubGluZSBib29sIGlzS25vd25Ob3RJbW1lZGlhdGUo
aW50IGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaW5kZXggPT0gbV90aGlzUmVn
aXN0ZXIpCkBAIC01NTIsNiArNTU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
bV9uZWVkc0Z1bGxTY29wZUNoYWluOwogICAgICAgICBib29sIG1fdXNlc0V2YWw7CiAgICAgICAg
IGJvb2wgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247CisgICAgICAgIGJvb2wgbV9pc1N0cmlj
dE1vZGU7CiAKICAgICAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDdjNGNiMzNlNDAxYWU2OWEyOTc1MWJjMmQ2YjIw
NTBmZDVhZDYzZDYuLmVkZDU3NWZlNmUwMjkzNGZmMDk0MDQ4OTE2MWMwOTc2MDc3MDQxNjcgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTQzLDIwICs0MywyMCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUGFzc1JlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZ2V0KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgVVN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4s
IEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQorICAgICAgICBQYXNzUmVmUHRyPEV2YWxFeGVjdXRh
YmxlPiBnZXQoRXhlY1N0YXRlKiBleGVjLCBib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgVVN0
cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUmIGV4
Y2VwdGlvblZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8RXZhbEV4ZWN1dGFi
bGU+IGV2YWxFeGVjdXRhYmxlOwogCi0gICAgICAgICAgICBpZiAoZXZhbFNvdXJjZS5sZW5ndGgo
KSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4tPmJlZ2luKCkpLT5p
c1ZhcmlhYmxlT2JqZWN0KCkpCisgICAgICAgICAgICBpZiAoIWluU3RyaWN0Q29udGV4dCAmJiBl
dmFsU291cmNlLmxlbmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVD
aGFpbi0+YmVnaW4oKSktPmlzVmFyaWFibGVPYmplY3QoKSkKICAgICAgICAgICAgICAgICBldmFs
RXhlY3V0YWJsZSA9IG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgpKTsKIAogICAgICAg
ICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkgewotICAgICAgICAgICAgICAgIGV2YWxFeGVjdXRh
YmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2Up
KTsKKyAgICAgICAgICAgICAgICBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0KTsKICAgICAg
ICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGV2YWxFeGVjdXRhYmxlLT5jb21waWxlKGV4ZWMs
IHNjb3BlQ2hhaW4pOwogICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb25WYWx1ZSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgICAgICAgICBpZiAoZXZhbFNvdXJj
ZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4tPmJl
Z2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhDYWNo
ZUVudHJpZXMpCisgICAgICAgICAgICAgICAgaWYgKCFpblN0cmljdENvbnRleHQgJiYgZXZhbFNv
dXJjZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4t
PmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgbV9jYWNoZU1hcC5zaXplKCkgPCBtYXhD
YWNoZUVudHJpZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAuc2V0KGV2YWxTb3Vy
Y2UuaW1wbCgpLCBldmFsRXhlY3V0YWJsZSk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmgKaW5kZXggMDNmNjU3MzMwMWMxMjk5NDdjNjE5YjkyNmY1ZWE0YzAwMjNlNWZj
Mi4uMzgyZGQyNTM3N2MwZjhhZTMzOTZlZWVkYzYxY2YzM2QwZmFkZGJkYiAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IG1hY3JvKG9wX2NyZWF0ZV90aGlzLCAzKSBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9jYWxsZWUs
IDIpIFwKICAgICAgICAgbWFjcm8ob3BfY29udmVydF90aGlzLCAyKSBcCisgICAgICAgIG1hY3Jv
KG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIDIpIFwKICAgICAgICAgXAogICAgICAgICBtYWNybyhv
cF9uZXdfb2JqZWN0LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX25ld19hcnJheSwgNCkgXApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggOTg2NzA5YmJlYmJiYTk3ZDgzOGM0MGRhYTg5OWNkN2QxYWZhZmNjMi4uYzZiNzhiMTA2N2Yw
NGE4MDZmZWIzZThhNGVmYzVkNDg0YzdjODgxZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNDEsNiArMzQxLDExIEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW5jdGlvbkJvZHlOb2RlKiBmdW5j
dGlvbkJvZHksIGNvbnN0IERlYnVnCiAKICAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIoYXJn
dW1lbnRzUmVnaXN0ZXIpOwogICAgICAgICBlbWl0SW5pdExhenlSZWdpc3Rlcih1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1l
bnRzKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdpc3Rl
ci0+aW5kZXgoKSk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgZGVidWdnZXIgY3VycmVu
dGx5IHJldHJpZXZlcyB0aGUgYXJndW1lbnRzIG9iamVjdCBmcm9tIGFuIGFjdGl2YXRpb24gcmF0
aGVyIHRoYW4gcHVsbGluZwogICAgICAgICAvLyBpdCBmcm9tIGEgY2FsbCBmcmFtZS4gIEluIHRo
ZSBsb25nLXRlcm0gaXQgc2hvdWxkIHN0b3AgZG9pbmcgdGhhdCAoPHJkYXI6Ly9wcm9ibGVtLzY5
MTE4ODY+KSwKQEAgLTQyOSw3ICs0MzQsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgY29uc3QgRGVidWcKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuY1Byb3RvLT5pbmRleCgpKTsKICAgICB9IGVs
c2UgaWYgKGZ1bmN0aW9uQm9keS0+dXNlc1RoaXMoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
KSB7Ci0gICAgICAgIGVtaXRPcGNvZGUob3BfY29udmVydF90aGlzKTsKKyAgICAgICAgaWYgKGNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2NvbnZl
cnRfdGhpc19zdHJpY3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9w
X2NvbnZlcnRfdGhpcyk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdp
c3Rlci5pbmRleCgpKTsKICAgICB9CiB9CkBAIC0xNTQxLDYgKzE1NDksOSBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVy
bjsKICAgICBBU1NFUlQobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSk7CiAKKyAgICBpZiAo
bV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBlbWl0
T3Bjb2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSk7CiB9CkBAIC0xNjQ4LDcgKzE2NTksOCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBz
cmMpCiAgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0
ZXIoKSk7Ci0gICAgfSBlbHNlIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmIG1f
Y29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMgPiAxKSB7IC8vIElmIHRoZXJlIGFyZSBubyBuYW1l
ZCBwYXJhbWV0ZXJzLCB0aGVyZSdzIG5vdGhpbmcgdG8gdGVhciBvZmYsIHNpbmNlIGV4dHJhIC8g
dW5uYW1lZCBwYXJhbWV0ZXJzIGdldCBjb3BpZWQgdG8gdGhlIGFyZ3VtZW50cyBvYmplY3QgYXQg
Y29uc3RydWN0IHRpbWUuCisgICAgfSBlbHNlIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50
cygpICYmIG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMgPiAxCisgICAgICAgICAgICAgICAm
JiAhbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7IC8vIElmIHRoZXJlIGFyZSBubyBuYW1l
ZCBwYXJhbWV0ZXJzLCB0aGVyZSdzIG5vdGhpbmcgdG8gdGVhciBvZmYsIHNpbmNlIGV4dHJhIC8g
dW5uYW1lZCBwYXJhbWV0ZXJzIGdldCBjb3BpZWQgdG8gdGhlIGFyZ3VtZW50cyBvYmplY3QgYXQg
Y29uc3RydWN0IHRpbWUuCiAgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYXJndW1lbnRz
KTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hcmd1bWVudHNS
ZWdpc3RlcigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IDg2MTcxMWFjNmFiYThmZjExZDJhYWZjNzA1ZWNiNzhkY2Nm
YzM4ZjUuLmQwZmYxZjQ0ODU4OGQwNjk0MzkzNzNjOWQxZmFjYTRmM2YxNjhlM2IgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MTks
NiArNDE5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIHNo
b3VsZEVtaXRQcm9maWxlSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3M7
IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
b2lkIGVtaXRPcGNvZGUoT3Bjb2RlSUQpOwpAQCAtNDk5LDEyICs1MDEsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IG1ha2VGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBib2R5
LT5pZGVudCgpLCBib2R5LT5zb3VyY2UoKSwgYm9keS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5w
YXJhbWV0ZXJzKCksIGJvZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBib2R5LT5pZGVudCgp
LCBib2R5LT5zb3VyY2UoKSwgYm9keS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5wYXJhbWV0ZXJz
KCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExpbmUo
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4g
bWFrZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIGJvZHktPmlkZW50KCksIGJvZHktPnNvdXJjZSgpLCBib2R5LT51
c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+bGluZU5vKCksIGJvZHkt
Pmxhc3RMaW5lKCkpOworICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIGJvZHktPmlkZW50KCksIGJvZHktPnNvdXJjZSgpLCBib2R5LT51c2Vz
QXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGJv
ZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCBjYmNiZDIxYTk2ZThlMmQzZTEyMjZiM2U3MTIyYWEx
YjE5NzNkODFjLi4xN2RmZGY3NjlhNWI1NzdmZjIyY2M2NGQwZTdkYjA3N2E0YWViZGIyIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgSlNWYWx1
ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1
ZSYgZXhjZXB0aW9uLCBKU0cKIHsKICAgICBDYWxsRnJhbWUqIGdsb2JhbENhbGxGcmFtZSA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBl
dmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxDYWxsRnJhbWUsIG1ha2VTb3VyY2Uo
c2NyaXB0KSk7CisgICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShnbG9iYWxDYWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0KSwgZmFsc2UpOwog
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBpbGUoZ2xvYmFsQ2FsbEZyYW1lLCBnbG9i
YWxDYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKSk7CiAgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1
cm4gZXJyb3I7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNh
bGxGcmFtZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKaW5kZXggMzJmNjVkZGI4MDQwMTZkNTlhMjgzZmIyYzg4ZThlZTQ4NTM4NGFkZS4uYzk4Yzdj
Y2RkYzE3MGMwNGZhYzM4MDg0ZmM0ZmQ1YTM5MmU4ZGNlMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtODgsNyArODgsNyBAQCBKU1ZhbHVl
IERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFs
dWUmIGV4Y2VwdGlvbikgYwogICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFs
ID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShtX2NhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQp
KTsKKyAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKG1fY2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCksIG1fY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBp
bGUobV9jYWxsRnJhbWUsIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOwogICAgIGlmIChlcnJv
cikKICAgICAgICAgcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IDU5NDNlY2ViNzRlZmZmMDY3N2E1MjM2YzU2NjQ3MTI3NTZkMDMw
M2MuLjZhYjgwYTgzNTczOGE2ZjRmZjIwYzBiMTYwZGUxYzYzYTNjNDhlMTkgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNp
bmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1
ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAj
aW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CkBAIC0zNzEsMTQgKzM3MiwxOCBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6Y2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSogcgog
ICAgIFVTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShjYWxs
RnJhbWUpOwogICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwotCi0gICAgTGl0ZXJhbFBhcnNlciBwcmVwYXJzZXIoY2FsbEZyYW1lLCBw
cm9ncmFtU291cmNlLCBMaXRlcmFsUGFyc2VyOjpOb25TdHJpY3RKU09OKTsKLSAgICBpZiAoSlNW
YWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpCi0gICAgICAg
IHJldHVybiBwYXJzZWRPYmplY3Q7CisgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkgeworICAgICAgICAvLyBGSVhNRTogV2UgY2FuIHVzZSB0aGUgcHJlcGFyc2VyIGluIHN0cmlj
dCBtb2RlLCB3ZSBqdXN0IG5lZWQgYWRkaXRpb25hbCBsb2dpYworICAgICAgICAvLyB0byBwcmV2
ZW50IGR1cGxpY2F0ZXMuCisgICAgICAgIExpdGVyYWxQYXJzZXIgcHJlcGFyc2VyKGNhbGxGcmFt
ZSwgcHJvZ3JhbVNvdXJjZSwgTGl0ZXJhbFBhcnNlcjo6Tm9uU3RyaWN0SlNPTik7CisgICAgICAg
IGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBwYXJzZWRPYmplY3Q7CisgICAgfQogCiAgICAgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKLSAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgUmVmUHRyPEV2YWxF
eGVjdXRhYmxlPiBldmFsID0gY29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0KGNhbGxGcmFt
ZSwgcHJvZ3JhbVNvdXJjZSwgc2NvcGVDaGFpbiwgZXhjZXB0aW9uVmFsdWUpOworICAgIFJlZlB0
cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IGNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldChj
YWxsRnJhbWUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHByb2dyYW1Tb3VyY2UsIHNjb3Bl
Q2hhaW4sIGV4Y2VwdGlvblZhbHVlKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNVbmRlZmlu
ZWQoKTsKICAgICBpZiAoZXZhbCkKQEAgLTUzOSw5ICs1NDQsMTEgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpT
VmFsdWUgZXgKICAgICAgICAgICAgIHNjb3BlQ2hhaW4gPSBzY29wZUNoYWluLT5wb3AoKTsKICAg
ICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKHNjb3BlQ2hhaW4t
Pm9iamVjdCk7CiAgICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKLSAgICAgICAg
aWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3RlcihvbGRDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKS5qc1ZhbHVlKCkpCi0g
ICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRp
b24pOwotICAgIH0gZWxzZSBpZiAob2xkQ29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHsKKyAg
ICAgICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihvbGRDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKS5qc1ZhbHVl
KCkpIHsKKyAgICAgICAgICAgIGlmICghb2xkQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2
YXRpb24pOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChvbGRDb2RlQmxvY2stPnVzZXNBcmd1
bWVudHMoKSAmJiAhb2xkQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAo
SlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkKICAgICAg
ICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPmNvcHlSZWdpc3RlcnMoKTsKICAgICB9CkBA
IC0xMDM2LDcgKzEwNDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogICAgIH0KICAgICBF
dmFsQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXZhbC0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKIAot
ICAgIEpTVmFyaWFibGVPYmplY3QqIHZhcmlhYmxlT2JqZWN0OworICAgIEpTT2JqZWN0KiB2YXJp
YWJsZU9iamVjdDsKICAgICBmb3IgKFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gc2NvcGVDaGFpbjsg
OyBub2RlID0gbm9kZS0+bmV4dCkgewogICAgICAgICBBU1NFUlQobm9kZSk7CiAgICAgICAgIGlm
IChub2RlLT5vYmplY3QtPmlzVmFyaWFibGVPYmplY3QoKSkgewpAQCAtMTA0Nyw3ICsxMDU0LDEz
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjCiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMg
PSBjb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOwogICAgIGludCBudW1GdW5jdGlvbnMgPSBjb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOworICAgIGJvb2wgcHVzaGVkU2NvcGUgPSBm
YWxzZTsKICAgICBpZiAobnVtVmFyaWFibGVzIHx8IG51bUZ1bmN0aW9ucykgeworICAgICAgICBp
ZiAoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgdmFyaWFibGVPYmpl
Y3QgPSBuZXcgKGNhbGxGcmFtZSkgU3RyaWN0RXZhbEFjdGl2YXRpb24oY2FsbEZyYW1lKTsKKyAg
ICAgICAgICAgIHNjb3BlQ2hhaW4gPSBzY29wZUNoYWluLT5wdXNoKHZhcmlhYmxlT2JqZWN0KTsK
KyAgICAgICAgICAgIHB1c2hlZFNjb3BlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICAvLyBT
Y29wZSBmb3IgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIKICAgICAgICAgQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIgb3B0aW1pemVyKHZhcmlhYmxlT2JqZWN0KTsKIApAQCAtMTA3MCw2ICsx
MDgzLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZh
bCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWMKICAgICBSZWdpc3RlciogbmV3RW5kID0g
bV9yZWdpc3RlckZpbGUuc3RhcnQoKSArIGdsb2JhbFJlZ2lzdGVyT2Zmc2V0ICsgY29kZUJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVyczsKICAgICBpZiAoIW1fcmVnaXN0ZXJGaWxlLmdyb3cobmV3
RW5kKSkgewogICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNh
bGxGcmFtZSk7CisgICAgICAgIGlmIChwdXNoZWRTY29wZSkKKyAgICAgICAgICAgIHNjb3BlQ2hh
aW4tPnBvcCgpOwogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgfQogCkBAIC0xMTEyLDYg
KzExMjcsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBl
dmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogICAgICAgICAoKnByb2ZpbGVyKS0+
ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGV2YWwtPnNvdXJjZVVSTCgpLCBldmFsLT5saW5lTm8oKSk7
CiAKICAgICBtX3JlZ2lzdGVyRmlsZS5zaHJpbmsob2xkRW5kKTsKKyAgICBpZiAocHVzaGVkU2Nv
cGUpCisgICAgICAgIHNjb3BlQ2hhaW4tPnBvcCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTI5MjIsNyArMjkzOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBjYWxsRnJhbWUtPnIoYmFzZSkuanNWYWx1ZSgpOwogICAgICAgICBJ
ZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7Ci0gICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgaWYgKGRpcmVjdCkgewogICAgICAg
ICAgICAgYmFzZVZhbHVlLnB1dERpcmVjdChjYWxsRnJhbWUsIGlkZW50LCBjYWxsRnJhbWUtPnIo
dmFsdWUpLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5iYXNlKCkg
PT0gYmFzZVZhbHVlKTsKQEAgLTMwMzgsNyArMzA1NSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6
CiAKICAgICAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBjYWxsRnJhbWUtPnIoYmFzZSkuanNWYWx1
ZSgpOwogICAgICAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihw
cm9wZXJ0eSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgaWYgKGRp
cmVjdCkgewogICAgICAgICAgICAgYmFzZVZhbHVlLnB1dERpcmVjdChjYWxsRnJhbWUsIGlkZW50
LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgICAgICAgICBBU1NF
UlQoc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKTsKQEAgLTMwNjMsOSArMzA4MCwxMyBAQCBza2lw
X2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gY2FsbEZyYW1l
LT5yKGJhc2UpLmpzVmFsdWUoKS50b09iamVjdChjYWxsRnJhbWUpOwogICAgICAgICBJZGVudGlm
aWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7Ci0gICAgICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFt
ZSwgaWRlbnQpKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBiYXNlT2JqLT5kZWxldGVQcm9wZXJ0
eShjYWxsRnJhbWUsIGlkZW50KTsKKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVUeXBl
RXJyb3IoY2FsbEZyYW1lLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAg
ICAgIGdvdG8gdm1fdGhyb3c7CisgICAgICAgIH0KICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElP
TigpOwotICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IHJlc3VsdDsKKyAgICAgICAgY2FsbEZy
YW1lLT5yKGRzdCkgPSBqc0Jvb2xlYW4ocmVzdWx0KTsKICAgICAgICAgdlBDICs9IE9QQ09ERV9M
RU5HVEgob3BfZGVsX2J5X2lkKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0K
QEAgLTMyMTgsNyArMzIzOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgc3Vic2NyaXB0
LnRvU3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgaWYgKCFnbG9iYWxEYXRhLT5leGNl
cHRpb24pIHsgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJldyBhbiBl
eGNlcHRpb24uCi0gICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7
CiAgICAgICAgICAgICAgICAgYmFzZVZhbHVlLnB1dChjYWxsRnJhbWUsIHByb3BlcnR5LCBjYWxs
RnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTMyNDIsMTkgKzMyNjMsMjIgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAg
SlNPYmplY3QqIGJhc2VPYmogPSBjYWxsRnJhbWUtPnIoYmFzZSkuanNWYWx1ZSgpLnRvT2JqZWN0
KGNhbGxGcmFtZSk7IC8vIG1heSB0aHJvdwogCiAgICAgICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0g
Y2FsbEZyYW1lLT5yKHByb3BlcnR5KS5qc1ZhbHVlKCk7Ci0gICAgICAgIEpTVmFsdWUgcmVzdWx0
OworICAgICAgICBib29sIHJlc3VsdDsKICAgICAgICAgdWludDMyX3QgaTsKICAgICAgICAgaWYg
KHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCi0gICAgICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4o
YmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBpKSk7CisgICAgICAgICAgICByZXN1
bHQgPSBiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIGkpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKICAgICAgICAgICAgIElkZW50
aWZpZXIgcHJvcGVydHkoY2FsbEZyYW1lLCBzdWJzY3JpcHQudG9TdHJpbmcoY2FsbEZyYW1lKSk7
CiAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICByZXN1bHQg
PSBqc0Jvb2xlYW4oYmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBwcm9wZXJ0eSkp
OworICAgICAgICAgICAgcmVzdWx0ID0gYmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1l
LCBwcm9wZXJ0eSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVU
eXBlRXJyb3IoY2FsbEZyYW1lLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAg
ICAgICAgIGdvdG8gdm1fdGhyb3c7CiAgICAgICAgIH0KLQogICAgICAgICBDSEVDS19GT1JfRVhD
RVBUSU9OKCk7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gcmVzdWx0OworICAgICAgICBj
YWxsRnJhbWUtPnIoZHN0KSA9IGpzQm9vbGVhbihyZXN1bHQpOwogICAgICAgICB2UEMgKz0gT1BD
T0RFX0xFTkdUSChvcF9kZWxfYnlfdmFsKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwog
ICAgIH0KQEAgLTM5ODcsOCArNDAxMSwxMCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oY2FsbEZyYW1lLT5yKHNy
YzEpLmpzVmFsdWUoKSk7CiAgICAgICAgIGFjdGl2YXRpb24tPmNvcHlSZWdpc3RlcnMoKTsKIAot
ICAgICAgICBpZiAoSlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKHNyYzIpKS5qc1ZhbHVlKCkpCi0gICAgICAgICAgICBhc0FyZ3VtZW50
cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24pOworICAgICAgICBpZiAoSlNW
YWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVy
KHNyYzIpKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3Rp
dmF0aW9uKGFjdGl2YXRpb24pOworICAgICAgICB9CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9M
RU5HVEgob3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04o
KTsKQEAgLTQxODQsNiArNDIxMCwyNSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICB2
UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXMpOwogICAgICAgICBORVhUX0lOU1RS
VUNUSU9OKCk7CiAgICAgfQorICAgIERFRklORV9PUENPREUob3BfY29udmVydF90aGlzX3N0cmlj
dCkgeworICAgICAgICAvKiBjb252ZXJ0X3RoaXNfc3RyaWN0IHRoaXMocikKKyAgICAgICAgIAor
ICAgICAgICAgVGFrZXMgdGhlIHZhbHVlIGluIHRoZSAndGhpcycgcmVnaXN0ZXIsIGFuZCBjb252
ZXJ0cyBpdCB0bworICAgICAgICAgaXRzICJ0aGlzIiBmb3JtIGlmIChhbmQgb25seSBpZikgInRo
aXMiIGlzIGFuIG9iamVjdCB3aXRoIGEKKyAgICAgICAgIGN1c3RvbSB0aGlzIGNvbnZlcnNpb24K
KyAgICAgICAgIAorICAgICAgICAgVGhpcyBvcGNvZGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0
aGUgYmVnaW5uaW5nIG9mIGEgY29kZQorICAgICAgICAgYmxvY2suCisgICAgICAgICAqLworICAg
ICAgICAKKyAgICAgICAgaW50IHRoaXNSZWdpc3RlciA9IHZQQ1sxXS51Lm9wZXJhbmQ7CisgICAg
ICAgIEpTVmFsdWUgdGhpc1ZhbCA9IGNhbGxGcmFtZS0+cih0aGlzUmVnaXN0ZXIpLmpzVmFsdWUo
KTsKKyAgICAgICAgaWYgKHRoaXNWYWwuaXNPYmplY3QoKSAmJiB0aGlzVmFsLm5lZWRzVGhpc0Nv
bnZlcnNpb24oKSkKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+cih0aGlzUmVnaXN0ZXIpID0gSlNW
YWx1ZSh0aGlzVmFsLnRvU3RyaWN0VGhpc09iamVjdChjYWxsRnJhbWUpKTsKKyAgICAgICAgCisg
ICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpOworICAg
ICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgfQogICAgIERFRklORV9PUENPREUob3BfaW5p
dF9sYXp5X3JlZykgewogICAgICAgICAvKiBpbml0X2xhenlfcmVnIGRzdChyKQogCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IGE1MDhkMGM3ODAxYTYyZjdkZDU4OWViMmIxNTE0OWQ3MzA0Y2M3NmIuLjQxNDU3
MWVkMWMxYzMzMTk1ZjlkZWMwYTFiNDQ1NTUyMGQ5YzQwODkgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0y
MjUsNiArMjI1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZ2V0X2NhbGxlZSkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV90
aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29udmVydF90aGlzKQorICAgICAgICBERUZJTkVf
T1Aob3BfY29udmVydF90aGlzX3N0cmljdCkKICAgICAgICAgREVGSU5FX09QKG9wX2luaXRfbGF6
eV9yZWcpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfYXJndW1lbnRzKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZGVidWcpCkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NhbGxfdmFy
YXJncykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0cnVjdCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnZlcnRfdGhpcykKKyAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpCiAjaWYgIVVTRShKU1ZBTFVFMzIpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA2YjJl
NzBlMWQ1ZjllNDg1MTVjMDdkMGFmYWZhYTM0MjdlMjliMWIwLi4wNWU1N2ZlNzEwNjI0OTUwNWU0
MDQwNDJlMzU0MjA5Y2Y1MTQwYmQyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC03MzgsNiArNzM4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5
X2lkKEluc3RydWN0aW9uKik7CkBAIC04NDUsNiArODQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Nv
bnN0cnVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
Y29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kaXYoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4
IGM4MTkzMmE2MGJjMWEwZTFmOTk1MTlkZjU2N2MwZjViZDkzYzVkMDUuLmIzNDhhYzY5ZTllODI0
YjBkMTFmYTE2ZjJkYmEyNzNkMTA5ODZiODMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
QEAgLTg2NSw3ICs4NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
LCByZWdUMCk7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShiYXNl
KSkKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDAp
KTsKLSAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkpIHsKKyAgICBp
ZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkgfHwgbV9jb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09G
RlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgcmVnVDIpOwogICAgICAgICBpc05vdE9iamVj
dC5hcHBlbmQoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9G
KFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX3R5cGUpKSwgSW1tMzIoT2JqZWN0VHlwZSkpKTsKICAg
ICB9CkBAIC0xMjI3LDYgKzEyMjcsMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
VGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwg
bV90eXBlSW5mby5tX2ZsYWdzKSksIEltbTMyKE5lZWRzVGhpc0NvbnZlcnNpb24pKSk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBKdW1wIG5vdE51bGwgPSBicmFuY2hU
ZXN0UHRyKE5vblplcm8sIHJlZ1QwKTsKKyAgICBtb3ZlKEltbVB0cihKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpKSwgcmVnVDApOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOworICAgIEp1bXAgc2V0VGhpcyA9IGp1bXAo
KTsKKyAgICBub3ROdWxsLmxpbmsodGhpcyk7CisgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRK
dW1wSWZOb3RKU0NlbGwocmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNU
X09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgcmVnVDEpOworICAgIEp1bXAgbm90QW5P
YmplY3QgPSBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QzLCBPQkpFQ1RfT0ZGU0VUT0Yo
U3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fdHlwZSkpLCBJbW0zMihPYmplY3RUeXBlKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09G
RlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX2ZsYWdzKSksIEltbTMyKE5lZWRzVGhpc0Nv
bnZlcnNpb24pKSk7CisgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKKyAgICBub3RBbk9iamVj
dC5saW5rKHRoaXMpOworICAgIHNldFRoaXMubGluayh0aGlzKTsKK30KKwogdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkBAIC0x
Mjc2LDYgKzEyOTMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRfdGhpcyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBzdHViQ2FsbC5j
YWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY29u
dmVydF90aGlzX3N0cmljdCk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOworICAg
IHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Cit9CisKIHZv
aWQgSklUOjplbWl0U2xvd19vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmlu
ZGV4IGFkM2I1NTgyNmEyZmVhMGE5NmFmNjQ5M2IzYzc0MTUxMGZkN2RlZmUuLjBkZTllMjAyMjMx
YzMxY2NiYjlmZDc4NGYyMjFiYzA3MTcyOWExYjIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCkBAIC0xMjE1LDcgKzEyMTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cG5hbWVzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQoYmFz
ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRp
YXRlKGJhc2UpKQogICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGlmIChiYXNlICE9IG1fY29k
ZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSkgeworICAgIGlmIChiYXNlICE9IG1fY29kZUJsb2NrLT50
aGlzUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVy
ZSkpLCByZWdUMik7CiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2g4KE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1f
dHlwZSkpLCBJbW0zMihPYmplY3RUeXBlKSkpOwogICAgIH0KQEAgLTE1MjgsNiArMTUyOCwyNiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfY29u
dmVydF90aGlzKSwgdGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICAKKyAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QxLCByZWdU
MCk7CisgICAgCisgICAgSnVtcCBub3ROdWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBJ
bW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgZW1pdFN0b3JlKHRoaXNSZWdpc3Rl
ciwganNOdWxsKCkpOworICAgIEp1bXAgc2V0VGhpcyA9IGp1bXAoKTsKKyAgICBub3ROdWxsLmxp
bmsodGhpcyk7CisgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
T0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgcmVnVDEpOworICAgIEp1bXAg
bm90QW5PYmplY3QgPSBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QzLCBPQkpFQ1RfT0ZG
U0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fdHlwZSkpLCBJbW0zMihPYmplY3RUeXBlKSk7
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMSwgT0JK
RUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX2ZsYWdzKSksIEltbTMyKE5lZWRz
VGhpc0NvbnZlcnNpb24pKSk7CisgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKKyAgICBub3RB
bk9iamVjdC5saW5rKHRoaXMpOworICAgIHNldFRoaXMubGluayh0aGlzKTsKKyAgICBtYXAobV9i
eXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90aGlzKSwgdGhpc1JlZ2lz
dGVyLCByZWdUMSwgcmVnVDApOworfQorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29udmVydF90
aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTE1NDAsNiArMTU2MCwxNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93QwogICAgIHN0dWJDYWxsLmNhbGwodGhpc1JlZ2lzdGVyKTsKIH0KIAor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3sKKyAgICB1bnNpZ25lZCB0aGlzUmVnaXN0ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOworICAgIAorICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICAKKyAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY29udmVydF90aGlzX3N0cmljdCk7CisgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJlZ1QwKTsKKyAgICBzdHViQ2FsbC5jYWxsKHRoaXNS
ZWdpc3Rlcik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfd2lsbF9jYWxsKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgcGVlayhyZWdUMiwgT0JKRUNUX09G
RlNFVE9GKEpJVFN0YWNrRnJhbWUsIGVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSkgLyBzaXplb2Yo
dm9pZCopKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGYxZWMwNzk2Mjk2ZDI5ZTBiMTg5
ODU0ZTY3NDI5ODY4YTNmYzU1MWMuLjhkNTQ0ZTczMzkwNjQ0YTRlMmU2ZmE2MWZiYWVlOWM3YTc3
NTIwNmYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMTA2NSw3ICsxMDY1LDkgQEAgc3Rh
dGljIE5FVkVSX0lOTElORSB2b2lkIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU0dsb2JhbEQKICAgICAgICAgcmV0dXJuIDA7IFwKICAgICB9IHdoaWxlICgw
KQogI2RlZmluZSBWTV9USFJPV19FWENFUFRJT05fQVRfRU5EKCkgXAotICAgIHJldHVyblRvVGhy
b3dUcmFtcG9saW5lKHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgU1RVQl9SRVRVUk5fQUREUkVTUywg
U1RVQl9SRVRVUk5fQUREUkVTUykKKyAgICBkbyB7XAorICAgICAgICByZXR1cm5Ub1Rocm93VHJh
bXBvbGluZShzdGFja0ZyYW1lLmdsb2JhbERhdGEsIFNUVUJfUkVUVVJOX0FERFJFU1MsIFNUVUJf
UkVUVVJOX0FERFJFU1MpO1wKKyAgICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIENIRUNLX0ZPUl9F
WENFUFRJT04oKSBcCiAgICAgZG8geyBcCkBAIC0xMjk1LDEyICsxMjk3LDIyIEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9jb252ZXJ0X3RoaXMpCiAKICAgICBKU1Zh
bHVlIHYxID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9
IHYxLnRvVGhpc09iamVjdChjYWxsRnJhbWUpOwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRf
RU5EKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfY29udmVydF90aGlzX3N0cmljdCkKK3sK
KyAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CisgICAgCisgICAgSlNWYWx1
ZSB2MSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHYxLnRv
U3RyaWN0VGhpc09iamVjdChjYWxsRnJhbWUpOworICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRf
RU5EKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkLCBvcF9lbmQpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1F
KHN0YWNrRnJhbWUpOwpAQCAtMTQwNCw3ICsxNDE2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3BfcHV0X2J5X2lkX2dlbmVyaWMpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1F
KHN0YWNrRnJhbWUpOwogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3Qoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1v
ZGUoKSk7CiAgICAgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS5wdXQoc3RhY2tGcmFtZS5j
YWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCksIHN0YWNrRnJhbWUuYXJn
c1syXS5qc1ZhbHVlKCksIHNsb3QpOwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7
CiB9CkBAIC0xNDEzLDcgKzE0MjUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9w
dXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwogICAgIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpOwogICAgIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkucHV0RGlyZWN0KHN0YWNr
RnJhbWUuY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpLCBzdGFja0Zy
YW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FU
X0VORCgpOwogfQpAQCAtMTQ0MSw3ICsxNDUzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9p
ZCwgb3BfcHV0X2J5X2lkKQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7CiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRl
bnRpZmllcigpOwogICAgIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAg
ICBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLnB1dChjYWxsRnJhbWUsIGlkZW50LCBzdGFj
a0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTE0NjAsNyAr
MTQ3Miw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZF9kaXJlY3Qp
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKICAgICBJ
ZGVudGlmaWVyJiBpZGVudCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCk7CiAgICAg
Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHN0YWNrRnJhbWUuYXJn
c1swXS5qc1ZhbHVlKCkucHV0RGlyZWN0KGNhbGxGcmFtZSwgaWRlbnQsIHN0YWNrRnJhbWUuYXJn
c1syXS5qc1ZhbHVlKCksIHNsb3QpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
c3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAtMTQ3OSw4ICsxNDkxLDggQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lkX2ZhaWwpCiAKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgIElkZW50aWZpZXIm
IGlkZW50ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50aWZpZXIoKTsKLQotICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90OworICAgIAorICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICBzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpLnB1dChjYWxsRnJhbWUsIGlkZW50LCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgp
LCBzbG90KTsKIAogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CkBAIC0xNDkzLDcg
KzE1MDUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfZGlyZWN0
X2ZhaWwpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsK
ICAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCk7
CiAgICAgCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHN0YWNrRnJh
bWUuYXJnc1swXS5qc1ZhbHVlKCkucHV0RGlyZWN0KGNhbGxGcmFtZSwgaWRlbnQsIHN0YWNrRnJh
bWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3QpOwogICAgIAogICAgIENIRUNLX0ZPUl9FWENFUFRJ
T05fQVRfRU5EKCk7CkBAIC0xODgwLDcgKzE4OTIsMTEgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
RW5jb2RlZEpTVmFsdWUsIG9wX2RlbF9ieV9pZCkKICAgICAKICAgICBKU09iamVjdCogYmFzZU9i
aiA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkudG9PYmplY3QoY2FsbEZyYW1lKTsKIAot
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50aWZpZXIoKSkpOworICAgIGJvb2wgY291
bGREZWxldGUgPSBiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIHN0YWNrRnJhbWUu
YXJnc1sxXS5pZGVudGlmaWVyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGNv
dWxkRGVsZXRlKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEtPmV4Y2Vw
dGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihzdGFja0ZyYW1lLmNhbGxGcmFtZSwgIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIik7CisKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTIyMTUsOCArMjIzMSwx
MCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF90ZWFyX29mZl9hY3RpdmF0aW9uKQog
ICAgIEFTU0VSVChzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKSk7CiAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9u
KHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkpOwogICAgIGFjdGl2YXRpb24tPmNvcHlSZWdp
c3RlcnMoKTsKLSAgICBpZiAoSlNWYWx1ZSB2ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUo
KSkKLSAgICAgICAgYXNBcmd1bWVudHModiktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlvbik7Cisg
ICAgaWYgKEpTVmFsdWUgdiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCkpIHsKKyAgICAg
ICAgaWYgKCFzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlvbik7
CisgICAgfQogfQogCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF90ZWFyX29mZl9hcmd1
bWVudHMpCkBAIC0yNDk2LDcgKzI1MTQsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBv
cF9wdXRfYnlfdmFsKQogICAgIH0gZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHko
Y2FsbEZyYW1lLCBzdWJzY3JpcHQudG9TdHJpbmcoY2FsbEZyYW1lKSk7CiAgICAgICAgIGlmICgh
c3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24pIHsgLy8gRG9uJ3QgcHV0IHRvIGFuIG9i
amVjdCBpZiB0b1N0cmluZyB0aHJldyBhbiBleGNlcHRpb24uCi0gICAgICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgICAgIGJhc2VWYWx1ZS5w
dXQoY2FsbEZyYW1lLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjUzOSw3ICsyNTU3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5
X3ZhbF9ieXRlX2FycmF5KQogICAgIH0gZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVy
dHkoY2FsbEZyYW1lLCBzdWJzY3JpcHQudG9TdHJpbmcoY2FsbEZyYW1lKSk7CiAgICAgICAgIGlm
ICghc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24pIHsgLy8gRG9uJ3QgcHV0IHRvIGFu
IG9iamVjdCBpZiB0b1N0cmluZyB0aHJldyBhbiBleGNlcHRpb24uCi0gICAgICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgICAgIGJhc2VWYWx1
ZS5wdXQoY2FsbEZyYW1lLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgICAgICB9CiAgICAg
fQpAQCAtMzQ4NiwxOSArMzUwNCwyMiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfZGVsX2J5X3ZhbCkKICAgICBKU09iamVjdCogYmFzZU9iaiA9IGJhc2VWYWx1ZS50
b09iamVjdChjYWxsRnJhbWUpOyAvLyBtYXkgdGhyb3cKIAogICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKKyAg
ICBib29sIHJlc3VsdDsKICAgICB1aW50MzJfdCBpOwogICAgIGlmIChzdWJzY3JpcHQuZ2V0VUlu
dDMyKGkpKQotICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oYmFzZU9iai0+ZGVsZXRlUHJvcGVy
dHkoY2FsbEZyYW1lLCBpKSk7CisgICAgICAgIHJlc3VsdCA9IGJhc2VPYmotPmRlbGV0ZVByb3Bl
cnR5KGNhbGxGcmFtZSwgaSk7CiAgICAgZWxzZSB7CiAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJ
T04oKTsKICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShjYWxsRnJhbWUsIHN1YnNjcmlwdC50
b1N0cmluZyhjYWxsRnJhbWUpKTsKICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwotICAg
ICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oYmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1l
LCBwcm9wZXJ0eSkpOworICAgICAgICByZXN1bHQgPSBiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShj
YWxsRnJhbWUsIHByb3BlcnR5KTsKICAgICB9CiAKKyAgICBpZiAoIXJlc3VsdCAmJiBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgc3RhY2tGcmFtZS5nbG9i
YWxEYXRhLT5leGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3Ioc3RhY2tGcmFtZS5jYWxsRnJhbWUs
ICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworCiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElP
Tl9BVF9FTkQoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKIERFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9nZXR0ZXIpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCmluZGV4IDJi
MjJlNmQ0NDljNWZjY2JkY2U5OGFmZjA5ZDc4OTQzOGU3NzI3MDkuLmJkN2QxOWNkZDZjN2NkMTZi
NjhmOTkwOGIzZTY0NDliYTk3ODdmMmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCkBAIC0yOTYsNiAr
Mjk2LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29w
X2NvbnN0cnVjdF9Ob3RKU0NvbnN0cnVjdChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVu
Y29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jcmVhdGVfdGhpcyhTVFVCX0FSR1NfREVDTEFS
QVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jb252ZXJ0X3RoaXMo
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlf
b3BfY29udmVydF90aGlzX3N0cmljdChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29k
ZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jcmVhdGVfYXJndW1lbnRzKFNUVUJfQVJHU19ERUNM
QVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NyZWF0ZV9hcmd1
bWVudHNfbm9fcGFyYW1zKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFs
dWUgSklUX1NUVUIgY3RpX29wX2RlbF9ieV9pZChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggNDAwMjNmOGI2OWQ3MjZjNTQwM2RjNzk2Yzg2
YjFjNzc5ZWQ4MjNiMS4uYTMzNmZkNWMyMDBmMmFjMTYyNWEyNDNmZjUxZWM5YmU0ZjczM2M5MSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yNDksMTAgKzI0OSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Cb2R5Tm9k
ZSogY3JlYXRlRnVuY3Rpb25Cb2R5KCkKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGVGdW5j
dGlvbkJvZHkoYm9vbCBpblN0cmljdENvbnRleHQpCiAgICAgewogICAgICAgICB1c2VzQ2xvc3Vy
ZXMoKTsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERh
dGEpOworICAgICAgICByZXR1cm4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKG1fZ2xvYmFsRGF0
YSwgaW5TdHJpY3RDb250ZXh0KTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUgPGJvb2w+IFBy
b3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBG
dW5jdGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBv
cywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKQEAgLTU3OCw2ICs1NzgsOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgY29uc3QgSWRlbnRpZmllciYgZ2V0TmFtZShQcm9wZXJ0eSBw
cm9wZXJ0eSkgeyByZXR1cm4gcHJvcGVydHktPm5hbWUoKTsgfQogICAgIFByb3BlcnR5Tm9kZTo6
VHlwZSBnZXRUeXBlKFByb3BlcnR5IHByb3BlcnR5KSB7IHJldHVybiBwcm9wZXJ0eS0+dHlwZSgp
OyB9CisKKyAgICBib29sIGlzUmVzb2x2ZShFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4g
ZXhwci0+aXNSZXNvbHZlTm9kZSgpOyB9CiBwcml2YXRlOgogICAgIHN0cnVjdCBTY29wZSB7CiAg
ICAgICAgIFNjb3BlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQ
YXJzZXIuY3BwCmluZGV4IDBlNTI2YWM3N2ZkZGQ3NGJjYmM2MGE3MDBlMWY3NTdmZGVmYWEwZWMu
LmJjN2UxMThlZjA5N2I4OTQwZjUzNTE2YWJlOWRmZGJiMTRiM2I0MzEgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0pTUGFyc2VyLmNwcApAQCAtNDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZp
bmUgZmFpbCgpIGRvIHsgbV9lcnJvciA9IHRydWU7IHJldHVybiAwOyB9IHdoaWxlICgwKQogI2Rl
ZmluZSBmYWlsSWZGYWxzZShjb25kKSBkbyB7IGlmICghKGNvbmQpKSBmYWlsKCk7IH0gd2hpbGUg
KDApCiAjZGVmaW5lIGZhaWxJZlRydWUoY29uZCkgZG8geyBpZiAoKGNvbmQpKSBmYWlsKCk7IH0g
d2hpbGUgKDApCisjZGVmaW5lIGZhaWxJZlN0cmljdFRydWUoY29uZCkgZG8geyBpZiAoKGNvbmQp
ICYmIHN0cmljdE1vZGUoKSkgZmFpbCgpOyB9IHdoaWxlICgwKQorI2RlZmluZSBmYWlsSWZTdHJp
Y3RGYWxzZShjb25kKSBkbyB7IGlmICgoIShjb25kKSkgJiYgc3RyaWN0TW9kZSgpKSBmYWlsKCk7
IH0gd2hpbGUgKDApCiAjZGVmaW5lIGNvbnN1bWVPckZhaWwodG9rZW5UeXBlKSBkbyB7IGlmICgh
Y29uc3VtZSh0b2tlblR5cGUpKSBmYWlsKCk7IH0gd2hpbGUgKDApCiAjZGVmaW5lIG1hdGNoT3JG
YWlsKHRva2VuVHlwZSkgZG8geyBpZiAoIW1hdGNoKHRva2VuVHlwZSkpIGZhaWwoKTsgfSB3aGls
ZSAoMCkKICNkZWZpbmUgZmFpbElmU3RhY2tPdmVyZmxvdygpIGRvIHsgZmFpbElmRmFsc2UoY2Fu
UmVjdXJzZSgpKTsgfSB3aGlsZSAoMCkKQEAgLTY3LDggKzY5LDggQEAgc3RhdGljIGNvbnN0IHB0
cmRpZmZfdCBrTWF4UGFyc2VyU3RhY2tVc2FnZSA9IDEyOCAqIHNpemVvZih2b2lkKikgKiAxMDI0
OwogCiBjbGFzcyBKU1BhcnNlciB7CiBwdWJsaWM6Ci0gICAgSlNQYXJzZXIoTGV4ZXIqLCBKU0ds
b2JhbERhdGEqLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBTb3VyY2VQcm92aWRlciopOwotICAgIGJv
b2wgcGFyc2VQcm9ncmFtKCk7CisgICAgSlNQYXJzZXIoTGV4ZXIqLCBKU0dsb2JhbERhdGEqLCBG
dW5jdGlvblBhcmFtZXRlcnMqLCBib29sIGlzU3RyaWN0Q29udGV4dCwgU291cmNlUHJvdmlkZXIq
KTsKKyAgICBib29sIHBhcnNlUHJvZ3JhbShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
Kik7CiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewogICAgICAgICBBbGxv
d0luT3ZlcnJpZGUoSlNQYXJzZXIqIHBhcnNlcikKQEAgLTkwLDcgKzkyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9rZW4ubV9pbmZvLmxpbmU7CiAgICAgICAgIG1fbGFz
dFRva2VuRW5kID0gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OwogICAgICAgICBtX2xleGVyLT5z
ZXRMYXN0TGluZU51bWJlcihtX2xhc3RMaW5lKTsKLSAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBt
X2xleGVyLT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2luZm8sIGxleFR5cGUpOwor
ICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleCgmbV90b2tlbi5tX2RhdGEsICZt
X3Rva2VuLm1faW5mbywgbGV4VHlwZSwgc3RyaWN0TW9kZSgpKTsKICAgICAgICAgbV90b2tlbkNv
dW50Kys7CiAgICAgfQogCkBAIC0xMjEsOSArMTIzLDIzIEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OwogICAgIH0KLQotICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxl
bWVudHMoVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKKyAgICAKKyAgICB2b2lk
IHN0YXJ0TG9vcCgpIHsgY3VycmVudFNjb3BlKCktPnN0YXJ0TG9vcCgpOyB9CisgICAgdm9pZCBl
bmRMb29wKCkgeyBjdXJyZW50U2NvcGUoKS0+ZW5kTG9vcCgpOyB9CisgICAgdm9pZCBzdGFydFN3
aXRjaCgpIHsgY3VycmVudFNjb3BlKCktPnN0YXJ0U3dpdGNoKCk7IH0KKyAgICB2b2lkIGVuZFN3
aXRjaCgpIHsgY3VycmVudFNjb3BlKCktPmVuZFN3aXRjaCgpOyB9CisgICAgdm9pZCBzZXRTdHJp
Y3RNb2RlKCkgeyBjdXJyZW50U2NvcGUoKS0+c2V0U3RyaWN0TW9kZSgpOyB9CisgICAgYm9vbCBz
dHJpY3RNb2RlKCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPnN0cmljdE1vZGUoKTsgfQorICAg
IGJvb2wgaXNWYWxpZFN0cmljdE1vZGUoKSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+aXNWYWxp
ZFN0cmljdE1vZGUoKTsgfQorICAgIGJvb2wgZGVjbGFyZVBhcmFtZXRlcihjb25zdCBJZGVudGlm
aWVyKiBpZGVudCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPmRlY2xhcmVQYXJhbWV0ZXIoaWRl
bnQpOyB9CisgICAgYm9vbCBicmVha0lzVmFsaWQoKSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+
YnJlYWtJc1ZhbGlkKCk7IH0KKyAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyKiBs
YWJlbCkgeyBjdXJyZW50U2NvcGUoKS0+cHVzaExhYmVsKGxhYmVsKTsgfQorICAgIHZvaWQgcG9w
TGFiZWwoKSB7IGN1cnJlbnRTY29wZSgpLT5wb3BMYWJlbCgpOyB9CisgICAgYm9vbCBoYXNMYWJl
bChjb25zdCBJZGVudGlmaWVyKiBsYWJlbCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPmhhc0xh
YmVsKGxhYmVsKTsgfQorCisgICAgZW51bSBTb3VyY2VFbGVtZW50c01vZGUgeyBDaGVja0ZvclN0
cmljdE1vZGUsIERvbnRDaGVja0ZvclN0cmljdE1vZGUgfTsKKyAgICB0ZW1wbGF0ZSA8U291cmNl
RWxlbWVudHNNb2RlIG1vZGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMg
cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNv
bnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXIm
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VW
YXJEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUNvbnN0RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImKTsK
QEAgLTE5OSwzMiArMjE1LDExMyBAQCBwcml2YXRlOgogICAgIGludCBtX2Fzc2lnbm1lbnRDb3Vu
dDsKICAgICBpbnQgbV9ub25MSFNDb3VudDsKICAgICBib29sIG1fc3ludGF4QWxyZWFkeVZhbGlk
YXRlZDsKKyAgICBpbnQgbV9zdGF0ZW1lbnREZXB0aDsKKyAgICBpbnQgbV9ub25Ucml2aWFsRXhw
cmVzc2lvbkNvdW50OworICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbGFzdElkZW50aWZpZXI7CisK
KyAgICBzdHJ1Y3QgRGVwdGhNYW5hZ2VyIHsKKyAgICAgICAgRGVwdGhNYW5hZ2VyKGludCogZGVw
dGgpCisgICAgICAgICAgICA6IG1fb3JpZ2luYWxEZXB0aCgqZGVwdGgpCisgICAgICAgICAgICAs
IG1fZGVwdGgoZGVwdGgpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
fkRlcHRoTWFuYWdlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgICptX2RlcHRoID0gbV9vcmln
aW5hbERlcHRoOworICAgICAgICB9CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIGlu
dCBtX29yaWdpbmFsRGVwdGg7CisgICAgICAgIGludCogbV9kZXB0aDsKKyAgICB9OwogCiAgICAg
c3RydWN0IFNjb3BlIHsKLSAgICAgICAgU2NvcGUoKQotICAgICAgICAgICAgOiBtX3VzZXNFdmFs
KGZhbHNlKQorICAgICAgICBTY29wZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgc3Ry
aWN0TW9kZSkKKyAgICAgICAgICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCisgICAgICAg
ICAgICAsIG1fdXNlc0V2YWwoZmFsc2UpCiAgICAgICAgICAgICAsIG1fbmVlZHNGdWxsQWN0aXZh
dGlvbihmYWxzZSkKICAgICAgICAgICAgICwgbV9hbGxvd3NOZXdEZWNscyh0cnVlKQorICAgICAg
ICAgICAgLCBtX3N0cmljdE1vZGUoc3RyaWN0TW9kZSkKKyAgICAgICAgICAgICwgbV9pc1ZhbGlk
U3RyaWN0TW9kZSh0cnVlKQorICAgICAgICAgICAgLCBtX2xvb3BEZXB0aCgwKQorICAgICAgICAg
ICAgLCBtX3N3aXRjaERlcHRoKDApCisgICAgICAgICAgICAsIG1fbGFiZWxzKDApCiAgICAgICAg
IHsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBkZWNsYXJlVmFyaWFibGUoY29u
c3QgSWRlbnRpZmllciogaWRlbnQpCisgICAgICAgIHZvaWQgc3RhcnRTd2l0Y2goKSB7IG1fc3dp
dGNoRGVwdGgrKzsgfQorICAgICAgICB2b2lkIGVuZFN3aXRjaCgpIHsgbV9zd2l0Y2hEZXB0aC0t
OyB9CisgICAgICAgIHZvaWQgc3RhcnRMb29wKCkgeyBtX2xvb3BEZXB0aCsrOyB9CisgICAgICAg
IHZvaWQgZW5kTG9vcCgpIHsgQVNTRVJUKG1fbG9vcERlcHRoKTsgbV9sb29wRGVwdGgtLTsgfQor
ICAgICAgICBib29sIGluTG9vcCgpIHsgcmV0dXJuICEhbV9sb29wRGVwdGg7IH0KKyAgICAgICAg
Ym9vbCBicmVha0lzVmFsaWQoKSB7IHJldHVybiBtX2xvb3BEZXB0aCB8fCBtX3N3aXRjaERlcHRo
OyB9CisgICAgICAgIHZvaWQgcHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxhYmVsKQogICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fbGFiZWxzKQorICAgICAgICAgICAgICAgIG1fbGFi
ZWxzID0gbmV3IExhYmVsU3RhY2s7CisgICAgICAgICAgICBtX2xhYmVscy0+YXBwZW5kKGxhYmVs
LT5pbXBsKCkpOworICAgICAgICB9CisgICAgICAgIHZvaWQgcG9wTGFiZWwoKQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQobV9sYWJlbHMpOworICAgICAgICAgICAgQVNTRVJUKG1fbGFi
ZWxzLT5zaXplKCkpOworICAgICAgICAgICAgbV9sYWJlbHMtPnJlbW92ZUxhc3QoKTsKKyAgICAg
ICAgfQorICAgICAgICBib29sIGhhc0xhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fbGFiZWxzKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBtX2xhYmVscy0+c2l6ZSgpOyBpID4g
MDsgaS0tKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbGFiZWxzLT5hdChpIC0gMSkgPT0gbGFi
ZWwtPmltcGwoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBib29s
IGlzRnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIAorICAgICAgICBib29sIGRl
Y2xhcmVWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+ZXZhbCAhPSAqaWRlbnQgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVu
dHMgIT0gKmlkZW50OworICAgICAgICAgICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1faXNWYWxp
ZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1vZGU7CiAgICAgICAgICAgICBtX2RlY2xhcmVk
VmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSk7CisgICAgICAgICAgICByZXR1
cm4gaXNWYWxpZFN0cmljdE1vZGU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQg
ZGVjbGFyZVdyaXRlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQobV9zdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIG1fd3JpdHRlblZhcmlhYmxl
cy5hZGQoaWRlbnQtPmltcGwoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wg
ZGVsZXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChtX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LT5pbXBsKCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIG1fZGVsZXRlZFZhcmlh
Ymxlcy5hZGQoaWRlbnQtPmltcGwoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBwcmV2ZW50TmV3RGVjbHMoKSB7IG1fYWxsb3dz
TmV3RGVjbHMgPSBmYWxzZTsgfQogICAgICAgICBib29sIGFsbG93c05ld0RlY2xzKCkgY29uc3Qg
eyByZXR1cm4gbV9hbGxvd3NOZXdEZWNsczsgfQogCisgICAgICAgIGJvb2wgZGVjbGFyZVBhcmFt
ZXRlcihjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKKyAgICAgICAgeworICAgICAgICAgICAgYm9v
bCBpc1ZhbGlkU3RyaWN0TW9kZSA9IG1fZGVjbGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3Ry
aW5nKCkuaW1wbCgpKS5zZWNvbmQgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFs
ICE9ICppZGVudCAmJiBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyAhPSAq
aWRlbnQ7CisgICAgICAgICAgICBtX2lzVmFsaWRTdHJpY3RNb2RlID0gbV9pc1ZhbGlkU3RyaWN0
TW9kZSAmJiBpc1ZhbGlkU3RyaWN0TW9kZTsKKyAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkU3Ry
aWN0TW9kZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCB1c2VWYXJpYWJsZShj
b25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1fdXNlc0V2YWwgfD0gaXNFdmFsOwogICAgICAgICAgICAgbV91c2VkVmFyaWFibGVzLmFk
ZChpZGVudC0+dXN0cmluZygpLmltcGwoKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IHZvaWQgbmVlZHNGdWxsQWN0aXZhdGlvbigpIHsgbV9uZWVkc0Z1bGxBY3RpdmF0aW9uID0gdHJ1
ZTsgfQorICAgICAgICB2b2lkIHNldE5lZWRzRnVsbEFjdGl2YXRpb24oKSB7IG1fbmVlZHNGdWxs
QWN0aXZhdGlvbiA9IHRydWU7IH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgY29sbGVjdEZyZWVW
YXJpYWJsZXMoU2NvcGUqIG5lc3RlZFNjb3BlLCBib29sIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFi
bGVzKQorICAgICAgICBib29sIGNvbGxlY3RGcmVlVmFyaWFibGVzKFNjb3BlKiBuZXN0ZWRTY29w
ZSwgYm9vbCBzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcykKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKG5lc3RlZFNjb3BlLT5tX3VzZXNFdmFsKQogICAgICAgICAgICAgICAgIG1fdXNlc0V2
YWwgPSB0cnVlOwpAQCAtMjM2LDYgKzMzMyw0NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGlmIChzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcykKICAgICAgICAgICAgICAgICAgICAgbV9j
bG9zZWRWYXJpYWJsZXMuYWRkKCpwdHIpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KG5lc3RlZFNjb3BlLT5tX3dyaXR0ZW5WYXJpYWJsZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAg
ICAgSWRlbnRpZmllclNldDo6aXRlcmF0b3IgZW5kID0gbmVzdGVkU2NvcGUtPm1fd3JpdHRlblZh
cmlhYmxlcy5lbmQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJh
dG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5tX3dyaXR0ZW5WYXJpYWJsZXMuYmVnaW4oKTsgcHRyICE9
IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2Rl
Y2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIG1fd3JpdHRlblZhcmlhYmxlcy5hZGQoKnB0
cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5l
c3RlZFNjb3BlLT5tX2RlbGV0ZWRWYXJpYWJsZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAg
SWRlbnRpZmllclNldDo6aXRlcmF0b3IgZW5kID0gbmVzdGVkU2NvcGUtPm1fZGVsZXRlZFZhcmlh
Ymxlcy5lbmQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9y
IHB0ciA9IG5lc3RlZFNjb3BlLT5tX2RlbGV0ZWRWYXJpYWJsZXMuYmVnaW4oKTsgcHRyICE9IGVu
ZDsgKytwdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlY2xh
cmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9kZWNsYXJlZFZhcmlhYmxlcy5j
b250YWlucygqcHRyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9kZWxldGVkVmFyaWFibGVzLmFkZCgqcHRyKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgZ2V0VW5jYXB0dXJlZFdyaXR0ZW5WYXJpYWJsZXMoSWRlbnRp
ZmllclNldCYgd3JpdHRlblZhcmlhYmxlcykKKyAgICAgICAgeworICAgICAgICAgICAgSWRlbnRp
ZmllclNldDo6aXRlcmF0b3IgZW5kID0gbV93cml0dGVuVmFyaWFibGVzLmVuZCgpOworICAgICAg
ICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBtX3dyaXR0ZW5WYXJpYWJs
ZXMuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1f
ZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAgICAgICAgICAgICAgIHdy
aXR0ZW5WYXJpYWJsZXMuYWRkKCpwdHIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgYm9vbCBnZXREZWxldGVkVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIGRlbGV0ZWRWYXJp
YWJsZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVu
ZCA9IG1fZGVsZXRlZFZhcmlhYmxlcy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoSWRlbnRpZmll
clNldDo6aXRlcmF0b3IgcHRyID0gbV9kZWxldGVkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBl
bmQ7ICsrcHRyKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZGVjbGFyZWRWYXJpYWJsZXMuY29u
dGFpbnMoKnB0cikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZWRWYXJpYWJsZXMuc3dhcChtX2RlbGV0ZWRWYXJpYWJs
ZXMpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IGdldENhcHR1cmVkVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKQpA
QCAtMjUwLDEzICszODYsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXB0dXJlZFZh
cmlhYmxlcy5hZGQoKnB0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgdm9p
ZCBzZXRTdHJpY3RNb2RlKCkgeyBtX3N0cmljdE1vZGUgPSB0cnVlOyB9CisgICAgICAgIGJvb2wg
c3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0TW9kZTsgfQorICAgICAgICBib29s
IGlzVmFsaWRTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkU3RyaWN0TW9kZTsg
fQorCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBtX3VzZXNFdmFsOwotICAgICAgICBib29s
IG1fbmVlZHNGdWxsQWN0aXZhdGlvbjsKLSAgICAgICAgYm9vbCBtX2FsbG93c05ld0RlY2xzOwor
ICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKKyAgICAgICAgYm9vbCBtX3VzZXNF
dmFsIDogMTsKKyAgICAgICAgYm9vbCBtX25lZWRzRnVsbEFjdGl2YXRpb24gOiAxOworICAgICAg
ICBib29sIG1fYWxsb3dzTmV3RGVjbHMgOiAxOworICAgICAgICBib29sIG1fc3RyaWN0TW9kZSA6
IDE7CisgICAgICAgIGJvb2wgbV9pc1ZhbGlkU3RyaWN0TW9kZSA6IDE7CisgICAgICAgIGludCBt
X2xvb3BEZXB0aDsKKyAgICAgICAgaW50IG1fc3dpdGNoRGVwdGg7CisgICAgICAgIHR5cGVkZWYg
VmVjdG9yPFN0cmluZ0ltcGwqLCAyPiBMYWJlbFN0YWNrOworICAgICAgICBMYWJlbFN0YWNrKiBt
X2xhYmVsczsKICAgICAgICAgSWRlbnRpZmllclNldCBtX2RlY2xhcmVkVmFyaWFibGVzOwogICAg
ICAgICBJZGVudGlmaWVyU2V0IG1fdXNlZFZhcmlhYmxlczsKICAgICAgICAgSWRlbnRpZmllclNl
dCBtX2Nsb3NlZFZhcmlhYmxlczsKKyAgICAgICAgSWRlbnRpZmllclNldCBtX3dyaXR0ZW5WYXJp
YWJsZXM7CisgICAgICAgIElkZW50aWZpZXJTZXQgbV9kZWxldGVkVmFyaWFibGVzOwogICAgIH07
CiAgICAgCiAgICAgdHlwZWRlZiBWZWN0b3I8U2NvcGUsIDEwPiBTY29wZVN0YWNrOwpAQCAtMjgx
LDE5ICs0MzAsMjAgQEAgcHJpdmF0ZToKICAgICAKICAgICBTY29wZVJlZiBwdXNoU2NvcGUoKQog
ICAgIHsKLSAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZSgpKTsKKyAgICAgICAgbV9z
Y29wZVN0YWNrLmFwcGVuZChTY29wZShtX2dsb2JhbERhdGEsIG1fc2NvcGVTdGFjay5pc0VtcHR5
KCkgPyBmYWxzZSA6IG1fc2NvcGVTdGFjay5sYXN0KCkuc3RyaWN0TW9kZSgpKSk7CiAgICAgICAg
IHJldHVybiBjdXJyZW50U2NvcGUoKTsKICAgICB9CiAKLSAgICB2b2lkIHBvcFNjb3BlKFNjb3Bl
UmVmIHNjb3BlLCBib29sIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKQorICAgIGJvb2wgcG9w
U2NvcGUoU2NvcGVSZWYgc2NvcGUsIGJvb2wgc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMpCiAg
ICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCBzY29wZS5pbmRleCgpID09IG1fc2Nv
cGVTdGFjay5zaXplKCkgLSAxKTsKICAgICAgICAgQVNTRVJUKG1fc2NvcGVTdGFjay5zaXplKCkg
PiAxKTsKLSAgICAgICAgbV9zY29wZVN0YWNrW21fc2NvcGVTdGFjay5zaXplKCkgLSAyXS5jb2xs
ZWN0RnJlZVZhcmlhYmxlcygmbV9zY29wZVN0YWNrLmxhc3QoKSwgc2hvdWxkVHJhY2tDbG9zZWRW
YXJpYWJsZXMpOworICAgICAgICBib29sIHJlc3VsdCA9IG1fc2NvcGVTdGFja1ttX3Njb3BlU3Rh
Y2suc2l6ZSgpIC0gMl0uY29sbGVjdEZyZWVWYXJpYWJsZXMoJm1fc2NvcGVTdGFjay5sYXN0KCks
IHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKTsKICAgICAgICAgbV9zY29wZVN0YWNrLnJlbW92
ZUxhc3QoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBk
ZWNsYXJlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCisgICAgYm9vbCBkZWNsYXJl
VmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCiAgICAgewogICAgICAgICB1bnNpZ25l
ZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CiAgICAgICAgIEFTU0VSVChpIDwgbV9zY29w
ZVN0YWNrLnNpemUoKSk7CkBAIC0zMDEsMTkgKzQ1MSwzMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgaS0tOwogICAgICAgICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKICAg
ICAgICAgfQotICAgICAgICBtX3Njb3BlU3RhY2tbaV0uZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsK
KyAgICAgICAgcmV0dXJuIG1fc2NvcGVTdGFja1tpXS5kZWNsYXJlVmFyaWFibGUoaWRlbnQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGRlY2xhcmVXcml0ZShjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCkKKyAgICB7CisgICAgICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKQorICAgICAg
ICAgICAgbV9zY29wZVN0YWNrLmxhc3QoKS5kZWNsYXJlV3JpdGUoaWRlbnQpOwogICAgIH0KIAor
ICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCisgICAgewor
ICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkKKyAgICAgICAgICAgIHJldHVy
biBtX3Njb3BlU3RhY2subGFzdCgpLmRlbGV0ZVByb3BlcnR5KGlkZW50KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIFNjb3BlU3RhY2sgbV9zY29wZVN0YWNrOwogfTsK
IAotaW50IGpzUGFyc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBGdW5jdGlvblBhcmFtZXRl
cnMqIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZSkKK2ludCBqc1BhcnNlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEZ1bmN0
aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGNvbnN0IFNv
dXJjZUNvZGUqIHNvdXJjZSkKIHsKLSAgICBKU1BhcnNlciBwYXJzZXIoZ2xvYmFsRGF0YS0+bGV4
ZXIsIGdsb2JhbERhdGEsIHBhcmFtZXRlcnMsIHNvdXJjZS0+cHJvdmlkZXIoKSk7Ci0gICAgcmV0
dXJuIHBhcnNlci5wYXJzZVByb2dyYW0oKTsKKyAgICBKU1BhcnNlciBwYXJzZXIoZXhlYy0+Z2xv
YmFsRGF0YSgpLmxleGVyLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXJhbWV0ZXJzLCBpblN0cmlj
dENvbnRleHQsIHNvdXJjZS0+cHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIHBhcnNlci5wYXJzZVBy
b2dyYW0oZXhlYywgbGV4aWNhbEdsb2JhbE9iamVjdCk7CiB9CiAKLUpTUGFyc2VyOjpKU1BhcnNl
cihMZXhlciogbGV4ZXIsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRnVuY3Rpb25QYXJhbWV0
ZXJzKiBwYXJhbWV0ZXJzLCBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIpCitKU1BhcnNlcjo6SlNQ
YXJzZXIoTGV4ZXIqIGxleGVyLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFy
YW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIFNvdXJjZVByb3ZpZGVy
KiBwcm92aWRlcikKICAgICA6IG1fbGV4ZXIobGV4ZXIpCiAgICAgLCBtX2VuZEFkZHJlc3MoMCkK
ICAgICAsIG1fZXJyb3IoZmFsc2UpCkBAIC0zMjUsMjggKzQ4OCw1NCBAQCBKU1BhcnNlcjo6SlNQ
YXJzZXIoTGV4ZXIqIGxleGVyLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFy
YW1ldGVycyogcAogICAgICwgbV9hc3NpZ25tZW50Q291bnQoMCkKICAgICAsIG1fbm9uTEhTQ291
bnQoMCkKICAgICAsIG1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZChwcm92aWRlci0+aXNWYWxpZCgp
KQorICAgICwgbV9zdGF0ZW1lbnREZXB0aCgwKQorICAgICwgbV9ub25Ucml2aWFsRXhwcmVzc2lv
bkNvdW50KDApCisgICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiB7CiAgICAgbV9lbmRBZGRyZXNz
ID0gd3RmVGhyZWFkRGF0YSgpLmFwcHJveGltYXRlZFN0YWNrU3RhcnQoKSAtIGtNYXhQYXJzZXJT
dGFja1VzYWdlOwotICAgIG5leHQoKTsKLSAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcih0
b2tlbkxpbmUoKSk7CiAgICAgU2NvcGVSZWYgc2NvcGUgPSBwdXNoU2NvcGUoKTsKKyAgICBpZiAo
aW5TdHJpY3RDb250ZXh0KQorICAgICAgICBzY29wZS0+c2V0U3RyaWN0TW9kZSgpOwogICAgIGlm
IChwYXJhbWV0ZXJzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0
ZXJzLT5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIHNjb3BlLT5kZWNsYXJlVmFyaWFibGUoJnBh
cmFtZXRlcnMtPmF0KGkpKTsKKyAgICAgICAgICAgIHNjb3BlLT5kZWNsYXJlUGFyYW1ldGVyKCZw
YXJhbWV0ZXJzLT5hdChpKSk7CiAgICAgfQorICAgIG5leHQoKTsKKyAgICBtX2xleGVyLT5zZXRM
YXN0TGluZU51bWJlcih0b2tlbkxpbmUoKSk7CiB9CiAKLWJvb2wgSlNQYXJzZXI6OnBhcnNlUHJv
Z3JhbSgpCitib29sIEpTUGFyc2VyOjpwYXJzZVByb2dyYW0oRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkKIHsKICAgICBBU1RCdWlsZGVyIGNvbnRl
eHQobV9nbG9iYWxEYXRhLCBtX2xleGVyKTsKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmco
KSkKKyAgICAgICAgbV9zdGF0ZW1lbnREZXB0aC0tOwogICAgIFNjb3BlUmVmIHNjb3BlID0gY3Vy
cmVudFNjb3BlKCk7Ci0gICAgU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VT
b3VyY2VFbGVtZW50czxBU1RCdWlsZGVyPihjb250ZXh0KTsKKyAgICBTb3VyY2VFbGVtZW50cyog
c291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4o
Y29udGV4dCk7CiAgICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhY29uc3VtZShFT0ZUT0spKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkg
eworICAgICAgICBJZGVudGlmaWVyU2V0IHdyaXR0ZW5WYXJpYWJsZXM7CisgICAgICAgIHNjb3Bl
LT5nZXRVbmNhcHR1cmVkV3JpdHRlblZhcmlhYmxlcyh3cml0dGVuVmFyaWFibGVzKTsKKyAgICAg
ICAgSWRlbnRpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gd3JpdHRlblZhcmlhYmxlcy5l
bmQoKTsKKyAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBwdHIgPSB3
cml0dGVuVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGlm
ICghbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgKnB0ciksIHNsb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIElkZW50aWZpZXJTZXQgZGVsZXRlZFZhcmlhYmxlczsKKyAgICAgICAgaWYg
KCFzY29wZS0+Z2V0RGVsZXRlZFZhcmlhYmxlcyhkZWxldGVkVmFyaWFibGVzKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBlbmQgPSBkZWxldGVkVmFyaWFibGVzLmVuZCgpOwor
ICAgICAgICBTeW1ib2xUYWJsZSYgZ2xvYmFsRW52UmVjb3JkID0gbGV4aWNhbEdsb2JhbE9iamVj
dC0+c3ltYm9sVGFibGUoKTsKKyAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0Ojpjb25zdF9pdGVy
YXRvciBwdHIgPSBkZWxldGVkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7
CisgICAgICAgICAgICBpZiAoIWdsb2JhbEVudlJlY29yZC5nZXQoKnB0cikuaXNOdWxsKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiAgICAgSWRlbnRp
ZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBzY29wZS0+Z2V0Q2FwdHVyZWRWYXJpYWJs
ZXMoY2FwdHVyZWRWYXJpYWJsZXMpOwotICAgIG1fZ2xvYmFsRGF0YS0+cGFyc2VyLT5kaWRGaW5p
c2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250
ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mZWF0dXJlcygpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0TGluZSwgY29udGV4dC5udW1Db25z
dGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgIG1fZ2xvYmFsRGF0YS0+cGFyc2VyLT5k
aWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9ucygp
LCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mZWF0dXJlcygpIHwgKHNjb3Bl
LT5zdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDApLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdExpbmUsIGNvbnRleHQubnVtQ29uc3Rh
bnRzKCksIGNhcHR1cmVkVmFyaWFibGVzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTM1
NSwxMSArNTQ0LDMwIEBAIGJvb2wgSlNQYXJzZXI6OmFsbG93QXV0b21hdGljU2VtaWNvbG9uKCkK
ICAgICByZXR1cm4gbWF0Y2goQ0xPU0VCUkFDRSkgfHwgbWF0Y2goRU9GVE9LKSB8fCBtX2xleGVy
LT5wcmV2VGVybWluYXRvcigpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBKU1BhcnNlcjo6cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRl
ciYgY29udGV4dCkKK3RlbXBsYXRlIDxKU1BhcnNlcjo6U291cmNlRWxlbWVudHNNb2RlIG1vZGUs
IGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgSlNQYXJzZXI6OnBhcnNlU291
cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgVHJlZVNvdXJjZUVsZW1l
bnRzIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwotICAg
IHdoaWxlIChUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQp
KQorICAgIGJvb2wgc2Vlbk5vbkRpcmVjdGl2ZSA9IGZhbHNlOworICAgIGNvbnN0IElkZW50aWZp
ZXIqIGRpcmVjdGl2ZSA9IDA7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1f
aW5mby5zdGFydE9mZnNldDsKKyAgICBib29sIGhhc1NldFN0cmljdCA9IGZhbHNlOworICAgIHdo
aWxlIChUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIGRp
cmVjdGl2ZSkpIHsKKyAgICAgICAgaWYgKG1vZGUgPT0gQ2hlY2tGb3JTdHJpY3RNb2RlICYmICFz
ZWVuTm9uRGlyZWN0aXZlKSB7CisgICAgICAgICAgICBpZiAoZGlyZWN0aXZlKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFoYXNTZXRTdHJpY3QgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT51c2VTdHJpY3RJZGVudGlmaWVyID09ICpkaXJlY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0U3RyaWN0TW9kZSgpOworICAgICAgICAgICAgICAgICAgICBoYXNTZXRTdHJpY3QgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShpc1ZhbGlkU3RyaWN0TW9kZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9sZXhlci0+c2V0T2Zmc2V0KHN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgICAgICAgICBmYWlsSWZU
cnVlKG1fZXJyb3IpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzZWVuTm9uRGlyZWN0
aXZlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChz
b3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsKKyAgICB9CiAKICAgICBpZiAobV9lcnJvcikKICAg
ICAgICAgZmFpbCgpOwpAQCAtMzk5LDcgKzYwNywxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlRG9XaGlsZVN0YXRlbWVudChUcmVl
QgogICAgIEFTU0VSVChtYXRjaChETykpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUo
KTsKICAgICBuZXh0KCk7Ci0gICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRl
bWVudChjb250ZXh0KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIHN0
YXJ0TG9vcCgpOworICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQo
Y29udGV4dCwgdW51c2VkKTsKKyAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVt
ZW50KTsKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGNvbnN1bWVPckZhaWwo
V0hJTEUpOwpAQCAtNDIyLDcgKzYzMywxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlV2hpbGVTdGF0ZW1lbnQoVHJlZUJ1aQogICAg
IGZhaWxJZkZhbHNlKGV4cHIpOwogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAg
Y29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKLSAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9
IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOworICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9
IDA7CisgICAgc3RhcnRMb29wKCk7CisgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJz
ZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOworICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZG
YWxzZShzdGF0ZW1lbnQpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdoaWxlU3RhdGVtZW50
KGV4cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KQEAgLTQ0MSw3ICs2NTUs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2Vy
OjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcgogICAgICAgICBsYXN0SWRlbnQgPSBuYW1lOwog
ICAgICAgICBuZXh0KCk7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBtYXRjaChFUVVB
TCk7Ci0gICAgICAgIGRlY2xhcmVWYXJpYWJsZShuYW1lKTsKKyAgICAgICAgZmFpbElmU3RyaWN0
RmFsc2UoZGVjbGFyZVZhcmlhYmxlKG5hbWUpKTsKICAgICAgICAgY29udGV4dC5hZGRWYXIobmFt
ZSwgKGhhc0luaXRpYWxpemVyIHx8ICghbV9hbGxvd3NJbiAmJiBtYXRjaChJTlRPS0VOKSkpID8g
RGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyIDogMCk7CiAgICAgICAgIGlmIChoYXNJ
bml0aWFsaXplcikgewogICAgICAgICAgICAgaW50IHZhckRpdm90ID0gdG9rZW5TdGFydCgpICsg
MTsKQEAgLTQ2NSw2ICs2NzksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcgogCiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xMaXN0IEpTUGFyc2VyOjpwYXJzZUNv
bnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogeworICAgIGZhaWxJZlRy
dWUoc3RyaWN0TW9kZSgpKTsKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25zdERlY2xzID0gMDsK
ICAgICBUcmVlQ29uc3REZWNsTGlzdCB0YWlsID0gMDsKICAgICBkbyB7CkBAIC01MzIsNyArNzQ3
LDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNl
cjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgICAgIGludCBlbmRMaW5lID0gdG9r
ZW5MaW5lKCk7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAKLSAgICAgICAg
VHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICAgICAgc3RhcnRMb29wKCk7Cisg
ICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwg
dW51c2VkKTsKKyAgICAgICAgZW5kTG9vcCgpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1l
bnQpOwogCiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChmb3JJblRhcmdl
dCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBpbkxvY2F0
aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CkBA
IC01NjYsNyArNzg0LDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgICAgIH0KICAg
ICAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChD
TE9TRVBBUkVOKTsKLSAgICAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRl
bWVudChjb250ZXh0KTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAg
ICAgICAgc3RhcnRMb29wKCk7CisgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFy
c2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKKyAgICAgICAgZW5kTG9vcCgpOwogICAgICAg
ICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
b3JMb29wKGRlY2xzLCBjb25kaXRpb24sIGluY3JlbWVudCwgc3RhdGVtZW50LCBoYXNEZWNsYXJh
dGlvbiwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CkBAIC01NzksNyArODAwLDEwIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VG
b3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgaW50IGV4cHJFbmQgPSBsYXN0VG9rZW5FbmQoKTsK
ICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQ
QVJFTik7Ci0gICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250
ZXh0KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIHN0YXJ0TG9vcCgp
OworICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwg
dW51c2VkKTsKKyAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAg
ICAKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AoZGVjbHMsIGV4cHIsIHN0YXRl
bWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7
CkBAIC01OTQsMTAgKzgxOCwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlQnJlYWtTdGF0ZW1lbnQoVHJlZUJ1aQogICAgIGludCBl
bmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogCi0gICAgaWYgKGF1dG9TZW1pQ29s
b24oKSkKKyAgICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CisgICAgICAgIGZhaWxJZlN0cmljdEZh
bHNlKGJyZWFrSXNWYWxpZCgpKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtT
dGF0ZW1lbnQoc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICB9CiAg
ICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgZmFpbElmU3RyaWN0RmFsc2UoaGFzTGFiZWwoaWRlbnQp
KTsKICAgICBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsK
ICAgICBuZXh0KCk7CkBAIC02MTQsMTAgKzg0MSwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQoVHJl
ZQogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogCi0gICAgaWYg
KGF1dG9TZW1pQ29sb24oKSkKKyAgICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CisgICAgICAgIGZh
aWxJZlN0cmljdEZhbHNlKGJyZWFrSXNWYWxpZCgpKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQ29udGludWVTdGF0ZW1lbnQoc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgZmFpbElmU3RyaWN0RmFsc2Uo
aGFzTGFiZWwoaWRlbnQpKTsKICAgICBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGVuZExpbmUg
PSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CkBAIC02MjgsNiArODU4LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUNvbnRpbnVl
U3RhdGVtZW50KFRyZWUKIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBKU1BhcnNlcjo6cGFyc2VSZXR1cm5TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7
CiAgICAgQVNTRVJUKG1hdGNoKFJFVFVSTikpOworICAgIGZhaWxJZlN0cmljdEZhbHNlKGN1cnJl
bnRTY29wZSgpLT5pc0Z1bmN0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUo
KTsKICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKICAgICBpbnQgc3RhcnQgPSB0b2tlblN0
YXJ0KCk7CkBAIC02NjgsNyArODk5LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZVRocm93U3RhdGVtZW50KFRyZWVCdWkKIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VXaXRo
U3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChXSVRI
KSk7Ci0gICAgY3VycmVudFNjb3BlKCktPm5lZWRzRnVsbEFjdGl2YXRpb24oKTsKKyAgICBmYWls
SWZUcnVlKHN0cmljdE1vZGUoKSk7CisgICAgY3VycmVudFNjb3BlKCktPnNldE5lZWRzRnVsbEFj
dGl2YXRpb24oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgp
OwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTY3OSw4ICs5MTEsOCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlV2l0
aFN0YXRlbWVudChUcmVlQnVpbAogCiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAg
ICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwotICAgIAotICAgIFRyZWVTdGF0ZW1lbnQgc3Rh
dGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgY29uc3QgSWRlbnRpZmllciog
dW51c2VkID0gMDsKKyAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50
KGNvbnRleHQsIHVudXNlZCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKIAogICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVdpdGhTdGF0ZW1lbnQoZXhwciwgc3RhdGVtZW50LCBzdGFydCwg
ZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwpAQCAtNjk3LDcgKzkyOSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTd2l0Y2hTdGF0
ZW1lbnQoVHJlZUJ1CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBjb25zdW1l
T3JGYWlsKENMT1NFUEFSRU4pOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTkJSQUNFKTsKLQorICAg
IHN0YXJ0U3dpdGNoKCk7CiAgICAgVHJlZUNsYXVzZUxpc3QgZmlyc3RDbGF1c2VzID0gcGFyc2VT
d2l0Y2hDbGF1c2VzKGNvbnRleHQpOwogICAgIGZhaWxJZlRydWUobV9lcnJvcik7CiAKQEAgLTcw
Niw2ICs5MzgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
SlNQYXJzZXI6OnBhcnNlU3dpdGNoU3RhdGVtZW50KFRyZWVCdQogCiAgICAgVHJlZUNsYXVzZUxp
c3Qgc2Vjb25kQ2xhdXNlcyA9IHBhcnNlU3dpdGNoQ2xhdXNlcyhjb250ZXh0KTsKICAgICBmYWls
SWZUcnVlKG1fZXJyb3IpOworICAgIGVuZFN3aXRjaCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xP
U0VCUkFDRSk7CiAKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZXhw
ciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUs
IGVuZExpbmUpOwpAQCAtNzIwLDcgKzk1Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUNsYXVzZUxpc3QgSlNQYXJzZXI6OnBhcnNlU3dpdGNoQ2xhdXNlcyhUcmVlQnVpCiAg
ICAgVHJlZUV4cHJlc3Npb24gY29uZGl0aW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlvbik7CiAgICAgY29uc3VtZU9yRmFpbChDT0xPTik7Ci0g
ICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNv
bnRleHQpOworICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VF
bGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxz
ZShzdGF0ZW1lbnRzKTsKICAgICBUcmVlQ2xhdXNlIGNsYXVzZSA9IGNvbnRleHQuY3JlYXRlQ2xh
dXNlKGNvbmRpdGlvbiwgc3RhdGVtZW50cyk7CiAgICAgVHJlZUNsYXVzZUxpc3QgY2xhdXNlTGlz
dCA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlTGlzdChjbGF1c2UpOwpAQCAtNzMxLDcgKzk2NCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUxpc3QgSlNQYXJzZXI6OnBh
cnNlU3dpdGNoQ2xhdXNlcyhUcmVlQnVpCiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbmRpdGlv
biA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoY29uZGl0
aW9uKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChDT0xPTik7Ci0gICAgICAgIFRyZWVTb3VyY2VF
bGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKKyAgICAg
ICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERv
bnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0
ZW1lbnRzKTsKICAgICAgICAgY2xhdXNlID0gY29udGV4dC5jcmVhdGVDbGF1c2UoY29uZGl0aW9u
LCBzdGF0ZW1lbnRzKTsKICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlTGlzdCh0
YWlsLCBjbGF1c2UpOwpAQCAtNzQ1LDcgKzk3OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUNsYXVzZSBKU1BhcnNlcjo6cGFyc2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKFRyZWVC
CiAgICAgICAgIHJldHVybiAwOwogICAgIG5leHQoKTsKICAgICBjb25zdW1lT3JGYWlsKENPTE9O
KTsKLSAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVu
dHMoY29udGV4dCk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNv
dXJjZUVsZW1lbnRzPERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgIGZhaWxJ
ZkZhbHNlKHN0YXRlbWVudHMpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNsYXVzZSgwLCBz
dGF0ZW1lbnRzKTsKIH0KQEAgLTc2NywxNCArMTAwMCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlVHJ5U3RhdGVtZW50KFRyZWVC
dWlsZAogICAgIGludCBsYXN0TGluZSA9IG1fbGFzdExpbmU7CiAKICAgICBpZiAobWF0Y2goQ0FU
Q0gpKSB7Ci0gICAgICAgIGN1cnJlbnRTY29wZSgpLT5uZWVkc0Z1bGxBY3RpdmF0aW9uKCk7Cisg
ICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXROZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwogICAgICAgICBtYXRj
aE9yRmFpbChJREVOVCk7CiAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgU2NvcGVSZWYgY2F0Y2hTY29wZSA9IHB1c2hTY29wZSgp
OwotICAgICAgICBjYXRjaFNjb3BlLT5kZWNsYXJlVmFyaWFibGUoaWRlbnQpOworICAgICAgICBm
YWlsSWZTdHJpY3RGYWxzZShjYXRjaFNjb3BlLT5kZWNsYXJlVmFyaWFibGUoaWRlbnQpKTsKICAg
ICAgICAgY2F0Y2hTY29wZS0+cHJldmVudE5ld0RlY2xzKCk7CiAgICAgICAgIGNvbnN1bWVPckZh
aWwoQ0xPU0VQQVJFTik7CiAgICAgICAgIG1hdGNoT3JGYWlsKE9QRU5CUkFDRSk7CkBAIC03ODIs
NyArMTAxNSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBK
U1BhcnNlcjo6cGFyc2VUcnlTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgICAgIGNhdGNoQmxvY2sg
PSBwYXJzZUJsb2NrU3RhdGVtZW50KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShjYXRj
aEJsb2NrKTsKICAgICAgICAgY2F0Y2hIYXNFdmFsID0gaW5pdGlhbEV2YWxDb3VudCAhPSBjb250
ZXh0LmV2YWxDb3VudCgpOwotICAgICAgICBwb3BTY29wZShjYXRjaFNjb3BlLCBUcmVlQnVpbGRl
cjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUo
Y2F0Y2hTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwogICAgIH0K
IAogICAgIGlmIChtYXRjaChGSU5BTExZKSkgewpAQCAtODE2LDE1ICsxMDQ5LDE5IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VCbG9j
a1N0YXRlbWVudChUcmVlQnVpCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoMCwgc3RhcnQsIG1fbGFzdExpbmUpOwogICAgIH0KLSAg
ICBUcmVlU291cmNlRWxlbWVudHMgc3VidHJlZSA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4
dCk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
PERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHN1YnRy
ZWUpOwogICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UpOwogICAgIG5leHQoKTsKICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0YXRlbWVudChzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGlu
ZSk7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1Bh
cnNlcjo6cGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlKQogeworICAg
IERlcHRoTWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CisgICAgbV9z
dGF0ZW1lbnREZXB0aCsrOworICAgIGRpcmVjdGl2ZSA9IDA7CisgICAgaW50IG5vblRyaXZpYWxF
eHByZXNzaW9uQ291bnQgPSAwOwogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKICAgICBzd2l0
Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgY2FzZSBPUEVOQlJBQ0U6CkBAIC04MzQsNiArMTA3
MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNl
cjo6cGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImCiAgICAgY2FzZSBDT05TVFRPS0VOOgogICAg
ICAgICByZXR1cm4gcGFyc2VDb25zdERlY2xhcmF0aW9uKGNvbnRleHQpOwogICAgIGNhc2UgRlVO
Q1RJT046CisgICAgICAgIGZhaWxJZlN0cmljdEZhbHNlKG1fc3RhdGVtZW50RGVwdGggPT0gMSk7
CiAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oY29udGV4dCk7CiAgICAg
Y2FzZSBTRU1JQ09MT046CiAgICAgICAgIG5leHQoKTsKQEAgLTg3MCw4ICsxMTA4LDE0IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VT
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImCiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgSURFTlQ6
CiAgICAgICAgIHJldHVybiBwYXJzZUV4cHJlc3Npb25PckxhYmVsU3RhdGVtZW50KGNvbnRleHQp
OworICAgIGNhc2UgU1RSSU5HOgorICAgICAgICBkaXJlY3RpdmUgPSBtX3Rva2VuLm1fZGF0YS5p
ZGVudDsKKyAgICAgICAgbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCA9IG1fbm9uVHJpdmlhbEV4
cHJlc3Npb25Db3VudDsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gcGFyc2VFeHByZXNz
aW9uU3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICBUcmVlU3RhdGVtZW50IGV4cHJTdGF0ZW1l
bnQgPSBwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgIGlmIChkaXJl
Y3RpdmUgJiYgbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCAhPSBtX25vblRyaXZpYWxFeHByZXNz
aW9uQ291bnQpCisgICAgICAgICAgICBkaXJlY3RpdmUgPSAwOworICAgICAgICByZXR1cm4gZXhw
clN0YXRlbWVudDsKICAgICB9CiB9CiAKQEAgLTg3OSw3ICsxMTIzLDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBKU1BhcnNlcjo6cGFyc2VG
b3JtYWxQYXJhbWUKIHsKICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgdXNlc0FyZ3VtZW50
cyA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICptX3Rva2VuLm1f
ZGF0YS5pZGVudDsKLSAgICBkZWNsYXJlVmFyaWFibGUobV90b2tlbi5tX2RhdGEuaWRlbnQpOwor
ICAgIGZhaWxJZlN0cmljdEZhbHNlKGRlY2xhcmVQYXJhbWV0ZXIobV90b2tlbi5tX2RhdGEuaWRl
bnQpKTsKICAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0ID0gY29udGV4dC5jcmVhdGVG
b3JtYWxQYXJhbWV0ZXJMaXN0KCptX3Rva2VuLm1fZGF0YS5pZGVudCk7CiAgICAgVHJlZUZvcm1h
bFBhcmFtZXRlckxpc3QgdGFpbCA9IGxpc3Q7CiAgICAgbmV4dCgpOwpAQCAtODg3LDcgKzExMzEs
OCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0
IEpTUGFyc2VyOjpwYXJzZUZvcm1hbFBhcmFtZQogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1h
dGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rv
a2VuLm1fZGF0YS5pZGVudDsKLSAgICAgICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKKyAgICAg
ICAgdXNlc0FyZ3VtZW50cyB8PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cyA9PSAqbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgIGZhaWxJZlN0cmljdEZhbHNlKGRl
Y2xhcmVQYXJhbWV0ZXIoaWRlbnQpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICB1c2VzQXJn
dW1lbnRzID0gdXNlc0FyZ3VtZW50cyB8fCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFy
Z3VtZW50cyA9PSAqaWRlbnQ7CiAgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBh
cmFtZXRlckxpc3QodGFpbCwgKmlkZW50KTsKQEAgLTg5OCwxMCArMTE0MywxMiBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IEpTUGFyc2VyOjpw
YXJzZUZvcm1hbFBhcmFtZQogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rp
b25Cb2R5IEpTUGFyc2VyOjpwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYgY29udGV4dCkK
IHsKICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uQm9keSgpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bkJvZHkoc3RyaWN0TW9kZSgpKTsKKyAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVwdGgoJm1f
c3RhdGVtZW50RGVwdGgpOworICAgIG1fc3RhdGVtZW50RGVwdGggPSAwOwogICAgIHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpGdW5jdGlvbkJvZHlCdWlsZGVyIGJvZHlCdWlsZGVyKG1fZ2xvYmFsRGF0
YSwgbV9sZXhlcik7Ci0gICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhib2R5QnVp
bGRlcikpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keSgpOworICAgIGZh
aWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHM8Q2hlY2tGb3JTdHJpY3RNb2RlPihib2R5QnVp
bGRlcikpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdHJpY3RNb2Rl
KCkpOwogfQogCiB0ZW1wbGF0ZSA8SlNQYXJzZXI6OkZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVp
cmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1aWxkZXI+
IGJvb2wgSlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBj
b25zdCBJZGVudGlmaWVyKiYgbmFtZSwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmIHBhcmFtZXRl
cnMsIFRyZWVGdW5jdGlvbkJvZHkmIGJvZHksIGludCYgb3BlbkJyYWNlUG9zLCBpbnQmIGNsb3Nl
QnJhY2VQb3MsIGludCYgYm9keVN0YXJ0TGluZSkKQEAgLTkxMSw3ICsxMTU4LDcgQEAgdGVtcGxh
dGUgPEpTUGFyc2VyOjpGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFt
ZUlzSW5Db250YWluaW5nU2MKICAgICAgICAgbmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50Owog
ICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmICghbmFtZUlzSW5Db250YWluaW5nU2NvcGUpCi0g
ICAgICAgICAgICBmdW5jdGlvblNjb3BlLT5kZWNsYXJlVmFyaWFibGUobmFtZSk7CisgICAgICAg
ICAgICBmYWlsSWZTdHJpY3RGYWxzZShmdW5jdGlvblNjb3BlLT5kZWNsYXJlVmFyaWFibGUobmFt
ZSkpOwogICAgIH0gZWxzZSBpZiAocmVxdWlyZW1lbnRzID09IEZ1bmN0aW9uTmVlZHNOYW1lKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAt
OTMxLDcgKzExNzgsMTEgQEAgdGVtcGxhdGUgPEpTUGFyc2VyOjpGdW5jdGlvblJlcXVpcmVtZW50
cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2MKICAgICBmYWlsSWZGYWxz
ZShib2R5KTsKICAgICBpZiAodXNlc0FyZ3VtZW50cykKICAgICAgICAgY29udGV4dC5zZXRVc2Vz
QXJndW1lbnRzKGJvZHkpOwotICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVy
OjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RN
b2RlKCkgJiYgbmFtZSkgeworICAgICAgICBmYWlsSWZUcnVlKG1fZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzID09ICpuYW1lKTsKKyAgICAgICAgZmFpbElmVHJ1ZShtX2dsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKm5hbWUpOworICAgIH0KKyAgICBmYWlsSWZG
YWxzZShwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFi
bGVJbmZvKSk7CiAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFDRSk7CiAgICAgY2xvc2VCcmFjZVBv
cyA9IG1fdG9rZW4ubV9kYXRhLmludFZhbHVlOwogICAgIG5leHQoKTsKQEAgLTk1MCw3ICsxMjAx
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2Vy
OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHIKICAgICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7
CiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCB0
cnVlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CiAgICAgZmFpbElmRmFsc2UobmFtZSk7Ci0gICAg
ZGVjbGFyZVZhcmlhYmxlKG5hbWUpOworICAgIGZhaWxJZlN0cmljdEZhbHNlKGRlY2xhcmVWYXJp
YWJsZShuYW1lKSk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQo
bmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5
U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKIH0KIApAQCAtOTczLDcgKzEyMjQsMTIgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUV4cHJl
c3Npb25PckxhYmVsU3RhdGUKICAgICBmYWlsSWZGYWxzZShjdXJyZW50VG9rZW4gKyAxID09IG1f
dG9rZW5Db3VudCk7CiAgICAgaW50IGVuZCA9IHRva2VuRW5kKCk7CiAgICAgY29uc3VtZU9yRmFp
bChDT0xPTik7Ci0gICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChj
b250ZXh0KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIGlmIChzdHJp
Y3RNb2RlKCkgJiYgIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkKKyAgICAgICAgcHVzaExhYmVs
KGlkZW50KTsKKyAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNv
bnRleHQsIHVudXNlZCk7CisgICAgaWYgKHN0cmljdE1vZGUoKSAmJiAhbV9zeW50YXhBbHJlYWR5
VmFsaWRhdGVkKQorICAgICAgICBwb3BMYWJlbCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVu
dCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQoaWRlbnQsIHN0YXRl
bWVudCwgc3RhcnQsIGVuZCk7CiB9CkBAIC0xMDAxLDcgKzEyNTcsOCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQo
VHJlZUJ1aWxkZQogICAgIGludCBlbmQgPSB0b2tlbkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWls
KENMT1NFUEFSRU4pOwogCi0gICAgVHJlZVN0YXRlbWVudCB0cnVlQmxvY2sgPSBwYXJzZVN0YXRl
bWVudChjb250ZXh0KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIFRy
ZWVTdGF0ZW1lbnQgdHJ1ZUJsb2NrID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsK
ICAgICBmYWlsSWZGYWxzZSh0cnVlQmxvY2spOwogCiAgICAgaWYgKCFtYXRjaChFTFNFKSkKQEAg
LTEwMTQsNyArMTI3MSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBKU1BhcnNlcjo6cGFyc2VJZlN0YXRlbWVudChUcmVlQnVpbGRlCiAgICAgZG8gewogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIGlmICghbWF0Y2goSUYpKSB7Ci0gICAgICAgICAgICBUcmVl
U3RhdGVtZW50IGJsb2NrID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgICAgICBj
b25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgICAgICAgICAgVHJlZVN0YXRlbWVudCBi
bG9jayA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAgICAgICBmYWls
SWZGYWxzZShibG9jayk7CiAgICAgICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoYmxvY2sp
OwogICAgICAgICAgICAgdHJhaWxpbmdFbHNlID0gdHJ1ZTsKQEAgLTEwMjksOCArMTI4Nyw4IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFy
c2VJZlN0YXRlbWVudChUcmVlQnVpbGRlCiAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyQ29uZGl0
aW9uKTsKICAgICAgICAgaW50IGlubmVyRW5kID0gdG9rZW5MaW5lKCk7CiAgICAgICAgIGNvbnN1
bWVPckZhaWwoQ0xPU0VQQVJFTik7Ci0gICAgICAgIAotICAgICAgICBUcmVlU3RhdGVtZW50IGlu
bmVyVHJ1ZUJsb2NrID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIqIHVudXNlZCA9IDA7CisgICAgICAgIFRyZWVTdGF0ZW1lbnQgaW5uZXJUcnVlQmxv
Y2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgICAgICBmYWlsSWZGYWxz
ZShpbm5lclRydWVCbG9jayk7ICAgICAKICAgICAgICAgZXhwclN0YWNrLmFwcGVuZChpbm5lckNv
bmRpdGlvbik7CiAgICAgICAgIHBvc1N0YWNrLmFwcGVuZChtYWtlX3BhaXIoaW5uZXJTdGFydCwg
aW5uZXJFbmQpKTsKQEAgLTEwNzAsNiArMTMyOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlRXhwcmVzc2lvbihUcmVlQnVpbGRl
CiAgICAgaWYgKCFtYXRjaChDT01NQSkpCiAgICAgICAgIHJldHVybiBub2RlOwogICAgIG5leHQo
KTsKKyAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICBtX25vbkxIU0NvdW50
Kys7CiAgICAgVHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHJpZ2h0KTsKQEAgLTExMTUsMTEgKzEzNzQsMTcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNl
cjo6cGFyc2VBc3NpZ25tZW50RXhwcmVzc2kKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IGdvdG8gZW5kOwogICAgICAgICB9CisgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3Vu
dCsrOwogICAgICAgICBoYWRBc3NpZ25tZW50ID0gdHJ1ZTsKICAgICAgICAgY29udGV4dC5hc3Np
Z25tZW50U3RhY2tBcHBlbmQoYXNzaWdubWVudFN0YWNrLCBsaHMsIHN0YXJ0LCB0b2tlblN0YXJ0
KCksIG1fYXNzaWdubWVudENvdW50LCBvcCk7CiAgICAgICAgIHN0YXJ0ID0gdG9rZW5TdGFydCgp
OwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBuZXh0KCk7CisgICAgICAg
IGlmIChzdHJpY3RNb2RlKCkgJiYgbV9sYXN0SWRlbnRpZmllciAmJiBjb250ZXh0LmlzUmVzb2x2
ZShsaHMpKSB7CisgICAgICAgICAgICBmYWlsSWZTdHJpY3RUcnVlKG1fZ2xvYmFsRGF0YS0+cHJv
cGVydHlOYW1lcy0+ZXZhbCA9PSAqbV9sYXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICBkZWNs
YXJlV3JpdGUobV9sYXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICBtX2xhc3RJZGVudGlmaWVy
ID0gMDsKKyAgICAgICAgfQogICAgICAgICBsaHMgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lv
bihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UobGhzKTsKICAgICAgICAgaWYgKGluaXRp
YWxOb25MSFNDb3VudCAhPSBtX25vbkxIU0NvdW50KQpAQCAtMTE0NCw2ICsxNDA5LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VD
b25kaXRpb25hbEV4cHJlc3Npb24KICAgICBmYWlsSWZGYWxzZShjb25kKTsKICAgICBpZiAoIW1h
dGNoKFFVRVNUSU9OKSkKICAgICAgICAgcmV0dXJuIGNvbmQ7CisgICAgbV9ub25Ucml2aWFsRXhw
cmVzc2lvbkNvdW50Kys7CiAgICAgbV9ub25MSFNDb3VudCsrOwogICAgIG5leHQoKTsKICAgICBU
cmVlRXhwcmVzc2lvbiBsaHMgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpA
QCAtMTE4MSw2ICsxNDQ3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKFRyZWUKICAgICAgICAgaW50
IHByZWNlZGVuY2UgPSBpc0JpbmFyeU9wZXJhdG9yKG1fdG9rZW4ubV90eXBlKTsKICAgICAgICAg
aWYgKCFwcmVjZWRlbmNlKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1fbm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAgICAgIGlu
dCBvcGVyYXRvclRva2VuID0gbV90b2tlbi5tX3R5cGU7CiAgICAgICAgIG5leHQoKTsKQEAgLTEx
OTYsNyArMTQ2Myw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gSlNQYXJzZXI6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbihUcmVlCiAgICAgICAgIH0KICAgICAg
ICAgY29udGV4dC5vcGVyYXRvclN0YWNrQXBwZW5kKG9wZXJhdG9yU3RhY2tEZXB0aCwgb3BlcmF0
b3JUb2tlbiwgcHJlY2VkZW5jZSk7CiAgICAgfQotCiAgICAgd2hpbGUgKG9wZXJhdG9yU3RhY2tE
ZXB0aCkgewogICAgICAgICBBU1NFUlQob3BlcmFuZFN0YWNrRGVwdGggPiAxKTsKIApAQCAtMTMy
Nyw2ICsxNTkzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBKU1BhcnNlcjo6cGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKFQKICAgICAgICAgaWYgKCFtX3N5
bnRheEFscmVhZHlWYWxpZGF0ZWQpIHsKICAgICAgICAgICAgIHN0ZDo6cGFpcjxPYmplY3RWYWxp
ZGF0aW9uTWFwOjppdGVyYXRvciwgYm9vbD4gcHJvcGVydHlFbnRyeUl0ZXIgPSBvYmplY3RWYWxp
ZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0LmdldFR5
cGUocHJvcGVydHkpKTsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlFbnRyeUl0ZXIuc2Vjb25k
KSB7CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShzdHJpY3RNb2RlKCkpOwogICAgICAgICAg
ICAgICAgIGlmICgoY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSAmIHByb3BlcnR5RW50cnlJdGVy
LmZpcnN0LT5zZWNvbmQpICE9IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gQ2FuJ3QgaGF2ZSBtdWx0aXBsZSBnZXR0ZXJzIG9yIHNldHRlcnMgd2l0aCB0
aGUgc2FtZSBuYW1lLCBub3IgY2FuIHdlIGRlZmluZSAKICAgICAgICAgICAgICAgICAgICAgLy8g
YSBwcm9wZXJ0eSBhcyBib3RoIGFuIGFjY2Vzc29yIGFuZCBhIGNvbnN0YW50IHZhbHVlCkBAIC0x
Mzg5LDYgKzE2NTYsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIEpTUGFyc2VyOjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKFRyZQogewogICAgIHN3aXRjaCAo
bV90b2tlbi5tX3R5cGUpIHsKICAgICBjYXNlIE9QRU5CUkFDRToKKyAgICAgICAgaWYgKHN0cmlj
dE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoY29u
dGV4dCk7CiAgICAgICAgIHJldHVybiBwYXJzZU9iamVjdExpdGVyYWwoY29udGV4dCk7CiAgICAg
Y2FzZSBPUEVOQlJBQ0tFVDoKICAgICAgICAgcmV0dXJuIHBhcnNlQXJyYXlMaXRlcmFsKGNvbnRl
eHQpOwpAQCAtMTQxMCw2ICsxNjc5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbihUcmUKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIG1f
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqaWRlbnQpOworICAgICAgICBtX2xh
c3RJZGVudGlmaWVyID0gaWRlbnQ7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJlc29s
dmUoaWRlbnQsIHN0YXJ0KTsKICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKQEAgLTE0ODUsNiAr
MTc1NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQ
YXJzZXI6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbihUcmVlCiAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgbmV3Q291bnQrKzsKICAgICB9CisKICAgICBpZiAobWF0Y2goRlVOQ1RJT04pKSB7CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSAmbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5udWxsSWRlbnRpZmllcjsKICAgICAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyYW1l
dGVycyA9IDA7CkBAIC0xNTAyLDYgKzE3NzMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZQog
ICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAg
ICAgICAgY2FzZSBPUEVOQlJBQ0tFVDogeworICAgICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVz
c2lvbkNvdW50Kys7CiAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVu
ZCgpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgaW50IG5vbkxIU0NvdW50ID0g
bV9ub25MSFNDb3VudDsKQEAgLTE1MTUsNiArMTc4Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbihU
cmVlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIE9QRU5QQVJF
TjogeworICAgICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAg
ICAgICBpZiAobmV3Q291bnQpIHsKICAgICAgICAgICAgICAgICBuZXdDb3VudC0tOwogICAgICAg
ICAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7CkBAIC0xNTM1LDYgKzE4MDgsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJz
ZU1lbWJlckV4cHJlc3Npb24oVHJlZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBET1Q6IHsKKyAgICAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3Vu
dCsrOwogICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAg
ICAgICAgICAgIG5leHQoTGV4ZXI6Oklnbm9yZVJlc2VydmVkV29yZHMpOwogICAgICAgICAgICAg
bWF0Y2hPckZhaWwoSURFTlQpOwpAQCAtMTU1NiwyNSArMTgzMCw1OSBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVz
c2lvbihUcmVlQgogewogICAgIEFsbG93SW5PdmVycmlkZSBhbGxvd0luT3ZlcnJpZGUodGhpcyk7
CiAgICAgaW50IHRva2VuU3RhY2tEZXB0aCA9IDA7CisgICAgYm9vbCBtb2RpZmllc0V4cHIgPSBm
YWxzZTsKKyAgICBib29sIHJlcXVpcmVzTEV4cHIgPSBmYWxzZTsKICAgICB3aGlsZSAoaXNVbmFy
eU9wKG1fdG9rZW4ubV90eXBlKSkgeworICAgICAgICBpZiAoc3RyaWN0TW9kZSgpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CisgICAgICAgICAgICBjYXNlIFBMVVNQ
TFVTOgorICAgICAgICAgICAgY2FzZSBNSU5VU01JTlVTOgorICAgICAgICAgICAgY2FzZSBBVVRP
UExVU1BMVVM6CisgICAgICAgICAgICBjYXNlIEFVVE9NSU5VU01JTlVTOgorICAgICAgICAgICAg
ICAgIGZhaWxJZlRydWUocmVxdWlyZXNMRXhwcik7CisgICAgICAgICAgICAgICAgbW9kaWZpZXNF
eHByID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXF1aXJlc0xFeHByID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgREVMRVRFVE9LRU46CisgICAgICAg
ICAgICAgICAgZmFpbElmVHJ1ZShyZXF1aXJlc0xFeHByKTsKKyAgICAgICAgICAgICAgICByZXF1
aXJlc0xFeHByID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShyZXF1aXJlc0xFeHByKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBtX25v
bkxIU0NvdW50Kys7CiAgICAgICAgIGNvbnRleHQuYXBwZW5kVW5hcnlUb2tlbih0b2tlblN0YWNr
RGVwdGgsIG1fdG9rZW4ubV90eXBlLCB0b2tlblN0YXJ0KCkpOwogICAgICAgICBuZXh0KCk7Cisg
ICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIH0KICAgICBpbnQgc3Vi
RXhwclN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJz
ZU1lbWJlckV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CisgICAg
Ym9vbCBpc0V2YWwgPSBmYWxzZTsKKyAgICBpZiAoc3RyaWN0TW9kZSgpICYmICFtX3N5bnRheEFs
cmVhZHlWYWxpZGF0ZWQpIHsKKyAgICAgICAgaWYgKGNvbnRleHQuaXNSZXNvbHZlKGV4cHIpKQor
ICAgICAgICAgICAgaXNFdmFsID0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09
ICptX2xhc3RJZGVudGlmaWVyOworICAgIH0KKyAgICBmYWlsSWZTdHJpY3RUcnVlKGlzRXZhbCAm
JiBtb2RpZmllc0V4cHIpOwogICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICBjYXNl
IFBMVVNQTFVTOgorICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAg
ICAgbV9ub25MSFNDb3VudCsrOwogICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5v
ZGUoZXhwciwgT3BQbHVzUGx1cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5F
bmQoKSk7CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CisgICAgICAgIGZhaWxJZlN0cmlj
dFRydWUoaXNFdmFsKTsKKyAgICAgICAgZmFpbElmU3RyaWN0VHJ1ZShyZXF1aXJlc0xFeHByKTsK
ICAgICAgICAgbmV4dCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTlVTTUlOVVM6Cisg
ICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICBtX25vbkxIU0Nv
dW50Kys7CiAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShleHByLCBPcE1p
bnVzTWludXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAg
ICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOworICAgICAgICBmYWlsSWZTdHJpY3RUcnVlKGlzRXZh
bCk7CisgICAgICAgIGZhaWxJZlN0cmljdFRydWUocmVxdWlyZXNMRXhwcik7CiAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE1ODMsNyArMTg5MSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBh
cnNlVW5hcnlFeHByZXNzaW9uKFRyZWVCCiAKICAgICBpbnQgZW5kID0gbGFzdFRva2VuRW5kKCk7
CiAKLSAgICBpZiAoIVRyZWVCdWlsZGVyOjpDcmVhdGVzQVNUKQorICAgIGlmICghVHJlZUJ1aWxk
ZXI6OkNyZWF0ZXNBU1QgJiYgKG1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCB8fCAhc3RyaWN0TW9k
ZSgpKSkKICAgICAgICAgcmV0dXJuIGV4cHI7CiAKICAgICB3aGlsZSAodG9rZW5TdGFja0RlcHRo
KSB7CkBAIC0xNjE3LDYgKzE5MjUsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbihUcmVlQgogICAgICAg
ICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChleHByKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIERFTEVURVRPS0VOOgorICAgICAgICAgICAgaWYgKHN0cmljdE1vZGUo
KSAmJiBjb250ZXh0LmlzUmVzb2x2ZShleHByKSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShkZWxldGVQcm9wZXJ0eShtX2xhc3RJZGVudGlmaWVyKSk7CiAgICAgICAgICAgICBleHByID0g
Y29udGV4dC5tYWtlRGVsZXRlTm9kZShleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RT
dGFydCh0b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNl
ci5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmgKaW5kZXggYWIxOGZhYjFlOTc4
ODllNDhiY2YwMWJmZDc2OTdmOGM5ZjZlNjgwZC4uNGQ2MzBiMDUyN2QwMzFmNzUwYTI4NmJkMWQ4
ZDExZTkzYTk1NDkzNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2Vy
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmgKQEAgLTI4LDkgKzI4LDEw
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBGdW5jdGlv
blBhcmFtZXRlcnM7CiBjbGFzcyBJZGVudGlmaWVyOwotY2xhc3MgSlNHbG9iYWxEYXRhOworY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBTb3VyY2VDb2RlOwogCiBlbnVtIHsKQEAgLTE1NSw2
ICsxNTYsNiBAQCBzdHJ1Y3QgSlNUb2tlbiB7CiAgICAgSlNUb2tlbkluZm8gbV9pbmZvOwogfTsK
IAotaW50IGpzUGFyc2UoSlNHbG9iYWxEYXRhKiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3Qg
U291cmNlQ29kZSopOworaW50IGpzUGFyc2UoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBG
dW5jdGlvblBhcmFtZXRlcnMqLCBib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29k
ZSopOwogfQogI2VuZGlmIC8vIEpTUGFyc2VyX2gKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4
IGNjNDMyMWQ2MTFjM2RhMDhiNzdmYTkzZWZkOWRkNjhmMTBjM2QzNjUuLjIzOTcyOWVlYWUxYTI4
NGUwNDAzMjJhNDcwNTc0ZDI2Y2JhZThmMTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAt
NDUzLDcgKzQ1Myw3IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI6OnBhcnNlSWRl
bnRpZmllcihKU1Rva2VuRGF0YSogbHZhbHAsIExleFR5cGUgbGV4CiAgICAgcmV0dXJuIElERU5U
OwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRh
KiBsdmFscCkKK0FMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcoSlNUb2tlbkRh
dGEqIGx2YWxwLCBib29sIHN0cmljdE1vZGUpCiB7CiAgICAgaW50IHN0cmluZ1F1b3RlQ2hhcmFj
dGVyID0gbV9jdXJyZW50OwogICAgIHNoaWZ0KCk7CkBAIC00OTQsNiArNDk0LDggQEAgQUxXQVlT
X0lOTElORSBib29sIExleGVyOjpwYXJzZVN0cmluZyhKU1Rva2VuRGF0YSogbHZhbHApCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNB
U0NJSU9jdGFsRGlnaXQobV9jdXJyZW50KSkgewogICAgICAgICAgICAgICAgIC8vIE9jdGFsIGNo
YXJhY3RlciBzZXF1ZW5jZXMKKyAgICAgICAgICAgICAgICBpZiAoc3RyaWN0TW9kZSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGludCBjaGFyYWN0
ZXIxID0gbV9jdXJyZW50OwogICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkpIHsKQEAgLTY5Niw3ICs2OTgsNyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlTXVsdGlsaW5lQ29tbWVudCgpCiAgICAg
fQogfQogCi1KU1Rva2VuVHlwZSBMZXhlcjo6bGV4KEpTVG9rZW5EYXRhKiBsdmFscCwgSlNUb2tl
bkluZm8qIGxsb2NwLCBMZXhUeXBlIGxleFR5cGUpCitKU1Rva2VuVHlwZSBMZXhlcjo6bGV4KEpT
VG9rZW5EYXRhKiBsdmFscCwgSlNUb2tlbkluZm8qIGxsb2NwLCBMZXhUeXBlIGxleFR5cGUsIGJv
b2wgc3RyaWN0TW9kZSkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3IpOwogICAgIEFTU0VSVChtX2J1
ZmZlcjguaXNFbXB0eSgpKTsKQEAgLTk3Niw4ICs5NzgsMTEgQEAgc3RhcnQ6CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICByZWNvcmQ4KCcwJyk7CiAgICAgICAgICAgICBpZiAoaXNBU0NJ
SU9jdGFsRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICAgICAgICAgIGlmIChwYXJzZU9jdGFs
KGx2YWxwLT5kb3VibGVWYWx1ZSkpCisgICAgICAgICAgICAgICAgaWYgKHBhcnNlT2N0YWwobHZh
bHAtPmRvdWJsZVZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0TW9kZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICAg
ICAgICAgIHRva2VuID0gTlVNQkVSOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAvLyBGYWxsIHRocm91Z2ggaW50byBDaGFyYWN0ZXJOdW1iZXIK
QEAgLTEwMDYsNyArMTAxMSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAg
IG1fZGVsaW1pdGVkID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2hhcmFjdGVy
UXVvdGU6Ci0gICAgICAgIGlmIChVTkxJS0VMWSghcGFyc2VTdHJpbmcobHZhbHApKSkKKyAgICAg
ICAgaWYgKFVOTElLRUxZKCFwYXJzZVN0cmluZyhsdmFscCwgc3RyaWN0TW9kZSkpKQogICAgICAg
ICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgbV9kZWxp
bWl0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
IGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggZTZjMWVmZDE0MDdiMGM5YThh
YjUwMmFkNDdkOWNjMjJhMDcyNjhhMC4uNGQyNTEzZDBmZjQxNjBlZWI1MzRiNGI4NGMzNTM3ZGNj
ODNjNzFjNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTQ4LDEwICs0OCwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgLy8gRnVuY3Rpb25zIHRvIHNldCB1cCBwYXJzaW5nLgogICAgICAg
ICB2b2lkIHNldENvZGUoY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckFyZW5hJik7CiAgICAgICAg
IHZvaWQgc2V0SXNSZXBhcnNpbmcoKSB7IG1faXNSZXBhcnNpbmcgPSB0cnVlOyB9CisgICAgICAg
IGJvb2wgaXNSZXBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nOyB9CiAKICAg
ICAgICAgLy8gRnVuY3Rpb25zIGZvciB0aGUgcGFyc2VyIGl0c2VsZi4KICAgICAgICAgZW51bSBM
ZXhUeXBlIHsgSWRlbnRpZnlSZXNlcnZlZFdvcmRzLCBJZ25vcmVSZXNlcnZlZFdvcmRzIH07Ci0g
ICAgICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBs
bG9jcCwgTGV4VHlwZSk7CisgICAgICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSogbHZh
bHAsIEpTVG9rZW5JbmZvKiBsbG9jcCwgTGV4VHlwZSwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICAg
ICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KICAgICAg
ICAgdm9pZCBzZXRMYXN0TGluZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIpIHsgbV9sYXN0TGlu
ZU51bWJlciA9IGxhc3RMaW5lTnVtYmVyOyB9CiAgICAgICAgIGludCBsYXN0TGluZU51bWJlcigp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmVOdW1iZXI7IH0KQEAgLTk1LDcgKzk2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBsYXN0VG9rZW5XYXNSZXN0
cktleXdvcmQoKSBjb25zdDsKIAogICAgICAgICBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIHBh
cnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSosIExleFR5cGUpOwotICAgICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgcGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqIGx2YWxwKTsKKyAgICAgICAgQUxXQVlT
X0lOTElORSBib29sIHBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCwgYm9vbCBzdHJpY3RN
b2RlKTsKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHBhcnNlSGV4KGRvdWJsZSYgcmV0dXJu
VmFsdWUpOwogICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VPY3RhbChkb3VibGUmIHJl
dHVyblZhbHVlKTsKICAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlRGVjaW1hbChkb3Vi
bGUmIHJldHVyblZhbHVlKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDUzNGUyOGFlMTRm
ZGQ2ZmJiZDQyYWI3ZDZkMjI0ZDY2Y2RkZWYxMWIuLjM0YWE2NzQ2ZGMwMTc0YTM5NjIxNDE2Y2Yw
YTk1Zjg4YjY3NjhjMmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtODksMTAgKzg5LDEw
IEBAIFNjb3BlTm9kZURhdGE6OlNjb3BlTm9kZURhdGEoUGFyc2VyQXJlbmEmIGFyZW5hLCBTb3Vy
Y2VFbGVtZW50cyogc3RhdGVtZW50cywgVmFyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVO
b2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorU2NvcGVOb2RlOjpTY29w
ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIGluU3RyaWN0Q29udGV4dCkKICAg
ICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRl
ZChnbG9iYWxEYXRhKQotICAgICwgbV9mZWF0dXJlcyhOb0ZlYXR1cmVzKQorICAgICwgbV9mZWF0
dXJlcyhpblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IE5vRmVhdHVyZXMpCiB7
CiB9CiAKQEAgLTE1NCw4ICsxNTQsOCBAQCBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFy
YW1ldGVycyhQYXJhbWV0ZXJOb2RlKiBmaXJzdFBhcmFtZXRlcikKICAgICAgICAgYXBwZW5kKHBh
cmFtZXRlci0+aWRlbnQoKSk7CiB9CiAKLWlubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlv
bkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKLSAgICA6IFNjb3BlTm9kZShnbG9i
YWxEYXRhKQoraW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjb3BlTm9k
ZShnbG9iYWxEYXRhLCBpblN0cmljdENvbnRleHQpCiB7CiB9CiAKQEAgLTE3Nyw5ICsxNzcsOSBA
QCB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlv
blBhcmFtZXRlcnM+IHBhcmFtZXRlcnMsCiAgICAgbV9pZGVudCA9IGlkZW50OwogfQogCi1GdW5j
dGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBpblN0cmljdENvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEpOworICAgIHJldHVybiBuZXcgRnVuY3Rp
b25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBpblN0cmljdENvbnRleHQpOwogfQogCiBQYXNzUmVmUHRy
PEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNr
LCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFi
bGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGZhNjFjZGNlZDI0ZDFi
NmYwNjM2ZTFmMzU4OTM5YWRmYjNhZTc3MjguLjZiOGY3MDRmYmMzM2QyOGM4M2I3YWU5NjNhNzYz
YzQwYjg1NWFiNGYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC01Nyw2ICs1Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNvbnN0IENvZGVGZWF0dXJlcyBXaXRoRmVhdHVyZSA9IDEgPDwgNDsK
ICAgICBjb25zdCBDb2RlRmVhdHVyZXMgQ2F0Y2hGZWF0dXJlID0gMSA8PCA1OwogICAgIGNvbnN0
IENvZGVGZWF0dXJlcyBUaGlzRmVhdHVyZSA9IDEgPDwgNjsKKyAgICBjb25zdCBDb2RlRmVhdHVy
ZXMgU3RyaWN0TW9kZUZlYXR1cmUgPSAxIDw8IDc7CiAgICAgY29uc3QgQ29kZUZlYXR1cmVzIEFs
bEZlYXR1cmVzID0gRXZhbEZlYXR1cmUgfCBDbG9zdXJlRmVhdHVyZSB8IEFzc2lnbkZlYXR1cmUg
fCBBcmd1bWVudHNGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUgfCBUaGlzRmVh
dHVyZTsKIAogICAgIGVudW0gT3BlcmF0b3IgewpAQCAtMTM5Myw3ICsxMzk0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZh
clN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNr
IEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSopOworICAg
ICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgYm9vbCBpblN0cmljdENvbnRleHQpOwogICAg
ICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFS
ZWZDb3VudGVkOjpvcGVyYXRvciBuZXc7CkBAIC0xNDEwLDYgKzE0MTEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJl
cyAmIEV2YWxGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlOyB9CisgICAgICAgIGJvb2wgaXNT
dHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJl
OyB9CiAgICAgICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cygpIHsgbV9mZWF0dXJlcyB8PSBBcmd1
bWVudHNGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVzICYgVGhpc0ZlYXR1cmU7IH0KICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb25G
b3JNb3JlVGhhblZhcmlhYmxlcygpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YSk7IHJldHVybiBtX2Zl
YXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpOyB9CkBA
IC0xNDc2LDcgKzE0NzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9u
Qm9keU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKik7CisgICAgICAgIHN0YXRp
YyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgYm9vbCBpc1N0cmljdE1v
ZGUpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBjcmVhdGUo
SlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CiAKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CkBAIC0xNDkyLDcgKzE0OTQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0
aW9uID0gdHJ1ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNH
bG9iYWxEYXRhKik7CisgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgYm9v
bCBpblN0cmljdENvbnRleHQpOwogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0
YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmll
clNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
OwogCiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggMGMwYjJkNzRlZTgzYjEwNTFkZmQ4YzAxMmI5ZmJkNzljMTRlY2E3ZC4uNjQyYTg0MmZm
N2I3YWE1YzUxODU2ZDg4OTRlNmVjMGE3MTgwMzhiNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTM1LDggKzM1LDkgQEAgZXh0ZXJuIGludCBqc2N5eXBhcnNlKHZvaWQqKTsKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXZvaWQgUGFyc2VyOjpwYXJzZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgaW50KiBlcnJMaW5lLCBVU3RyaW5n
KiBlcnJNc2cpCit2b2lkIFBhcnNlcjo6cGFyc2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
LCBib29sIGluU3RyaWN0Q29udGV4dCwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpCiB7
CisgICAgQVNTRVJUKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIG1fc291cmNlRWxlbWVudHMg
PSAwOwogCiAgICAgaW50IGRlZmF1bHRFcnJMaW5lOwpAQCAtNTAsMTAgKzUxLDEwIEBAIHZvaWQg
UGFyc2VyOjpwYXJzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFyYW1ldGVy
cyogcGFyYW1ldGVycywgaW50CiAgICAgKmVyckxpbmUgPSAtMTsKICAgICAqZXJyTXNnID0gVVN0
cmluZygpOwogCi0gICAgTGV4ZXImIGxleGVyID0gKmdsb2JhbERhdGEtPmxleGVyOworICAgIExl
eGVyJiBsZXhlciA9ICpleGVjLT5nbG9iYWxEYXRhKCkubGV4ZXI7CiAgICAgbGV4ZXIuc2V0Q29k
ZSgqbV9zb3VyY2UsIG1fYXJlbmEpOwogCi0gICAgaW50IHBhcnNlRXJyb3IgPSBqc1BhcnNlKGds
b2JhbERhdGEsIHBhcmFtZXRlcnMsIG1fc291cmNlKTsKKyAgICBpbnQgcGFyc2VFcnJvciA9IGpz
UGFyc2UoZXhlYywgbGV4aWNhbEdsb2JhbE9iamVjdCwgcGFyYW1ldGVycywgaW5TdHJpY3RDb250
ZXh0LCBtX3NvdXJjZSk7CiAgICAgaW50IGxpbmVOdW1iZXIgPSBsZXhlci5saW5lTnVtYmVyKCk7
CiAgICAgYm9vbCBsZXhFcnJvciA9IGxleGVyLnNhd0Vycm9yKCk7CiAgICAgbGV4ZXIuY2xlYXIo
KTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA5MTM0ZGUxNDcxYjEwMGUyYzFhMmQ1ZGZmYWY2
MDJiNTM1Nzg0ZGU4Li44MGM4YzJiNGQ3ZDQ1NTIwMjUxZTg4MmQ4YTIxOTI5OTc1NDY2MDhkIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIFBhcnNlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAg
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICAgICAgUGFzc1JlZlB0cjxQYXJz
ZWROb2RlPiBwYXJzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBEZWJ1Z2dlciosIEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwor
ICAgICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBEZWJ1Z2dlciosIEV4ZWNTdGF0ZSosIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9vbCBpblN0cmljdENv
bnRleHQsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKIAogICAgICAgICB2b2lkIGRpZEZpbmlzaFBh
cnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6
OlZhclN0YWNrPiosIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VyQXJlbmFE
YXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBhcnNlckFy
ZW5hJiBhcmVuYSgpIHsgcmV0dXJuIG1fYXJlbmE7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZvaWQgcGFyc2UoSlNHbG9iYWxEYXRhKiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgaW50KiBlcnJM
aW5lLCBVU3RyaW5nKiBlcnJNc2cpOworICAgICAgICB2b2lkIHBhcnNlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBGdW5jdGlvblBhcmFtZXRlcnMqLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpOwogCiAg
ICAgICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAg
ICAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNzUsMjAgKzc1LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNl
cjo6cGFyc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRGVidWdnZXIqIGRlYnVnZ2VyLCBFeGVjU3RhdGUqIGRlYnVnZ2VyRXhl
Y1N0YXRlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFy
YW1ldGVycywgSlNPYmplY3QqKiBleGNlcHRpb24pCisgICAgUGFzc1JlZlB0cjxQYXJzZWROb2Rl
PiBQYXJzZXI6OnBhcnNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIERlYnVnZ2VyKiBkZWJ1Z2dlciwgRXhlY1N0YXRlKiBkZWJ1Z2dlckV4ZWNT
dGF0ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFt
ZXRlcnMsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBKU09iamVjdCoqIGV4Y2VwdGlvbikKICAgICB7
CisgICAgICAgIEFTU0VSVChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgQVNTRVJUKGV4
Y2VwdGlvbiAmJiAhKmV4Y2VwdGlvbik7CiAgICAgICAgIGludCBlcnJMaW5lOwogICAgICAgICBV
U3RyaW5nIGVyck1zZzsKIAogICAgICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CiAgICAgICAgIGlm
IChQYXJzZWROb2RlOjpzY29wZUlzRnVuY3Rpb24pCi0gICAgICAgICAgICBnbG9iYWxEYXRhLT5s
ZXhlci0+c2V0SXNSZXBhcnNpbmcoKTsKLSAgICAgICAgcGFyc2UoZ2xvYmFsRGF0YSwgcGFyYW1l
dGVycywgJmVyckxpbmUsICZlcnJNc2cpOworICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmxleGVyLT5zZXRJc1JlcGFyc2luZygpOworICAgICAgICBwYXJzZShleGVjLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwYXJhbWV0ZXJzLCBpblN0cmljdENvbnRleHQsICZlcnJMaW5lLCAmZXJyTXNn
KTsKIAogICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgICAgICBpZiAobV9z
b3VyY2VFbGVtZW50cykgewotICAgICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRl
KGdsb2JhbERhdGEsCisgICAgICAgICAgICByZXN1bHQgPSBQYXJzZWROb2RlOjpjcmVhdGUoJmV4
ZWMtPmdsb2JhbERhdGEoKSwKICAgICAgICAgICAgICAgICBtX3NvdXJjZUVsZW1lbnRzLAogICAg
ICAgICAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25zID8gJm1fdmFyRGVjbGFyYXRpb25zLT5kYXRh
IDogMCwKICAgICAgICAgICAgICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFy
YXRpb25zLT5kYXRhIDogMCwKQEAgLTEwNyw3ICsxMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIGlmIChpc0Z1bmN0aW9uQm9keU5vZGUoc3RhdGljX2Nhc3Q8UGFyc2VkTm9kZSo+
KDApKSkKICAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICpleGNlcHRpb24gPSBhZGRFcnJvckluZm8oZ2xvYmFsRGF0YSwgY3JlYXRlU3ludGF4RXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwgc291cmNlKTsKKyAgICAg
ICAgICAgICAgICAqZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKCZleGVjLT5nbG9iYWxEYXRhKCks
IGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxpbmUs
IHNvdXJjZSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBjZTNhYjYxMTY2YjEyNWIzMDEyNzMwN2U0
M2VjYmQ0NDk3M2FmMTIzLi5mOTA5M2E3NDQ3YTk0MzMxYjRlOGUxMDYzZDVjODZkYTkyZDQ3OWFk
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTMwLDE1ICszMCwyNCBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN5bnRheENoZWNrZXIgewogcHVibGljOgogICAgIFN5
bnRheENoZWNrZXIoSlNHbG9iYWxEYXRhKiAsIExleGVyKikKKyAgICAgICAgOiBtX3RvcEJpbmFy
eUV4cHIoMCkKICAgICB7CiAgICAgfQogCiAgICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0
aW9uQm9keUJ1aWxkZXI7CisgICAgZW51bSB7IE5vbmVFeHByID0gMCwKKyAgICAgICAgUmVzb2x2
ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgTnVtYmVyRXhwciwgU3RyaW5nRXhwciwKKyAgICAgICAg
VGhpc0V4cHIsIE51bGxFeHByLCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4
cHIsCisgICAgICAgIEZ1bmN0aW9uRXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHBy
LAorICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlF
eHByLAorICAgICAgICBDb25kaXRpb25hbEV4cHIsIEFzc2lnbm1lbnRFeHByLCBUeXBlb2ZFeHBy
LAorICAgICAgICBEZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHByIH07CisgICAgdHlwZWRlZiBp
bnQgRXhwcmVzc2lvblR5cGU7CiAKLSAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uOworICAgIHR5
cGVkZWYgRXhwcmVzc2lvblR5cGUgRXhwcmVzc2lvbjsKICAgICB0eXBlZGVmIGludCBTb3VyY2VF
bGVtZW50czsKICAgICB0eXBlZGVmIGludCBBcmd1bWVudHM7Ci0gICAgdHlwZWRlZiBpbnQgQ29t
bWE7CisgICAgdHlwZWRlZiBFeHByZXNzaW9uVHlwZSBDb21tYTsKICAgICBzdHJ1Y3QgUHJvcGVy
dHkgewogICAgICAgICBBTFdBWVNfSU5MSU5FIFByb3BlcnR5KHZvaWQqID0gMCkKICAgICAgICAg
ICAgIDogdHlwZSgoUHJvcGVydHlOb2RlOjpUeXBlKTApCkBAIC03MywzOCArODIsMzggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IGZhbHNl
OwogCiAgICAgaW50IGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQotICAgIHZvaWQgYXBwZW5kVG9Db21tYShpbnQsIGludCkgeyB9Ci0gICAgaW50IGNyZWF0
ZUNvbW1hRXhwcihpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBtYWtlQXNzaWduTm9k
ZShpbnQsIE9wZXJhdG9yLCBpbnQsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgbWFrZVByZWZpeE5vZGUoaW50LCBPcGVyYXRvciwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBtYWtlUG9zdGZpeE5vZGUoaW50LCBPcGVyYXRvciwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBtYWtlVHlwZU9mTm9kZShpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgbWFrZURlbGV0ZU5vZGUoaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IG1ha2VOZWdhdGVOb2RlKGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBtYWtlQml0d2lzZU5vdE5vZGUoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50
IGNyZWF0ZUxvZ2ljYWxOb3QoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVVuYXJ5
UGx1cyhpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlVm9pZChpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgdGhpc0V4cHIoKSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVJl
c29sdmUoY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVPYmplY3RMaXRlcmFsKCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVPYmplY3RMaXRl
cmFsKGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcnJheShpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlQXJyYXkoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlTnVtYmVyRXhwcihkb3VibGUpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
U3RyaW5nKGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJv
b2xlYW4oYm9vbCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVOdWxsKCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVCcmFja2V0QWNjZXNzKGludCwgaW50LCBib29sLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURvdEFjY2VzcyhpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0
ZVJlZ2V4KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgaW50IGNyZWF0ZU5ld0V4cHIoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlTmV3RXhwcihpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSWRlbnRpZmllciYs
IGludCwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVG
dW5jdGlvbkV4cHIoY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KCkgeyByZXR1cm4g
MTsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiBDYWxsRXhwcjsgfQorICAgIHZvaWQgYXBwZW5kVG9Db21t
YShFeHByZXNzaW9uVHlwZSYgYmFzZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgYmFzZSA9IHJp
Z2h0OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHByKEV4cHJlc3Npb25UeXBl
LCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBtYWtlQXNzaWduTm9kZShFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25U
eXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKEV4cHJlc3Npb25UeXBlLCBPcGVy
YXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUHJlRXhwcjsgfQorICAgIEV4cHJlc3Npb25U
eXBlIG1ha2VQb3N0Zml4Tm9kZShFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5v
ZGUoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBtYWtlRGVsZXRlTm9kZShFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gRGVsZXRlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKEV4cHJl
c3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtl
Qml0d2lzZU5vdE5vZGUoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUxvZ2ljYWxOb3QoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJu
IFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhFeHByZXNz
aW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
Vm9pZChFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lv
blR5cGUgdGhpc0V4cHIoKSB7IHJldHVybiBUaGlzRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZVJlc29sdmUoY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gUmVzb2x2ZUV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKCkgeyByZXR1cm4g
T2JqZWN0TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRl
cmFsKGludCkgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVBcnJheShpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVBcnJheShpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bWJlckV4cHIoZG91YmxlKSB7IHJldHVy
biBOdW1iZXJFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGNvbnN0IElk
ZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlQm9vbGVhbihib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZU51bGwoKSB7IHJldHVybiBOdWxsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUJyYWNrZXRBY2Nlc3MoRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBp
bnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZURvdEFjY2VzcyhFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciYsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVS
ZWdleChjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllciYsIGludCkgeyByZXR1cm4g
UmVnRXhwRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoRXhwcmVzc2lv
blR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVy
biBOZXdFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKEV4
cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENv
bmRpdGlvbmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUo
Y29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0
aW9uRXhwcihjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShib29s
KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIDE7IH0K
ICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVh
dGVBcmd1bWVudHNMaXN0KGludCkgeyByZXR1cm4gMTsgfQpAQCAtMTY5LDI2ICsxNzgsMzggQEAg
cHVibGljOgogICAgIHZvaWQgYWRkVmFyKGNvbnN0IElkZW50aWZpZXIqLCBib29sKSB7IH0KICAg
ICBpbnQgY29tYmluZUNvbW1hTm9kZXMoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQg
ZXZhbENvdW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZvaWQgYXBwZW5kQmluYXJ5RXhw
cmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50LCBpbnQsIGludCwgaW50LCBi
b29sKSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KKyAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJl
c3Npb25JbmZvKGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBleHByLCBpbnQsIGludCwgaW50
LCBib29sKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3RvcEJpbmFyeUV4cHIpCisgICAgICAgICAg
ICBtX3RvcEJpbmFyeUV4cHIgPSBleHByOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Rv
cEJpbmFyeUV4cHIgPSBCaW5hcnlFeHByOworICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwor
ICAgIH0KICAgICAKICAgICAvLyBMb2dpYyB0byBoYW5kbGUgZGF0YXN0cnVjdHVyZXMgdXNlZCBk
dXJpbmcgcGFyc2luZyBvZiBiaW5hcnkgZXhwcmVzc2lvbnMKICAgICB2b2lkIG9wZXJhdG9yU3Rh
Y2tQb3AoaW50JiBvcGVyYXRvclN0YWNrRGVwdGgpIHsgb3BlcmF0b3JTdGFja0RlcHRoLS07IH0K
ICAgICBib29sIG9wZXJhdG9yU3RhY2tIYXNIaWdoZXJQcmVjZWRlbmNlKGludCYsIGludCkgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIEJpbmFyeU9wZXJhbmQgZ2V0RnJvbU9wZXJhbmRTdGFjayhpbnQp
IHsgcmV0dXJuIDE7IH0KKyAgICBCaW5hcnlPcGVyYW5kIGdldEZyb21PcGVyYW5kU3RhY2soaW50
KSB7IHJldHVybiBtX3RvcEJpbmFyeUV4cHI7IH0KICAgICB2b2lkIHNocmlua09wZXJhbmRTdGFj
a0J5KGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBhbW91bnQpIHsgb3BlcmFuZFN0YWNrRGVw
dGggLT0gYW1vdW50OyB9CiAgICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oaW50JiBvcGVy
YW5kU3RhY2tEZXB0aCwgaW50JiwgQmluYXJ5T3BlcmFuZCwgQmluYXJ5T3BlcmFuZCkgeyBvcGVy
YW5kU3RhY2tEZXB0aCsrOyB9CiAgICAgdm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3Bl
cmF0b3JTdGFja0RlcHRoLCBpbnQsIGludCkgeyBvcGVyYXRvclN0YWNrRGVwdGgrKzsgfQotICAg
IGludCBwb3BPcGVyYW5kU3RhY2soaW50JikgeyByZXR1cm4gMTsgfQorICAgIGludCBwb3BPcGVy
YW5kU3RhY2soaW50JikgeyBpbnQgcmVzID0gbV90b3BCaW5hcnlFeHByOyBtX3RvcEJpbmFyeUV4
cHIgPSAwOyByZXR1cm4gcmVzOyB9CiAgICAgCi0gICAgdm9pZCBhcHBlbmRVbmFyeVRva2VuKGlu
dCYsIGludCwgaW50KSB7IH0KLSAgICBpbnQgdW5hcnlUb2tlblN0YWNrTGFzdFR5cGUoaW50Jikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KLSAgICBpbnQgdW5hcnlUb2tlblN0
YWNrTGFzdFN0YXJ0KGludCYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9Ci0g
ICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYpIHsgfQorICAgIHZvaWQgYXBw
ZW5kVW5hcnlUb2tlbihpbnQmIHN0YWNrRGVwdGgsIGludCB0b2ssIGludCkgeyBzdGFja0RlcHRo
ID0gMTsgbV90b3BVbmFyeVRva2VuID0gdG9rOyB9CisgICAgaW50IHVuYXJ5VG9rZW5TdGFja0xh
c3RUeXBlKGludCYpIHsgcmV0dXJuIG1fdG9wVW5hcnlUb2tlbjsgfQorICAgIGludCB1bmFyeVRv
a2VuU3RhY2tMYXN0U3RhcnQoaW50JikgeyByZXR1cm4gMDsgfQorICAgIHZvaWQgdW5hcnlUb2tl
blN0YWNrUmVtb3ZlTGFzdChpbnQmIHN0YWNrRGVwdGgpIHsgc3RhY2tEZXB0aCA9IDA7IH0KICAg
ICAKICAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgT3BlcmF0b3IpIHsgfQogICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGludCwgaW50LCBpbnQs
IGludCwgaW50KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQogICAgIGNvbnN0
IElkZW50aWZpZXImIGdldE5hbWUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSB7IEFTU0VSVChw
cm9wZXJ0eS5uYW1lKTsgcmV0dXJuICpwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2Rl
OjpUeXBlIGdldFR5cGUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSB7IHJldHVybiBwcm9wZXJ0
eS50eXBlOyB9CisgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikgeyByZXR1
cm4gZXhwciA9PSBSZXNvbHZlRXhwciB8fCBleHByID09IFJlc29sdmVFdmFsRXhwcjsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBpbnQgbV90b3BCaW5hcnlFeHByOworICAgIGludCBtX3RvcFVuYXJ5
VG9rZW47CiB9OwogCiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggNDUw
ZGM3ZDZmNzg4ODMxZWUzNTY3Y2FiYmIxOTQyNDAwYjQyNWRhOC4uNWM1ZTUyMjJmYjIyN2FkNzNk
ZDNhNTM5YWYyZjBkYTUyZWRhNTI4YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNw
cApAQCAtMTUzLDYgKzE1MywzMCBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgUHJvcGVydHlTbG90JiBzbAogCiAgICAgcmV0
dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgSWRlbnRpZmllcihleGVjLCBV
U3RyaW5nOjpudW1iZXIoaSkpLCBzbG90KTsKIH0KKyAgICAKK3ZvaWQgQXJndW1lbnRzOjpjcmVh
dGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3NhcnkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlm
IChkLT5vdmVycm9kZUNhbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZC0+b3ZlcnJvZGVD
YWxsZXIgPSB0cnVlOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIEpT
VmFsdWUgdGhyb3dlciA9IGNyZWF0ZVR5cGVFcnJvckZ1bmN0aW9uKGV4ZWMsICJVbmFibGUgdG8g
YWNjZXNzIGNhbGxlciBvZiBzdHJpY3QgbW9kZSBmdW5jdGlvbiIpOworICAgIGRlc2NyaXB0b3Iu
c2V0QWNjZXNzb3JEZXNjcmlwdG9yKHRocm93ZXIsIHRocm93ZXIsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IEdldHRlciB8IFNldHRlcik7CisgICAgZGVmaW5lT3duUHJvcGVydHkoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNhbGxlciwgZGVzY3JpcHRvciwgZmFsc2UpOworfQorCit2b2lk
IEFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBpZiAoZC0+b3ZlcnJvZGVDYWxsZWUpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBkLT5vdmVycm9kZUNhbGxlZSA9IHRydWU7CisgICAgUHJvcGVydHlEZXNjcmlwdG9y
IGRlc2NyaXB0b3I7CisgICAgSlNWYWx1ZSB0aHJvd2VyID0gY3JlYXRlVHlwZUVycm9yRnVuY3Rp
b24oZXhlYywgIlVuYWJsZSB0byBhY2Nlc3MgY2FsbGVlIG9mIHN0cmljdCBtb2RlIGZ1bmN0aW9u
Iik7CisgICAgZGVzY3JpcHRvci5zZXRBY2Nlc3NvckRlc2NyaXB0b3IodGhyb3dlciwgdGhyb3dl
ciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgR2V0dGVyIHwgU2V0dGVyKTsKKyAgICBkZWZpbmVP
d25Qcm9wZXJ0eShleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlLCBkZXNjcmlwdG9y
LCBmYWxzZSk7Cit9CiAKIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKQEAgLTE3MiwxMCArMTk2LDE2IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hCiAg
ICAgfQogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2Fs
bGVlICYmIExJS0VMWSghZC0+b3ZlcnJvZGVDYWxsZWUpKSB7Ci0gICAgICAgIHNsb3Quc2V0VmFs
dWUoZC0+Y2FsbGVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghZC0+aXNT
dHJpY3RNb2RlKSB7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKGQtPmNhbGxlZSk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjcmVhdGVTdHJpY3RNb2Rl
Q2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgfQogCisgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyICYmIGQtPmlzU3RyaWN0TW9kZSkKKyAgICAg
ICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVjZXNzYXJ5KGV4ZWMpOworCiAgICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
IH0KIApAQCAtMTk3LDkgKzIyNywxNSBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcAogICAgIH0K
ICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxs
ZWUgJiYgTElLRUxZKCFkLT5vdmVycm9kZUNhbGxlZSkpIHsKLSAgICAgICAgZGVzY3JpcHRvci5z
ZXREZXNjcmlwdG9yKGQtPmNhbGxlZSwgRG9udEVudW0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgaWYgKCFkLT5pc1N0cmljdE1vZGUpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcihkLT5jYWxsZWUsIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2Fy
eShleGVjKTsKICAgICB9CisKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jYWxsZXIgJiYgZC0+aXNTdHJpY3RNb2RlKQorICAgICAgICBjcmVhdGVTdHJpY3RN
b2RlQ2FsbGVySWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgCiAgICAgcmV0dXJuIEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsK
IH0KQEAgLTI0OSwxMSArMjg1LDE3IEBAIHZvaWQgQXJndW1lbnRzOjpwdXQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsCiAgICAgfQog
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYm
ICFkLT5vdmVycm9kZUNhbGxlZSkgewotICAgICAgICBkLT5vdmVycm9kZUNhbGxlZSA9IHRydWU7
Ci0gICAgICAgIHB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51bSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFkLT5pc1N0cmljdE1vZGUpIHsKKyAgICAgICAgICAg
IGQtPm92ZXJyb2RlQ2FsbGVlID0gdHJ1ZTsKKyAgICAgICAgICAgIHB1dERpcmVjdChwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBEb250RW51bSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KGV4ZWMpOwogICAgIH0K
IAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlciAm
JiBkLT5pc1N0cmljdE1vZGUpCisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vz
c2FyeShleGVjKTsKKwogICAgIEpTT2JqZWN0OjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiB9CiAKQEAgLTI5NCw5ICszMzYsMTUgQEAgYm9vbCBBcmd1bWVudHM6OmRlbGV0
ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNhbGxlZSAmJiAhZC0+b3ZlcnJvZGVDYWxsZWUpIHsKLSAgICAgICAgZC0+b3ZlcnJvZGVDYWxs
ZWUgPSB0cnVlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCFkLT5pc1N0cmlj
dE1vZGUpIHsKKyAgICAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxs
ZWVJZk5lY2Vzc2FyeShleGVjKTsKICAgICB9CisgICAgCisgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyICYmICFkLT5pc1N0cmljdE1vZGUpCisgICAg
ICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeShleGVjKTsKIAogICAgIHJldHVy
biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDQ5YzhiM2I1OGFlMzg1NTQ1ZWQzOTM3YTYyYjky
NzVlZjZkOGZlNTguLjcxNWEyYWMxNzVkYjU0YTg2MTc0Mzk5ODNmZTVmNDQ2NGU4NzU0OGMgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtNTAsNiArNTAsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlOwogICAgICAgICBib29sIG92ZXJyb2Rl
TGVuZ3RoIDogMTsKICAgICAgICAgYm9vbCBvdmVycm9kZUNhbGxlZSA6IDE7CisgICAgICAgIGJv
b2wgb3ZlcnJvZGVDYWxsZXIgOiAxOworICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA6IDE7CiAg
ICAgfTsKIAogCkBAIC0xMDUsNiArMTA3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICB2b2lkIGNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeShFeGVj
U3RhdGUqKTsKKyAgICAgICAgdm9pZCBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3Nhcnko
RXhlY1N0YXRlKik7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5m
bygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CiAKQEAgLTE3Miw2ICsxNzYsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGQtPmNhbGxlZSA9IGNhbGxlZTsKICAgICAgICAgZC0+b3ZlcnJv
ZGVMZW5ndGggPSBmYWxzZTsKICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSBmYWxzZTsKKyAg
ICAgICAgZC0+b3ZlcnJvZGVDYWxsZXIgPSBmYWxzZTsKKyAgICAgICAgZC0+aXNTdHJpY3RNb2Rl
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIGlmIChk
LT5pc1N0cmljdE1vZGUpCisgICAgICAgICAgICBjb3B5UmVnaXN0ZXJzKCk7CiAgICAgfQogCiAg
ICAgaW5saW5lIEFyZ3VtZW50czo6QXJndW1lbnRzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBOb1Bh
cmFtZXRlcnNUeXBlKQpAQCAtMjAxLDYgKzIwOSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgZC0+Y2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKICAgICAgICAg
ZC0+b3ZlcnJvZGVMZW5ndGggPSBmYWxzZTsKICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSBm
YWxzZTsKKyAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZXIgPSBmYWxzZTsKKyAgICAgICAgZC0+aXNT
dHJpY3RNb2RlID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7CisgICAg
ICAgIGlmIChkLT5pc1N0cmljdE1vZGUpCisgICAgICAgICAgICBjb3B5UmVnaXN0ZXJzKCk7CiAg
ICAgfQogCiAgICAgaW5saW5lIHZvaWQgQXJndW1lbnRzOjpjb3B5UmVnaXN0ZXJzKCkKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggMzgzNzgxN2Qw
NTJmNzhlY2UwNjFhYzZkZTcxNzEwNGRlZmI3YjdlYi4uMTU2MTEwMjM1MjA3ZjZhYzlmYjE2N2My
NzVjYTRjMzIyZDEzNTlmZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklk
ZW50aWZpZXJzKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICAsIGVtcHR5SWRlbnRpZmll
cihnbG9iYWxEYXRhLCAiIikKICAgICAsIHVuZGVyc2NvcmVQcm90byhnbG9iYWxEYXRhLCAiX19w
cm90b19fIikKICAgICAsIHRoaXNJZGVudGlmaWVyKGdsb2JhbERhdGEsICJ0aGlzIikKKyAgICAs
IHVzZVN0cmljdElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgInVzZSBzdHJpY3QiKQogICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlf
TkFNRSkKIHsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApp
bmRleCBkZTI0ZjRhMGQ0ODQ3YjVhMmE4OTg5NmU5NjRkMDM0YmFkNzE3ZjZhLi4xZTIyYjZhYmRm
ZmRhZjg4NTQ3ZjU4Zjc0ZDdmMjFkNmNlZmFlYTJhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC05NCw2ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyIGVtcHR5SWRlbnRpZmllcjsKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciB1bmRlcnNjb3JlUHJvdG87CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgdGhp
c0lkZW50aWZpZXI7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgdXNlU3RyaWN0SWRlbnRpZmll
cjsKIAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFM
KG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9O
QU1FX0dMT0JBTCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggYTJiZTQ3MzY1OGY2MjRm
MWQ3ZWYxNTYxM2ZiMjVlYzQxODU0NGJkMy4uZTM1NDI0YmI0MjJiMzljYTc1YWI4NDU0MjJkYTky
Mjk1MzViYTQ4NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTE5NSw0ICsxOTUsNDcg
QEAgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJTeW50YXggZXJyb3Ii
KSk7CiB9CiAKK2NsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKKyAg
ICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVu
dGlmaWVyKQorICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorICAgIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2Fs
bGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVs
bCgpKTsKKyAgICB9CisgICAgCisgICAgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENv
bnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCisgICAgeworICAgICAgICBjb25zdHJ1Y3REYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFRocm93VHlwZUVycm9yOworICAgICAgICByZXR1
cm4gQ29uc3RydWN0VHlwZUhvc3Q7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCisg
ICAgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSktPm1fbWVzc2FnZSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOworICAgIH0KKworICAgIENhbGxUeXBl
IGdldENhbGxEYXRhKENhbGxEYXRhJiBjYWxsRGF0YSkKKyAgICB7CisgICAgICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxUaHJvd1R5cGVFcnJvcjsKKyAgICAgICAgcmV0dXJuIENh
bGxUeXBlSG9zdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVVN0cmluZyBtX21lc3NhZ2U7Cit9
OworCitDT01QSUxFX0FTU0VSVChzaXplb2YoU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKSA8
PSBzaXplb2YoQ29sbGVjdG9yQ2VsbCksIHNpemVvZl9TdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rp
b25fbXVzdF9iZV9sZXNzX3RoYW5fQ29sbGVjdG9yQ2VsbCk7CisKK0pTVmFsdWUgY3JlYXRlVHlw
ZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQor
eworICAgIHJldHVybiBuZXcgKGV4ZWMpIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXggMWEwZWNlNTRiMmNjZTk3YmZjMTY3
Njc1N2FmYTRlZDk1MDI1Y2YwOC4uYmZkZTdkYzY2MjgyNGE0MGI4YjU5Y2Y0M2Y4NzQ0NzYzNzhk
ZDdmZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtNzMsNiArNzMsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXJyb3Io
ZXhlYywgZXJyb3IpKTsgfQogICAgIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMpKTsgfQogCisgICAgSlNWYWx1ZSBjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpOworICAgIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBFcnJvcl9oCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAppbmRleCA4NzFmM2UyMDQwZDgxZWQ3Mjg0MDUwYTBmOTVlZmU4NGEwYWE0NWVkLi45NWIw
MzM0YjYwZmNiZDk0MDZkNjQ3ZDMxNjUyNmQ0MWE1NzMzYmEzIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgVlB0ckhhY2tFeGVjdXRhYmxlOjp+
VlB0ckhhY2tFeGVjdXRhYmxlKCkKIHsKIH0KIAotRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRh
YmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2Ny
aXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UpCitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFi
bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0KQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGluU3RyaWN0
Q29udGV4dCkKIHsKIH0KIApAQCAtNTUsNyArNTUsNyBAQCBFdmFsRXhlY3V0YWJsZTo6fkV2YWxF
eGVjdXRhYmxlKCkKIH0KIAogUHJvZ3JhbUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhl
Y3V0YWJsZShleGVjLCBzb3VyY2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMsIHNvdXJj
ZSwgZmFsc2UpCiB7CiB9CiAKQEAgLTYzLDggKzYzLDggQEAgUHJvZ3JhbUV4ZWN1dGFibGU6On5Q
cm9ncmFtRXhlY3V0YWJsZSgpCiB7CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25F
eGVjdXRhYmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUp
Ci0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGdsb2JhbERhdGEsIHNvdXJjZSkKK0Z1bmN0aW9uRXhl
Y3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNl
VXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGluU3Ry
aWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQorICAgIDogU2NyaXB0RXhl
Y3V0YWJsZShnbG9iYWxEYXRhLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKICAgICAsIG1fbnVt
Q2FwdHVyZWRWYXJpYWJsZXMoMCkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKGZvcmNlVXNl
c0FyZ3VtZW50cykKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQpAQCAtNzUsOCArNzUs
OCBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZQogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsK
IH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJv
b2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGlu
dCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYywg
c291cmNlKQorRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMs
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAg
OiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0KQogICAgICwg
bV9udW1DYXB0dXJlZFZhcmlhYmxlcygwKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMoZm9y
Y2VVc2VzQXJndW1lbnRzKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCkBAIC05Niw3
ICs5Niw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNT
dGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlCiAgICAgSlNPYmplY3QqIGV4Y2VwdGlv
biA9IDA7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKLSAgICBSZWZQdHI8RXZhbE5vZGU+IGV2YWxOb2RlID0gZ2xvYmFs
RGF0YS0+cGFyc2VyLT5wYXJzZTxFdmFsTm9kZT4oZ2xvYmFsRGF0YSwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgZXhlYywgbV9zb3VyY2UsIDAs
ICZleGNlcHRpb24pOworICAgIFJlZlB0cjxFdmFsTm9kZT4gZXZhbE5vZGUgPSBnbG9iYWxEYXRh
LT5wYXJzZXItPnBhcnNlPEV2YWxOb2RlPihleGVjLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLCBleGVjLCBtX3NvdXJjZSwgMCwgaXNTdHJpY3RN
b2RlKCksICZleGNlcHRpb24pOwogICAgIGlmICghZXZhbE5vZGUpIHsKICAgICAgICAgQVNTRVJU
KGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBleGNlcHRpb247CkBAIC0xMzEsNyArMTMxLDcg
QEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBSZWZQdHI8
UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxQcm9n
cmFtTm9kZT4oZ2xvYmFsRGF0YSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdC0+ZGVidWdnZXIoKSwgZXhlYywgbV9zb3VyY2UsIDAsICZleGNlcHRpb24pOworICAgIFJl
ZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNl
PFByb2dyYW1Ob2RlPihleGVjLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LT5kZWJ1Z2dlcigpLCBleGVjLCBtX3NvdXJjZSwgMCwgZmFsc2UsICZleGNlcHRpb24pOwog
ICAgIGlmIChwcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKGV4Y2Vw
dGlvbik7CkBAIC0xNDUsNyArMTQ1LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2MKICAgICBK
U09iamVjdCogZXhjZXB0aW9uID0gMDsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAm
ZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIFJlZlB0cjxQcm9ncmFtTm9k
ZT4gcHJvZ3JhbU5vZGUgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPihn
bG9iYWxEYXRhLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5kZWJ1
Z2dlcigpLCBleGVjLCBtX3NvdXJjZSwgMCwgJmV4Y2VwdGlvbik7CisgICAgUmVmUHRyPFByb2dy
YW1Ob2RlPiBwcm9ncmFtTm9kZSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5v
ZGU+KGV4ZWMsIGxleGljYWxHbG9iYWxPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QtPmRlYnVn
Z2VyKCksIGV4ZWMsIG1fc291cmNlLCAwLCBpc1N0cmljdE1vZGUoKSwgJmV4Y2VwdGlvbik7CiAg
ICAgaWYgKCFwcm9ncmFtTm9kZSkgewogICAgICAgICBBU1NFUlQoZXhjZXB0aW9uKTsKICAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbjsKQEAgLTE3OCw3ICsxNzgsNyBAQCBKU09iamVjdCogRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2Nv
cGVDaGFpbgogewogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwogICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9IHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxEYXRhOwotICAgIFJlZlB0cjxG
dW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxGdW5jdGlv
bkJvZHlOb2RlPihnbG9iYWxEYXRhLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIDAs
IG1fc291cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCksICZleGNlcHRpb24pOworICAgIFJlZlB0cjxG
dW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxGdW5jdGlv
bkJvZHlOb2RlPihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIDAsIG1fc291
cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCksIGlzU3RyaWN0TW9kZSgpLCAmZXhjZXB0aW9uKTsKICAg
ICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVy
biBleGNlcHRpb247CkBAIC0yMTksNyArMjE5LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUK
IHsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsKICAgICBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEgPSBzY29wZUNoYWluTm9kZS0+Z2xvYmFsRGF0YTsKLSAgICBSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gYm9keSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9k
ZT4oZ2xvYmFsRGF0YSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJj
ZSwgbV9wYXJhbWV0ZXJzLmdldCgpLCAmZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gYm9keSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9k
ZT4oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9w
YXJhbWV0ZXJzLmdldCgpLCBpc1N0cmljdE1vZGUoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKCFi
b2R5KSB7CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwogICAgICAgICByZXR1cm4gZXhjZXB0
aW9uOwpAQCAtMjY0LDEwICsyNjQsMTIgQEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1hcmtB
Z2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgICAgIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0LT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CiB9CiAKLVBhc3NPd25QdHI8RXhjZXB0
aW9uSW5mbz4gRnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2spCitQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IEZ1bmN0aW9uRXhlY3V0
YWJsZTo6cmVwYXJzZUV4Y2VwdGlvbkluZm8oRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbk5vZGUsIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIEpTT2JqZWN0
KiBleGNlcHRpb24gPSAwOwotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBuZXdGdW5jdGlv
bkJvZHkgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGdsb2Jh
bERhdGEsIDAsIDAsIDAsIG1fc291cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCksICZleGNlcHRpb24p
OworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxE
YXRhOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBuZXdGdW5jdGlvbkJvZHkgPSBnbG9i
YWxEYXRhLT5wYXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGV4ZWMsIHNjb3BlQ2hhaW5O
b2RlLT5nbG9iYWxPYmplY3QsIDAsIDAsIG1fc291cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCksIGlz
U3RyaWN0TW9kZSgpLCAmZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQobmV3RnVuY3Rpb25Cb2R5LT5p
c1N0cmljdE1vZGUoKSA9PSBpc1N0cmljdE1vZGUoKSk7CiAgICAgaWYgKCFuZXdGdW5jdGlvbkJv
ZHkpCiAgICAgICAgIHJldHVybiBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+KCk7CiAgICAgaWYg
KG1fZm9yY2VVc2VzQXJndW1lbnRzKQpAQCAtMjk4LDEwICszMDAsMTIgQEAgUGFzc093blB0cjxF
eGNlcHRpb25JbmZvPiBGdW5jdGlvbkV4ZWN1dGFibGU6OnJlcGFyc2VFeGNlcHRpb25JbmZvKEpT
R2xvYmFsRGF0YSoKICAgICByZXR1cm4gbmV3Q29kZUJsb2NrLT5leHRyYWN0RXhjZXB0aW9uSW5m
bygpOwogfQogCi1QYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IEV2YWxFeGVjdXRhYmxlOjpyZXBh
cnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCitQYXNzT3duUHRyPEV4Y2Vw
dGlvbkluZm8+IEV2YWxFeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5mbyhFeGVjU3RhdGUq
IGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7Ci0gICAgUmVmUHRyPEV2YWxOb2Rl
PiBuZXdFdmFsQm9keSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RXZhbE5vZGU+KGdsb2Jh
bERhdGEsIDAsIDAsIDAsIG1fc291cmNlLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEgPSBzY29wZUNoYWluTm9kZS0+Z2xvYmFsRGF0YTsKKyAgICBSZWZQdHI8
RXZhbE5vZGU+IG5ld0V2YWxCb2R5ID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxFdmFsTm9k
ZT4oZXhlYywgc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdCwgMCwgMCwgbV9zb3VyY2UsIDAs
IGlzU3RyaWN0TW9kZSgpLCAmZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQobmV3RXZhbEJvZHktPmlz
U3RyaWN0TW9kZSgpID09IGlzU3RyaWN0TW9kZSgpKTsKICAgICBpZiAoIW5ld0V2YWxCb2R5KQog
ICAgICAgICByZXR1cm4gUGFzc093blB0cjxFeGNlcHRpb25JbmZvPigpOwogCkBAIC0zNDEsNyAr
MzQ1LDcgQEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnJlY29tcGlsZShFeGVjU3RhdGUqKQog
UGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUds
b2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBFeGVjU3RhdGUqIGV4ZWMs
IERlYnVnZ2VyKiBkZWJ1Z2dlciwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdCoq
IGV4Y2VwdGlvbikKIHsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHBy
b2dyYW0gPSBleGVjLT5nbG9iYWxEYXRhKCkucGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oJmV4
ZWMtPmdsb2JhbERhdGEoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgZGVidWdnZXIsIGV4ZWMsIHNv
dXJjZSwgMCwgZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBl
eGVjLT5nbG9iYWxEYXRhKCkucGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhlYywgbGV4aWNh
bEdsb2JhbE9iamVjdCwgZGVidWdnZXIsIGV4ZWMsIHNvdXJjZSwgMCwgZmFsc2UsIGV4Y2VwdGlv
bik7CiAgICAgaWYgKCFwcm9ncmFtKSB7CiAgICAgICAgIEFTU0VSVCgqZXhjZXB0aW9uKTsKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0zNTcsNyArMzYxLDcgQEAgUGFzc1JlZlB0cjxGdW5jdGlvbkV4
ZWN1dGFibGU+IEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRp
ZmkKICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2Rl
Kj4oZnVuY0V4cHIpLT5ib2R5KCk7CiAgICAgQVNTRVJUKGJvZHkpOwogCi0gICAgcmV0dXJuIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmN0aW9uTmFt
ZSwgYm9keS0+c291cmNlKCksIGJvZHktPnVzZXNBcmd1bWVudHMoKSwgYm9keS0+cGFyYW1ldGVy
cygpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExpbmUoKSk7CisgICAgcmV0dXJuIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmN0aW9uTmFtZSwg
Ym9keS0+c291cmNlKCksIGJvZHktPnVzZXNBcmd1bWVudHMoKSwgYm9keS0+cGFyYW1ldGVycygp
LCBmYWxzZSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxhc3RMaW5lKCkpOwogfQogCiBVU3RyaW5n
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmcoKSBjb25zdApAQCAtMzcyLDcgKzM3Niw3
IEBAIFVTdHJpbmcgRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CiAgICAg
cmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTsKIH0KIAotUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBQ
cm9ncmFtRXhlY3V0YWJsZTo6cmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwgU2Nv
cGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKQorUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBQcm9n
cmFtRXhlY3V0YWJsZTo6cmVwYXJzZUV4Y2VwdGlvbkluZm8oRXhlY1N0YXRlKiwgU2NvcGVDaGFp
bk5vZGUqLCBDb2RlQmxvY2sqKQogewogICAgIC8vIENvZGVCbG9ja3MgZm9yIHByb2dyYW0gY29k
ZSBhcmUgdHJhbnNpZW50IGFuZCB0aGVyZWZvcmUgZG8gbm90IGdhaW4gZnJvbSBmcm9tIHRocm93
aW5nIG91dCB0aGVpciBleGNlcHRpb24gaW5mb3JtYXRpb24uCiAgICAgcmV0dXJuIFBhc3NPd25Q
dHI8RXhjZXB0aW9uSW5mbz4oKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXgg
ZmVhYjdlZjkwNzEwMjE4ZGZmNGUyOTljNmU2N2I3YjBmNWIyYjc0YS4uMTlhODgzZDgxYTFhMmY2
ODA0MGQwNDA2MTA5NmVmMjc4YTc5MmNkNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKQEAgLTEzOCwxMCArMTM4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU2Ny
aXB0RXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBTY3JpcHRFeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQorICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0KQogICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShOVU1fUEFSQU1FVEVSU19OT1RfQ09N
UElMRUQpCiAgICAgICAgICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAgICAgICAgICwgbV9m
ZWF0dXJlcygwKQorICAgICAgICAgICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8g
U3RyaWN0TW9kZUZlYXR1cmUgOiAwKQogICAgICAgICB7CiAjaWYgRU5BQkxFKENPREVCTE9DS19T
QU1QTElORykKICAgICAgICAgICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwpAQCAtMTUy
LDEwICsxNTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAgfQogCi0gICAg
ICAgIFNjcmlwdEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UpCisgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpCiAgICAgICAgICAgICA6
IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKICAgICAgICAgICAg
ICwgbV9zb3VyY2Uoc291cmNlKQotICAgICAgICAgICAgLCBtX2ZlYXR1cmVzKDApCisgICAgICAg
ICAgICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6
IDApCiAgICAgICAgIHsKICNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQogICAgICAgICAg
ICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CkBAIC0xNzUsOCArMTc1LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1
cmVzICYgRXZhbEZlYXR1cmU7IH0KICAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmU7IH0KICAgICAgICAgYm9vbCBu
ZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIHx8
IG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSk7
IH0KKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVz
ICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KIAotICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhj
ZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFp
bk5vZGUqLCBDb2RlQmxvY2sqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxFeGNl
cHRpb25JbmZvPiByZXBhcnNlRXhjZXB0aW9uSW5mbyhFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9k
ZSosIENvZGVCbG9jayopID0gMDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCByZWNv
cmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMs
IGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKQEAgLTIxNCw3ICsyMTUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqbV9ldmFsQ29kZUJsb2NrOwogICAgICAgICB9
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSkpOyB9CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0KSk7IH0K
IAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUmIGdlbmVyYXRlZEpJVENvZGUoKQpA
QCAtMjI0LDExICsyMjUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUm
KTsKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYs
IGJvb2wpOwogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiwg
U2NvcGVDaGFpbk5vZGUqKTsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9u
SW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5vZGUq
LCBDb2RlQmxvY2sqKTsKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+
IHJlcGFyc2VFeGNlcHRpb25JbmZvKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJs
b2NrKik7CiAKICAgICAgICAgT3duUHRyPEV2YWxDb2RlQmxvY2s+IG1fZXZhbENvZGVCbG9jazsK
ICAgICB9OwpAQCAtMjcxLDcgKzI3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpT
T2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAot
ICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlv
bkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKTsKKyAgICAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25JbmZv
KEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKik7CiAKICAgICAgICAgT3du
UHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9jazsKICAgICB9OwpAQCAtMjc5
LDE0ICsyODAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRh
YmxlPiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBh
cmFtZXRlcnMqIHBhcmFtZXRlcnMsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGdW5jdGlvbkV4ZWN1dGFi
bGUoZXhlYywgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGZp
cnN0TGluZSwgbGFzdExpbmUpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVu
Y3Rpb25FeGVjdXRhYmxlKGV4ZWMsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBw
YXJhbWV0ZXJzLCBpc0luU3RyaWN0Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBj
cmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlv
blBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBs
YXN0TGluZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGdW5j
dGlvbkV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVu
dHMsIHBhcmFtZXRlcnMsIGZpcnN0TGluZSwgbGFzdExpbmUpKTsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxlKGdsb2JhbERhdGEsIG5hbWUsIHNvdXJj
ZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBpc0luU3RyaWN0Q29udGV4dCwgZmly
c3RMaW5lLCBsYXN0TGluZSkpOwogICAgICAgICB9CiAKICAgICAgICAgfkZ1bmN0aW9uRXhlY3V0
YWJsZSgpOwpAQCAtMzU4LDEzICszNTksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gZnJvbUdsb2JhbENvZGUoY29uc3Qg
SWRlbnRpZmllciYsIEV4ZWNTdGF0ZSosIERlYnVnZ2VyKiwgY29uc3QgU291cmNlQ29kZSYsIEpT
T2JqZWN0KiogZXhjZXB0aW9uKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZShKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGlu
dCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSk7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEq
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVz
ZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGJvb2wsIGludCBmaXJzdExpbmUsIGlu
dCBsYXN0TGluZSk7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1
bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGJvb2wsIGludCBmaXJzdExpbmUsIGludCBsYXN0
TGluZSk7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVGb3JDb25z
dHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogCi0gICAgICAgIHZp
cnR1YWwgUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiByZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0ds
b2JhbERhdGEqLCBTY29wZUNoYWluTm9kZSosIENvZGVCbG9jayopOworICAgICAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oRXhlY1N0YXRl
KiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKTsKIAogICAgICAgICB1bnNpZ25lZCBtX251
bUNhcHR1cmVkVmFyaWFibGVzIDogMzE7CiAgICAgICAgIGJvb2wgbV9mb3JjZVVzZXNBcmd1bWVu
dHMgOiAxOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IGQxMjE1
MThmNTlmMmQzMzA5MzQ1MjlkYTk5Yjc5MWZlMWZmYzRjNDkuLjc5NWFkMWY3MWMyMTEzN2Q2MTlh
YWNkNGVhOGZkODY3OTJlZTZkYWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAKQEAgLTE4Niw2ICsxODYsMTEgQEAgSlNPYmplY3QqIEpTQWN0aXZhdGlvbjo6dG9UaGlz
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhp
c1ZhbHVlKCk7CiB9CiAKK0pTVmFsdWUgSlNBY3RpdmF0aW9uOjp0b1N0cmljdFRoaXNPYmplY3Qo
RXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICByZXR1cm4ganNOdWxsKCk7Cit9CisgICAgCiBib29s
IEpTQWN0aXZhdGlvbjo6aXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tz
KSBjb25zdAogewogICAgIHJlcXVpcmVzRHluYW1pY0NoZWNrcyA9IGQoKS0+ZnVuY3Rpb25FeGVj
dXRhYmxlLT51c2VzRXZhbCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKaW5k
ZXggOWZmOTE2ODVkZGRlMmExNDFkZGNmNGIyNzNmMDk2MTljNjgzZTM3Yy4uNmRkNmQ3MDcwYWY3
OGE1NDdjYTgzZDYxMzE5N2VhZWU3YmU3OGJmMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0
dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKIAogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmpl
Y3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjb3B5UmVnaXN0ZXJzKCk7CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggN2ViOWJhNTI2
YjUzMDk4ZTAzNDIwMTQxOWZlODY2ZjQ4ZGNhYzNhNS4uZmRhYTUwOTliMTJjODliOTUzZWUyZDk5
YjRmODJkOWRiYWZjODA1MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBA
IC0xMjIsNiArMTIyLDE1IEBAIEpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKCkKICAgICB9CiB9CiAK
K3N0YXRpYyBjb25zdCBjaGFyKiBTdHJpY3RNb2RlQ2FsbGVyQWNjZXNzRXJyb3IgPSAiQ2Fubm90
IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbiI7CitzdGF0
aWMgY29uc3QgY2hhciogU3RyaWN0TW9kZUFyZ3VtZW50c0FjY2Vzc0Vycm9yID0gIkNhbm5vdCBh
Y2Nlc3MgYXJndW1lbnRzIHByb3BlcnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24iOworCitz
dGF0aWMgdm9pZCBjcmVhdGVEZXNjcmlwdG9yRm9yVGhyb3dpbmdQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgY2hhciogbWVzc2Fn
ZSkKK3sKKyAgICBKU1ZhbHVlIHRocm93ZXIgPSBjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbihleGVj
LCBtZXNzYWdlKTsKKyAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcih0aHJvd2Vy
LCB0aHJvd2VyLCBEb250RW51bSB8IERvbnREZWxldGUgfCBHZXR0ZXIgfCBTZXR0ZXIpOworfQor
CiBjb25zdCBVU3RyaW5nJiBKU0Z1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5h
bWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CkBAIC0yMDksNiArMjE4LDEyIEBAIGJvb2wgSlNG
dW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOCiAgICAgfQogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7CisgICAgICAgIGlmIChqc0V4ZWN1dGFibGUoKS0+
aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJDYW4n
dCBhY2Nlc3MgYXJndW1lbnRzIG9iamVjdCBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uIik7Cisg
ICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzTnVsbCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhp
cywgYXJndW1lbnRzR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjE5
LDYgKzIzNCwxMSBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TgogICAgIH0KIAogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgeworICAgICAgICBp
ZiAoanNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlQ2FsbGVyQWNjZXNzRXJyb3IpOworICAgICAgICAgICAg
c2xvdC5zZXRWYWx1ZShqc051bGwoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzLCBjYWxsZXJHZXR0ZXIp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMjYsMzUgKzI0Niw0MSBAQCBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotICAgIGJvb2wgSlNGdW5jdGlvbjo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi0gICAgewotICAg
ICAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSkgewotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgICAg
ICBnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAg
ICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7Citib29sIEpTRnVu
Y3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
eworICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CisgICAg
CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
KSB7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBnZXRPd25Qcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworICAg
IH0KKyAgICAKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5h
cmd1bWVudHMpIHsKKyAgICAgICAgaWYgKGpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgICAgIGNyZWF0ZURlc2NyaXB0b3JGb3JUaHJvd2luZ1Byb3BlcnR5KGV4ZWMsIGRl
c2NyaXB0b3IsIFN0cmljdE1vZGVBcmd1bWVudHNBY2Nlc3NFcnJvcik7CisgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihleGVjLT5pbnRlcnByZXRlcigp
LT5yZXRyaWV2ZUFyZ3VtZW50cyhleGVjLCB0aGlzKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERv
bnREZWxldGUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCkgewotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKGV4ZWMs
IGpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKSwgUmVhZE9ubHkgfCBEb250RW51bSB8
IERvbnREZWxldGUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNh
bGxlcikgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIGRlc2Ny
aXB0b3Iuc2V0RGVzY3JpcHRvcihqc051bWJlcihleGVjLCBqc0V4ZWN1dGFibGUoKS0+cGFyYW1l
dGVyQ291bnQoKSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNhbGxlcikgeworICAgICAgICBpZiAoanNFeGVjdXRhYmxlKCktPmlz
U3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgY3JlYXRlRGVzY3JpcHRvckZvclRocm93aW5nUHJv
cGVydHkoZXhlYywgZGVzY3JpcHRvciwgU3RyaWN0TW9kZUNhbGxlckFjY2Vzc0Vycm9yKTsKKyAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGV4ZWMtPmlu
dGVycHJldGVyKCktPnJldHJpZXZlQ2FsbGVyKGV4ZWMsIHRoaXMpLCBSZWFkT25seSB8IERvbnRF
bnVtIHwgRG9udERlbGV0ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgCisgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCiB2b2lkIEpTRnVuY3Rpb246OmdldE93
blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFpc0hvc3RGdW5jdGlv
bigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CkBAIC0yNzIsNiAr
Mjk4LDE2IEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhCiAgICAgICAgIEJhc2U6OnB1dChleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoanNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgeworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZUFyZ3VtZW50c0FjY2Vzc0Vycm9yKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVDYWxsZXJBY2Nlc3NFcnJvcik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoKQogICAgICAgICByZXR1cm47CiAgICAgQmFzZTo6cHV0KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCmluZGV4IDVlYWE1OWI3OWUyMDQ5M2RkZjZhMmJjNDYzYTQ4MWFlOWMyNjU2NTcuLjA3
M2I1NGM3YmYzOGJhMzMwYTA3YWEzNDFlYjY0Yjc3MTU2YzUxMjkgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJOb2Rl
cy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCisjaW5j
bHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0
YS5oPgogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICNpbmNsdWRlICJSZWdFeHAuaCIKQEAg
LTEyNCw2ICsxMjUsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlw
ZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwgaW50ZXJydXB0
ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZShKU09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVs
bCgpKSkKICAgICAsIHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZShKU09iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIHN0YXRpY1Njb3BlU3RydWN0dXJlKEpT
U3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCisgICAgLCBzdHJp
Y3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZShTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIHN0cmluZ1N0cnVjdHVyZShKU1N0cmluZzo6Y3JlYXRl
U3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIG5vdEFuT2JqZWN0RXJyb3JTdHViU3RydWN0dXJl
KEpTTm90QW5PYmplY3RFcnJvclN0dWI6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAg
LCBub3RBbk9iamVjdFN0cnVjdHVyZShKU05vdEFuT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoanNO
dWxsKCkpKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggOGUyZWQ2MTQz
YTBlYzhjODk2MGRlYjVkY2ZhMDI2Zjg3Nzk4NGZmNS4uNjdmMmVkNGJhOTZmOTUxZWJlNDg5N2Fk
N2IwOTUyYjlhYmVlNmZmYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBA
IC0xNDUsNiArMTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZTsKICAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZT4gc3RhdGljU2NvcGVTdHJ1Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJpbmdTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5vdEFu
T2JqZWN0RXJyb3JTdHViU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBub3RB
bk9iamVjdFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggODljMDQyYTRlZjQ5MWY2NzYyOTQ5ZmI5NjYwNzRkMjY5NjFmMThjNC4uOTAzZTU3
M2ZiODdkNDE0Yzg2NTRjOTlmZmM2YjdmYmNjYjVhYzM0NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIwNCw2ICsyMDQsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAogICAgIGQoKS0+ZnVuY3Rpb25Qcm90
b3R5cGUgPSBuZXcgKGV4ZWMpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEZ1bmN0aW9u
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKTsgLy8gVGhlIHJlYWwgcHJvdG90
eXBlIHdpbGwgYmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90eXBlIGlzIGNyZWF0ZWQuCiAgICAgZCgp
LT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSA9IFByb3RvdHlwZUZ1bmN0aW9uOjpjcmVhdGVT
dHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7CisgICAgZCgpLT5pbnRlcm5hbEZ1bmN0
aW9uU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVu
Y3Rpb25Qcm90b3R5cGUpOwogICAgIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogY2FsbEZ1bmN0aW9u
ID0gMDsKICAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIqIGFwcGx5RnVuY3Rpb24gPSAwOwogICAg
IGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyhleGVjLCB0aGlz
LCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAmY2FsbEZ1bmN0aW9uLCAm
YXBwbHlGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggZjVkMmZiMDdjMWRhZDA4MWE1ODBlNmMwMTAzNWE0MWY2NjcxM2QwOC4uM2I5OTQzOTExODAx
Y2NjYTk5ZGM5N2UwOTBkODUwYjI3ODYyYzE2YiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaApAQCAtMTQ4LDYgKzE0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwogICAg
ICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJlOwogICAgICAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gc3RyaW5nT2JqZWN0U3RydWN0dXJlOworICAgICAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZT4gaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKIAogICAgICAgICAgICAg
U3ltYm9sVGFibGUgc3ltYm9sVGFibGU7CiAgICAgICAgICAgICB1bnNpZ25lZCBwcm9maWxlR3Jv
dXA7CkBAIC0yNDMsNiArMjQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVy
ZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPmZ1bmN0aW9uU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gZCgpLT5udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAg
ICAgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgU3RydWN0
dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5pbnRl
cm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWdFeHBNYXRjaGVz
QXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+
c3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDFlMjBmN2ZlMmJhZDIxNzc5
ZTFkNjNmZjQzNDg1MzFlMTA3ZTQxODYuLmNkODlkZDIwY2UyODMzZDU5Yjg4MWYwYmE1ZDc5MDBi
MjIwNDRhYmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKEpTVmFsdWUg
cGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7CiAKLSAgICBSZWZQdHI8RXZhbEV4ZWN1
dGFibGU+IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2Uocykp
OworICAgIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoZXhlYywgbWFrZVNvdXJjZShzKSwgZmFsc2UpOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2
YWwtPmNvbXBpbGUoZXhlYywgc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3QqPih1bndyYXBwZWRP
YmplY3QpLT5nbG9iYWxTY29wZUNoYWluKCkubm9kZSgpKTsKICAgICBpZiAoZXJyb3IpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAppbmRleCBjYWJjNDI4YjU3NmEzOTUyNmI1MjE3YWI3NzU4ODU0MWRmOWU4ZTY3
Li4zMGU0MGU0OTRjZjRkZWNlMjM2ZTkwZGI1MGE5NTgxY2JjYTQ1MzNlIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNDMsNiArNDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU09iamVjdCk7CiAKK2NvbnN0IGNoYXIqIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciA9ICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRv
IHJlYWRvbmx5IHByb3BlcnR5LiI7CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3Bl
cnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewog
ICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGZyb20gdGhlIHN0YXRpYyBoYXNodGFibGVzIG9mIHByb3Bl
cnRpZXMKQEAgLTExNCwxNSArMTE2LDE5IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1CiAgICAg
Zm9yIChKU09iamVjdCogb2JqID0gdGhpczsgIW9iai0+c3RydWN0dXJlKCktPmhhc0dldHRlclNl
dHRlclByb3BlcnRpZXMoKTsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICBw
cm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVs
bCgpKSB7Ci0gICAgICAgICAgICBwdXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUsIHNsb3QpOworICAgICAgICAgICAgaWYgKCFw
dXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUs
IDAsIHRydWUsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBpZiAoKG1f
c3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAh
PSBXVEY6Om5vdEZvdW5kKSAmJiBhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCisgICAgaWYgKChtX3N0
cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0g
V1RGOjpub3RGb3VuZCkgJiYgYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CisgICAgICAgIGlmIChz
bG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBmb3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzOyA7
IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgaWYgKEpTVmFsdWUgZ3MgPSBv
YmotPmdldERpcmVjdChwcm9wZXJ0eU5hbWUpKSB7CkBAIC0xNTEsNyArMTU3LDggQEAgdm9pZCBK
U09iamVjdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHUKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHB1dERp
cmVjdEludGVybmFsKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwg
dHJ1ZSwgc2xvdCk7CisgICAgaWYgKCFwdXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9iYWxEYXRh
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RN
b2RlKCkpCisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CiAgICAgcmV0dXJuOwogfQogCkBAIC00ODksNiArNDk2LDExIEBA
IEpTT2JqZWN0KiBKU09iamVjdDo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0CiAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKTsKIH0KIAorSlNWYWx1ZSBKU09iamVj
dDo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKTsKK30KKwogSlNPYmplY3QqIEpTT2JqZWN0Ojp1bndy
YXBwZWRPYmplY3QoKQogewogICAgIHJldHVybiB0aGlzOwpAQCAtNzAyLDQgKzcxNCw5IEBAIGJv
b2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0pTT2JqZWN0KiB0
aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3Nh
Z2UpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
aW5kZXggNDIwMTcwMzE2MjU2ZmVjOTYxMDkzMjAwYTZkYTdlM2JiNmE4YTdkNy4uZGE5NWYwN2Q0
NGUwZDk0MWViM2JmOWQwMDc5YTNlYTE1OTg1ZTc4OSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaApAQCAtNTUsNiArNTUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTdHJ1Y3R1
cmU7CiAgICAgc3RydWN0IEhhc2hUYWJsZTsKIAorICAgIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJv
cihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgZXh0ZXJuIGNvbnN0IGNoYXIqIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcjsKKwogICAgIC8vIEVDTUEgMjYyLTMg
OC42LjEKICAgICAvLyBQcm9wZXJ0eSBhdHRyaWJ1dGVzCiAgICAgZW51bSBBdHRyaWJ1dGUgewpA
QCAtMTQwLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNW
YWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgSlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCgpOwogCiAgICAgICAgIGJvb2wgZ2V0UHJvcGVy
dHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0aW9uKSBjb25zdDsKQEAgLTE3NSw5ICsxNzks
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkg
eyByZXR1cm4gIW1fc3RydWN0dXJlLT5pc0VtcHR5KCk7IH0KICAgICAgICAgYm9vbCBoYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmhhc0dldHRlclNldHRl
clByb3BlcnRpZXMoKTsgfQogCi0gICAgICAgIHZvaWQgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVj
a1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOworICAgICAgICBib29sIHB1dERpcmVj
dChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKICAgICAg
ICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0KGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgdm9pZCBwdXRE
aXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFs
dWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0
dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKQEAgLTIwNSw2
ICsyMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFyaWFi
bGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNBY3RpdmF0aW9uT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzTm90QW5PYmplY3RFcnJvclN0dWIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHJpY3RNb2RlRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgICAgIHZpcnR1YWwgQ29tcGxUeXBlIGV4Y2VwdGlvblR5cGUo
KSBjb25zdCB7IHJldHVybiBUaHJvdzsgfQogCkBAIC0yNjUsOCArMjcwLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oJnBy
b3BlcnR5U3RvcmFnZSgpW29mZnNldF0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBwdXRE
aXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBz
bG90LCBKU0NlbGwqKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERh
dGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKKyAg
ICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0
UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRl
cm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEm
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHIgPSAwKTsKIAogICAgICAgICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpA
QCAtNDUwLDcgKzQ1NSw3IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwq
IHNwZWNpZmljRnVuY3Rpb24pCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJu
YWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwg
SlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uKQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNT
RVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFw
KHRoaXMpKTsKQEAgLTQ2NSw3ICs0NzAsOCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAg
ICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24g
IT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQogICAgICAgICAgICAgICAgIG1fc3RydWN0dXJl
LT5kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24ocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAg
IGlmIChjaGVja1JlYWRPbmx5ICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
ICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOwogICAgICAgICAgICAgLy8g
QXQgdGhpcyBwb2ludCwgdGhlIG9iamVjdHMgc3RydWN0dXJlIG9ubHkgaGFzIGEgc3BlY2lmaWMg
dmFsdWUgc2V0IGlmIHByZXZpb3VzbHkgdGhlcmUKICAgICAgICAgICAgIC8vIGhhZCBiZWVuIG9u
ZSBzZXQsIGFuZCBpZiB0aGUgbmV3IHZhbHVlIGJlaW5nIHNwZWNpZmllZCBpcyB0aGUgc2FtZSAo
b3RoZXJ3aXNlIHdlIHdvdWxkCkBAIC00NzUsNyArNDgxLDcgQEAgaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZQogICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIHByZXZpb3VzbHkgYSB2YWx1ZSwgYW5k
IHRoZSBuZXcgdmFsdWUgaXMgdGhlIHNhbWUsIHRoZW4gd2UgY2Fubm90IGNhY2hlLgogICAgICAg
ICAgICAgaWYgKCFjdXJyZW50U3BlY2lmaWNGdW5jdGlvbiB8fCAoc3BlY2lmaWNGdW5jdGlvbiAh
PSBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbikpCiAgICAgICAgICAgICAgICAgc2xvdC5zZXRFeGlz
dGluZ1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIHNpemVfdCBjdXJyZW50Q2Fw
YWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKQEAgLTQ4OCw3
ICs0OTQsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIC8vIFNlZSBjb21tZW50
IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwgYmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5j
dGlvbikKICAgICAgICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0KTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBzaXplX3Qg
b2Zmc2V0OwpAQCAtNTA0LDcgKzUxMCw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAg
ICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5jYWNoYWJsZSBzdGF0ZS4KICAgICAgICAg
aWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQogICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0
aGlzLCBvZmZzZXQpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwpAQCAtNTEyLDcgKzUxOCw3IEBA
IGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KHBy
b3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsK
ICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKICAgICAgICAgaWYgKGNoZWNrUmVh
ZE9ubHkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBUaGVyZSBhcmUgdGhy
ZWUgcG9zc2liaWxpdGllcyBoZXJlOgogICAgICAgICAvLyAgKDEpIFRoZXJlIGlzIGFuIGV4aXN0
aW5nIHNwZWNpZmljIHZhbHVlIHNldCwgYW5kIHdlJ3JlIG92ZXJ3cml0aW5nIHdpdGggKnRoZSBz
YW1lIHZhbHVlKi4KQEAgLTUyNyw3ICs1MzMsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAg
ICAgICAgICAgICAvLyBjYXNlICgxKSBEbyB0aGUgcHV0LCB0aGVuIHJldHVybiBsZWF2aW5nIHRo
ZSBzbG90IHVuY2FjaGFibGUuCiAgICAgICAgICAgICBpZiAoc3BlY2lmaWNGdW5jdGlvbiA9PSBj
dXJyZW50U3BlY2lmaWNGdW5jdGlvbikgewogICAgICAgICAgICAgICAgIHB1dERpcmVjdE9mZnNl
dChvZmZzZXQsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYXNlICgyKSBE
ZXNwZWNpZnksIGZhbGwgdGhyb3VnaCB0byAoMykuCiAgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUo
U3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24obV9zdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSkpOwpAQCAtNTM2LDcgKzU0Miw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAg
ICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90LCBkbyB0aGUgcHV0LCByZXR1cm4uCiAgICAg
ICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAgICBwdXRE
aXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9u
LCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwpAQCAtNTYxLDE0ICs1
NjcsMTUgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90
IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCiAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQogICAg
ICAgICBzbG90LnNldE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFI
ZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMp
KTsKIAotICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0
ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUp
KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2
YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCkBAIC01NzcsMTIgKzU4NCwxMiBAQCBp
bmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERh
dGEsIHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBi
b29sIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCgh
SGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlz
KSk7CiAKLSAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1
dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCAwKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJu
YWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwg
MCk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAt
NTkxLDkgKzU5OCw5IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1CiAgICAgcHV0RGlyZWN0SW50
ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNsb3QsIDApOwog
fQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBwdXREaXJlY3RJ
bnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBmYWxzZSwgc2xvdCwgMCk7CisgICAgcmV0
dXJuIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIGZhbHNlLCBzbG90
LCAwKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC02OTgs
MTAgKzcwNSwxMSBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdQogICAgIGFzQ2VsbCgpLT5wdXQo
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWlubGluZSB2b2lkIEpTVmFs
dWU6OnB1dERpcmVjdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSB2b2lkIEpTVmFs
dWU6OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VS
VChpc0NlbGwoKSAmJiBpc09iamVjdCgpKTsKLSAgICBhc09iamVjdChhc0NlbGwoKSktPnB1dERp
cmVjdChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBpZiAoIWFzT2JqZWN0KGFzQ2Vs
bCgpKS0+cHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpICYmIHNsb3QuaXNTdHJp
Y3RNb2RlKCkpCisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiB9CiAKIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTc1
Niw2ICs3NjQsMTMgQEAgaW5saW5lIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1RoaXNKU1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIGlzU3RyaW5nKCkgPyBzdGF0aWNfY2Fz
dDxKU1N0cmluZyo+KGFzQ2VsbCgpKSA6IGpzU3RyaW5nKGV4ZWMsIHRvVGhpc09iamVjdChleGVj
KS0+dG9TdHJpbmcoZXhlYykpOwogfQogCitpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1N0cmlj
dFRoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmICghaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIHJldHVybiBhc09iamVjdChhc0NlbGwoKSkt
PnRvU3RyaWN0VGhpc09iamVjdChleGVjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBKU09iamVjdF9oCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RhdGljU2NvcGVPYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmNwcAppbmRleCBhZDEwMjE4MDkzODZmNjk1ZTdlMjI1MzhhYTNlZGYzNjU5ODM4
NGQzLi43YWIxZDFjMTA3NDRmNTAzYmZhODFkMTc5YTdiM2Y0YjNkYjA2NDQzIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKQEAgLTQyLDYgKzQy
LDExIEBAIEpTT2JqZWN0KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKIH0K
IAorSlNWYWx1ZSBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0
YXRlKikgY29uc3QKK3sKKyAgICByZXR1cm4ganNOdWxsKCk7Cit9CisKIHZvaWQgSlNTdGF0aWNT
Y29wZU9iamVjdDo6cHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKICAgICBpZiAoc3ltYm9sVGFi
bGVQdXQocHJvcGVydHlOYW1lLCB2YWx1ZSkpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5oCmluZGV4IGMwNTE5YzFmYzYwNDRmZjQxYzBjNzIyY2M0YTdlNzc4
ZDhjYmVjYzUuLmU2OTM1NmEzMjVlNmZjMDJjZTgwMzQ1OTY0MTNjMWU4ZTY2Y2VhNTIgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCkBAIC01Myw2ICs1
Myw3IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4o
TWFya1N0YWNrJik7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNE
eW5hbWljQ2hlY2tzKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2Jq
ZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RU
aGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZvaWQgcHV0V2l0aEF0dHJp
YnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAppbmRleCBiNTgzNGMxOTY2MGM5Zjll
MGIxZjc3NDg0Y2E1YWQyYzkxNTI0NDc5Li5mNzc2MTU3M2RlOTFmNDEwNzdkOTMyOTE1N2NjODc4
YjU4ZDgxZjllIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaApAQCAtMTkzLDYgKzE5Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgbmVlZHNUaGlzQ29udmVyc2lvbigpIGNv
bnN0OwogICAgICAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Owor
ICAgICAgICBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKICAg
ICAgICAgVVN0cmluZyB0b1RoaXNTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpT
U3RyaW5nKiB0b1RoaXNKU1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1pvbWJpZS5oCmluZGV4IDcxMWY2NzMyYmNjZWFlYjgxYzBlMDc3NzBjMjM0ZDI3MjAxNTBm
NTQuLmRhNDU2OTliOTYxNTc0NmY2NTEzZWRmNDc3MjE2NGRmY2JmZWEzM2YgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTWm9tYmllLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlbGV0
ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0
YXRlKikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0IHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiBKU1ZhbHVlKCk7IH0KICAgICB2aXJ0dWFsIEpTVmFsdWUg
Z2V0SlNOdW1iZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4ganNOdWxsKCk7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlT
bG90LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCmluZGV4IGVi
OGVhOGE5OTQyZjdhYWYxY2I4MDAzYzkyY2VkNzZiYjRkZDNjYmYuLjRiMGIzOTQ4ZmJiMjlmMDgy
YTMxNjIxZDY2NWQzNWMzZGMyNmY3MTcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHV0UHJvcGVydHlTbG90LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9w
ZXJ0eVNsb3QuaApAQCAtMzgsOSArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGlj
OgogICAgICAgICBlbnVtIFR5cGUgeyBVbmNhY2hhYmxlLCBFeGlzdGluZ1Byb3BlcnR5LCBOZXdQ
cm9wZXJ0eSB9OwogCi0gICAgICAgIFB1dFByb3BlcnR5U2xvdCgpCisgICAgICAgIFB1dFByb3Bl
cnR5U2xvdChib29sIGlzU3RyaWN0TW9kZSA9IGZhbHNlKQogICAgICAgICAgICAgOiBtX3R5cGUo
VW5jYWNoYWJsZSkKICAgICAgICAgICAgICwgbV9iYXNlKDApCisgICAgICAgICAgICAsIG1faXNT
dHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTYxLDYg
KzYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgICAgICBKU09iamVjdCogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZTsgfQogCisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1N0cmljdE1vZGU7IH0KICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSAhPSBVbmNhY2hhYmxlOyB9CiAgICAgICAgIHNpemVfdCBjYWNoZWRPZmZzZXQoKSBj
b25zdCB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CkBAIC03MCw2ICs3Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgSlNPYmpl
Y3QqIG1fYmFzZTsKICAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgICAgICBib29sIG1faXNT
dHJpY3RNb2RlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmIwMTNi
NzNlMjVhMTA0MjY1MDQyNWRlZDhlZTEyMTFlNmY5MzU2Ci0tLSAvZGV2L251bGwKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKQEAgLTAsMCArMSw1
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJpY3RF
dmFsQWN0aXZhdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU3RyaWN0RXZhbEFjdGl2YXRp
b246OlN0cmljdEV2YWxBY3RpdmF0aW9uKEV4ZWNTdGF0ZSogZXhlYykKKyAgICA6IEpTT2JqZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKS5zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSkKK3sKK30K
KworYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitKU09iamVjdCog
U3RyaWN0RXZhbEFjdGl2YXRpb246OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpOworfQorCitKU1ZhbHVlIFN0
cmljdEV2YWxBY3RpdmF0aW9uOjp0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QK
K3sKKyAgICByZXR1cm4ganNOdWxsKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGI4NDI5NTUxMjlkNTU0Y2Ez
MTQ0ZjI3ODQ5NWI2NzQ2OGFkNzMwCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFN0cmljdEV2YWxBY3RpdmF0aW9uX2gKKyNkZWZpbmUgU3RyaWN0RXZhbEFj
dGl2YXRpb25faAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFN0cmljdEV2YWxBY3RpdmF0aW9uIDogcHVibGljIEpTT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICBTdHJpY3RFdmFsQWN0aXZhdGlvbihFeGVjU3RhdGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wg
ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgIHZpcnR1
YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworfTsKKworfQor
CisjZW5kaWYgLy8gU3RyaWN0RXZhbEFjdGl2YXRpb25faApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRl
eCAyYTQyZWVmMTE1ZjE3ODFiYjY4NWYwZTMyNmU0OWY2MTU2NDJlZmZmLi42MTIyMGI0ZDhmZTA2
NGVkYWRjNzNjMjVlZmJhODBmNWFjODJhZGY5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtOTQ5
LDcgKzk0OSw3IEBACiAjaWYgIWRlZmluZWQoRU5BQkxFX0pJVCkgJiYgQ09NUElMRVIoTVNWQykg
JiYgQ1BVKFg4Nl82NCkKICNkZWZpbmUgRU5BQkxFX0pJVCAwCiAjZW5kaWYKLQorI2RlZmluZSBF
TkFCTEVfSklUIDAKIC8qIFRoZSBKSVQgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9uIGFsbCB4ODYs
IHg2NC02NCwgQVJNICYgTUlQUyBwbGF0Zm9ybXMuICovCiAjaWYgIWRlZmluZWQoRU5BQkxFX0pJ
VCkgXAogICAgICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUo
TUlQUykpIFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBhZTJiMzk1OTBiYTZmNjI2NGI4ZWFkMmI1OGVhOTJkOWNjMDgzYWYz
Li5lNWE3Y2I0NzM3OTA3Y2EyZWYwMDE3MmNmYWI3MWI5NGRmZjgzMGFkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTAtMTAtMDEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRVM1XSBJbXBs
ZW1lbnQgc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzAxCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBtYW55IGRpZmZlcmVudCBi
ZWhhdmlvdXJzIHdlIGdldCBpbiBzdHJpY3QgbW9kZS4KKworICAgICAgICAqIGZhc3QvanMvYmFz
aWMtc3RyaWN0LW1vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2Jh
c2ljLXN0cmljdC1tb2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRl
c3RzL2Jhc2ljLXN0cmljdC1tb2RlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RUaGlzKToKKyAg
ICAgICAgKHRlc3RHbG9iYWxBY2Nlc3MpOgorCiAyMDEwLTA5LTMwICBaaGVueWFvIE1vICA8em1v
QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9kZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXN0cmljdC1tb2RlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMjljNzg5NDA5ZGQ1OGMxOWVmNzU3Njc5YTY3MjJkM2UwNDk3NDQwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9kZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMDAgQEAKK1Rlc3QgYmVoYXZpb3VyIG9mIHN0cmljdCBtb2Rl
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRlc3RUaGlzLmNhbGwobnVs
bCkgaXMgbnVsbAorUEFTUyB0ZXN0VGhpcy5jYWxsKDEpIGlzIDEKK1BBU1MgdGVzdFRoaXMuY2Fs
bCh0cnVlKSBpcyB0cnVlCitQQVNTIHRlc3RUaGlzLmNhbGwoZmFsc2UpIGlzIGZhbHNlCitQQVNT
IHRlc3RUaGlzLmNhbGwodW5kZWZpbmVkKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVzdFRoaXMuY2Fs
bCgnYSBzdHJpbmcnKSBpcyAnYSBzdHJpbmcnCitQQVNTIHRlc3RHbG9iYWxBY2Nlc3MoKSBpcyBu
dWxsCitQQVNTIChmdW5jdGlvbiBldmFsKCl7J3VzZSBzdHJpY3QnO30pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoZXZhbCl7J3VzZSBz
dHJpY3QnO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNT
IChmdW5jdGlvbiBhcmd1bWVudHMoKXsndXNlIHN0cmljdCc7fSkgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uIChhcmd1bWVudHMpeyd1c2Ug
c3RyaWN0Jzt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFT
UyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyB2YXIgZXZhbDt9KSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3Qn
OyB2YXIgYXJndW1lbnRzO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJy
b3IuCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHRyeXt9Y2F0Y2goZXZhbCl7fX0p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlv
biAoKXsndXNlIHN0cmljdCc7IHRyeXt9Y2F0Y2goYXJndW1lbnRzKXt9fSkgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uIChhLCBhKXsndXNl
IHN0cmljdCc7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BB
U1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGRlbGV0ZSBhO30pKCkgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3Ry
aWN0JzsgdmFyIGE7IGRlbGV0ZSBhO30pKCkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQ
YXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uICgpe3ZhciBhOyBmdW5jdGlvbiBmKCkgeyd1c2Ug
c3RyaWN0JzsgZGVsZXRlIGE7fSB9KSgpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFy
c2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHdpdGgoMSl7fTt9KSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24g
KCl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHMuY2FsbGVlOyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFVuYWJsZSB0byBhY2Nlc3MgY2FsbGVlIG9mIHN0cmljdCBtb2RlIGZ1bmN0aW9u
LgorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHMuY2FsbGVyOyB9KSgp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVuYWJsZSB0byBhY2Nlc3MgY2FsbGVyIG9mIHN0
cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gZigpeyd1c2Ugc3RyaWN0JzsgZi5h
cmd1bWVudHM7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2FuJ3QgYWNjZXNzIGFy
Z3VtZW50cyBvYmplY3Qgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9u
IGYoKXsndXNlIHN0cmljdCc7IGYuY2FsbGVyOyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IENhbm5vdCBhY2Nlc3MgY2FsbGVyIHByb3BlcnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rp
b24uCitQQVNTIChmdW5jdGlvbiBmKCl7J3VzZSBzdHJpY3QnOyBmLmFyZ3VtZW50cz01OyB9KSgp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBhY2Nlc3MgYXJndW1lbnRzIHByb3Bl
cnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTIChmdW5jdGlvbiBmKCl7J3VzZSBz
dHJpY3QnOyBmLmNhbGxlcj01OyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5v
dCBhY2Nlc3MgY2FsbGVyIHByb3BlcnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNT
IChmdW5jdGlvbiAoYXJnKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50cy5jYWxsZWU7IH0pKCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVW5hYmxlIHRvIGFjY2VzcyBjYWxsZWUgb2Ygc3RyaWN0
IG1vZGUgZnVuY3Rpb24uCitQQVNTIChmdW5jdGlvbiAoYXJnKXsndXNlIHN0cmljdCc7IGFyZ3Vt
ZW50cy5jYWxsZXI7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVW5hYmxlIHRvIGFj
Y2VzcyBjYWxsZXIgb2Ygc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTIChmdW5jdGlvbiBmKGFy
Zyl7J3VzZSBzdHJpY3QnOyBmLmFyZ3VtZW50czsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBDYW4ndCBhY2Nlc3MgYXJndW1lbnRzIG9iamVjdCBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0
aW9uLgorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI7IH0pKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkg
b2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0
cmljdCc7IGYuYXJndW1lbnRzPTU7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fu
bm90IGFjY2VzcyBhcmd1bWVudHMgcHJvcGVydHkgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbi4K
K1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IGYuY2FsbGVyPTU7IH0pKCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkgb2Yg
YSBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7
d2l0aCgxKXt9O30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQ
QVNTICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpe3ZhciBhOyBkZWxldGUgYTt9KSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IHZh
ciBhOyAoZnVuY3Rpb24gKCl7IGRlbGV0ZSBhO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogUGFyc2UgZXJyb3IuCitQQVNTIHZhciBhOyAoZnVuY3Rpb24gKCl7ICd1c2Ugc3RyaWN0Jzsg
ZGVsZXRlIGE7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BB
U1MgJ21pc2MgZGlyZWN0aXZlJzsgJ3VzZSBzdHJpY3QnOyB3aXRoKHt9KXt9IHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgcmV0dXJu
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSW52YWxpZCByZXR1cm4gc3RhdGVtZW50Li4K
K1BBU1MgJ3VzZSBzdHJpY3QnOyBicmVhayB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBh
cnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGNvbnRpbnVlIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgZm9yKDs7KXJldHVy
biB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFsaWQgcmV0dXJuIHN0YXRlbWVudC4u
CitQQVNTICd1c2Ugc3RyaWN0JzsgZm9yKDs7KWJyZWFrIG1pc3NpbmdMYWJlbCB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGZvcig7
Oyljb250aW51ZSBtaXNzaW5nTGFiZWwgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJz
ZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyAwMDc7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgJ1wwMDcnOyB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAnXDAwNyc7ICd1c2Ugc3RyaWN0
JzsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBz
dHJpY3QnOyAoZnVuY3Rpb24gKCl7IGRlbGV0ZSBzb21lRGVjbGFyZWRHbG9iYWw7fSkgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uICgpeyAn
dXNlIHN0cmljdCc7IGRlbGV0ZSBzb21lRGVjbGFyZWRHbG9iYWw7fSkgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBzb21lR2xvYmFs
ID0gJ1Nob3VsZG5cJ3QgYmUgYWJsZSB0byBhc3NpZ24gdGhpcy4nOyBzb21lR2xvYmFsOyB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7
IGV2YWwoJ3ZhciBpbnRyb2R1Y2VkVmFyaWFibGUgPSAiRkFJTDogdmFyaWFibGUgaW50cm9kdWNl
ZCBpbnRvIGNvbnRhaW5pbmcgc2NvcGUiOycpOyBpbnRyb2R1Y2VkVmFyaWFibGUgdGhyZXcgZXhj
ZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBpbnRyb2R1Y2VkVmFy
aWFibGUuCitQQVNTICd1c2Ugc3RyaWN0Jzsgb2JqZWN0V2l0aFJlYWRvbmx5UHJvcGVydHkucHJv
cCA9ICdmYWlsJyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWdu
IHRvIHJlYWRvbmx5IHByb3BlcnR5Li4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBkZWxldGUgb2JqZWN0
V2l0aFJlYWRvbmx5UHJvcGVydHkucHJvcCB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBVbmFi
bGUgdG8gZGVsZXRlIHByb3BlcnR5Li4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBkZWxldGUgb2JqZWN0
V2l0aFJlYWRvbmx5UHJvcGVydHlbcmVhZG9ubHlQcm9wTmFtZV0gdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4uCitQQVNTICd1c2Ugc3RyaWN0Jzsg
KytldmFsIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1
c2Ugc3RyaWN0JzsgZXZhbCsrIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJy
b3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgLS1ldmFsIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgZXZhbC0tIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgaWYgKDApIGRl
bGV0ZSArYS5iIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNT
ICd1c2Ugc3RyaWN0JzsgaWYgKDApIGRlbGV0ZSArK2EuYiB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGlmICgwKSBkZWxldGUgdm9p
ZCBhLmIgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1
bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGEgPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50
c1swXTsgfSkodHJ1ZSkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0Jzsg
YXJndW1lbnRzWzBdID0gZmFsc2U7IHJldHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0pKHRydWUp
IGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGE9ZmFsc2U7IHJldHVy
biBhcmd1bWVudHM7IH0pKHRydWUpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNl
IHN0cmljdCc7IGFyZ3VtZW50c1swXT1mYWxzZTsgcmV0dXJuIGE7IH0pKHRydWUpIGlzIHRydWUK
K1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1
cm4gYXJndW1lbnRzOyB9KShmYWxzZSlbMF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKCl7J3Vz
ZSBzdHJpY3QnOyAgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNl
KVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNb
MF09dHJ1ZTsgYT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoKVswXSBpcyB0cnVlCitQQVNT
IChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09ZmFsc2U7IGE9dHJ1ZTsg
cmV0dXJuIGE7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0Jzsg
YXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0gaXMgdHJ1ZQorUEFT
UyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBh
cmd1bWVudHM7IH0pKClbMF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0
JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYSA9IGZhbHNlOyByZXR1cm4g
YSAhPT0gYXJndW1lbnRzWzBdOyB9KSh0cnVlKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7
J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVu
dHNbMF0gPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsgfSkodHJ1ZSkgaXMgdHJ1
ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24g
KCl7bG9jYWw7fSkoKTsgYT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkodHJ1ZSlbMF0gaXMg
dHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rp
b24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPWZhbHNlOyByZXR1cm4gYTsgfSkodHJ1ZSkg
aXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVu
Y3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7
IH0pKGZhbHNlKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7ICB2
YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0
dXJuIGFyZ3VtZW50czsgfSkoZmFsc2UpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsn
dXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50
c1swXT10cnVlOyBhPWZhbHNlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIGlzIHRydWUKK1BB
U1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xv
Y2FsO30pKCk7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIGlz
IHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0
aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50c1swXT1mYWxzZTsgYT10cnVlOyByZXR1cm4gYTsg
fSkoKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7ICB2YXIgbG9jYWw7
IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3Vt
ZW50czsgfSkoKVswXSBpcyB0cnVlCitQQVNTICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpe3Zh
ciBhID0gdHJ1ZTsgZXZhbCgndmFyIGEgPSBmYWxzZScpOyByZXR1cm4gYTsgfSkoKSBpcyB0cnVl
CitQQVNTIChmdW5jdGlvbiAoKXt2YXIgYSA9IHRydWU7IGV2YWwoJyJ1c2Ugc3RyaWN0IjsgdmFy
IGEgPSBmYWxzZScpOyByZXR1cm4gYTsgfSkoKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiBmKGFy
Zyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihm
LCAnYXJndW1lbnRzJykudmFsdWU7IH0pKCkgaXMgdW5kZWZpbmVkLgorUEFTUyAoZnVuY3Rpb24g
Zihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZiwgJ2NhbGxlcicpLnZhbHVlOyB9KSgpIGlzIHVuZGVmaW5lZC4KK1BBU1MgKGZ1bmN0aW9u
IGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGFyZ3VtZW50cywgJ2NhbGxlZScpLnZhbHVlOyB9KSgpIGlzIHVuZGVmaW5lZC4KK1BBU1Mg
KGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlcicpLnZhbHVlOyB9KSgpIGlzIHVuZGVmaW5l
ZC4KK1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZXInKTsgcmV0
dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSBpcyB0cnVlCitQQVNT
IChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVlJyk7IHJldHVybiBkZXNj
cmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rp
b24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGYsICdjYWxsZXInKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBk
ZXNjcmlwdG9yLnNldDsgfSkoKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBz
dHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZiwgJ2FyZ3VtZW50cycpOyByZXR1cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0
OyB9KSgpIGlzIHRydWUKK1BBU1MgJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gZigpIHsgZm9yKHZh
ciBpIGluIHRoaXMpOyB9KSgpOyB0cnVlOyBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9qcy9iYXNpYy1zdHJpY3QtbW9kZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1z
dHJpY3QtbW9kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNzcxZGYwMTM4NTIwZGIwOGU5YTQ4Y2I2NTRj
ZDNiZThlMTcxYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2lj
LXN0cmljdC1tb2RlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9iYXNpYy1zdHJpY3QtbW9kZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNp
Yy1zdHJpY3QtbW9kZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2lj
LXN0cmljdC1tb2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1OTJiZTQ1YzUyYTkxNmRjY2MxMThlYWZkYzI3
MjcwMzMyZTBkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9iYXNpYy1zdHJpY3QtbW9kZS5qcwpAQCAtMCwwICsxLDExNSBAQAorZGVzY3JpcHRp
b24oIlRlc3QgYmVoYXZpb3VyIG9mIHN0cmljdCBtb2RlIik7CisKK3ZhciBnbG9iYWxUaGlzVGVz
dDsKK2Z1bmN0aW9uIHRlc3RUaGlzKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICByZXR1cm4g
dGhpczsKK30KK2Z1bmN0aW9uIHRlc3RHbG9iYWxBY2Nlc3MoKSB7CisgICAgcmV0dXJuIHRlc3RU
aGlzKCk7Cit9CitzaG91bGRCZSgidGVzdFRoaXMuY2FsbChudWxsKSIsICJudWxsIik7CitzaG91
bGRCZSgidGVzdFRoaXMuY2FsbCgxKSIsICIxIik7CitzaG91bGRCZSgidGVzdFRoaXMuY2FsbCh0
cnVlKSIsICJ0cnVlIik7CitzaG91bGRCZSgidGVzdFRoaXMuY2FsbChmYWxzZSkiLCAiZmFsc2Ui
KTsKK3Nob3VsZEJlKCJ0ZXN0VGhpcy5jYWxsKHVuZGVmaW5lZCkiLCAidW5kZWZpbmVkIik7Citz
aG91bGRCZSgidGVzdFRoaXMuY2FsbCgnYSBzdHJpbmcnKSIsICInYSBzdHJpbmcnIik7CisKK3No
b3VsZEJlKCJ0ZXN0R2xvYmFsQWNjZXNzKCkiLCAibnVsbCIpOworCitzaG91bGRUaHJvdygiKGZ1
bmN0aW9uIGV2YWwoKXsndXNlIHN0cmljdCc7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24g
KGV2YWwpeyd1c2Ugc3RyaWN0Jzt9KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiBhcmd1bWVu
dHMoKXsndXNlIHN0cmljdCc7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKGFyZ3VtZW50
cyl7J3VzZSBzdHJpY3QnO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3Ry
aWN0JzsgdmFyIGV2YWw7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJp
Y3QnOyB2YXIgYXJndW1lbnRzO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ug
c3RyaWN0JzsgdHJ5e31jYXRjaChldmFsKXt9fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24g
KCl7J3VzZSBzdHJpY3QnOyB0cnl7fWNhdGNoKGFyZ3VtZW50cyl7fX0pIik7CitzaG91bGRUaHJv
dygiKGZ1bmN0aW9uIChhLCBhKXsndXNlIHN0cmljdCc7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVu
Y3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgZGVsZXRlIGE7fSkoKSIpOworc2hvdWxkVGhyb3coIihm
dW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHZhciBhOyBkZWxldGUgYTt9KSgpIik7CitzaG91bGRU
aHJvdygiKGZ1bmN0aW9uICgpe3ZhciBhOyBmdW5jdGlvbiBmKCkgeyd1c2Ugc3RyaWN0JzsgZGVs
ZXRlIGE7fSB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0Jzsg
d2l0aCgxKXt9O30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0Jzsg
YXJndW1lbnRzLmNhbGxlZTsgfSkoKSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNl
IHN0cmljdCc7IGFyZ3VtZW50cy5jYWxsZXI7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rp
b24gZigpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIo
ZnVuY3Rpb24gZigpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI7IH0pKCkiKTsKK3Nob3VsZFRocm93
KCIoZnVuY3Rpb24gZigpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM9NTsgfSkoKSIpOworc2hv
dWxkVGhyb3coIihmdW5jdGlvbiBmKCl7J3VzZSBzdHJpY3QnOyBmLmNhbGxlcj01OyB9KSgpIik7
CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIChhcmcpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzLmNh
bGxlZTsgfSkoKSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoYXJnKXsndXNlIHN0cmljdCc7
IGFyZ3VtZW50cy5jYWxsZXI7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gZihhcmcp
eyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rp
b24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIo
ZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM9NTsgfSkoKSIpOworc2hv
dWxkVGhyb3coIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyBmLmNhbGxlcj01OyB9KSgp
Iik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7d2l0aCgxKXt9O30p
Iik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7dmFyIGE7IGRlbGV0
ZSBhO30pIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyB2YXIgYTsgKGZ1bmN0aW9uICgp
eyBkZWxldGUgYTt9KSIpOworc2hvdWxkVGhyb3coInZhciBhOyAoZnVuY3Rpb24gKCl7ICd1c2Ug
c3RyaWN0JzsgZGVsZXRlIGE7fSkiKTsKK3Nob3VsZFRocm93KCInbWlzYyBkaXJlY3RpdmUnOyAn
dXNlIHN0cmljdCc7IHdpdGgoe30pe30iKTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7IHJl
dHVybiIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgYnJlYWsiKTsKK3Nob3VsZFRocm93
KCIndXNlIHN0cmljdCc7IGNvbnRpbnVlIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBm
b3IoOzspcmV0dXJuIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBmb3IoOzspYnJlYWsg
bWlzc2luZ0xhYmVsIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBmb3IoOzspY29udGlu
dWUgbWlzc2luZ0xhYmVsIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyAwMDc7Iik7Citz
aG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyAnXFwwMDcnOyIpOworc2hvdWxkVGhyb3coIidcXDAw
Nyc7ICd1c2Ugc3RyaWN0JzsiKTsKKwordmFyIHNvbWVEZWNsYXJlZEdsb2JhbDsKK3Nob3VsZFRo
cm93KCIndXNlIHN0cmljdCc7IChmdW5jdGlvbiAoKXsgZGVsZXRlIHNvbWVEZWNsYXJlZEdsb2Jh
bDt9KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsgJ3VzZSBzdHJpY3QnOyBkZWxldGUg
c29tZURlY2xhcmVkR2xvYmFsO30pIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBzb21l
R2xvYmFsID0gJ1Nob3VsZG5cXCd0IGJlIGFibGUgdG8gYXNzaWduIHRoaXMuJzsgc29tZUdsb2Jh
bDsiKTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7IGV2YWwoJ3ZhciBpbnRyb2R1Y2VkVmFy
aWFibGUgPSBcIkZBSUw6IHZhcmlhYmxlIGludHJvZHVjZWQgaW50byBjb250YWluaW5nIHNjb3Bl
XCI7Jyk7IGludHJvZHVjZWRWYXJpYWJsZSIpOwordmFyIG9iamVjdFdpdGhSZWFkb25seVByb3Bl
cnR5ID0ge307CitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0V2l0aFJlYWRvbmx5UHJvcGVy
dHksICJwcm9wIiwge3ZhbHVlOiAidmFsdWUiLCB3cml0YWJsZTpmYWxzZX0pOworc2hvdWxkVGhy
b3coIid1c2Ugc3RyaWN0Jzsgb2JqZWN0V2l0aFJlYWRvbmx5UHJvcGVydHkucHJvcCA9ICdmYWls
JyIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZGVsZXRlIG9iamVjdFdpdGhSZWFkb25s
eVByb3BlcnR5LnByb3AiKTsKK3JlYWRvbmx5UHJvcE5hbWUgPSAicHJvcCI7CitzaG91bGRUaHJv
dygiJ3VzZSBzdHJpY3QnOyBkZWxldGUgb2JqZWN0V2l0aFJlYWRvbmx5UHJvcGVydHlbcmVhZG9u
bHlQcm9wTmFtZV0iKTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7ICsrZXZhbCIpOworc2hv
dWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZXZhbCsrIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJp
Y3QnOyAtLWV2YWwiKTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7IGV2YWwtLSIpOworc2hv
dWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgaWYgKDApIGRlbGV0ZSArYS5iIik7CitzaG91bGRUaHJv
dygiJ3VzZSBzdHJpY3QnOyBpZiAoMCkgZGVsZXRlICsrYS5iIik7CitzaG91bGRUaHJvdygiJ3Vz
ZSBzdHJpY3QnOyBpZiAoMCkgZGVsZXRlIHZvaWQgYS5iIik7CisKK3Nob3VsZEJlVHJ1ZSgiKGZ1
bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGEgPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50
c1swXTsgfSkodHJ1ZSkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmlj
dCc7IGFyZ3VtZW50c1swXSA9IGZhbHNlOyByZXR1cm4gYSAhPT0gYXJndW1lbnRzWzBdOyB9KSh0
cnVlKSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYT1mYWxz
ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkodHJ1ZSlbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0
aW9uIChhKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50c1swXT1mYWxzZTsgcmV0dXJuIGE7IH0pKHRy
dWUpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVu
dHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoZmFsc2UpWzBdIik7CitzaG91bGRCZVRy
dWUoIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7ICBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJu
IGFyZ3VtZW50czsgfSkoZmFsc2UpWzBdIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7
J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09dHJ1ZTsgYT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50
czsgfSkoKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0Jzsg
YXJndW1lbnRzWzBdPWZhbHNlOyBhPXRydWU7IHJldHVybiBhOyB9KSgpIik7CitzaG91bGRCZVRy
dWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJu
IGFyZ3VtZW50czsgfSkoKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKCl7J3VzZSBz
dHJpY3QnOyAgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0iKTsK
KworLy8gU2FtZSB0ZXN0cyBhZ2FpbiwgdGhpcyB0aW1lIGZvcmNpbmcgYW4gYWN0aXZhdGlvbiB0
byBiZSBjcmVhdGVkIGFzIHdlbGwKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0
cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGEgPSBmYWxzZTsgcmV0
dXJuIGEgIT09IGFyZ3VtZW50c1swXTsgfSkodHJ1ZSkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0
aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7
IGFyZ3VtZW50c1swXSA9IGZhbHNlOyByZXR1cm4gYSAhPT0gYXJndW1lbnRzWzBdOyB9KSh0cnVl
KSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2Fs
OyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50czsgfSko
dHJ1ZSlbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZh
ciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50c1swXT1mYWxzZTsgcmV0
dXJuIGE7IH0pKHRydWUpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJp
Y3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1
ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoZmFsc2UpWzBdIik7CitzaG91bGRCZVRydWUoIihmdW5j
dGlvbiAoKXsndXNlIHN0cmljdCc7ICB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgp
OyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoZmFsc2UpWzBdIik7Citz
aG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5j
dGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsgYT1mYWxzZTsgcmV0dXJuIGFy
Z3VtZW50czsgfSkoKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3Ry
aWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRy
dWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9u
IChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFy
Z3VtZW50c1swXT1mYWxzZTsgYT10cnVlOyByZXR1cm4gYTsgfSkoKSIpOworc2hvdWxkQmVUcnVl
KCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9j
YWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0iKTsK
Kworc2hvdWxkQmVUcnVlKCIndXNlIHN0cmljdCc7IChmdW5jdGlvbiAoKXt2YXIgYSA9IHRydWU7
IGV2YWwoJ3ZhciBhID0gZmFsc2UnKTsgcmV0dXJuIGE7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgi
KGZ1bmN0aW9uICgpe3ZhciBhID0gdHJ1ZTsgZXZhbCgnXCJ1c2Ugc3RyaWN0XCI7IHZhciBhID0g
ZmFsc2UnKTsgcmV0dXJuIGE7IH0pKCkiKTsKKworc2hvdWxkQmVVbmRlZmluZWQoIihmdW5jdGlv
biBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihmLCAnYXJndW1lbnRzJykudmFsdWU7IH0pKCkiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCIo
ZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZiwgJ2NhbGxlcicpLnZhbHVlOyB9KSgpIik7CitzaG91bGRCZVVuZGVmaW5l
ZCgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlZScpLnZhbHVlOyB9KSgpIik7CitzaG91
bGRCZVVuZGVmaW5lZCgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlcicpLnZhbHVlOyB9
KSgpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIg
ZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAn
Y2FsbGVyJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCki
KTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxs
ZWUnKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIpOwor
c2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0
b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYsICdjYWxsZXInKTsgcmV0dXJu
IGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIpOworc2hvdWxkQmVUcnVl
KCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYsICdhcmd1bWVudHMnKTsgcmV0dXJuIGRlc2NyaXB0
b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIpOworc2hvdWxkQmVUcnVlKCIndXNlIHN0
cmljdCc7IChmdW5jdGlvbiBmKCkgeyBmb3IodmFyIGkgaW4gdGhpcyk7IH0pKCk7IHRydWU7IikK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJmYjllYmNlMzAzOWY3N2ZiNjExNzEx
MjRlZGI5ZjNhNjU2NjRjYWYuLmI3N2U2ZjJkOTgyZjY5ZGFhNmNiY2ZiZmY5NTQ2Yjk0MGQ4Y2Qw
ZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTAtMDEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
RVM1XSBJbXBsZW1lbnQgc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNzAxCisKKyAgICAgICAgVGVzdDogZmFzdC9qcy9iYXNpYy1z
dHJpY3QtbW9kZS5odG1sCisKKyAgICAgICAgT3ZlcnJpZGUgdG9TdHJpY3RUaGlzT2JqZWN0IG9u
IHRoZSBkb213aW5kb3cgc28gdGhhdAorICAgICAgICBpdCBjb3JyZWN0bHkgcHJvdmlkZXMgdGhl
IHNoZWxsIG9iamVjdCB3aGVuIHVzZWQgYXMgdGhpcworICAgICAgICBpbiBhIHN0cmljdCBtb2Rl
IGZ1bmN0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6dG9TdHJpY3RUaGlzT2JqZWN0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKwogMjAxMC0wOS0zMCAg
WmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUnVzc2VsbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA4
MmFjMWNlZTI1MWY2MDg5MzM3YWMyMDg1M2E4NmUzYTIyNzBhM2Q3Li4yODcyYTU0OWM1YTQ1MTVi
NjZhMTJkMDg2NDA1Njk1ZGFjNmRkYzk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCkBAIC0xNDYsNiArMTQ2LDExIEBAIEpTT2JqZWN0KiBKU0RPTVdpbmRvd0Jhc2U6
OnRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdAogICAgIHJldHVybiBzaGVsbCgpOwogfQog
CitKU1ZhbHVlIEpTRE9NV2luZG93QmFzZTo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSop
IGNvbnN0Cit7CisgICAgcmV0dXJuIHNoZWxsKCk7Cit9CisKIEpTRE9NV2luZG93U2hlbGwqIEpT
RE9NV2luZG93QmFzZTo6c2hlbGwoKSBjb25zdAogewogICAgIHJldHVybiBkKCktPnNoZWxsOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggZjRmMWVmOWVlYTAxNjY5MzJl
Y2E5NTVlY2QwOWJhNmQxMjk2ODZmOC4uY2FmY2E3M2FjOTNkZjAwYzhjNzNmNTUwNzViNDNlNTlm
Y2VmY2Y2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBAIC02OSw4ICs2
OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBEb24ndCBjYWxsIHRoaXMg
dmVyc2lvbiBvZiBhbGxvd3NBY2Nlc3NGcm9tIC0tIGl0J3MgYSBzbGlnaHRseSBpbmNvcnJlY3Qg
aW1wbGVtZW50YXRpb24gdXNlZCBvbmx5IGJ5IFdlYlNjcmlwdE9iamVjdAogICAgICAgICB2aXJ0
dWFsIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7Ci0KKyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogdG9UaGlzT2Jq
ZWN0KEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVl
IHRvU3RyaWN0VGhpc09iamVjdChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU0RP
TVdpbmRvd1NoZWxsKiBzaGVsbCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU0M6OkpTR2xv
YmFsRGF0YSogY29tbW9uSlNHbG9iYWxEYXRhKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70380</attachid>
            <date>2010-10-09 17:10:11 -0700</date>
            <delta_ts>2010-10-10 18:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-10701-20101009171008.patch</filename>
            <type>text/plain</type>
            <size>200696</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2RiMWQwOTA5NWVhMjRjNTkzN2QyMWRjODFiMjVjY2I4
ZmQ0YjkwMC4uOTAwNjdhNGM1MDAwN2I2NDg0OTdmY2NjZGU2Njc5MDNjZmJlMzgyYiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE1Nyw2ICsxNTcsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIHJ1bnRpbWUvUm9wZUltcGwuY3BwCiAgICAgcnVudGltZS9TY29wZUNoYWluLmNw
cAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAorICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL1N0cmluZ09iamVjdC5jcHAKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCBlMTQ0NzIzODUyOGIwMGVjNjVlZDQ5NzllM2JmMjA0ZjRkNDMwNDMwLi5jZDJm
NzI2ZjM4M2FiN2ExNzJhMGJiMWFmODBiYzY2OTg4MzMwNGZjIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjc0IEBACisyMDEwLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VTNV0gSW1w
bGVtZW50IHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDcwMQorCisgICAgICAgIEluaXRpYWwgc3RyaWN0IG1vZGUgaW1wbGVtZW50
YXRpb24uICBUaGlzIGlzIHRoZSBzaW1wbGVzdAorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0aGF0
IGNvdWxkIHBvc3NpYmx5IHdvcmsgYW5kIGFkZHMgKGhvcGVmdWxseSkKKyAgICAgICAgYWxsIG9m
IHRoZSByZXN0cmljdGlvbnMgcmVxdWlyZWQgYnkgc3RyaWN0IG1vZGUuICBUaGVyZSBhcmUKKyAg
ICAgICAgYSBudW1iZXIgb2YgaW5lZmZpY2llbmNpZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGhhbmRs
aW5nIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQgZXZhbCBhcyBzbWFydCBpbXBsZW1lbnRhdGlv
bnMgd291bGQgbWFrZSB0aGlzCisgICAgICAgIHBhdGNoIG1vcmUgY29tcGxpY2F0ZWQuICAKKwor
ICAgICAgICBUaGUgU3ludGF4Q2hlY2tlciBBU1QgYnVpbGRlciBoYXMgYmVjb21lIHNvbWV3aGF0
IG1vcmUgY29tcGxleAorICAgICAgICBhcyBzdHJpY3QgbW9kZSBkb2VzIHJlcXVpcmUgbW9yZSBw
YXJzZSB0cmVlIGluZm9ybWF0aW9uIHRvCisgICAgICAgIHZhbGlkYXRlIHRoZSBzeW50YXguCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJv
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVwYXJzZUZvckV4Y2VwdGlvbkluZm9JZk5l
Y2Vzc2FyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aXNTdHJpY3RNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNh
Y2hlLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldCk6CisgICAgICAgICogYnl0
ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZUFyZ3VtZW50c0lmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4pOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6aXNTdHJpY3RNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIu
Y3BwOgorICAgICAgICAoSlNDOjpldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
Q2FsbEZyYW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2FsbEV2YWwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRl
ci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1Jlc29sdmUpOgorICAgICAgICAqIHBhcnNlci9KU1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpuZXh0KToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnN0YXJ0TG9vcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjplbmRMb29wKToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6SlNQ
YXJzZXI6OmVuZFN3aXRjaCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpzZXRTdHJpY3RNb2Rl
KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6aXNWYWxpZFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZGVj
bGFyZVBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpicmVha0lzVmFsaWQpOgor
ICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cHVzaExhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OnBvcExhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6Omhhc0xhYmVsKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OkRlcHRoTWFuYWdlcjo6RGVwdGhNYW5hZ2VyKToKKyAgICAgICAg
KEpTQzo6SlNQYXJzZXI6OkRlcHRoTWFuYWdlcjo6fkRlcHRoTWFuYWdlcik6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2Nv
cGU6OnN0YXJ0U3dpdGNoKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjplbmRTd2l0
Y2gpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OnN0YXJ0TG9vcCk6CisgICAgICAg
IChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZW5kTG9vcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2Vy
OjpTY29wZTo6aW5Mb29wKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpicmVha0lz
VmFsaWQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6cG9wTGFiZWwpOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6Omhhc0xhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpp
c0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpkZWNsYXJlVmFyaWFi
bGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OmRlY2xhcmVXcml0ZSk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpKU1BhcnNlcjo6U2NvcGU6OmRlY2xhcmVQYXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6OnNldE5lZWRzRnVsbEFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6OmNvbGxlY3RGcmVlVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OlNjb3BlOjpnZXRVbmNhcHR1cmVkV3JpdHRlblZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6
OkpTUGFyc2VyOjpTY29wZTo6Z2V0RGVsZXRlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkpT
UGFyc2VyOjpTY29wZTo6c2V0U3RyaWN0TW9kZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpT
Y29wZTo6c3RyaWN0TW9kZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6aXNWYWxp
ZFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cHVzaFNjb3BlKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnBvcFNjb3BlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OmRl
Y2xhcmVWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpkZWNsYXJlV3JpdGUpOgor
ICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpq
c1BhcnNlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OkpTUGFyc2VyKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJz
ZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRG9XaGlsZVN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVdoaWxlU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAo
SlNDOjpKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUNv
bnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlUmV0dXJuU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlV2l0aFN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVN3aXRjaFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpwYXJzZVN3aXRjaENsYXVzZXMpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQmxvY2tTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRnVuY3Rpb25E
ZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25Pckxh
YmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlU3RyaWN0T2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVBy
aW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6
CisgICAgICAgICogcGFyc2VyL0pTUGFyc2VyLmg6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OkxleGVy
Ojppc1JlcGFyc2luZyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2NvcGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6U2NvcGVOb2Rl
Ojppc1N0cmljdE1vZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OlN5bnRheENoZWNrZXIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmFwcGVuZFRvQ29tbWEpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtl
QXNzaWduTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQcmVmaXhOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVBvc3RmaXhOb2RlKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVR5cGVPZk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlRGVsZXRlTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUJp
dHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTG9naWNh
bE5vdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVVuYXJ5UGx1cyk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVZvaWQpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjp0aGlzRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVPYmplY3RM
aXRlcmFsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXJyYXkpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdW1iZXJFeHByKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZU51bGwpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCcmFja2V0QWNjZXNz
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVnZXgpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1
bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9u
Qm9keSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmFwcGVuZEJpbmFyeUV4cHJlc3Np
b25JbmZvKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6
CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OkFy
Z3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpT
Qzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6
cHV0KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpBcmd1bWVu
dHMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAo
SlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rp
b246OmNvbnN0cnVjdFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjYWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoSlND
OjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlVHlwZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoK
KyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhl
Y3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJs
ZTo6UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21w
aWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50
YXgpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFs
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnJlcGFyc2VFeGNl
cHRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnJlcGFyc2VFeGNlcHRp
b25JbmZvKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29k
ZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5m
byk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlw
dEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOjppc1N0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
Ojp0b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
RGVzY3JpcHRvckZvclRocm93aW5nUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6Omdsb2JhbEZ1bmNFdmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0
b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAoSlNDOjp0aHJvd1R5cGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNTdHJp
Y3RNb2RlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpY3RUaGlz
T2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1N0cmljdFRoaXNPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNab21iaWUuaDoKKyAgICAgICAgKEpTQzo6
SlNab21iaWU6OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAgICogcnVudGltZS9QdXRQcm9w
ZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpQdXRQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6OmlzU3RyaWN0TW9kZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24pOgorICAgICAg
ICAoSlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6dG9UaGlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
U3RyaWN0RXZhbEFjdGl2YXRpb246OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOiBBZGRlZC4KKwogMjAxMC0xMC0wOSAgUHJhdGlr
IFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFu
IExvcGV6LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA4OGQxNzYxN2IzYTRiODg4NGMwNGEyNjg2
OGM2ZjA2ZDE3MzFjNzUwLi43ZDYzN2IzNTA0MWM1OGQ4OGFhOWI3MDFkZDRkODFlZTY4MmFkNzAy
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzg4LDYgKzM4OCw4IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbk1hcmsuaCBc
CiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwIFwKIAlKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIFwKKwlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmNwcFwKKwlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2
YWxBY3RpdmF0aW9uLmhcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdCdWlsZGVyLmgg
XAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uY2F0ZW5hdGUuaCBcCiAJSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAgXApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCmluZGV4IGY3NzNmMGJjMDU3NTAyNzEwNDRjOWVlMzZmYTYwZWJhMjk5NjNlNWQu
LjlhZTUxMDgzMGU4ZWZmMTBkNDUzMTMzZjU2ZGQ5ZWM1ZWIwMmNlMjggMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKQEAgLTUzMSw2ICs1MzEsNyBAQCBfX1pOSzNKU0M4SlNPYmplY3QxMWhh
c1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTkszSlNDOEpT
T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqCiBfX1pOSzNKU0M4SlNPYmplY3Qx
MmRlZmF1bHRWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVOU18yMlByZWZlcnJlZFByaW1pdGl2ZVR5cGVF
CiBfX1pOSzNKU0M4SlNPYmplY3QxMnRvVGhpc09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKK19fWk5L
M0pTQzhKU09iamVjdDE4dG9TdHJpY3RUaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTksz
SlNDOEpTT2JqZWN0OHRvTnVtYmVyRVBOU185RXhlY1N0YXRlRQogX19aTkszSlNDOEpTT2JqZWN0
OHRvT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTkszSlNDOEpTT2JqZWN0OHRvU3RyaW5nRVBO
U185RXhlY1N0YXRlRQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
cHJvIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCmluZGV4IGY0NjNmNDFkNWY2
MjViMmViYTIyYWE2YmRmMGE3Y2E0MmNkZmY1M2YuLmY4M2JmNGM0ZWRlMjkxOTJlNTE3YTVhYzc3
YjI0YTUxZDc1MWJjMWIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnBybworKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8KQEAgLTE5Nyw2ICsx
OTcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50aW1lL1JvcGVJbXBsLmNwcCBcCiAgICAgcnVu
dGltZS9TY29wZUNoYWluLmNwcCBcCiAgICAgcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwIFwKKyAg
ICBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBcCiAgICAgcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAgXAogICAgIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBcCiAgICAgcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIFwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2og
Yi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCmluZGV4IDgzZDM0ZTM3YjJmZDRjNGU3ZjcxOTQxZTczNGU1ZGQ4
NjcyZWNiYWYuLjQ3OWIzZGQwMjJiZjkxZmI3YzVhZDU0MmEyOTBhZDU0NDAwOWZjYTAgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagpAQCAtMTE3Myw2
ICsxMTczLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxT
dHJpY3RFdmFsQWN0aXZhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxTdHJpbmdDb25zdHJ1Y3Rvci5jcHAiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGU3OGJiYzZlODY1YmMyOTdj
ZjY3YWQ0OTAzY2UxYmJmYjRiOGEzNS4uYTQ1Zjk4MjU0MWIwYzYyMDYwNjQ0NzJlYzc5MTAyNWE1
MjU3MjFkNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTgsNiArMzE4LDggQEAKIAkJQTcyNzAxQjkw
REFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjcwMUIzMERBREU5NDkwMEU1NDhENyAvKiBF
eGNlcHRpb25IZWxwZXJzLmggKi87IH07CiAJCUE3MjdGRjZCMERBMzA5MjIwMEU1NDhENyAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJQTcyODBBMjgxMTU1N0UzMDAwRDU2OTU3IC8qIEpTT2Jq
ZWN0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTc5RURCMDgxMTUzMUNENjAwMTlFOTEyIC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3MzBCNjEy
MTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczMEI2MTAxMjUwMDY4RjAwOUQyNUIx
IC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggKi87IH07CisJCUE3MzBCNjEzMTI1MDA2OEYwMDlE
MjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzMwQjYxMTEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0
RXZhbEFjdGl2YXRpb24uY3BwICovOyB9OwogCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyog
U3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTczODY1NTExMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtK
SVQuaCAqLzsgfTsKIAkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9y
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM4
NjU1MjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCAqLzsgfTsKIAkJQTcz
ODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczODY1NTMxMTg2OTdCNDAwNTQwMjc5
IC8qIFRodW5rR2VuZXJhdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC05NTEsNiArOTUzLDggQEAKIAkJQTcyNzAxQjMwREFERTk0OTAwRTU0
OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXhjZXB0aW9uSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI3
RkY2NTBEQTMwNTNCMDBFNTQ4RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNzMwQjYxMDEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaWN0RXZhbEFjdGl2YXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczMEI2MTExMjUwMDY4RjAwOUQyNUIxIC8q
IFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTczODY1NTExMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlY2lhbGl6ZWRUaHVua0pJVC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzM4NjU1MjExODY5N0I0MDA1NDAyNzkgLyog
VGh1bmtHZW5lcmF0b3JzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRodW5rR2VuZXJhdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Mzg2
NTUzMTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGh1bmtHZW5lcmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xODE0LDYgKzE4MTgsOCBAQAogCQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NEND
RSAvKiBXZWFrR0NNYXAuaCAqLywKIAkJCQkxNDAzNURCMDEwREJGQjJBMDBGRkZGRTcgLyogV2Vh
a0dDUHRyLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20u
aCAqLywKKwkJCQlBNzMwQjYxMDEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRp
b24uaCAqLywKKwkJCQlBNzMwQjYxMTEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2
YXRpb24uY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTIzMTQsNiArMjMyMCw3IEBACiAJCQkJOTcxNEFGNUYxMjJGMzIwNzAw
OTJEOUY1IC8qIFBhcnNlZFVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcxNEFGNjAxMjJGMzIw
NzAwOTJEOUY1IC8qIFVSTFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNB
NDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
MzBCNjEyMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yNDA3LDcgKzI0MTQsNiBAQAogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjc3MTA4OTAyQUZFMDA4QTlFRkMgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJKYXZhU2NyaXB0Q29yZSIgKi87CiAJ
CQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdp
b24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJl
Z2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTI3NjksNiArMjc3NSw3IEBACiAJCQkJOTcxNEFG
NDYxMjJGMjg4NTAwOTJEOUY1IC8qIFVSTFNlZ21lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3MTRBRjVFMTIyRjMyMDcwMDkyRDlGNSAvKiBQYXJzZWRVUkwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTAyMTNFM0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTczMEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxB
Y3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggYTJiODYzZDU3Yzk4NTUxMGUxZWRiMDM4YTY5ODg2Yzk3MWNjMTdhYy4uZmVk
MWU5ZGQxYjA0OTE3M2MwZmFjNWEwZjFjM2M1M2I0NjA2NTFiNiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC01MTcsNiArNTE3LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRl
cmF0b3ImCiAgICAgICAgICAgICBwcmludGYoIlslNGRdIGNvbnZlcnRfdGhpcyAlc1xuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlzX3N0cmljdDogeworICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludGYo
IlslNGRdIGNvbnZlcnRfdGhpc19zdHJpY3QgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX25ld19vYmplY3Q6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXNcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CkBAIC0xMzcxLDYgKzEzNzYs
NyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU0dsbwogICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWlu
KG93bmVyRXhlY3V0YWJsZS0+bmVlZHNBY3RpdmF0aW9uKCkpCiAgICAgLCBtX3VzZXNFdmFsKG93
bmVyRXhlY3V0YWJsZS0+dXNlc0V2YWwoKSkKICAgICAsIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uKGZhbHNlKQorICAgICwgbV9pc1N0cmljdE1vZGUob3duZXJFeGVjdXRhYmxlLT5pc1N0cmlj
dE1vZGUoKSkKICAgICAsIG1fY29kZVR5cGUoY29kZVR5cGUpCiAgICAgLCBtX3NvdXJjZShzb3Vy
Y2VQcm92aWRlcikKICAgICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKQEAgLTE1NTcs
NyArMTU2Myw3IEBAIGJvb2wgQ29kZUJsb2NrOjpyZXBhcnNlRm9yRXhjZXB0aW9uSW5mb0lmTmVj
ZXNzYXJ5KENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICAgICAgc2NvcGVDaGFpbiA9IHNj
b3BlQ2hhaW4tPm5leHQ7CiAgICAgfQogCi0gICAgbV9leGNlcHRpb25JbmZvID0gbV9vd25lckV4
ZWN1dGFibGUtPnJlcGFyc2VFeGNlcHRpb25JbmZvKG1fZ2xvYmFsRGF0YSwgc2NvcGVDaGFpbiwg
dGhpcyk7CisgICAgbV9leGNlcHRpb25JbmZvID0gbV9vd25lckV4ZWN1dGFibGUtPnJlcGFyc2VF
eGNlcHRpb25JbmZvKGNhbGxGcmFtZSwgc2NvcGVDaGFpbiwgdGhpcyk7CiAgICAgcmV0dXJuIG1f
ZXhjZXB0aW9uSW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA4
Njk3MWNiNjI5NTMxNDE2Y2Y1MWJiOGU0NDM1NGY3OTJhY2RiMmY1Li5hNWY3ZDI4YzNlMjNiOGJm
YTRiYjg2M2ZkNjkwNDg5ZjJhMWU5MDZkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aApAQCAtMjk3LDYgKzI5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50
U3RydWN0dXJlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJh
bmQpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQorCiAgICAgICAgIGlubGluZSBib29sIGlzS25vd25O
b3RJbW1lZGlhdGUoaW50IGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaW5kZXgg
PT0gbV90aGlzUmVnaXN0ZXIpCkBAIC01NjQsNiArNTY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgbV9uZWVkc0Z1bGxTY29wZUNoYWluOwogICAgICAgICBib29sIG1fdXNlc0V2
YWw7CiAgICAgICAgIGJvb2wgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247CisgICAgICAgIGJv
b2wgbV9pc1N0cmljdE1vZGU7CiAKICAgICAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDdjNGNiMzNlNDAxYWU2OWEy
OTc1MWJjMmQ2YjIwNTBmZDVhZDYzZDYuLmVkZDU3NWZlNmUwMjkzNGZmMDk0MDQ4OTE2MWMwOTc2
MDc3MDQxNjcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2Fj
aGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTQz
LDIwICs0MywyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgUGFzc1JlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZ2V0KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW4sIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQorICAgICAgICBQYXNzUmVmUHRy
PEV2YWxFeGVjdXRhYmxlPiBnZXQoRXhlY1N0YXRlKiBleGVjLCBib29sIGluU3RyaWN0Q29udGV4
dCwgY29uc3QgVVN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4s
IEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8
RXZhbEV4ZWN1dGFibGU+IGV2YWxFeGVjdXRhYmxlOwogCi0gICAgICAgICAgICBpZiAoZXZhbFNv
dXJjZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4t
PmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkpCisgICAgICAgICAgICBpZiAoIWluU3RyaWN0
Q29udGV4dCAmJiBldmFsU291cmNlLmxlbmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3Ro
ICYmICgqc2NvcGVDaGFpbi0+YmVnaW4oKSktPmlzVmFyaWFibGVPYmplY3QoKSkKICAgICAgICAg
ICAgICAgICBldmFsRXhlY3V0YWJsZSA9IG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1wbCgp
KTsKIAogICAgICAgICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkgewotICAgICAgICAgICAgICAg
IGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNl
KGV2YWxTb3VyY2UpKTsKKyAgICAgICAgICAgICAgICBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250
ZXh0KTsKICAgICAgICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGV2YWxFeGVjdXRhYmxlLT5j
b21waWxlKGV4ZWMsIHNjb3BlQ2hhaW4pOwogICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb25W
YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgICAgICAgICBp
ZiAoZXZhbFNvdXJjZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNj
b3BlQ2hhaW4tPmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgbV9jYWNoZU1hcC5zaXpl
KCkgPCBtYXhDYWNoZUVudHJpZXMpCisgICAgICAgICAgICAgICAgaWYgKCFpblN0cmljdENvbnRl
eHQgJiYgZXZhbFNvdXJjZS5sZW5ndGgoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAo
KnNjb3BlQ2hhaW4tPmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgbV9jYWNoZU1hcC5z
aXplKCkgPCBtYXhDYWNoZUVudHJpZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVNYXAu
c2V0KGV2YWxTb3VyY2UuaW1wbCgpLCBldmFsRXhlY3V0YWJsZSk7CiAgICAgICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggM2Y2YjIxM2Y1NjA4NzgyZGIyM2U0Y2NkMmE2
MmVhYWM0YWQzYzk5NS4uODg0YmVhNWZhMjU4NzU5MTBiNTVlMTkzMjdlYWQ4ZTliNzdiNzUyYyAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIG1hY3JvKG9wX2NyZWF0ZV90aGlzLCAzKSBcCiAgICAgICAgIG1hY3JvKG9w
X2dldF9jYWxsZWUsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfY29udmVydF90aGlzLCAyKSBcCisg
ICAgICAgIG1hY3JvKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIDIpIFwKICAgICAgICAgXAogICAg
ICAgICBtYWNybyhvcF9uZXdfb2JqZWN0LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX25ld19hcnJh
eSwgNCkgXApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKaW5kZXggNGM2ZTFmM2IxMTE3MWJiMTQxMDliOWQxNzBmMGI3ZWVkOTZmMmUxMS4u
ZDU4ZmQ1NTQwMjM3ZWExMGZlNDI3MjY3OTJmNmMzZjdiMDUwY2NiYyAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNDMsNiAr
MzQzLDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW5jdGlvbkJv
ZHlOb2RlKiBmdW5jdGlvbkJvZHksIGNvbnN0IERlYnVnCiAKICAgICAgICAgZW1pdEluaXRMYXp5
UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOwogICAgICAgICBlbWl0SW5pdExhenlSZWdpc3Rl
cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICAKKyAgICAgICAgaWYgKG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgZW1pdE9wY29kZShvcF9j
cmVhdGVfYXJndW1lbnRzKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1
bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgZGVi
dWdnZXIgY3VycmVudGx5IHJldHJpZXZlcyB0aGUgYXJndW1lbnRzIG9iamVjdCBmcm9tIGFuIGFj
dGl2YXRpb24gcmF0aGVyIHRoYW4gcHVsbGluZwogICAgICAgICAvLyBpdCBmcm9tIGEgY2FsbCBm
cmFtZS4gIEluIHRoZSBsb25nLXRlcm0gaXQgc2hvdWxkIHN0b3AgZG9pbmcgdGhhdCAoPHJkYXI6
Ly9wcm9ibGVtLzY5MTE4ODY+KSwKQEAgLTQ0Miw3ICs0NDcsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgY29u
c3QgRGVidWcKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmlu
ZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuY1Byb3RvLT5pbmRleCgp
KTsKICAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uQm9keS0+dXNlc1RoaXMoKSB8fCBtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzKSB7Ci0gICAgICAgIGVtaXRPcGNvZGUob3BfY29udmVydF90aGlzKTsKKyAg
ICAgICAgaWYgKGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBlbWl0T3Bj
b2RlKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBl
bWl0T3Bjb2RlKG9wX2NvbnZlcnRfdGhpcyk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsKICAgICB9CiB9CkBAIC0xNTU3LDYgKzE1NjUsMTIg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlQXJndW1lbnRzSWZOZWNlc3NhcnkoKQog
ICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkp
OwogCisgICAgLy8gSWYgd2UncmUgaW4gc3RyaWN0IG1vZGUgd2UgdGVhciBvZmYgdGhlIGFyZ3Vt
ZW50cyBvbiBmdW5jdGlvbgorICAgIC8vIGVudHJ5LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gY2hl
Y2sgaWYgd2UgbmVlZCB0byBjcmVhdGUgdGhlbQorICAgIC8vIG5vdworICAgIGlmIChtX2NvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGVtaXRPcGNvZGUo
b3BfY3JlYXRlX2FyZ3VtZW50cyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJs
b2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKTsKIH0KQEAgLTE2NzQsNyArMTY4OCw4IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYykKICAg
ICAgICAgZW1pdE9wY29kZShvcF90ZWFyX29mZl9hY3RpdmF0aW9uKTsKICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKTsK
LSAgICB9IGVsc2UgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkgJiYgbV9jb2RlQmxv
Y2stPm1fbnVtUGFyYW1ldGVycyA+IDEpIHsgLy8gSWYgdGhlcmUgYXJlIG5vIG5hbWVkIHBhcmFt
ZXRlcnMsIHRoZXJlJ3Mgbm90aGluZyB0byB0ZWFyIG9mZiwgc2luY2UgZXh0cmEgLyB1bm5hbWVk
IHBhcmFtZXRlcnMgZ2V0IGNvcGllZCB0byB0aGUgYXJndW1lbnRzIG9iamVjdCBhdCBjb25zdHJ1
Y3QgdGltZS4KKyAgICB9IGVsc2UgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkgJiYg
bV9jb2RlQmxvY2stPm1fbnVtUGFyYW1ldGVycyA+IDEKKyAgICAgICAgICAgICAgICYmICFtX2Nv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsgLy8gSWYgdGhlcmUgYXJlIG5vIG5hbWVkIHBhcmFt
ZXRlcnMsIHRoZXJlJ3Mgbm90aGluZyB0byB0ZWFyIG9mZiwgc2luY2UgZXh0cmEgLyB1bm5hbWVk
IHBhcmFtZXRlcnMgZ2V0IGNvcGllZCB0byB0aGUgYXJndW1lbnRzIG9iamVjdCBhdCBjb25zdHJ1
Y3QgdGltZS4KICAgICAgICAgZW1pdE9wY29kZShvcF90ZWFyX29mZl9hcmd1bWVudHMpOwogICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVy
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggYjYwNDdhZTRmMjY4YmNjZjBmZDkyMTg0NjUwOWM1OTY2MjUxMGM5NS4u
YmQ1YzgwM2FjMzc2NzBlMTYwYTBiNjA3NTZkMzk3NzVhNzhjMzVkOCAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQxOSw2ICs0MTks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rczsgfQorICAg
ICAgICAKKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZW1p
dE9wY29kZShPcGNvZGVJRCk7CkBAIC00OTksMTIgKzUwMSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gbWFrZUZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIGJvZHktPmlkZW50
KCksIGJvZHktPnNvdXJjZSgpLCBib2R5LT51c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRl
cnMoKSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxhc3RMaW5lKCkpOworICAgICAgICAgICAgcmV0
dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIGJvZHktPmlkZW50KCksIGJvZHkt
PnNvdXJjZSgpLCBib2R5LT51c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9k
eS0+aXNTdHJpY3RNb2RlKCksIGJvZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBtYWtlRnVu
Y3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgYm9keS0+aWRlbnQoKSwgYm9keS0+c291cmNlKCksIGJvZHktPnVzZXNBcmd1
bWVudHMoKSwgYm9keS0+cGFyYW1ldGVycygpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExp
bmUoKSk7CisgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgYm9keS0+aWRlbnQoKSwgYm9keS0+c291cmNlKCksIGJvZHktPnVzZXNBcmd1bWVu
dHMoKSwgYm9keS0+cGFyYW1ldGVycygpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwgYm9keS0+bGlu
ZU5vKCksIGJvZHktPmxhc3RMaW5lKCkpOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEluaXRMYXp5UmVnaXN0ZXIoUmVnaXN0ZXJJRCopOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCmluZGV4IGNiY2JkMjFhOTZlOGUyZDNlMTIyNmIzZTcxMjJhYTFiMTk3M2Q4
MWMuLjE3ZGZkZjc2OWE1YjU3N2ZmMjJjYzY0ZDBlN2RiMDc3YTRhZWJkYjIgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBKU1ZhbHVlIGV2YWx1
YXRlSW5HbG9iYWxDYWxsRnJhbWUoY29uc3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlJiBleGNl
cHRpb24sIEpTRwogewogICAgIENhbGxGcmFtZSogZ2xvYmFsQ2FsbEZyYW1lID0gZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7CiAKLSAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbENhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQp
KTsKKyAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKGdsb2JhbENhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBmYWxzZSk7CiAgICAgSlNP
YmplY3QqIGVycm9yID0gZXZhbC0+Y29tcGlsZShnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbENhbGxG
cmFtZS0+c2NvcGVDaGFpbigpKTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBlcnJv
cjsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcCBiL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRl
eCAzMmY2NWRkYjgwNDAxNmQ1OWEyODNmYjJjODhlOGVlNDg1Mzg0YWRlLi5jOThjN2NjZGRjMTcw
YzA0ZmFjMzgwODRmYzRmZDVhMzkyZThkY2UzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC04OCw3ICs4OCw3IEBAIEpTVmFsdWUgRGVidWdn
ZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhj
ZXB0aW9uKSBjCiAgICAgaWYgKCFtX2NhbGxGcmFtZS0+Y29kZUJsb2NrKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CiAKLSAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlKG1fY2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCkpOworICAg
IFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUobV9j
YWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0KSwgbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKSk7CiAgICAgSlNPYmplY3QqIGVycm9yID0gZXZhbC0+Y29tcGlsZShtX2Nh
bGxGcmFtZSwgbV9jYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKSk7CiAgICAgaWYgKGVycm9yKQogICAg
ICAgICByZXR1cm4gZXJyb3I7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKaW5kZXggZWNmZjdkNjRiNWFmYmVlZDMzYTg5NTJkYWRmNzNlZTkwOGVhNmY3OC4uOTY4
OWQxYTI5ZTg3OTc1NGI3NzAwYjhkODBlMzIwYTBiNjU3MTJhYyAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUg
IlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiU2Ft
cGxpbmdUb29sLmgiCisjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRl
IDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KQEAgLTM4OSwxNCArMzkwLDE4IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIEludGVycHJldGVy
OjpjYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByCiAgICAgVVN0
cmluZyBwcm9ncmFtU291cmNlID0gYXNTdHJpbmcocHJvZ3JhbSktPnZhbHVlKGNhbGxGcmFtZSk7
CiAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7Ci0KLSAgICBMaXRlcmFsUGFyc2VyIHByZXBhcnNlcihjYWxsRnJhbWUsIHByb2dyYW1T
b3VyY2UsIExpdGVyYWxQYXJzZXI6Ok5vblN0cmljdEpTT04pOwotICAgIGlmIChKU1ZhbHVlIHBh
cnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSkKLSAgICAgICAgcmV0dXJu
IHBhcnNlZE9iamVjdDsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7CisgICAgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gdXNlIHRoZSBwcmVwYXJzZXIgaW4gc3RyaWN0IG1vZGUs
IHdlIGp1c3QgbmVlZCBhZGRpdGlvbmFsIGxvZ2ljCisgICAgICAgIC8vIHRvIHByZXZlbnQgZHVw
bGljYXRlcy4KKyAgICAgICAgTGl0ZXJhbFBhcnNlciBwcmVwYXJzZXIoY2FsbEZyYW1lLCBwcm9n
cmFtU291cmNlLCBMaXRlcmFsUGFyc2VyOjpOb25TdHJpY3RKU09OKTsKKyAgICAgICAgaWYgKEpT
VmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlZE9iamVjdDsKKyAgICB9CiAKICAgICBTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbiA9IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpOwotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBSZWZQdHI8RXZhbEV4ZWN1dGFi
bGU+IGV2YWwgPSBjb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXQoY2FsbEZyYW1lLCBwcm9n
cmFtU291cmNlLCBzY29wZUNoYWluLCBleGNlcHRpb25WYWx1ZSk7CisgICAgUmVmUHRyPEV2YWxF
eGVjdXRhYmxlPiBldmFsID0gY29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0KGNhbGxGcmFt
ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgcHJvZ3JhbVNvdXJjZSwgc2NvcGVDaGFpbiwg
ZXhjZXB0aW9uVmFsdWUpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwog
ICAgIGlmIChldmFsKQpAQCAtNTYxLDkgKzU2NiwxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRl
cnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1ZSBl
eAogICAgICAgICAgICAgc2NvcGVDaGFpbiA9IHNjb3BlQ2hhaW4tPnBvcCgpOwogICAgICAgICBK
U0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2NvcGVDaGFpbi0+b2JqZWN0
KTsKICAgICAgICAgYWN0aXZhdGlvbi0+Y29weVJlZ2lzdGVycygpOwotICAgICAgICBpZiAoSlNW
YWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVy
KG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkKLSAgICAgICAg
ICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlvbik7Ci0g
ICAgfSBlbHNlIGlmIChvbGRDb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgeworICAgICAgICBp
ZiAoSlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkgewor
ICAgICAgICAgICAgaWYgKCFvbGRDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAg
ICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlvbik7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG9sZENvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygp
ICYmICFvbGRDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChKU1ZhbHVl
IGFyZ3VtZW50cyA9IGNhbGxGcmFtZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIob2xk
Q29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkuanNWYWx1ZSgpKQogICAgICAgICAgICAg
YXNBcmd1bWVudHMoYXJndW1lbnRzKS0+Y29weVJlZ2lzdGVycygpOwogICAgIH0KQEAgLTEwNjEs
NyArMTA2OCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUq
IGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjCiAgICAgfQogICAgIEV2YWxDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9ICZldmFsLT5nZW5lcmF0ZWRCeXRlY29kZSgpOwogCi0gICAgSlNW
YXJpYWJsZU9iamVjdCogdmFyaWFibGVPYmplY3Q7CisgICAgSlNPYmplY3QqIHZhcmlhYmxlT2Jq
ZWN0OwogICAgIGZvciAoU2NvcGVDaGFpbk5vZGUqIG5vZGUgPSBzY29wZUNoYWluOyA7IG5vZGUg
PSBub2RlLT5uZXh0KSB7CiAgICAgICAgIEFTU0VSVChub2RlKTsKICAgICAgICAgaWYgKG5vZGUt
Pm9iamVjdC0+aXNWYXJpYWJsZU9iamVjdCgpKSB7CkBAIC0xMDcyLDcgKzEwNzksMTMgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTT2JqZWMKIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcyA9IGNvZGVC
bG9jay0+bnVtVmFyaWFibGVzKCk7CiAgICAgaW50IG51bUZ1bmN0aW9ucyA9IGNvZGVCbG9jay0+
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7CisgICAgYm9vbCBwdXNoZWRTY29wZSA9IGZhbHNlOwog
ICAgIGlmIChudW1WYXJpYWJsZXMgfHwgbnVtRnVuY3Rpb25zKSB7CisgICAgICAgIGlmIChjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICB2YXJpYWJsZU9iamVjdCA9IG5l
dyAoY2FsbEZyYW1lKSBTdHJpY3RFdmFsQWN0aXZhdGlvbihjYWxsRnJhbWUpOworICAgICAgICAg
ICAgc2NvcGVDaGFpbiA9IHNjb3BlQ2hhaW4tPnB1c2godmFyaWFibGVPYmplY3QpOworICAgICAg
ICAgICAgcHVzaGVkU2NvcGUgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIC8vIFNjb3BlIGZv
ciBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcgogICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplciBvcHRpbWl6ZXIodmFyaWFibGVPYmplY3QpOwogCkBAIC0xMDk1LDYgKzExMDgsOCBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogICAgIFJlZ2lzdGVyKiBuZXdFbmQgPSBtX3JlZ2lz
dGVyRmlsZS5zdGFydCgpICsgZ2xvYmFsUmVnaXN0ZXJPZmZzZXQgKyBjb2RlQmxvY2stPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzOwogICAgIGlmICghbV9yZWdpc3RlckZpbGUuZ3JvdyhuZXdFbmQpKSB7
CiAgICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
KTsKKyAgICAgICAgaWYgKHB1c2hlZFNjb3BlKQorICAgICAgICAgICAgc2NvcGVDaGFpbi0+cG9w
KCk7CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICB9CiAKQEAgLTExMzcsNiArMTE1Miw4
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjCiAgICAgICAgICgqcHJvZmlsZXIpLT5kaWRFeGVj
dXRlKGNhbGxGcmFtZSwgZXZhbC0+c291cmNlVVJMKCksIGV2YWwtPmxpbmVObygpKTsKIAogICAg
IG1fcmVnaXN0ZXJGaWxlLnNocmluayhvbGRFbmQpOworICAgIGlmIChwdXNoZWRTY29wZSkKKyAg
ICAgICAgc2NvcGVDaGFpbi0+cG9wKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjk2
NCw3ICsyOTgxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IGNhbGxGcmFtZS0+cihiYXNlKS5qc1ZhbHVlKCk7CiAgICAgICAgIElkZW50aWZp
ZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKLSAgICAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBpZiAoZGlyZWN0KSB7CiAgICAgICAgICAgICBi
YXNlVmFsdWUucHV0RGlyZWN0KGNhbGxGcmFtZSwgaWRlbnQsIGNhbGxGcmFtZS0+cih2YWx1ZSku
anNWYWx1ZSgpLCBzbG90KTsKICAgICAgICAgICAgIEFTU0VSVChzbG90LmJhc2UoKSA9PSBiYXNl
VmFsdWUpOwpAQCAtMzA4MCw3ICszMDk3LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAg
ICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGNhbGxGcmFtZS0+cihiYXNlKS5qc1ZhbHVlKCk7CiAg
ICAgICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5
KTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBpZiAoZGlyZWN0KSB7
CiAgICAgICAgICAgICBiYXNlVmFsdWUucHV0RGlyZWN0KGNhbGxGcmFtZSwgaWRlbnQsIGNhbGxG
cmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpLCBzbG90KTsKICAgICAgICAgICAgIEFTU0VSVChzbG90
LmJhc2UoKSA9PSBiYXNlVmFsdWUpOwpAQCAtMzEwNSw5ICszMTIyLDEzIEBAIHNraXBfaWRfY3Vz
dG9tX3NlbGY6CiAKICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBjYWxsRnJhbWUtPnIoYmFz
ZSkuanNWYWx1ZSgpLnRvT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgICAgIElkZW50aWZpZXImIGlk
ZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKLSAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0Jvb2xlYW4oYmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBpZGVu
dCkpOworICAgICAgICBib29sIHJlc3VsdCA9IGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxG
cmFtZSwgaWRlbnQpOworICAgICAgICBpZiAoIXJlc3VsdCAmJiBjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKSB7CisgICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGNyZWF0ZVR5cGVFcnJvcihj
YWxsRnJhbWUsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAgICAgICAgZ290
byB2bV90aHJvdzsKKyAgICAgICAgfQogICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0g
ICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gcmVzdWx0OworICAgICAgICBjYWxsRnJhbWUtPnIo
ZHN0KSA9IGpzQm9vbGVhbihyZXN1bHQpOwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChv
cF9kZWxfYnlfaWQpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQpAQCAtMzI2
MCw3ICszMjgxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoY2FsbEZyYW1lLCBzdWJzY3JpcHQudG9TdHJp
bmcoY2FsbEZyYW1lKSk7CiAgICAgICAgICAgICBpZiAoIWdsb2JhbERhdGEtPmV4Y2VwdGlvbikg
eyAvLyBEb24ndCBwdXQgdG8gYW4gb2JqZWN0IGlmIHRvU3RyaW5nIHRocmV3IGFuIGV4Y2VwdGlv
bi4KLSAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAg
ICAgICAgICAgICBiYXNlVmFsdWUucHV0KGNhbGxGcmFtZSwgcHJvcGVydHksIGNhbGxGcmFtZS0+
cih2YWx1ZSkuanNWYWx1ZSgpLCBzbG90KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MzI4NCwxOSArMzMwNSwyMiBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICBKU09iamVj
dCogYmFzZU9iaiA9IGNhbGxGcmFtZS0+cihiYXNlKS5qc1ZhbHVlKCkudG9PYmplY3QoY2FsbEZy
YW1lKTsgLy8gbWF5IHRocm93CiAKICAgICAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBjYWxsRnJh
bWUtPnIocHJvcGVydHkpLmpzVmFsdWUoKTsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQ7CisgICAg
ICAgIGJvb2wgcmVzdWx0OwogICAgICAgICB1aW50MzJfdCBpOwogICAgICAgICBpZiAoc3Vic2Ny
aXB0LmdldFVJbnQzMihpKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGpzQm9vbGVhbihiYXNlT2Jq
LT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIGkpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGJh
c2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgaSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgSWRlbnRpZmllciBw
cm9wZXJ0eShjYWxsRnJhbWUsIHN1YnNjcmlwdC50b1N0cmluZyhjYWxsRnJhbWUpKTsKICAgICAg
ICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGpzQm9v
bGVhbihiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIHByb3BlcnR5KSk7CisgICAg
ICAgICAgICByZXN1bHQgPSBiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIHByb3Bl
cnR5KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXJlc3VsdCAmJiBjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpKSB7CisgICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGNyZWF0ZVR5cGVFcnJv
cihjYWxsRnJhbWUsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAgICAgICAg
Z290byB2bV90aHJvdzsKICAgICAgICAgfQotCiAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04o
KTsKLSAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7CisgICAgICAgIGNhbGxGcmFt
ZS0+cihkc3QpID0ganNCb29sZWFuKHJlc3VsdCk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVO
R1RIKG9wX2RlbF9ieV92YWwpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQpA
QCAtNDAzNiw2ICs0MDYwLDExIEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIH0gZWxz
ZSBpZiAoSlNWYWx1ZSBhcmd1bWVudHNWYWx1ZSA9IGNhbGxGcmFtZS0+cih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSkuanNWYWx1ZSgpKQogICAgICAgICAgICAgYXNBcmd1
bWVudHMoYXJndW1lbnRzVmFsdWUpLT5jb3B5UmVnaXN0ZXJzKCk7CiAKKyAgICAgICAgaWYgKEpT
VmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihzcmMyKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzKS0+c2V0QWN0
aXZhdGlvbihhY3RpdmF0aW9uKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZQQyArPSBPUENPREVf
TEVOR1RIKG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24pOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9O
KCk7CiAgICAgfQpAQCAtNDIyNSw2ICs0MjU0LDI1IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAg
ICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpcyk7CiAgICAgICAgIE5F
WFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVGSU5FX09QQ09ERShvcF9jb252ZXJ0X3Ro
aXNfc3RyaWN0KSB7CisgICAgICAgIC8qIGNvbnZlcnRfdGhpc19zdHJpY3QgdGhpcyhyKQorICAg
ICAgICAgCisgICAgICAgICBUYWtlcyB0aGUgdmFsdWUgaW4gdGhlICd0aGlzJyByZWdpc3Rlciwg
YW5kIGNvbnZlcnRzIGl0IHRvCisgICAgICAgICBpdHMgInRoaXMiIGZvcm0gaWYgKGFuZCBvbmx5
IGlmKSAidGhpcyIgaXMgYW4gb2JqZWN0IHdpdGggYQorICAgICAgICAgY3VzdG9tIHRoaXMgY29u
dmVyc2lvbgorICAgICAgICAgCisgICAgICAgICBUaGlzIG9wY29kZSBzaG91bGQgb25seSBiZSB1
c2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlCisgICAgICAgICBibG9jay4KKyAgICAgICAg
ICovCisgICAgICAgIAorICAgICAgICBpbnQgdGhpc1JlZ2lzdGVyID0gdlBDWzFdLnUub3BlcmFu
ZDsKKyAgICAgICAgSlNWYWx1ZSB0aGlzVmFsID0gY2FsbEZyYW1lLT5yKHRoaXNSZWdpc3Rlciku
anNWYWx1ZSgpOworICAgICAgICBpZiAodGhpc1ZhbC5pc09iamVjdCgpICYmIHRoaXNWYWwubmVl
ZHNUaGlzQ29udmVyc2lvbigpKQorICAgICAgICAgICAgY2FsbEZyYW1lLT5yKHRoaXNSZWdpc3Rl
cikgPSBKU1ZhbHVlKHRoaXNWYWwudG9TdHJpY3RUaGlzT2JqZWN0KGNhbGxGcmFtZSkpOworICAg
ICAgICAKKyAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90aGlzX3N0cmlj
dCk7CisgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICB9CiAgICAgREVGSU5FX09QQ09E
RShvcF9pbml0X2xhenlfcmVnKSB7CiAgICAgICAgIC8qIGluaXRfbGF6eV9yZWcgZHN0KHIpCiAK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKaW5kZXggZjNlOWU2MmZjZmE2YjQ2NWJhN2E0ODhiMGIxZDcyMmNlNGFkMzYw
MC4uNzkxMDgyNzJkNjczOTNhMzBkNTgyMGU5NDRiNGYzNzBhNmNkNzc1NSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKQEAgLTIyNSw2ICsyMjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfY2FsbGVlKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9jb252ZXJ0X3RoaXMpCisgICAgICAg
IERFRklORV9PUChvcF9jb252ZXJ0X3RoaXNfc3RyaWN0KQogICAgICAgICBERUZJTkVfT1Aob3Bf
aW5pdF9sYXp5X3JlZykKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hcmd1bWVudHMpCiAg
ICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKQEAgLTM5Niw2ICszOTcsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Y2FsbF92YXJhcmdzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29uc3RydWN0KQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29udmVydF90aGlzKQorICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfY29udmVydF90aGlzX3N0cmljdCkKICNpZiAhVVNFKEpTVkFMVUUz
MikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RpdikKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmlu
ZGV4IDhjYjIwNTVjNTE4ZDljYmQxODNhYWY4MGZlMTNiMmQ4ZDJjZjJkOGUuLjg5ZGVhYzY2M2Mw
MDY2N2YzMzcyM2ZlNWM2NDBjY2U4OTk5YWU2MzUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTczOCw2ICs3Mzgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9jYWxsZWUoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKQEAgLTg0NSw2ICs4NDYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RpdihJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKaW5kZXggNzE4NTQ4YTMwYTI0ODg5YjM1OTgyZWUwZmFkNTE5OGM1OTA2NWYzOC4uM2U3MDU3
OGEyY2FlZDVkMjgxNmZmODMwYWI2NWFiNzg3MTViYzFkNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcApAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2UsIHJlZ1QwKTsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRp
YXRlKGJhc2UpKQogICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZWdUMCkpOwotICAgIGlmIChiYXNlICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSkg
eworICAgIGlmIChiYXNlICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBtX2NvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSkpLCByZWdUMik7CiAgICAgICAgIGlz
Tm90T2JqZWN0LmFwcGVuZChicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBPQkpFQ1Rf
T0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fdHlwZSkpLCBJbW0zMihPYmplY3RUeXBl
KSkpOwogICAgIH0KQEAgLTEyNTUsNiArMTI1NSwyMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jb252
ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoU3Ry
dWN0dXJlLCBtX3R5cGVJbmZvLm1fZmxhZ3MpKSwgSW1tMzIoTmVlZHNUaGlzQ29udmVyc2lvbikp
KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOworICAgIEp1bXAgbm90TnVsbCA9
IGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDApOworICAgIG1vdmUoSW1tUHRyKEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSkpLCByZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgSnVtcCBzZXRUaGlz
ID0ganVtcCgpOworICAgIG5vdE51bGwubGluayh0aGlzKTsKKyAgICBKdW1wIGlzSW1tZWRpYXRl
ID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qw
LCBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSkpLCByZWdUMSk7CisgICAgSnVt
cCBub3RBbk9iamVjdCA9IGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDMsIE9CSkVDVF9P
RkZTRVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUluZm8ubV90eXBlKSksIEltbTMyKE9iamVjdFR5cGUp
KTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QxLCBP
QkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fZmxhZ3MpKSwgSW1tMzIoTmVl
ZHNUaGlzQ29udmVyc2lvbikpKTsKKyAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOworICAgIG5v
dEFuT2JqZWN0LmxpbmsodGhpcyk7CisgICAgc2V0VGhpcy5saW5rKHRoaXMpOworfQorCiB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKQEAgLTEzMDQsNiArMTMyMSwxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29udmVydF90
aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIHN0
dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7Cisg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0
aV9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdU
MCk7CisgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsK
K30KKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKaW5kZXggZmFkODVlNGEyYjZkYjFjNzgzYTZhMDJkOTIyYjIyNGZiYTA4Y2I2MS4uMzI2
NzA0ZGI0ZjUxNzE3M2QzZGFmMjcyZDBjYzJlZGMxZDUyNTE1YiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTEyMzksNyArMTIzOSw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25O
b3RJbW1lZGlhdGUoYmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDEsIEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgaWYgKGJhc2Ug
IT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpKSB7CisgICAgaWYgKGJhc2UgIT0gbV9jb2Rl
QmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewog
ICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1f
c3RydWN0dXJlKSksIHJlZ1QyKTsKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGJyYW5jaDgo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fdHlw
ZUluZm8ubV90eXBlKSksIEltbTMyKE9iamVjdFR5cGUpKSk7CiAgICAgfQpAQCAtMTU1NCw2ICsx
NTU0LDI2IEBAIHZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdU
SChvcF9jb252ZXJ0X3RoaXMpLCB0aGlzUmVnaXN0ZXIsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3Zv
aWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCB0aGlzUmVnaXN0ZXIgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIAorICAgIGVtaXRMb2FkKHRoaXNSZWdpc3RlciwgcmVn
VDEsIHJlZ1QwKTsKKyAgICAKKyAgICBKdW1wIG5vdE51bGwgPSBicmFuY2gzMihOb3RFcXVhbCwg
cmVnVDEsIEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICBlbWl0U3RvcmUodGhp
c1JlZ2lzdGVyLCBqc051bGwoKSk7CisgICAgSnVtcCBzZXRUaGlzID0ganVtcCgpOworICAgIG5v
dE51bGwubGluayh0aGlzKTsKKyAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSkpLCByZWdUMSk7Cisg
ICAgSnVtcCBub3RBbk9iamVjdCA9IGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDMsIE9C
SkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUluZm8ubV90eXBlKSksIEltbTMyKE9iamVj
dFR5cGUpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJl
Z1QxLCBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fZmxhZ3MpKSwgSW1t
MzIoTmVlZHNUaGlzQ29udmVyc2lvbikpKTsKKyAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOwor
ICAgIG5vdEFuT2JqZWN0LmxpbmsodGhpcyk7CisgICAgc2V0VGhpcy5saW5rKHRoaXMpOworICAg
IG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXMpLCB0
aGlzUmVnaXN0ZXIsIHJlZ1QxLCByZWdUMCk7Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9j
b252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNpZ25lZCB0aGlzUmVnaXN0ZXIg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtMTU2Niw2ICsxNTg2LDE3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgc3R1YkNhbGwuY2FsbCh0aGlzUmVnaXN0ZXIp
OwogfQogCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQoreworICAgIHVuc2lnbmVkIHRoaXNSZWdpc3RlciA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CisgICAgCisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIAorICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KTsK
KyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOworICAgIHN0dWJDYWxsLmNh
bGwodGhpc1JlZ2lzdGVyKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV93aWxsX2Nh
bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBwZWVrKHJlZ1QyLCBP
QkpFQ1RfT0ZGU0VUT0YoSklUU3RhY2tGcmFtZSwgZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKSAv
IHNpemVvZih2b2lkKikpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggMDdhZGM2ODcxNTQ3
ZmRjZjE4NWUzOTQwZTk5YWFiZGUzOThjYzBlZS4uNzU2N2RjMWQ2Y2E2OGNhZDY1NTQyZGVhMWRl
NzMxMjNkNzEyMmZlNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0xMDY1LDcgKzEwNjUs
OSBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsRAogICAgICAgICByZXR1cm4gMDsgXAogICAgIH0g
d2hpbGUgKDApCiAjZGVmaW5lIFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9FTkQoKSBcCi0gICAgcmV0
dXJuVG9UaHJvd1RyYW1wb2xpbmUoc3RhY2tGcmFtZS5nbG9iYWxEYXRhLCBTVFVCX1JFVFVSTl9B
RERSRVNTLCBTVFVCX1JFVFVSTl9BRERSRVNTKQorICAgIGRvIHtcCisgICAgICAgIHJldHVyblRv
VGhyb3dUcmFtcG9saW5lKHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgU1RVQl9SRVRVUk5fQUREUkVT
UywgU1RVQl9SRVRVUk5fQUREUkVTUyk7XAorICAgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgQ0hF
Q0tfRk9SX0VYQ0VQVElPTigpIFwKICAgICBkbyB7IFwKQEAgLTEyOTUsMTIgKzEyOTcsMjIgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2NvbnZlcnRfdGhpcykKIAog
ICAgIEpTVmFsdWUgdjEgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0KICAgICBKU09iamVjdCog
cmVzdWx0ID0gdjEudG9UaGlzT2JqZWN0KGNhbGxGcmFtZSk7CiAgICAgQ0hFQ0tfRk9SX0VYQ0VQ
VElPTl9BVF9FTkQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
K0RFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9jb252ZXJ0X3RoaXNfc3Ry
aWN0KQoreworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAgICAKKyAg
ICBKU1ZhbHVlIHYxID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKKyAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdjEudG9TdHJpY3RUaGlzT2JqZWN0KGNhbGxGcmFtZSk7CisgICAgQ0hFQ0tfRk9SX0VYQ0VQ
VElPTl9BVF9FTkQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisK
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX2VuZCkKIHsKICAgICBTVFVCX0lOSVRfU1RB
Q0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBAIC0xNDA0LDcgKzE0MTYsNyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfZ2VuZXJpYykKIHsKICAgICBTVFVCX0lOSVRfU1RB
Q0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlz
U3RyaWN0TW9kZSgpKTsKICAgICBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLnB1dChzdGFj
a0ZyYW1lLmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50aWZpZXIoKSwgc3RhY2tG
cmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9B
VF9FTkQoKTsKIH0KQEAgLTE0MTMsNyArMTQyNSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQsIG9wX3B1dF9ieV9pZF9kaXJlY3RfZ2VuZXJpYykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tf
RlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3Qoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKSk7CiAgICAgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS5wdXREaXJl
Y3Qoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCks
IHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3QpOwogICAgIENIRUNLX0ZPUl9FWENF
UFRJT05fQVRfRU5EKCk7CiB9CkBAIC0xNDQxLDcgKzE0NTMsNyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkLCBvcF9wdXRfYnlfaWQpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFj
a0ZyYW1lLmNhbGxGcmFtZTsKICAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0YWNrRnJhbWUuYXJn
c1sxXS5pZGVudGlmaWVyKCk7CiAgICAgCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2Rl
KCkpOwogICAgIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkucHV0KGNhbGxGcmFtZSwgaWRl
bnQsIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3QpOwogICAgIAogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAt
MTQ2MCw3ICsxNDcyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lk
X2RpcmVjdCkKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1l
OwogICAgIElkZW50aWZpZXImIGlkZW50ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50aWZpZXIo
KTsKICAgICAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgc3RhY2tG
cmFtZS5hcmdzWzBdLmpzVmFsdWUoKS5wdXREaXJlY3QoY2FsbEZyYW1lLCBpZGVudCwgc3RhY2tG
cmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0xNDc5LDggKzE0
OTEsOCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfZmFpbCkKIAog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpOwotCi0gICAg
UHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgCisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHN0YWNrRnJhbWUuYXJn
c1swXS5qc1ZhbHVlKCkucHV0KGNhbGxGcmFtZSwgaWRlbnQsIHN0YWNrRnJhbWUuYXJnc1syXS5q
c1ZhbHVlKCksIHNsb3QpOwogCiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKQEAg
LTE0OTMsNyArMTUwNSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9p
ZF9kaXJlY3RfZmFpbCkKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOwogICAgIElkZW50aWZpZXImIGlkZW50ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50
aWZpZXIoKTsKICAgICAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAg
c3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS5wdXREaXJlY3QoY2FsbEZyYW1lLCBpZGVudCwg
c3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgCiAgICAgQ0hFQ0tfRk9S
X0VYQ0VQVElPTl9BVF9FTkQoKTsKQEAgLTE4ODAsNyArMTg5MiwxMSBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZGVsX2J5X2lkKQogICAgIAogICAgIEpTT2JqZWN0
KiBiYXNlT2JqID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS50b09iamVjdChjYWxsRnJh
bWUpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oYmFzZU9iai0+ZGVsZXRlUHJv
cGVydHkoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpKSk7CisgICAg
Ym9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgc3Rh
Y2tGcmFtZS5hcmdzWzFdLmlkZW50aWZpZXIoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jv
b2xlYW4oY291bGREZWxldGUpOworICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9yKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRf
RU5EKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjIyMiw4
ICsyMjM4LDEwIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3RlYXJfb2ZmX2FjdGl2
YXRpb24pCiAgICAgfQogICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlv
bihzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKTsKICAgICBhY3RpdmF0aW9uLT5jb3B5UmVn
aXN0ZXJzKCk7Ci0gICAgaWYgKEpTVmFsdWUgdiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVl
KCkpCi0gICAgICAgIGFzQXJndW1lbnRzKHYpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24pOwor
ICAgIGlmIChKU1ZhbHVlIHYgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpKSB7CisgICAg
ICAgIGlmICghc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSkKKyAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24p
OworICAgIH0KIH0KIAogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfdGVhcl9vZmZfYXJn
dW1lbnRzKQpAQCAtMjUwMyw3ICsyNTIxLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwg
b3BfcHV0X2J5X3ZhbCkKICAgICB9IGVsc2UgewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5
KGNhbGxGcmFtZSwgc3Vic2NyaXB0LnRvU3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICBpZiAo
IXN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKSB7IC8vIERvbid0IHB1dCB0byBhbiBv
YmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAgICAgICBiYXNlVmFsdWUu
cHV0KGNhbGxGcmFtZSwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICAgICAgfQogICAgIH0K
QEAgLTI1NDYsNyArMjU2NCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9i
eV92YWxfYnl0ZV9hcnJheSkKICAgICB9IGVsc2UgewogICAgICAgICBJZGVudGlmaWVyIHByb3Bl
cnR5KGNhbGxGcmFtZSwgc3Vic2NyaXB0LnRvU3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICBp
ZiAoIXN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKSB7IC8vIERvbid0IHB1dCB0byBh
biBvYmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAgICAgICBiYXNlVmFs
dWUucHV0KGNhbGxGcmFtZSwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICAgICAgfQogICAg
IH0KQEAgLTM1MDEsMTkgKzM1MTksMjIgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpT
VmFsdWUsIG9wX2RlbF9ieV92YWwpCiAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBiYXNlVmFsdWUu
dG9PYmplY3QoY2FsbEZyYW1lKTsgLy8gbWF5IHRocm93CiAKICAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Cisg
ICAgYm9vbCByZXN1bHQ7CiAgICAgdWludDMyX3QgaTsKICAgICBpZiAoc3Vic2NyaXB0LmdldFVJ
bnQzMihpKSkKLSAgICAgICAgcmVzdWx0ID0ganNCb29sZWFuKGJhc2VPYmotPmRlbGV0ZVByb3Bl
cnR5KGNhbGxGcmFtZSwgaSkpOworICAgICAgICByZXN1bHQgPSBiYXNlT2JqLT5kZWxldGVQcm9w
ZXJ0eShjYWxsRnJhbWUsIGkpOwogICAgIGVsc2UgewogICAgICAgICBDSEVDS19GT1JfRVhDRVBU
SU9OKCk7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoY2FsbEZyYW1lLCBzdWJzY3JpcHQu
dG9TdHJpbmcoY2FsbEZyYW1lKSk7CiAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAg
ICAgICAgcmVzdWx0ID0ganNCb29sZWFuKGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFt
ZSwgcHJvcGVydHkpKTsKKyAgICAgICAgcmVzdWx0ID0gYmFzZU9iai0+ZGVsZXRlUHJvcGVydHko
Y2FsbEZyYW1lLCBwcm9wZXJ0eSk7CiAgICAgfQogCisgICAgaWYgKCFyZXN1bHQgJiYgY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIHN0YWNrRnJhbWUuZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9yKHN0YWNrRnJhbWUuY2FsbEZyYW1l
LCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKwogICAgIENIRUNLX0ZPUl9FWENFUFRJ
T05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCiBERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkLCBvcF9wdXRfZ2V0dGVyKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmggYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAppbmRleCAy
YjIyZTZkNDQ5YzVmY2NiZGNlOThhZmYwOWQ3ODk0MzhlNzcyNzA5Li5iZDdkMTljZGQ2YzdjZDE2
YjY4Zjk5MDhiM2U2NDQ5YmE5Nzg3ZjJhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaApAQCAtMjk2LDYg
KzI5Niw3IEBAIGV4dGVybiAiQyIgewogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9v
cF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1Y3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBF
bmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY3JlYXRlX3RoaXMoU1RVQl9BUkdTX0RFQ0xB
UkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY29udmVydF90aGlz
KFNUVUJfQVJHU19ERUNMQVJBVElPTik7CisgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3Rp
X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNv
ZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY3JlYXRlX2FyZ3VtZW50cyhTVFVCX0FSR1NfREVD
TEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jcmVhdGVfYXJn
dW1lbnRzX25vX3BhcmFtcyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1Zh
bHVlIEpJVF9TVFVCIGN0aV9vcF9kZWxfYnlfaWQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDQwMDIzZjhiNjlkNzI2YzU0MDNkYzc5NmM4
NmIxYzc3OWVkODIzYjEuLjlhNjgxNDQ2OTViODkyOWU1ZjFmYzJmYzI3ZTU1NzZlNjNkZDFjNDgg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjQ5LDEwICsyNDksMTAgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEZ1bmN0aW9uQm9keU5v
ZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keSgpCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVu
Y3Rpb25Cb2R5KGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAgIHsKICAgICAgICAgdXNlc0Nsb3N1
cmVzKCk7Ci0gICAgICAgIHJldHVybiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxE
YXRhKTsKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERh
dGEsIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlIDxib29sPiBQ
cm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoUHJvcGVydHlOb2RlOjpU
eXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQ
b3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCkBAIC01NzgsNiArNTc4LDkg
QEAgcHVibGljOgogICAgIAogICAgIGNvbnN0IElkZW50aWZpZXImIGdldE5hbWUoUHJvcGVydHkg
cHJvcGVydHkpIHsgcmV0dXJuIHByb3BlcnR5LT5uYW1lKCk7IH0KICAgICBQcm9wZXJ0eU5vZGU6
OlR5cGUgZ2V0VHlwZShQcm9wZXJ0eSBwcm9wZXJ0eSkgeyByZXR1cm4gcHJvcGVydHktPnR5cGUo
KTsgfQorCisgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJu
IGV4cHItPmlzUmVzb2x2ZU5vZGUoKTsgfQorCiBwcml2YXRlOgogICAgIHN0cnVjdCBTY29wZSB7
CiAgICAgICAgIFNjb3BlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
SlNQYXJzZXIuY3BwCmluZGV4IDBlNTI2YWM3N2ZkZGQ3NGJjYmM2MGE3MDBlMWY3NTdmZGVmYWEw
ZWMuLjAxMTc1NDc2NWRkZTkyODA2ZDE2NGQ4MWRlZWIyMjRlNmYyMGQ5OTUgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0pTUGFyc2VyLmNwcApAQCAtNDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNk
ZWZpbmUgZmFpbCgpIGRvIHsgbV9lcnJvciA9IHRydWU7IHJldHVybiAwOyB9IHdoaWxlICgwKQog
I2RlZmluZSBmYWlsSWZGYWxzZShjb25kKSBkbyB7IGlmICghKGNvbmQpKSBmYWlsKCk7IH0gd2hp
bGUgKDApCiAjZGVmaW5lIGZhaWxJZlRydWUoY29uZCkgZG8geyBpZiAoKGNvbmQpKSBmYWlsKCk7
IH0gd2hpbGUgKDApCisjZGVmaW5lIGZhaWxJZlRydWVJZlN0cmljdChjb25kKSBkbyB7IGlmICgo
Y29uZCkgJiYgc3RyaWN0TW9kZSgpKSBmYWlsKCk7IH0gd2hpbGUgKDApCisjZGVmaW5lIGZhaWxJ
ZkZhbHNlSWZTdHJpY3QoY29uZCkgZG8geyBpZiAoKCEoY29uZCkpICYmIHN0cmljdE1vZGUoKSkg
ZmFpbCgpOyB9IHdoaWxlICgwKQogI2RlZmluZSBjb25zdW1lT3JGYWlsKHRva2VuVHlwZSkgZG8g
eyBpZiAoIWNvbnN1bWUodG9rZW5UeXBlKSkgZmFpbCgpOyB9IHdoaWxlICgwKQogI2RlZmluZSBt
YXRjaE9yRmFpbCh0b2tlblR5cGUpIGRvIHsgaWYgKCFtYXRjaCh0b2tlblR5cGUpKSBmYWlsKCk7
IH0gd2hpbGUgKDApCiAjZGVmaW5lIGZhaWxJZlN0YWNrT3ZlcmZsb3coKSBkbyB7IGZhaWxJZkZh
bHNlKGNhblJlY3Vyc2UoKSk7IH0gd2hpbGUgKDApCkBAIC02Nyw4ICs2OSw4IEBAIHN0YXRpYyBj
b25zdCBwdHJkaWZmX3Qga01heFBhcnNlclN0YWNrVXNhZ2UgPSAxMjggKiBzaXplb2Yodm9pZCop
ICogMTAyNDsKIAogY2xhc3MgSlNQYXJzZXIgewogcHVibGljOgotICAgIEpTUGFyc2VyKExleGVy
KiwgSlNHbG9iYWxEYXRhKiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgU291cmNlUHJvdmlkZXIqKTsK
LSAgICBib29sIHBhcnNlUHJvZ3JhbSgpOworICAgIEpTUGFyc2VyKExleGVyKiwgSlNHbG9iYWxE
YXRhKiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9vbCBpc1N0cmljdENvbnRleHQsIFNvdXJjZVBy
b3ZpZGVyKik7CisgICAgYm9vbCBwYXJzZVByb2dyYW0oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCopOwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQWxsb3dJbk92ZXJyaWRlIHsKICAgICAg
ICAgQWxsb3dJbk92ZXJyaWRlKEpTUGFyc2VyKiBwYXJzZXIpCkBAIC05MCw3ICs5Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fbGFzdExpbmUgPSBtX3Rva2VuLm1faW5mby5saW5lOwogICAgICAg
ICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9pbmZvLmVuZE9mZnNldDsKICAgICAgICAgbV9s
ZXhlci0+c2V0TGFzdExpbmVOdW1iZXIobV9sYXN0TGluZSk7Ci0gICAgICAgIG1fdG9rZW4ubV90
eXBlID0gbV9sZXhlci0+bGV4KCZtX3Rva2VuLm1fZGF0YSwgJm1fdG9rZW4ubV9pbmZvLCBsZXhU
eXBlKTsKKyAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXgoJm1fdG9rZW4ubV9k
YXRhLCAmbV90b2tlbi5tX2luZm8sIGxleFR5cGUsIHN0cmljdE1vZGUoKSk7CiAgICAgICAgIG1f
dG9rZW5Db3VudCsrOwogICAgIH0KIApAQCAtMTIxLDkgKzEyMywyMyBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9pbmZvLmVuZE9mZnNldDsKICAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNv
dXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJik7CisgICAgCisg
ICAgdm9pZCBzdGFydExvb3AoKSB7IGN1cnJlbnRTY29wZSgpLT5zdGFydExvb3AoKTsgfQorICAg
IHZvaWQgZW5kTG9vcCgpIHsgY3VycmVudFNjb3BlKCktPmVuZExvb3AoKTsgfQorICAgIHZvaWQg
c3RhcnRTd2l0Y2goKSB7IGN1cnJlbnRTY29wZSgpLT5zdGFydFN3aXRjaCgpOyB9CisgICAgdm9p
ZCBlbmRTd2l0Y2goKSB7IGN1cnJlbnRTY29wZSgpLT5lbmRTd2l0Y2goKTsgfQorICAgIHZvaWQg
c2V0U3RyaWN0TW9kZSgpIHsgY3VycmVudFNjb3BlKCktPnNldFN0cmljdE1vZGUoKTsgfQorICAg
IGJvb2wgc3RyaWN0TW9kZSgpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgpLT5zdHJpY3RNb2RlKCk7
IH0KKyAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlKCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCkt
PmlzVmFsaWRTdHJpY3RNb2RlKCk7IH0KKyAgICBib29sIGRlY2xhcmVQYXJhbWV0ZXIoY29uc3Qg
SWRlbnRpZmllciogaWRlbnQpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgpLT5kZWNsYXJlUGFyYW1l
dGVyKGlkZW50KTsgfQorICAgIGJvb2wgYnJlYWtJc1ZhbGlkKCkgeyByZXR1cm4gY3VycmVudFNj
b3BlKCktPmJyZWFrSXNWYWxpZCgpOyB9CisgICAgdm9pZCBwdXNoTGFiZWwoY29uc3QgSWRlbnRp
ZmllciogbGFiZWwpIHsgY3VycmVudFNjb3BlKCktPnB1c2hMYWJlbChsYWJlbCk7IH0KKyAgICB2
b2lkIHBvcExhYmVsKCkgeyBjdXJyZW50U2NvcGUoKS0+cG9wTGFiZWwoKTsgfQorICAgIGJvb2wg
aGFzTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFiZWwpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgp
LT5oYXNMYWJlbChsYWJlbCk7IH0KKworICAgIGVudW0gU291cmNlRWxlbWVudHNNb2RlIHsgQ2hl
Y2tGb3JTdHJpY3RNb2RlLCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlIH07CisgICAgdGVtcGxhdGUg
PFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVs
ZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVC
dWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IHBhcnNlVmFyRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VDb25zdERlY2xhcmF0aW9uKFRyZWVCdWls
ZGVyJik7CkBAIC0xOTksMzIgKzIxNSwxMTYgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9hc3NpZ25t
ZW50Q291bnQ7CiAgICAgaW50IG1fbm9uTEhTQ291bnQ7CiAgICAgYm9vbCBtX3N5bnRheEFscmVh
ZHlWYWxpZGF0ZWQ7CisgICAgaW50IG1fc3RhdGVtZW50RGVwdGg7CisgICAgaW50IG1fbm9uVHJp
dmlhbEV4cHJlc3Npb25Db3VudDsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBtX2xhc3RJZGVudGlm
aWVyOworCisgICAgc3RydWN0IERlcHRoTWFuYWdlciB7CisgICAgICAgIERlcHRoTWFuYWdlcihp
bnQqIGRlcHRoKQorICAgICAgICAgICAgOiBtX29yaWdpbmFsRGVwdGgoKmRlcHRoKQorICAgICAg
ICAgICAgLCBtX2RlcHRoKGRlcHRoKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIH5EZXB0aE1hbmFnZXIoKQorICAgICAgICB7CisgICAgICAgICAgICAqbV9kZXB0aCA9
IG1fb3JpZ2luYWxEZXB0aDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICBwcml2YXRlOgorICAg
ICAgICBpbnQgbV9vcmlnaW5hbERlcHRoOworICAgICAgICBpbnQqIG1fZGVwdGg7CisgICAgfTsK
IAogICAgIHN0cnVjdCBTY29wZSB7Ci0gICAgICAgIFNjb3BlKCkKLSAgICAgICAgICAgIDogbV91
c2VzRXZhbChmYWxzZSkKKyAgICAgICAgU2NvcGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBi
b29sIHN0cmljdE1vZGUpCisgICAgICAgICAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQor
ICAgICAgICAgICAgLCBtX3VzZXNFdmFsKGZhbHNlKQogICAgICAgICAgICAgLCBtX25lZWRzRnVs
bEFjdGl2YXRpb24oZmFsc2UpCiAgICAgICAgICAgICAsIG1fYWxsb3dzTmV3RGVjbHModHJ1ZSkK
KyAgICAgICAgICAgICwgbV9zdHJpY3RNb2RlKHN0cmljdE1vZGUpCisgICAgICAgICAgICAsIG1f
aXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKKyAgICAgICAgICAgICwgbV9sb29wRGVwdGgoMCkKKyAg
ICAgICAgICAgICwgbV9zd2l0Y2hEZXB0aCgwKQorICAgICAgICAgICAgLCBtX2xhYmVscygwKQog
ICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgZGVjbGFyZVZhcmlh
YmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQorICAgICAgICB2b2lkIHN0YXJ0U3dpdGNoKCkg
eyBtX3N3aXRjaERlcHRoKys7IH0KKyAgICAgICAgdm9pZCBlbmRTd2l0Y2goKSB7IG1fc3dpdGNo
RGVwdGgtLTsgfQorICAgICAgICB2b2lkIHN0YXJ0TG9vcCgpIHsgbV9sb29wRGVwdGgrKzsgfQor
ICAgICAgICB2b2lkIGVuZExvb3AoKSB7IEFTU0VSVChtX2xvb3BEZXB0aCk7IG1fbG9vcERlcHRo
LS07IH0KKyAgICAgICAgYm9vbCBpbkxvb3AoKSB7IHJldHVybiAhIW1fbG9vcERlcHRoOyB9Cisg
ICAgICAgIGJvb2wgYnJlYWtJc1ZhbGlkKCkgeyByZXR1cm4gbV9sb29wRGVwdGggfHwgbV9zd2l0
Y2hEZXB0aDsgfQorCisgICAgICAgIHZvaWQgcHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fbGFiZWxzKQorICAgICAgICAgICAg
ICAgIG1fbGFiZWxzID0gbmV3IExhYmVsU3RhY2s7CisgICAgICAgICAgICBtX2xhYmVscy0+YXBw
ZW5kKGxhYmVsLT5pbXBsKCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwb3BMYWJlbCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2xhYmVscyk7CisgICAgICAgICAgICBB
U1NFUlQobV9sYWJlbHMtPnNpemUoKSk7CisgICAgICAgICAgICBtX2xhYmVscy0+cmVtb3ZlTGFz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBoYXNMYWJlbChjb25zdCBJZGVudGlmaWVy
KiBsYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2xhYmVscykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGludCBpID0gbV9sYWJlbHMt
PnNpemUoKTsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIGlmIChtX2xhYmVscy0+YXQo
aSAtIDEpID09IGxhYmVsLT5pbXBsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgYm9vbCBpc0Z1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICAKKyAg
ICAgICAgYm9vbCBkZWNsYXJlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2dsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlO
YW1lcy0+YXJndW1lbnRzICE9ICppZGVudDsKKyAgICAgICAgICAgIG1faXNWYWxpZFN0cmljdE1v
ZGUgPSBtX2lzVmFsaWRTdHJpY3RNb2RlICYmIGlzVmFsaWRTdHJpY3RNb2RlOwogICAgICAgICAg
ICAgbV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnVzdHJpbmcoKS5pbXBsKCkpOworICAg
ICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB2b2lkIGRlY2xhcmVXcml0ZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKG1fc3RyaWN0TW9kZSk7CisgICAgICAgICAgICBtX3dy
aXR0ZW5WYXJpYWJsZXMuYWRkKGlkZW50LT5pbXBsKCkpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBib29sIGRlbGV0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucyhpZGVu
dC0+aW1wbCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBt
X2RlbGV0ZWRWYXJpYWJsZXMuYWRkKGlkZW50LT5pbXBsKCkpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgcHJldmVudE5ld0RlY2xz
KCkgeyBtX2FsbG93c05ld0RlY2xzID0gZmFsc2U7IH0KICAgICAgICAgYm9vbCBhbGxvd3NOZXdE
ZWNscygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzTmV3RGVjbHM7IH0KIAorICAgICAgICBib29s
IGRlY2xhcmVQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2RlY2xhcmVkVmFyaWFibGVzLmFk
ZChpZGVudC0+dXN0cmluZygpLmltcGwoKSkuc2Vjb25kICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+ZXZhbCAhPSAqaWRlbnQgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5h
cmd1bWVudHMgIT0gKmlkZW50OworICAgICAgICAgICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1f
aXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1vZGU7CisgICAgICAgICAgICByZXR1
cm4gaXNWYWxpZFN0cmljdE1vZGU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQg
dXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJvb2wgaXNFdmFsKQogICAgICAg
ICB7CiAgICAgICAgICAgICBtX3VzZXNFdmFsIHw9IGlzRXZhbDsKICAgICAgICAgICAgIG1fdXNl
ZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnVzdHJpbmcoKS5pbXBsKCkpOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICB2b2lkIG5lZWRzRnVsbEFjdGl2YXRpb24oKSB7IG1fbmVlZHNGdWxsQWN0
aXZhdGlvbiA9IHRydWU7IH0KKyAgICAgICAgdm9pZCBzZXROZWVkc0Z1bGxBY3RpdmF0aW9uKCkg
eyBtX25lZWRzRnVsbEFjdGl2YXRpb24gPSB0cnVlOyB9CiAgICAgICAgIAotICAgICAgICB2b2lk
IGNvbGxlY3RGcmVlVmFyaWFibGVzKFNjb3BlKiBuZXN0ZWRTY29wZSwgYm9vbCBzaG91bGRUcmFj
a0Nsb3NlZFZhcmlhYmxlcykKKyAgICAgICAgYm9vbCBjb2xsZWN0RnJlZVZhcmlhYmxlcyhTY29w
ZSogbmVzdGVkU2NvcGUsIGJvb2wgc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV91c2VzRXZhbCkKICAgICAgICAgICAg
ICAgICBtX3VzZXNFdmFsID0gdHJ1ZTsKQEAgLTIzNiw2ICszMzYsNDUgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBpZiAoc2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMpCiAgICAgICAgICAg
ICAgICAgICAgIG1fY2xvc2VkVmFyaWFibGVzLmFkZCgqcHRyKTsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV93cml0dGVuVmFyaWFibGVzLnNpemUoKSkgewor
ICAgICAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9IG5lc3RlZFNjb3Bl
LT5tX3dyaXR0ZW5WYXJpYWJsZXMuZW5kKCk7CisgICAgICAgICAgICAgICAgZm9yIChJZGVudGlm
aWVyU2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+bV93cml0dGVuVmFyaWFibGVzLmJl
Z2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXN0
ZWRTY29wZS0+bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBtX3dyaXR0ZW5WYXJp
YWJsZXMuYWRkKCpwdHIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChuZXN0ZWRTY29wZS0+bV9kZWxldGVkVmFyaWFibGVzLnNpemUoKSkgeworICAg
ICAgICAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9IG5lc3RlZFNjb3BlLT5t
X2RlbGV0ZWRWYXJpYWJsZXMuZW5kKCk7CisgICAgICAgICAgICAgICAgZm9yIChJZGVudGlmaWVy
U2V0OjppdGVyYXRvciBwdHIgPSBuZXN0ZWRTY29wZS0+bV9kZWxldGVkVmFyaWFibGVzLmJlZ2lu
KCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRT
Y29wZS0+bV9kZWNsYXJlZFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fZGVjbGFy
ZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG1fZGVsZXRlZFZhcmlhYmxlcy5hZGQoKnB0
cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGdldFVuY2FwdHVyZWRXcml0dGVuVmFy
aWFibGVzKElkZW50aWZpZXJTZXQmIHdyaXR0ZW5WYXJpYWJsZXMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fd3JpdHRlblZhcmlhYmxlcy5l
bmQoKTsKKyAgICAgICAgICAgIGZvciAoSWRlbnRpZmllclNldDo6aXRlcmF0b3IgcHRyID0gbV93
cml0dGVuVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFtX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAg
ICAgICAgICAgICB3cml0dGVuVmFyaWFibGVzLmFkZCgqcHRyKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgZ2V0RGVsZXRlZFZhcmlhYmxlcyhJZGVudGlmaWVyU2V0
JiBkZWxldGVkVmFyaWFibGVzKQorICAgICAgICB7CisgICAgICAgICAgICBJZGVudGlmaWVyU2V0
OjppdGVyYXRvciBlbmQgPSBtX2RlbGV0ZWRWYXJpYWJsZXMuZW5kKCk7CisgICAgICAgICAgICBm
b3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG1fZGVsZXRlZFZhcmlhYmxlcy5iZWdp
bigpOyBwdHIgIT0gZW5kOyArK3B0cikgeworICAgICAgICAgICAgICAgIGlmIChtX2RlY2xhcmVk
VmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWxldGVkVmFyaWFibGVzLnN3YXAobV9k
ZWxldGVkVmFyaWFibGVzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgdm9pZCBnZXRDYXB0dXJlZFZhcmlhYmxlcyhJZGVudGlmaWVyU2V0JiBjYXB0dXJl
ZFZhcmlhYmxlcykKQEAgLTI1MCwxMyArMzg5LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgY2FwdHVyZWRWYXJpYWJsZXMuYWRkKCpwdHIpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CisgICAgICAgIHZvaWQgc2V0U3RyaWN0TW9kZSgpIHsgbV9zdHJpY3RNb2RlID0gdHJ1ZTsgfQor
ICAgICAgICBib29sIHN0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdE1vZGU7IH0K
KyAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxp
ZFN0cmljdE1vZGU7IH0KKwogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgbV91c2VzRXZhbDsK
LSAgICAgICAgYm9vbCBtX25lZWRzRnVsbEFjdGl2YXRpb247Ci0gICAgICAgIGJvb2wgbV9hbGxv
d3NOZXdEZWNsczsKKyAgICAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CisgICAgICAg
IGJvb2wgbV91c2VzRXZhbCA6IDE7CisgICAgICAgIGJvb2wgbV9uZWVkc0Z1bGxBY3RpdmF0aW9u
IDogMTsKKyAgICAgICAgYm9vbCBtX2FsbG93c05ld0RlY2xzIDogMTsKKyAgICAgICAgYm9vbCBt
X3N0cmljdE1vZGUgOiAxOworICAgICAgICBib29sIG1faXNWYWxpZFN0cmljdE1vZGUgOiAxOwor
ICAgICAgICBpbnQgbV9sb29wRGVwdGg7CisgICAgICAgIGludCBtX3N3aXRjaERlcHRoOworICAg
ICAgICB0eXBlZGVmIFZlY3RvcjxTdHJpbmdJbXBsKiwgMj4gTGFiZWxTdGFjazsKKyAgICAgICAg
TGFiZWxTdGFjayogbV9sYWJlbHM7CiAgICAgICAgIElkZW50aWZpZXJTZXQgbV9kZWNsYXJlZFZh
cmlhYmxlczsKICAgICAgICAgSWRlbnRpZmllclNldCBtX3VzZWRWYXJpYWJsZXM7CiAgICAgICAg
IElkZW50aWZpZXJTZXQgbV9jbG9zZWRWYXJpYWJsZXM7CisgICAgICAgIElkZW50aWZpZXJTZXQg
bV93cml0dGVuVmFyaWFibGVzOworICAgICAgICBJZGVudGlmaWVyU2V0IG1fZGVsZXRlZFZhcmlh
YmxlczsKICAgICB9OwogICAgIAogICAgIHR5cGVkZWYgVmVjdG9yPFNjb3BlLCAxMD4gU2NvcGVT
dGFjazsKQEAgLTI4MSwxOSArNDMzLDIwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgU2NvcGVSZWYg
cHVzaFNjb3BlKCkKICAgICB7Ci0gICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGUoKSk7
CisgICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGUobV9nbG9iYWxEYXRhLCBtX3Njb3Bl
U3RhY2suaXNFbXB0eSgpID8gZmFsc2UgOiBtX3Njb3BlU3RhY2subGFzdCgpLnN0cmljdE1vZGUo
KSkpOwogICAgICAgICByZXR1cm4gY3VycmVudFNjb3BlKCk7CiAgICAgfQogCi0gICAgdm9pZCBw
b3BTY29wZShTY29wZVJlZiBzY29wZSwgYm9vbCBzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcykK
KyAgICBib29sIHBvcFNjb3BlKFNjb3BlUmVmIHNjb3BlLCBib29sIHNob3VsZFRyYWNrQ2xvc2Vk
VmFyaWFibGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzY29wZSwgc2NvcGUuaW5k
ZXgoKSA9PSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMSk7CiAgICAgICAgIEFTU0VSVChtX3Njb3Bl
U3RhY2suc2l6ZSgpID4gMSk7Ci0gICAgICAgIG1fc2NvcGVTdGFja1ttX3Njb3BlU3RhY2suc2l6
ZSgpIC0gMl0uY29sbGVjdEZyZWVWYXJpYWJsZXMoJm1fc2NvcGVTdGFjay5sYXN0KCksIHNob3Vs
ZFRyYWNrQ2xvc2VkVmFyaWFibGVzKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX3Njb3BlU3Rh
Y2tbbV9zY29wZVN0YWNrLnNpemUoKSAtIDJdLmNvbGxlY3RGcmVlVmFyaWFibGVzKCZtX3Njb3Bl
U3RhY2subGFzdCgpLCBzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcyk7CiAgICAgICAgIG1fc2Nv
cGVTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAotICAgIHZvaWQgZGVjbGFyZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQorICAg
IGJvb2wgZGVjbGFyZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQogICAgIHsKICAg
ICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwogICAgICAgICBBU1NF
UlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOwpAQCAtMzAxLDE5ICs0NTQsMzIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNr
LnNpemUoKSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9zY29wZVN0YWNrW2ldLmRlY2xhcmVWYXJp
YWJsZShpZGVudCk7CisgICAgICAgIHJldHVybiBtX3Njb3BlU3RhY2tbaV0uZGVjbGFyZVZhcmlh
YmxlKGlkZW50KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkZWNsYXJlV3JpdGUoY29uc3QgSWRl
bnRpZmllciogaWRlbnQpCisgICAgeworICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlk
YXRlZCkKKyAgICAgICAgICAgIG1fc2NvcGVTdGFjay5sYXN0KCkuZGVjbGFyZVdyaXRlKGlkZW50
KTsKICAgICB9CiAKKyAgICBib29sIGRlbGV0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQpCisgICAg
ICAgICAgICByZXR1cm4gbV9zY29wZVN0YWNrLmxhc3QoKS5kZWxldGVQcm9wZXJ0eShpZGVudCk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKICAgICBTY29wZVN0YWNrIG1fc2Nv
cGVTdGFjazsKIH07CiAKLWludCBqc1BhcnNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBjb25zdCBTb3VyY2VDb2RlKiBzb3VyY2UpCitp
bnQganNQYXJzZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaW5TdHJpY3RDb250
ZXh0LCBjb25zdCBTb3VyY2VDb2RlKiBzb3VyY2UpCiB7Ci0gICAgSlNQYXJzZXIgcGFyc2VyKGds
b2JhbERhdGEtPmxleGVyLCBnbG9iYWxEYXRhLCBwYXJhbWV0ZXJzLCBzb3VyY2UtPnByb3ZpZGVy
KCkpOwotICAgIHJldHVybiBwYXJzZXIucGFyc2VQcm9ncmFtKCk7CisgICAgSlNQYXJzZXIgcGFy
c2VyKGV4ZWMtPmdsb2JhbERhdGEoKS5sZXhlciwgJmV4ZWMtPmdsb2JhbERhdGEoKSwgcGFyYW1l
dGVycywgaW5TdHJpY3RDb250ZXh0LCBzb3VyY2UtPnByb3ZpZGVyKCkpOworICAgIHJldHVybiBw
YXJzZXIucGFyc2VQcm9ncmFtKGV4ZWMsIGxleGljYWxHbG9iYWxPYmplY3QpOwogfQogCi1KU1Bh
cnNlcjo6SlNQYXJzZXIoTGV4ZXIqIGxleGVyLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1
bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyKQor
SlNQYXJzZXI6OkpTUGFyc2VyKExleGVyKiBsZXhlciwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBT
b3VyY2VQcm92aWRlciogcHJvdmlkZXIpCiAgICAgOiBtX2xleGVyKGxleGVyKQogICAgICwgbV9l
bmRBZGRyZXNzKDApCiAgICAgLCBtX2Vycm9yKGZhbHNlKQpAQCAtMzI1LDI4ICs0OTEsNTQgQEAg
SlNQYXJzZXI6OkpTUGFyc2VyKExleGVyKiBsZXhlciwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBGdW5jdGlvblBhcmFtZXRlcnMqIHAKICAgICAsIG1fYXNzaWdubWVudENvdW50KDApCiAgICAg
LCBtX25vbkxIU0NvdW50KDApCiAgICAgLCBtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQocHJvdmlk
ZXItPmlzVmFsaWQoKSkKKyAgICAsIG1fc3RhdGVtZW50RGVwdGgoMCkKKyAgICAsIG1fbm9uVHJp
dmlhbEV4cHJlc3Npb25Db3VudCgwKQorICAgICwgbV9sYXN0SWRlbnRpZmllcigwKQogewogICAg
IG1fZW5kQWRkcmVzcyA9IHd0ZlRocmVhZERhdGEoKS5hcHByb3hpbWF0ZWRTdGFja1N0YXJ0KCkg
LSBrTWF4UGFyc2VyU3RhY2tVc2FnZTsKLSAgICBuZXh0KCk7Ci0gICAgbV9sZXhlci0+c2V0TGFz
dExpbmVOdW1iZXIodG9rZW5MaW5lKCkpOwogICAgIFNjb3BlUmVmIHNjb3BlID0gcHVzaFNjb3Bl
KCk7CisgICAgaWYgKGluU3RyaWN0Q29udGV4dCkKKyAgICAgICAgc2NvcGUtPnNldFN0cmljdE1v
ZGUoKTsKICAgICBpZiAocGFyYW1ldGVycykgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBzY29wZS0+ZGVjbGFy
ZVZhcmlhYmxlKCZwYXJhbWV0ZXJzLT5hdChpKSk7CisgICAgICAgICAgICBzY29wZS0+ZGVjbGFy
ZVBhcmFtZXRlcigmcGFyYW1ldGVycy0+YXQoaSkpOwogICAgIH0KKyAgICBuZXh0KCk7CisgICAg
bV9sZXhlci0+c2V0TGFzdExpbmVOdW1iZXIodG9rZW5MaW5lKCkpOwogfQogCi1ib29sIEpTUGFy
c2VyOjpwYXJzZVByb2dyYW0oKQorYm9vbCBKU1BhcnNlcjo6cGFyc2VQcm9ncmFtKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAgICAgQVNU
QnVpbGRlciBjb250ZXh0KG1fZ2xvYmFsRGF0YSwgbV9sZXhlcik7CisgICAgaWYgKG1fbGV4ZXIt
PmlzUmVwYXJzaW5nKCkpCisgICAgICAgIG1fc3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJl
ZiBzY29wZSA9IGN1cnJlbnRTY29wZSgpOwotICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVt
ZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8QVNUQnVpbGRlcj4oY29udGV4dCk7CisgICAgU291
cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50czxDaGVja0Zv
clN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgIGlmICghc291cmNlRWxlbWVudHMgfHwgIWNvbnN1
bWUoRU9GVE9LKSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFtX3N5bnRheEFscmVh
ZHlWYWxpZGF0ZWQpIHsKKyAgICAgICAgSWRlbnRpZmllclNldCB3cml0dGVuVmFyaWFibGVzOwor
ICAgICAgICBzY29wZS0+Z2V0VW5jYXB0dXJlZFdyaXR0ZW5WYXJpYWJsZXMod3JpdHRlblZhcmlh
Ymxlcyk7CisgICAgICAgIElkZW50aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHdyaXR0
ZW5WYXJpYWJsZXMuZW5kKCk7CisgICAgICAgIGZvciAoSWRlbnRpZmllclNldDo6Y29uc3RfaXRl
cmF0b3IgcHRyID0gd3JpdHRlblZhcmlhYmxlcy5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikg
eworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgICAgICAgICBpZiAoIWxleGljYWxHbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVj
LCBJZGVudGlmaWVyKG1fZ2xvYmFsRGF0YSwgKnB0ciksIHNsb3QpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIElkZW50aWZpZXJTZXQgZGVsZXRlZFZh
cmlhYmxlczsKKyAgICAgICAgaWYgKCFzY29wZS0+Z2V0RGVsZXRlZFZhcmlhYmxlcyhkZWxldGVk
VmFyaWFibGVzKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBlbmQgPSBkZWxl
dGVkVmFyaWFibGVzLmVuZCgpOworICAgICAgICBTeW1ib2xUYWJsZSYgZ2xvYmFsRW52UmVjb3Jk
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAgICAgICAgZm9yIChJZGVu
dGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBwdHIgPSBkZWxldGVkVmFyaWFibGVzLmJlZ2luKCk7
IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAgICBpZiAoIWdsb2JhbEVudlJlY29yZC5n
ZXQoKnB0cikuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CiAgICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBzY29w
ZS0+Z2V0Q2FwdHVyZWRWYXJpYWJsZXMoY2FwdHVyZWRWYXJpYWJsZXMpOwotICAgIG1fZ2xvYmFs
RGF0YS0+cGFyc2VyLT5kaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZh
ckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mZWF0
dXJlcygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0
TGluZSwgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgIG1f
Z2xvYmFsRGF0YS0+cGFyc2VyLT5kaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250
ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgY29udGV4
dC5mZWF0dXJlcygpIHwgKHNjb3BlLT5zdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlRmVhdHVyZSA6
IDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdExp
bmUsIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTM1NSwxMSArNTQ3LDMwIEBAIGJvb2wgSlNQYXJzZXI6OmFsbG93
QXV0b21hdGljU2VtaWNvbG9uKCkKICAgICByZXR1cm4gbWF0Y2goQ0xPU0VCUkFDRSkgfHwgbWF0
Y2goRU9GVE9LKSB8fCBtX2xleGVyLT5wcmV2VGVybWluYXRvcigpOwogfQogCi10ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBKU1BhcnNlcjo6cGFyc2VTb3Vy
Y2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxKU1BhcnNlcjo6U291
cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgSlNQYXJzZXI6OnBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7
CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVT
b3VyY2VFbGVtZW50cygpOwotICAgIHdoaWxlIChUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBh
cnNlU3RhdGVtZW50KGNvbnRleHQpKQorICAgIGJvb2wgc2Vlbk5vbkRpcmVjdGl2ZSA9IGZhbHNl
OworICAgIGNvbnN0IElkZW50aWZpZXIqIGRpcmVjdGl2ZSA9IDA7CisgICAgdW5zaWduZWQgc3Rh
cnRPZmZzZXQgPSBtX3Rva2VuLm1faW5mby5zdGFydE9mZnNldDsKKyAgICBib29sIGhhc1NldFN0
cmljdCA9IGZhbHNlOworICAgIHdoaWxlIChUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNl
U3RhdGVtZW50KGNvbnRleHQsIGRpcmVjdGl2ZSkpIHsKKyAgICAgICAgaWYgKG1vZGUgPT0gQ2hl
Y2tGb3JTdHJpY3RNb2RlICYmICFzZWVuTm9uRGlyZWN0aXZlKSB7CisgICAgICAgICAgICBpZiAo
ZGlyZWN0aXZlKSB7CisgICAgICAgICAgICAgICAgaWYgKCFoYXNTZXRTdHJpY3QgJiYgbV9nbG9i
YWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT51c2VTdHJpY3RJZGVudGlmaWVyID09ICpkaXJlY3RpdmUp
IHsKKyAgICAgICAgICAgICAgICAgICAgc2V0U3RyaWN0TW9kZSgpOworICAgICAgICAgICAgICAg
ICAgICBoYXNTZXRTdHJpY3QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShpc1ZhbGlkU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9sZXhlci0+c2V0
T2Zmc2V0KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAg
ICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOworICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBzZWVuTm9uRGlyZWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBjb250
ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsKKyAgICB9CiAK
ICAgICBpZiAobV9lcnJvcikKICAgICAgICAgZmFpbCgpOwpAQCAtMzk5LDcgKzYxMCwxMCBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNl
RG9XaGlsZVN0YXRlbWVudChUcmVlQgogICAgIEFTU0VSVChtYXRjaChETykpOwogICAgIGludCBz
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7Ci0gICAgVHJlZVN0YXRlbWVudCBz
dGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICBjb25zdCBJZGVudGlmaWVy
KiB1bnVzZWQgPSAwOworICAgIHN0YXJ0TG9vcCgpOworICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVt
ZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKKyAgICBlbmRMb29wKCk7CiAg
ICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgp
OwogICAgIGNvbnN1bWVPckZhaWwoV0hJTEUpOwpAQCAtNDIyLDcgKzYzNiwxMCBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlV2hpbGVT
dGF0ZW1lbnQoVHJlZUJ1aQogICAgIGZhaWxJZkZhbHNlKGV4cHIpOwogICAgIGludCBlbmRMaW5l
ID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKLSAgICBUcmVl
U3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOworICAgIGNvbnN0
IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CisgICAgc3RhcnRMb29wKCk7CisgICAgVHJlZVN0YXRl
bWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOworICAgIGVu
ZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVdoaWxlU3RhdGVtZW50KGV4cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KQEAgLTQ0MSw3ICs2NTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcgogICAgICAg
ICBsYXN0SWRlbnQgPSBuYW1lOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGJvb2wgaGFzSW5p
dGlhbGl6ZXIgPSBtYXRjaChFUVVBTCk7Ci0gICAgICAgIGRlY2xhcmVWYXJpYWJsZShuYW1lKTsK
KyAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFibGUobmFtZSkpOwogICAg
ICAgICBjb250ZXh0LmFkZFZhcihuYW1lLCAoaGFzSW5pdGlhbGl6ZXIgfHwgKCFtX2FsbG93c0lu
ICYmIG1hdGNoKElOVE9LRU4pKSkgPyBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIg
OiAwKTsKICAgICAgICAgaWYgKGhhc0luaXRpYWxpemVyKSB7CiAgICAgICAgICAgICBpbnQgdmFy
RGl2b3QgPSB0b2tlblN0YXJ0KCkgKyAxOwpAQCAtNDY1LDYgKzY4Miw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlVmFyRGVjbGFy
YXRpb25MaXN0KFRyCiAKIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVj
bExpc3QgSlNQYXJzZXI6OnBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImIGNv
bnRleHQpCiB7CisgICAgZmFpbElmVHJ1ZShzdHJpY3RNb2RlKCkpOwogICAgIFRyZWVDb25zdERl
Y2xMaXN0IGNvbnN0RGVjbHMgPSAwOwogICAgIFRyZWVDb25zdERlY2xMaXN0IHRhaWwgPSAwOwog
ICAgIGRvIHsKQEAgLTUzMiw3ICs3NTAsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUZvclN0YXRlbWVudChUcmVlQnVpbGQKICAg
ICAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChD
TE9TRVBBUkVOKTsKIAotICAgICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3Rh
dGVtZW50KGNvbnRleHQpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOwor
ICAgICAgICBzdGFydExvb3AoKTsKKyAgICAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBw
YXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOworICAgICAgICBlbmRMb29wKCk7CiAgICAg
ICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRm9ySW5Mb29wKGZvckluVGFyZ2V0LCBmb3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1l
bnQsIGRlY2xzU3RhcnQsIGluTG9jYXRpb24sIGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwg
c3RhcnRMaW5lLCBlbmRMaW5lKTsKQEAgLTU2Niw3ICs3ODcsMTAgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUZvclN0YXRlbWVudChU
cmVlQnVpbGQKICAgICAgICAgfQogICAgICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwog
ICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwotICAgICAgICBUcmVlU3RhdGVtZW50
IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICBjb25zdCBJZGVu
dGlmaWVyKiB1bnVzZWQgPSAwOworICAgICAgICBzdGFydExvb3AoKTsKKyAgICAgICAgVHJlZVN0
YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOworICAg
ICAgICBlbmRMb29wKCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AoZGVjbHMsIGNvbmRpdGlvbiwgaW5jcmVtZW50
LCBzdGF0ZW1lbnQsIGhhc0RlY2xhcmF0aW9uLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0K
QEAgLTU3OSw3ICs4MDMsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IEpTUGFyc2VyOjpwYXJzZUZvclN0YXRlbWVudChUcmVlQnVpbGQKICAgICBpbnQgZXhw
ckVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAg
ICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKLSAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVu
dCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOworICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNl
ZCA9IDA7CisgICAgc3RhcnRMb29wKCk7CisgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBw
YXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOworICAgIGVuZExvb3AoKTsKICAgICBmYWls
SWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvcklu
TG9vcChkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVu
ZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKQEAgLTU5NCwxMCArODIxLDEzIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VCcmVha1N0YXRl
bWVudChUcmVlQnVpCiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7
CiAKLSAgICBpZiAoYXV0b1NlbWlDb2xvbigpKQorICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsK
KyAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChicmVha0lzVmFsaWQoKSk7CiAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgfQogICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgIGZhaWxJZkZh
bHNlSWZTdHJpY3QoaGFzTGFiZWwoaWRlbnQpKTsKICAgICBlbmRDb2wgPSB0b2tlbkVuZCgpOwog
ICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CkBAIC02MTQsMTAgKzg0NCwx
MyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6
OnBhcnNlQ29udGludWVTdGF0ZW1lbnQoVHJlZQogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5l
KCk7CiAgICAgbmV4dCgpOwogCi0gICAgaWYgKGF1dG9TZW1pQ29sb24oKSkKKyAgICBpZiAoYXV0
b1NlbWlDb2xvbigpKSB7CisgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoYnJlYWtJc1ZhbGlk
KCkpOwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb250aW51ZVN0YXRlbWVudChzdGFy
dENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIH0KICAgICBtYXRjaE9yRmFp
bChJREVOVCk7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5p
ZGVudDsKKyAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGhhc0xhYmVsKGlkZW50KSk7CiAgICAgZW5k
Q29sID0gdG9rZW5FbmQoKTsKICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgp
OwpAQCAtNjI4LDYgKzg2MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VDb250aW51ZVN0YXRlbWVudChUcmVlCiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlUmV0dXJuU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChSRVRVUk4p
KTsKKyAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGN1cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9uKCkp
OwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHN0
YXJ0TGluZTsKICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CkBAIC02NjgsNyArOTAyLDgg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpw
YXJzZVRocm93U3RhdGVtZW50KFRyZWVCdWkKIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VXaXRoU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBj
b250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChXSVRIKSk7Ci0gICAgY3VycmVudFNjb3BlKCkt
Pm5lZWRzRnVsbEFjdGl2YXRpb24oKTsKKyAgICBmYWlsSWZUcnVlKHN0cmljdE1vZGUoKSk7Cisg
ICAgY3VycmVudFNjb3BlKCktPnNldE5lZWRzRnVsbEFjdGl2YXRpb24oKTsKICAgICBpbnQgc3Rh
cnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoT1BF
TlBBUkVOKTsKQEAgLTY3OSw4ICs5MTQsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlV2l0aFN0YXRlbWVudChUcmVlQnVpbAogCiAg
ICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFS
RU4pOwotICAgIAotICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQo
Y29udGV4dCk7CisgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICBUcmVlU3Rh
dGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAg
ZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKIAogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdpdGhT
dGF0ZW1lbnQoZXhwciwgc3RhdGVtZW50LCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUp
OwpAQCAtNjk3LDcgKzkzMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTd2l0Y2hTdGF0ZW1lbnQoVHJlZUJ1CiAgICAgaW50IGVu
ZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogICAg
IGNvbnN1bWVPckZhaWwoT1BFTkJSQUNFKTsKLQorICAgIHN0YXJ0U3dpdGNoKCk7CiAgICAgVHJl
ZUNsYXVzZUxpc3QgZmlyc3RDbGF1c2VzID0gcGFyc2VTd2l0Y2hDbGF1c2VzKGNvbnRleHQpOwog
ICAgIGZhaWxJZlRydWUobV9lcnJvcik7CiAKQEAgLTcwNiw2ICs5NDEsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3dpdGNoU3Rh
dGVtZW50KFRyZWVCdQogCiAgICAgVHJlZUNsYXVzZUxpc3Qgc2Vjb25kQ2xhdXNlcyA9IHBhcnNl
U3dpdGNoQ2xhdXNlcyhjb250ZXh0KTsKICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOworICAgIGVu
ZFN3aXRjaCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSk7CiAKICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0
Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOwpAQCAtNzIwLDcgKzk1
Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUxpc3QgSlNQYXJz
ZXI6OnBhcnNlU3dpdGNoQ2xhdXNlcyhUcmVlQnVpCiAgICAgVHJlZUV4cHJlc3Npb24gY29uZGl0
aW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlv
bik7CiAgICAgY29uc3VtZU9yRmFpbChDT0xPTik7Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0
YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOworICAgIFRyZWVTb3VyY2VF
bGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJp
Y3RNb2RlPihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnRzKTsKICAgICBUcmVl
Q2xhdXNlIGNsYXVzZSA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3RhdGVtZW50
cyk7CiAgICAgVHJlZUNsYXVzZUxpc3QgY2xhdXNlTGlzdCA9IGNvbnRleHQuY3JlYXRlQ2xhdXNl
TGlzdChjbGF1c2UpOwpAQCAtNzMxLDcgKzk2Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUNsYXVzZUxpc3QgSlNQYXJzZXI6OnBhcnNlU3dpdGNoQ2xhdXNlcyhUcmVlQnVp
CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbmRpdGlvbiA9IHBhcnNlRXhwcmVzc2lvbihjb250
ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoY29uZGl0aW9uKTsKICAgICAgICAgY29uc3VtZU9y
RmFpbChDT0xPTik7Ci0gICAgICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFy
c2VTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKKyAgICAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0
YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNv
bnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnRzKTsKICAgICAgICAgY2xhdXNl
ID0gY29udGV4dC5jcmVhdGVDbGF1c2UoY29uZGl0aW9uLCBzdGF0ZW1lbnRzKTsKICAgICAgICAg
dGFpbCA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlTGlzdCh0YWlsLCBjbGF1c2UpOwpAQCAtNzQ1LDcg
Kzk4MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZSBKU1BhcnNl
cjo6cGFyc2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKFRyZWVCCiAgICAgICAgIHJldHVybiAwOwogICAg
IG5leHQoKTsKICAgICBjb25zdW1lT3JGYWlsKENPTE9OKTsKLSAgICBUcmVlU291cmNlRWxlbWVu
dHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCk7CisgICAgVHJlZVNv
dXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERvbnRDaGVja0Zv
clN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMpOwogICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUNsYXVzZSgwLCBzdGF0ZW1lbnRzKTsKIH0KQEAgLTc2Nywx
NCArMTAwMywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
SlNQYXJzZXI6OnBhcnNlVHJ5U3RhdGVtZW50KFRyZWVCdWlsZAogICAgIGludCBsYXN0TGluZSA9
IG1fbGFzdExpbmU7CiAKICAgICBpZiAobWF0Y2goQ0FUQ0gpKSB7Ci0gICAgICAgIGN1cnJlbnRT
Y29wZSgpLT5uZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5z
ZXROZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgY29uc3Vt
ZU9yRmFpbChPUEVOUEFSRU4pOwogICAgICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgICAg
IGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAg
U2NvcGVSZWYgY2F0Y2hTY29wZSA9IHB1c2hTY29wZSgpOwotICAgICAgICBjYXRjaFNjb3BlLT5k
ZWNsYXJlVmFyaWFibGUoaWRlbnQpOworICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGNhdGNo
U2NvcGUtPmRlY2xhcmVWYXJpYWJsZShpZGVudCkpOwogICAgICAgICBjYXRjaFNjb3BlLT5wcmV2
ZW50TmV3RGVjbHMoKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICAg
ICAgbWF0Y2hPckZhaWwoT1BFTkJSQUNFKTsKQEAgLTc4Miw3ICsxMDE4LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZVRyeVN0YXRl
bWVudChUcmVlQnVpbGQKICAgICAgICAgY2F0Y2hCbG9jayA9IHBhcnNlQmxvY2tTdGF0ZW1lbnQo
Y29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGNhdGNoQmxvY2spOwogICAgICAgICBjYXRj
aEhhc0V2YWwgPSBpbml0aWFsRXZhbENvdW50ICE9IGNvbnRleHQuZXZhbENvdW50KCk7Ci0gICAg
ICAgIHBvcFNjb3BlKGNhdGNoU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUlu
Zm8pOworICAgICAgICBmYWlsSWZGYWxzZShwb3BTY29wZShjYXRjaFNjb3BlLCBUcmVlQnVpbGRl
cjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSk7CiAgICAgfQogCiAgICAgaWYgKG1hdGNoKEZJTkFM
TFkpKSB7CkBAIC04MTYsMTUgKzEwNTIsMTkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUJsb2NrU3RhdGVtZW50KFRyZWVCdWkKICAg
ICAgICAgbmV4dCgpOwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0YXRlbWVu
dCgwLCBzdGFydCwgbV9sYXN0TGluZSk7CiAgICAgfQotICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
dWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKKyAgICBUcmVlU291cmNlRWxl
bWVudHMgc3VidHJlZSA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3RyaWN0TW9k
ZT4oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uoc3VidHJlZSk7CiAgICAgbWF0Y2hPckZhaWwo
Q0xPU0VCUkFDRSk7CiAgICAgbmV4dCgpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KHN1YnRyZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKIH0KIAotdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZVN0YXRlbWVudChU
cmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNv
bnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUpCiB7CisgICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVu
dERlcHRoKCZtX3N0YXRlbWVudERlcHRoKTsKKyAgICBtX3N0YXRlbWVudERlcHRoKys7CisgICAg
ZGlyZWN0aXZlID0gMDsKKyAgICBpbnQgbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCA9IDA7CiAg
ICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOwogICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsK
ICAgICBjYXNlIE9QRU5CUkFDRToKQEAgLTgzNCw2ICsxMDc0LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZVN0YXRlbWVudChUcmVl
QnVpbGRlciYKICAgICBjYXNlIENPTlNUVE9LRU46CiAgICAgICAgIHJldHVybiBwYXJzZUNvbnN0
RGVjbGFyYXRpb24oY29udGV4dCk7CiAgICAgY2FzZSBGVU5DVElPTjoKKyAgICAgICAgZmFpbElm
RmFsc2VJZlN0cmljdChtX3N0YXRlbWVudERlcHRoID09IDEpOwogICAgICAgICByZXR1cm4gcGFy
c2VGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnRleHQpOwogICAgIGNhc2UgU0VNSUNPTE9OOgogICAg
ICAgICBuZXh0KCk7CkBAIC04NzAsOCArMTExMSwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVy
JgogICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIElERU5UOgogICAgICAgICByZXR1cm4gcGFy
c2VFeHByZXNzaW9uT3JMYWJlbFN0YXRlbWVudChjb250ZXh0KTsKKyAgICBjYXNlIFNUUklORzoK
KyAgICAgICAgZGlyZWN0aXZlID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgIG5vblRy
aXZpYWxFeHByZXNzaW9uQ291bnQgPSBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQ7CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudChjb250ZXh0
KTsKKyAgICAgICAgVHJlZVN0YXRlbWVudCBleHByU3RhdGVtZW50ID0gcGFyc2VFeHByZXNzaW9u
U3RhdGVtZW50KGNvbnRleHQpOworICAgICAgICBpZiAoZGlyZWN0aXZlICYmIG5vblRyaXZpYWxF
eHByZXNzaW9uQ291bnQgIT0gbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50KQorICAgICAgICAg
ICAgZGlyZWN0aXZlID0gMDsKKyAgICAgICAgcmV0dXJuIGV4cHJTdGF0ZW1lbnQ7CiAgICAgfQog
fQogCkBAIC04NzksNyArMTEyNiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUZvcm1hbFBhcmFtZXRlckxpc3QgSlNQYXJzZXI6OnBhcnNlRm9ybWFsUGFyYW1lCiB7CiAgICAg
bWF0Y2hPckZhaWwoSURFTlQpOwogICAgIHVzZXNBcmd1bWVudHMgPSBtX2dsb2JhbERhdGEtPnBy
b3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqbV90b2tlbi5tX2RhdGEuaWRlbnQ7Ci0gICAgZGVj
bGFyZVZhcmlhYmxlKG1fdG9rZW4ubV9kYXRhLmlkZW50KTsKKyAgICBmYWlsSWZGYWxzZUlmU3Ry
aWN0KGRlY2xhcmVQYXJhbWV0ZXIobV90b2tlbi5tX2RhdGEuaWRlbnQpKTsKICAgICBUcmVlRm9y
bWFsUGFyYW1ldGVyTGlzdCBsaXN0ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0
KCptX3Rva2VuLm1fZGF0YS5pZGVudCk7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgdGFp
bCA9IGxpc3Q7CiAgICAgbmV4dCgpOwpAQCAtODg3LDcgKzExMzQsOCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IEpTUGFyc2VyOjpwYXJzZUZv
cm1hbFBhcmFtZQogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsK
LSAgICAgICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgdXNlc0FyZ3VtZW50cyB8
PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqbV90b2tlbi5tX2Rh
dGEuaWRlbnQ7CisgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVBhcmFtZXRlcihp
ZGVudCkpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIHVzZXNBcmd1bWVudHMgPSB1c2VzQXJn
dW1lbnRzIHx8IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVu
dDsKICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCh0YWls
LCAqaWRlbnQpOwpAQCAtODk4LDEwICsxMTQ2LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgSlNQYXJzZXI6OnBhcnNlRm9ybWFsUGFyYW1l
CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgSlNQYXJzZXI6
OnBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGlmIChtYXRj
aChDTE9TRUJSQUNFKSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5
KCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdHJpY3RNb2Rl
KCkpOworICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7
CisgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDA7CiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1
bmN0aW9uQm9keUJ1aWxkZXIgYm9keUJ1aWxkZXIobV9nbG9iYWxEYXRhLCBtX2xleGVyKTsKLSAg
ICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGJvZHlCdWlsZGVyKSk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KCk7CisgICAgZmFpbElmRmFsc2UocGFyc2VT
b3VyY2VFbGVtZW50czxDaGVja0ZvclN0cmljdE1vZGU+KGJvZHlCdWlsZGVyKSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0cmljdE1vZGUoKSk7CiB9CiAKIHRlbXBs
YXRlIDxKU1BhcnNlcjo6RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5h
bWVJc0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBKU1BhcnNlcjo6
cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIq
JiBuYW1lLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCYgcGFyYW1ldGVycywgVHJlZUZ1bmN0aW9u
Qm9keSYgYm9keSwgaW50JiBvcGVuQnJhY2VQb3MsIGludCYgY2xvc2VCcmFjZVBvcywgaW50JiBi
b2R5U3RhcnRMaW5lKQpAQCAtOTExLDcgKzExNjEsNyBAQCB0ZW1wbGF0ZSA8SlNQYXJzZXI6OkZ1
bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdT
YwogICAgICAgICBuYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgaWYgKCFuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSkKLSAgICAgICAgICAgIGZ1bmN0
aW9uU2NvcGUtPmRlY2xhcmVWYXJpYWJsZShuYW1lKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNl
SWZTdHJpY3QoZnVuY3Rpb25TY29wZS0+ZGVjbGFyZVZhcmlhYmxlKG5hbWUpKTsKICAgICB9IGVs
c2UgaWYgKHJlcXVpcmVtZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFtZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTkzMSw3ICsxMTgxLDEx
IEBAIHRlbXBsYXRlIDxKU1BhcnNlcjo6RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRz
LCBib29sIG5hbWVJc0luQ29udGFpbmluZ1NjCiAgICAgZmFpbElmRmFsc2UoYm9keSk7CiAgICAg
aWYgKHVzZXNBcmd1bWVudHMpCiAgICAgICAgIGNvbnRleHQuc2V0VXNlc0FyZ3VtZW50cyhib2R5
KTsKLSAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKTsKKyAgICBpZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIG5hbWUp
IHsKKyAgICAgICAgZmFpbElmVHJ1ZShtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3Vt
ZW50cyA9PSAqbmFtZSk7CisgICAgICAgIGZhaWxJZlRydWUobV9nbG9iYWxEYXRhLT5wcm9wZXJ0
eU5hbWVzLT5ldmFsID09ICpuYW1lKTsKKyAgICB9CisgICAgZmFpbElmRmFsc2UocG9wU2NvcGUo
ZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwogICAg
IG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UpOwogICAgIGNsb3NlQnJhY2VQb3MgPSBtX3Rva2VuLm1f
ZGF0YS5pbnRWYWx1ZTsKICAgICBuZXh0KCk7CkBAIC05NTAsNyArMTIwNCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VGdW5jdGlv
bkRlY2xhcmF0aW9uKFRyCiAgICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwogICAgIGZhaWxJZkZh
bHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5lZWRzTmFtZSwgdHJ1ZT4oY29udGV4dCwg
bmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5
U3RhcnRMaW5lKSkpOwogICAgIGZhaWxJZkZhbHNlKG5hbWUpOwotICAgIGRlY2xhcmVWYXJpYWJs
ZShuYW1lKTsKKyAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShuYW1lKSk7
CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobmFtZSwgYm9keSwg
cGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBt
X2xhc3RMaW5lKTsKIH0KIApAQCAtOTczLDcgKzEyMjcsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25PckxhYmVs
U3RhdGUKICAgICBmYWlsSWZGYWxzZShjdXJyZW50VG9rZW4gKyAxID09IG1fdG9rZW5Db3VudCk7
CiAgICAgaW50IGVuZCA9IHRva2VuRW5kKCk7CiAgICAgY29uc3VtZU9yRmFpbChDT0xPTik7Ci0g
ICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAg
ICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIGlmIChzdHJpY3RNb2RlKCkgJiYg
IW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkKKyAgICAgICAgcHVzaExhYmVsKGlkZW50KTsKKyAg
ICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNl
ZCk7CisgICAgaWYgKHN0cmljdE1vZGUoKSAmJiAhbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKQor
ICAgICAgICBwb3BMYWJlbCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQoaWRlbnQsIHN0YXRlbWVudCwgc3RhcnQs
IGVuZCk7CiB9CkBAIC0xMDAxLDcgKzEyNjAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQoVHJlZUJ1aWxkZQog
ICAgIGludCBlbmQgPSB0b2tlbkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4p
OwogCi0gICAgVHJlZVN0YXRlbWVudCB0cnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0
KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIFRyZWVTdGF0ZW1lbnQg
dHJ1ZUJsb2NrID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBmYWlsSWZG
YWxzZSh0cnVlQmxvY2spOwogCiAgICAgaWYgKCFtYXRjaChFTFNFKSkKQEAgLTEwMTQsNyArMTI3
NCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNl
cjo6cGFyc2VJZlN0YXRlbWVudChUcmVlQnVpbGRlCiAgICAgZG8gewogICAgICAgICBuZXh0KCk7
CiAgICAgICAgIGlmICghbWF0Y2goSUYpKSB7Ci0gICAgICAgICAgICBUcmVlU3RhdGVtZW50IGJs
b2NrID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiB1bnVzZWQgPSAwOworICAgICAgICAgICAgVHJlZVN0YXRlbWVudCBibG9jayA9IHBhcnNl
U3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShibG9j
ayk7CiAgICAgICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoYmxvY2spOwogICAgICAgICAg
ICAgdHJhaWxpbmdFbHNlID0gdHJ1ZTsKQEAgLTEwMjksOCArMTI5MCw4IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VJZlN0YXRlbWVu
dChUcmVlQnVpbGRlCiAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyQ29uZGl0aW9uKTsKICAgICAg
ICAgaW50IGlubmVyRW5kID0gdG9rZW5MaW5lKCk7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xP
U0VQQVJFTik7Ci0gICAgICAgIAotICAgICAgICBUcmVlU3RhdGVtZW50IGlubmVyVHJ1ZUJsb2Nr
ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHVu
dXNlZCA9IDA7CisgICAgICAgIFRyZWVTdGF0ZW1lbnQgaW5uZXJUcnVlQmxvY2sgPSBwYXJzZVN0
YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgICAgICBmYWlsSWZGYWxzZShpbm5lclRydWVC
bG9jayk7ICAgICAKICAgICAgICAgZXhwclN0YWNrLmFwcGVuZChpbm5lckNvbmRpdGlvbik7CiAg
ICAgICAgIHBvc1N0YWNrLmFwcGVuZChtYWtlX3BhaXIoaW5uZXJTdGFydCwgaW5uZXJFbmQpKTsK
QEAgLTEwNzAsNiArMTMzMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlRXhwcmVzc2lvbihUcmVlQnVpbGRlCiAgICAgaWYgKCFt
YXRjaChDT01NQSkpCiAgICAgICAgIHJldHVybiBub2RlOwogICAgIG5leHQoKTsKKyAgICBtX25v
blRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAgVHJl
ZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGZhaWxJZkZhbHNlKHJpZ2h0KTsKQEAgLTExMTUsMTEgKzEzNzcsMTcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VBc3Np
Z25tZW50RXhwcmVzc2kKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGdvdG8gZW5kOwog
ICAgICAgICB9CisgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAg
ICBoYWRBc3NpZ25tZW50ID0gdHJ1ZTsKICAgICAgICAgY29udGV4dC5hc3NpZ25tZW50U3RhY2tB
cHBlbmQoYXNzaWdubWVudFN0YWNrLCBsaHMsIHN0YXJ0LCB0b2tlblN0YXJ0KCksIG1fYXNzaWdu
bWVudENvdW50LCBvcCk7CiAgICAgICAgIHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgICAgICBt
X2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBuZXh0KCk7CisgICAgICAgIGlmIChzdHJpY3RN
b2RlKCkgJiYgbV9sYXN0SWRlbnRpZmllciAmJiBjb250ZXh0LmlzUmVzb2x2ZShsaHMpKSB7Cisg
ICAgICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QobV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5ldmFsID09ICptX2xhc3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGRlY2xhcmVXcml0ZSht
X2xhc3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fbGFzdElkZW50aWZpZXIgPSAwOworICAg
ICAgICB9CiAgICAgICAgIGxocyA9IHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGNvbnRleHQp
OwogICAgICAgICBmYWlsSWZGYWxzZShsaHMpOwogICAgICAgICBpZiAoaW5pdGlhbE5vbkxIU0Nv
dW50ICE9IG1fbm9uTEhTQ291bnQpCkBAIC0xMTQ0LDYgKzE0MTIsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZUNvbmRpdGlvbmFs
RXhwcmVzc2lvbgogICAgIGZhaWxJZkZhbHNlKGNvbmQpOwogICAgIGlmICghbWF0Y2goUVVFU1RJ
T04pKQogICAgICAgICByZXR1cm4gY29uZDsKKyAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291
bnQrKzsKICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAgbmV4dCgpOwogICAgIFRyZWVFeHByZXNz
aW9uIGxocyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0xMTgxLDYg
KzE0NTAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpT
UGFyc2VyOjpwYXJzZUJpbmFyeUV4cHJlc3Npb24oVHJlZQogICAgICAgICBpbnQgcHJlY2VkZW5j
ZSA9IGlzQmluYXJ5T3BlcmF0b3IobV90b2tlbi5tX3R5cGUpOwogICAgICAgICBpZiAoIXByZWNl
ZGVuY2UpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lv
bkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKICAgICAgICAgaW50IG9wZXJhdG9y
VG9rZW4gPSBtX3Rva2VuLm1fdHlwZTsKICAgICAgICAgbmV4dCgpOwpAQCAtMTE5Niw3ICsxNDY2
LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNl
cjo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKFRyZWUKICAgICAgICAgfQogICAgICAgICBjb250ZXh0
Lm9wZXJhdG9yU3RhY2tBcHBlbmQob3BlcmF0b3JTdGFja0RlcHRoLCBvcGVyYXRvclRva2VuLCBw
cmVjZWRlbmNlKTsKICAgICB9Ci0KICAgICB3aGlsZSAob3BlcmF0b3JTdGFja0RlcHRoKSB7CiAg
ICAgICAgIEFTU0VSVChvcGVyYW5kU3RhY2tEZXB0aCA+IDEpOwogCkBAIC0xMzI3LDYgKzE1OTYs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2Vy
OjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoVAogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFk
eVZhbGlkYXRlZCkgewogICAgICAgICAgICAgc3RkOjpwYWlyPE9iamVjdFZhbGlkYXRpb25NYXA6
Oml0ZXJhdG9yLCBib29sPiBwcm9wZXJ0eUVudHJ5SXRlciA9IG9iamVjdFZhbGlkYXRvci5hZGQo
Y29udGV4dC5nZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSkpOwogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eUVudHJ5SXRlci5zZWNvbmQpIHsKKyAgICAg
ICAgICAgICAgICBmYWlsSWZUcnVlKHN0cmljdE1vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KChjb250ZXh0LmdldFR5cGUocHJvcGVydHkpICYgcHJvcGVydHlFbnRyeUl0ZXIuZmlyc3QtPnNl
Y29uZCkgIT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCkgewogICAgICAgICAgICAgICAgICAgICAv
LyBDYW4ndCBoYXZlIG11bHRpcGxlIGdldHRlcnMgb3Igc2V0dGVycyB3aXRoIHRoZSBzYW1lIG5h
bWUsIG5vciBjYW4gd2UgZGVmaW5lIAogICAgICAgICAgICAgICAgICAgICAvLyBhIHByb3BlcnR5
IGFzIGJvdGggYW4gYWNjZXNzb3IgYW5kIGEgY29uc3RhbnQgdmFsdWUKQEAgLTEzODksNiArMTY1
OSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJz
ZXI6OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24oVHJlCiB7CiAgICAgc3dpdGNoIChtX3Rva2VuLm1f
dHlwZSkgewogICAgIGNhc2UgT1BFTkJSQUNFOgorICAgICAgICBpZiAoc3RyaWN0TW9kZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChjb250ZXh0KTsKICAg
ICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0TGl0ZXJhbChjb250ZXh0KTsKICAgICBjYXNlIE9QRU5C
UkFDS0VUOgogICAgICAgICByZXR1cm4gcGFyc2VBcnJheUxpdGVyYWwoY29udGV4dCk7CkBAIC0x
NDEwLDYgKzE2ODIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIEpTUGFyc2VyOjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKFRyZQogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7
CiAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgbV9nbG9iYWxEYXRh
LT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICppZGVudCk7CisgICAgICAgIG1fbGFzdElkZW50aWZp
ZXIgPSBpZGVudDsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmVzb2x2ZShpZGVudCwg
c3RhcnQpOwogICAgIH0KICAgICBjYXNlIFNUUklORzogewpAQCAtMTQ4NSw2ICsxNzU4LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFy
c2VNZW1iZXJFeHByZXNzaW9uKFRyZWUKICAgICAgICAgbmV4dCgpOwogICAgICAgICBuZXdDb3Vu
dCsrOwogICAgIH0KKwogICAgIGlmIChtYXRjaChGVU5DVElPTikpIHsKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogbmFtZSA9ICZtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyOwogICAgICAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJhbWV0ZXJzID0gMDsK
QEAgLTE1MDIsNiArMTc3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbihUcmVlCiAgICAgd2hpbGUg
KHRydWUpIHsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewogICAgICAgICBjYXNl
IE9QRU5CUkFDS0VUOiB7CisgICAgICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQr
KzsKICAgICAgICAgICAgIGludCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAg
ICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpbnQgbm9uTEhTQ291bnQgPSBtX25vbkxIU0Nv
dW50OwpAQCAtMTUxNSw2ICsxNzkwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWUKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgT1BFTlBBUkVOOiB7CisgICAg
ICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgICAgIGlmIChu
ZXdDb3VudCkgewogICAgICAgICAgICAgICAgIG5ld0NvdW50LS07CiAgICAgICAgICAgICAgICAg
aWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKQEAgLTE1MzUsNiArMTgxMSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhw
cmVzc2lvbihUcmVlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IERPVDogeworICAgICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAg
ICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAg
bmV4dChMZXhlcjo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7CiAgICAgICAgICAgICBtYXRjaE9yRmFp
bChJREVOVCk7CkBAIC0xNTU2LDI1ICsxODMzLDU5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlVW5hcnlFeHByZXNzaW9uKFRyZWVC
CiB7CiAgICAgQWxsb3dJbk92ZXJyaWRlIGFsbG93SW5PdmVycmlkZSh0aGlzKTsKICAgICBpbnQg
dG9rZW5TdGFja0RlcHRoID0gMDsKKyAgICBib29sIG1vZGlmaWVzRXhwciA9IGZhbHNlOworICAg
IGJvb2wgcmVxdWlyZXNMRXhwciA9IGZhbHNlOwogICAgIHdoaWxlIChpc1VuYXJ5T3AobV90b2tl
bi5tX3R5cGUpKSB7CisgICAgICAgIGlmIChzdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUExVU1BMVVM6CisgICAg
ICAgICAgICBjYXNlIE1JTlVTTUlOVVM6CisgICAgICAgICAgICBjYXNlIEFVVE9QTFVTUExVUzoK
KyAgICAgICAgICAgIGNhc2UgQVVUT01JTlVTTUlOVVM6CisgICAgICAgICAgICAgICAgZmFpbElm
VHJ1ZShyZXF1aXJlc0xFeHByKTsKKyAgICAgICAgICAgICAgICBtb2RpZmllc0V4cHIgPSB0cnVl
OworICAgICAgICAgICAgICAgIHJlcXVpcmVzTEV4cHIgPSB0cnVlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKKyAgICAgICAgICAgICAgICBm
YWlsSWZUcnVlKHJlcXVpcmVzTEV4cHIpOworICAgICAgICAgICAgICAgIHJlcXVpcmVzTEV4cHIg
PSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBmYWlsSWZUcnVlKHJlcXVpcmVzTEV4cHIpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIG1fbm9uTEhTQ291bnQr
KzsKICAgICAgICAgY29udGV4dC5hcHBlbmRVbmFyeVRva2VuKHRva2VuU3RhY2tEZXB0aCwgbV90
b2tlbi5tX3R5cGUsIHRva2VuU3RhcnQoKSk7CiAgICAgICAgIG5leHQoKTsKKyAgICAgICAgbV9u
b25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgfQogICAgIGludCBzdWJFeHByU3RhcnQg
PSB0b2tlblN0YXJ0KCk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlTWVtYmVyRXhw
cmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByKTsKKyAgICBib29sIGlzRXZh
bCA9IGZhbHNlOworICAgIGlmIChzdHJpY3RNb2RlKCkgJiYgIW1fc3ludGF4QWxyZWFkeVZhbGlk
YXRlZCkgeworICAgICAgICBpZiAoY29udGV4dC5pc1Jlc29sdmUoZXhwcikpCisgICAgICAgICAg
ICBpc0V2YWwgPSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKm1fbGFzdElk
ZW50aWZpZXI7CisgICAgfQorICAgIGZhaWxJZlRydWVJZlN0cmljdChpc0V2YWwgJiYgbW9kaWZp
ZXNFeHByKTsKICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgY2FzZSBQTFVTUExV
UzoKKyAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9u
TEhTQ291bnQrKzsKICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGV4cHIs
IE9wUGx1c1BsdXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwog
ICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOworICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3Qo
aXNFdmFsKTsKKyAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KHJlcXVpcmVzTEV4cHIpOwogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlOVVNNSU5VUzoKKyAgICAg
ICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQr
KzsKICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGV4cHIsIE9wTWludXNN
aW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAg
IG1fYXNzaWdubWVudENvdW50Kys7CisgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChpc0V2YWwp
OworICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CiAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE1ODMsNyArMTg5NCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBh
cnNlVW5hcnlFeHByZXNzaW9uKFRyZWVCCiAKICAgICBpbnQgZW5kID0gbGFzdFRva2VuRW5kKCk7
CiAKLSAgICBpZiAoIVRyZWVCdWlsZGVyOjpDcmVhdGVzQVNUKQorICAgIGlmICghVHJlZUJ1aWxk
ZXI6OkNyZWF0ZXNBU1QgJiYgKG1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCB8fCAhc3RyaWN0TW9k
ZSgpKSkKICAgICAgICAgcmV0dXJuIGV4cHI7CiAKICAgICB3aGlsZSAodG9rZW5TdGFja0RlcHRo
KSB7CkBAIC0xNjE3LDYgKzE5MjgsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbihUcmVlQgogICAgICAg
ICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChleHByKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIERFTEVURVRPS0VOOgorICAgICAgICAgICAgaWYgKHN0cmljdE1vZGUo
KSAmJiBjb250ZXh0LmlzUmVzb2x2ZShleHByKSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShkZWxldGVQcm9wZXJ0eShtX2xhc3RJZGVudGlmaWVyKSk7CiAgICAgICAgICAgICBleHByID0g
Y29udGV4dC5tYWtlRGVsZXRlTm9kZShleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RT
dGFydCh0b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNl
ci5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmgKaW5kZXggYWIxOGZhYjFlOTc4
ODllNDhiY2YwMWJmZDc2OTdmOGM5ZjZlNjgwZC4uNGQ2MzBiMDUyN2QwMzFmNzUwYTI4NmJkMWQ4
ZDExZTkzYTk1NDkzNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2Vy
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmgKQEAgLTI4LDkgKzI4LDEw
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBGdW5jdGlv
blBhcmFtZXRlcnM7CiBjbGFzcyBJZGVudGlmaWVyOwotY2xhc3MgSlNHbG9iYWxEYXRhOworY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBTb3VyY2VDb2RlOwogCiBlbnVtIHsKQEAgLTE1NSw2
ICsxNTYsNiBAQCBzdHJ1Y3QgSlNUb2tlbiB7CiAgICAgSlNUb2tlbkluZm8gbV9pbmZvOwogfTsK
IAotaW50IGpzUGFyc2UoSlNHbG9iYWxEYXRhKiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3Qg
U291cmNlQ29kZSopOworaW50IGpzUGFyc2UoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBG
dW5jdGlvblBhcmFtZXRlcnMqLCBib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU291cmNlQ29k
ZSopOwogfQogI2VuZGlmIC8vIEpTUGFyc2VyX2gKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4
IGNjNDMyMWQ2MTFjM2RhMDhiNzdmYTkzZWZkOWRkNjhmMTBjM2QzNjUuLjIzOTcyOWVlYWUxYTI4
NGUwNDAzMjJhNDcwNTc0ZDI2Y2JhZThmMTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAt
NDUzLDcgKzQ1Myw3IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI6OnBhcnNlSWRl
bnRpZmllcihKU1Rva2VuRGF0YSogbHZhbHAsIExleFR5cGUgbGV4CiAgICAgcmV0dXJuIElERU5U
OwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRh
KiBsdmFscCkKK0FMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcoSlNUb2tlbkRh
dGEqIGx2YWxwLCBib29sIHN0cmljdE1vZGUpCiB7CiAgICAgaW50IHN0cmluZ1F1b3RlQ2hhcmFj
dGVyID0gbV9jdXJyZW50OwogICAgIHNoaWZ0KCk7CkBAIC00OTQsNiArNDk0LDggQEAgQUxXQVlT
X0lOTElORSBib29sIExleGVyOjpwYXJzZVN0cmluZyhKU1Rva2VuRGF0YSogbHZhbHApCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNB
U0NJSU9jdGFsRGlnaXQobV9jdXJyZW50KSkgewogICAgICAgICAgICAgICAgIC8vIE9jdGFsIGNo
YXJhY3RlciBzZXF1ZW5jZXMKKyAgICAgICAgICAgICAgICBpZiAoc3RyaWN0TW9kZSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGludCBjaGFyYWN0
ZXIxID0gbV9jdXJyZW50OwogICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkpIHsKQEAgLTY5Niw3ICs2OTgsNyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlTXVsdGlsaW5lQ29tbWVudCgpCiAgICAg
fQogfQogCi1KU1Rva2VuVHlwZSBMZXhlcjo6bGV4KEpTVG9rZW5EYXRhKiBsdmFscCwgSlNUb2tl
bkluZm8qIGxsb2NwLCBMZXhUeXBlIGxleFR5cGUpCitKU1Rva2VuVHlwZSBMZXhlcjo6bGV4KEpT
VG9rZW5EYXRhKiBsdmFscCwgSlNUb2tlbkluZm8qIGxsb2NwLCBMZXhUeXBlIGxleFR5cGUsIGJv
b2wgc3RyaWN0TW9kZSkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3IpOwogICAgIEFTU0VSVChtX2J1
ZmZlcjguaXNFbXB0eSgpKTsKQEAgLTk3Niw4ICs5NzgsMTEgQEAgc3RhcnQ6CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICByZWNvcmQ4KCcwJyk7CiAgICAgICAgICAgICBpZiAoaXNBU0NJ
SU9jdGFsRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICAgICAgICAgIGlmIChwYXJzZU9jdGFs
KGx2YWxwLT5kb3VibGVWYWx1ZSkpCisgICAgICAgICAgICAgICAgaWYgKHBhcnNlT2N0YWwobHZh
bHAtPmRvdWJsZVZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0TW9kZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICAg
ICAgICAgIHRva2VuID0gTlVNQkVSOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAvLyBGYWxsIHRocm91Z2ggaW50byBDaGFyYWN0ZXJOdW1iZXIK
QEAgLTEwMDYsNyArMTAxMSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAg
IG1fZGVsaW1pdGVkID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2hhcmFjdGVy
UXVvdGU6Ci0gICAgICAgIGlmIChVTkxJS0VMWSghcGFyc2VTdHJpbmcobHZhbHApKSkKKyAgICAg
ICAgaWYgKFVOTElLRUxZKCFwYXJzZVN0cmluZyhsdmFscCwgc3RyaWN0TW9kZSkpKQogICAgICAg
ICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgbV9kZWxp
bWl0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
IGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggZTZjMWVmZDE0MDdiMGM5YThh
YjUwMmFkNDdkOWNjMjJhMDcyNjhhMC4uNGQyNTEzZDBmZjQxNjBlZWI1MzRiNGI4NGMzNTM3ZGNj
ODNjNzFjNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTQ4LDEwICs0OCwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgLy8gRnVuY3Rpb25zIHRvIHNldCB1cCBwYXJzaW5nLgogICAgICAg
ICB2b2lkIHNldENvZGUoY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckFyZW5hJik7CiAgICAgICAg
IHZvaWQgc2V0SXNSZXBhcnNpbmcoKSB7IG1faXNSZXBhcnNpbmcgPSB0cnVlOyB9CisgICAgICAg
IGJvb2wgaXNSZXBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nOyB9CiAKICAg
ICAgICAgLy8gRnVuY3Rpb25zIGZvciB0aGUgcGFyc2VyIGl0c2VsZi4KICAgICAgICAgZW51bSBM
ZXhUeXBlIHsgSWRlbnRpZnlSZXNlcnZlZFdvcmRzLCBJZ25vcmVSZXNlcnZlZFdvcmRzIH07Ci0g
ICAgICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBs
bG9jcCwgTGV4VHlwZSk7CisgICAgICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSogbHZh
bHAsIEpTVG9rZW5JbmZvKiBsbG9jcCwgTGV4VHlwZSwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICAg
ICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KICAgICAg
ICAgdm9pZCBzZXRMYXN0TGluZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIpIHsgbV9sYXN0TGlu
ZU51bWJlciA9IGxhc3RMaW5lTnVtYmVyOyB9CiAgICAgICAgIGludCBsYXN0TGluZU51bWJlcigp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmVOdW1iZXI7IH0KQEAgLTk1LDcgKzk2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBsYXN0VG9rZW5XYXNSZXN0
cktleXdvcmQoKSBjb25zdDsKIAogICAgICAgICBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIHBh
cnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSosIExleFR5cGUpOwotICAgICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgcGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqIGx2YWxwKTsKKyAgICAgICAgQUxXQVlT
X0lOTElORSBib29sIHBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCwgYm9vbCBzdHJpY3RN
b2RlKTsKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHBhcnNlSGV4KGRvdWJsZSYgcmV0dXJu
VmFsdWUpOwogICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VPY3RhbChkb3VibGUmIHJl
dHVyblZhbHVlKTsKICAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlRGVjaW1hbChkb3Vi
bGUmIHJldHVyblZhbHVlKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDUzNGUyOGFlMTRm
ZGQ2ZmJiZDQyYWI3ZDZkMjI0ZDY2Y2RkZWYxMWIuLjM0YWE2NzQ2ZGMwMTc0YTM5NjIxNDE2Y2Yw
YTk1Zjg4YjY3NjhjMmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtODksMTAgKzg5LDEw
IEBAIFNjb3BlTm9kZURhdGE6OlNjb3BlTm9kZURhdGEoUGFyc2VyQXJlbmEmIGFyZW5hLCBTb3Vy
Y2VFbGVtZW50cyogc3RhdGVtZW50cywgVmFyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVO
b2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorU2NvcGVOb2RlOjpTY29w
ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIGluU3RyaWN0Q29udGV4dCkKICAg
ICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRl
ZChnbG9iYWxEYXRhKQotICAgICwgbV9mZWF0dXJlcyhOb0ZlYXR1cmVzKQorICAgICwgbV9mZWF0
dXJlcyhpblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IE5vRmVhdHVyZXMpCiB7
CiB9CiAKQEAgLTE1NCw4ICsxNTQsOCBAQCBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFy
YW1ldGVycyhQYXJhbWV0ZXJOb2RlKiBmaXJzdFBhcmFtZXRlcikKICAgICAgICAgYXBwZW5kKHBh
cmFtZXRlci0+aWRlbnQoKSk7CiB9CiAKLWlubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlv
bkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKLSAgICA6IFNjb3BlTm9kZShnbG9i
YWxEYXRhKQoraW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjb3BlTm9k
ZShnbG9iYWxEYXRhLCBpblN0cmljdENvbnRleHQpCiB7CiB9CiAKQEAgLTE3Nyw5ICsxNzcsOSBA
QCB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlv
blBhcmFtZXRlcnM+IHBhcmFtZXRlcnMsCiAgICAgbV9pZGVudCA9IGlkZW50OwogfQogCi1GdW5j
dGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBpblN0cmljdENvbnRleHQpCiB7Ci0gICAgcmV0dXJu
IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEpOworICAgIHJldHVybiBuZXcgRnVuY3Rp
b25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBpblN0cmljdENvbnRleHQpOwogfQogCiBQYXNzUmVmUHRy
PEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNr
LCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFi
bGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGZhNjFjZGNlZDI0ZDFi
NmYwNjM2ZTFmMzU4OTM5YWRmYjNhZTc3MjguLjZiOGY3MDRmYmMzM2QyOGM4M2I3YWU5NjNhNzYz
YzQwYjg1NWFiNGYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC01Nyw2ICs1Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNvbnN0IENvZGVGZWF0dXJlcyBXaXRoRmVhdHVyZSA9IDEgPDwgNDsK
ICAgICBjb25zdCBDb2RlRmVhdHVyZXMgQ2F0Y2hGZWF0dXJlID0gMSA8PCA1OwogICAgIGNvbnN0
IENvZGVGZWF0dXJlcyBUaGlzRmVhdHVyZSA9IDEgPDwgNjsKKyAgICBjb25zdCBDb2RlRmVhdHVy
ZXMgU3RyaWN0TW9kZUZlYXR1cmUgPSAxIDw8IDc7CiAgICAgY29uc3QgQ29kZUZlYXR1cmVzIEFs
bEZlYXR1cmVzID0gRXZhbEZlYXR1cmUgfCBDbG9zdXJlRmVhdHVyZSB8IEFzc2lnbkZlYXR1cmUg
fCBBcmd1bWVudHNGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUgfCBUaGlzRmVh
dHVyZTsKIAogICAgIGVudW0gT3BlcmF0b3IgewpAQCAtMTM5Myw3ICsxMzk0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZh
clN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNr
IEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSopOworICAg
ICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgYm9vbCBpblN0cmljdENvbnRleHQpOwogICAg
ICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFS
ZWZDb3VudGVkOjpvcGVyYXRvciBuZXc7CkBAIC0xNDEwLDYgKzE0MTEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJl
cyAmIEV2YWxGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlOyB9CisgICAgICAgIGJvb2wgaXNT
dHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJl
OyB9CiAgICAgICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cygpIHsgbV9mZWF0dXJlcyB8PSBBcmd1
bWVudHNGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVzICYgVGhpc0ZlYXR1cmU7IH0KICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb25G
b3JNb3JlVGhhblZhcmlhYmxlcygpIGNvbnN0IHsgQVNTRVJUKG1fZGF0YSk7IHJldHVybiBtX2Zl
YXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpOyB9CkBA
IC0xNDc2LDcgKzE0NzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9u
Qm9keU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKik7CisgICAgICAgIHN0YXRp
YyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgYm9vbCBpc1N0cmljdE1v
ZGUpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBjcmVhdGUo
SlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CiAKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CkBAIC0xNDkyLDcgKzE0OTQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0
aW9uID0gdHJ1ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNH
bG9iYWxEYXRhKik7CisgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgYm9v
bCBpblN0cmljdENvbnRleHQpOwogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0
YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmll
clNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
OwogCiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggMGMwYjJkNzRlZTgzYjEwNTFkZmQ4YzAxMmI5ZmJkNzljMTRlY2E3ZC4uNjQyYTg0MmZm
N2I3YWE1YzUxODU2ZDg4OTRlNmVjMGE3MTgwMzhiNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTM1LDggKzM1LDkgQEAgZXh0ZXJuIGludCBqc2N5eXBhcnNlKHZvaWQqKTsKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXZvaWQgUGFyc2VyOjpwYXJzZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgaW50KiBlcnJMaW5lLCBVU3RyaW5n
KiBlcnJNc2cpCit2b2lkIFBhcnNlcjo6cGFyc2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
LCBib29sIGluU3RyaWN0Q29udGV4dCwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpCiB7
CisgICAgQVNTRVJUKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIG1fc291cmNlRWxlbWVudHMg
PSAwOwogCiAgICAgaW50IGRlZmF1bHRFcnJMaW5lOwpAQCAtNTAsMTAgKzUxLDEwIEBAIHZvaWQg
UGFyc2VyOjpwYXJzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFyYW1ldGVy
cyogcGFyYW1ldGVycywgaW50CiAgICAgKmVyckxpbmUgPSAtMTsKICAgICAqZXJyTXNnID0gVVN0
cmluZygpOwogCi0gICAgTGV4ZXImIGxleGVyID0gKmdsb2JhbERhdGEtPmxleGVyOworICAgIExl
eGVyJiBsZXhlciA9ICpleGVjLT5nbG9iYWxEYXRhKCkubGV4ZXI7CiAgICAgbGV4ZXIuc2V0Q29k
ZSgqbV9zb3VyY2UsIG1fYXJlbmEpOwogCi0gICAgaW50IHBhcnNlRXJyb3IgPSBqc1BhcnNlKGds
b2JhbERhdGEsIHBhcmFtZXRlcnMsIG1fc291cmNlKTsKKyAgICBpbnQgcGFyc2VFcnJvciA9IGpz
UGFyc2UoZXhlYywgbGV4aWNhbEdsb2JhbE9iamVjdCwgcGFyYW1ldGVycywgaW5TdHJpY3RDb250
ZXh0LCBtX3NvdXJjZSk7CiAgICAgaW50IGxpbmVOdW1iZXIgPSBsZXhlci5saW5lTnVtYmVyKCk7
CiAgICAgYm9vbCBsZXhFcnJvciA9IGxleGVyLnNhd0Vycm9yKCk7CiAgICAgbGV4ZXIuY2xlYXIo
KTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA5MTM0ZGUxNDcxYjEwMGUyYzFhMmQ1ZGZmYWY2
MDJiNTM1Nzg0ZGU4Li44MGM4YzJiNGQ3ZDQ1NTIwMjUxZTg4MmQ4YTIxOTI5OTc1NDY2MDhkIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIFBhcnNlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAg
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICAgICAgUGFzc1JlZlB0cjxQYXJz
ZWROb2RlPiBwYXJzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBEZWJ1Z2dlciosIEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwor
ICAgICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBEZWJ1Z2dlciosIEV4ZWNTdGF0ZSosIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9vbCBpblN0cmljdENv
bnRleHQsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKIAogICAgICAgICB2b2lkIGRpZEZpbmlzaFBh
cnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6
OlZhclN0YWNrPiosIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VyQXJlbmFE
YXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBhcnNlckFy
ZW5hJiBhcmVuYSgpIHsgcmV0dXJuIG1fYXJlbmE7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZvaWQgcGFyc2UoSlNHbG9iYWxEYXRhKiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgaW50KiBlcnJM
aW5lLCBVU3RyaW5nKiBlcnJNc2cpOworICAgICAgICB2b2lkIHBhcnNlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBGdW5jdGlvblBhcmFtZXRlcnMqLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpOwogCiAg
ICAgICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAg
ICAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNzUsMjAgKzc1LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNl
cjo6cGFyc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRGVidWdnZXIqIGRlYnVnZ2VyLCBFeGVjU3RhdGUqIGRlYnVnZ2VyRXhl
Y1N0YXRlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFy
YW1ldGVycywgSlNPYmplY3QqKiBleGNlcHRpb24pCisgICAgUGFzc1JlZlB0cjxQYXJzZWROb2Rl
PiBQYXJzZXI6OnBhcnNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIERlYnVnZ2VyKiBkZWJ1Z2dlciwgRXhlY1N0YXRlKiBkZWJ1Z2dlckV4ZWNT
dGF0ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFt
ZXRlcnMsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBKU09iamVjdCoqIGV4Y2VwdGlvbikKICAgICB7
CisgICAgICAgIEFTU0VSVChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgQVNTRVJUKGV4
Y2VwdGlvbiAmJiAhKmV4Y2VwdGlvbik7CiAgICAgICAgIGludCBlcnJMaW5lOwogICAgICAgICBV
U3RyaW5nIGVyck1zZzsKIAogICAgICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CiAgICAgICAgIGlm
IChQYXJzZWROb2RlOjpzY29wZUlzRnVuY3Rpb24pCi0gICAgICAgICAgICBnbG9iYWxEYXRhLT5s
ZXhlci0+c2V0SXNSZXBhcnNpbmcoKTsKLSAgICAgICAgcGFyc2UoZ2xvYmFsRGF0YSwgcGFyYW1l
dGVycywgJmVyckxpbmUsICZlcnJNc2cpOworICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmxleGVyLT5zZXRJc1JlcGFyc2luZygpOworICAgICAgICBwYXJzZShleGVjLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwYXJhbWV0ZXJzLCBpblN0cmljdENvbnRleHQsICZlcnJMaW5lLCAmZXJyTXNn
KTsKIAogICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgICAgICBpZiAobV9z
b3VyY2VFbGVtZW50cykgewotICAgICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRl
KGdsb2JhbERhdGEsCisgICAgICAgICAgICByZXN1bHQgPSBQYXJzZWROb2RlOjpjcmVhdGUoJmV4
ZWMtPmdsb2JhbERhdGEoKSwKICAgICAgICAgICAgICAgICBtX3NvdXJjZUVsZW1lbnRzLAogICAg
ICAgICAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25zID8gJm1fdmFyRGVjbGFyYXRpb25zLT5kYXRh
IDogMCwKICAgICAgICAgICAgICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFy
YXRpb25zLT5kYXRhIDogMCwKQEAgLTEwNyw3ICsxMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIGlmIChpc0Z1bmN0aW9uQm9keU5vZGUoc3RhdGljX2Nhc3Q8UGFyc2VkTm9kZSo+
KDApKSkKICAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICpleGNlcHRpb24gPSBhZGRFcnJvckluZm8oZ2xvYmFsRGF0YSwgY3JlYXRlU3ludGF4RXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJyTGluZSwgc291cmNlKTsKKyAgICAg
ICAgICAgICAgICAqZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKCZleGVjLT5nbG9iYWxEYXRhKCks
IGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxpbmUs
IHNvdXJjZSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBjZTNhYjYxMTY2YjEyNWIzMDEyNzMwN2U0
M2VjYmQ0NDk3M2FmMTIzLi5mOTA5M2E3NDQ3YTk0MzMxYjRlOGUxMDYzZDVjODZkYTkyZDQ3OWFk
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTMwLDE1ICszMCwyNCBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN5bnRheENoZWNrZXIgewogcHVibGljOgogICAgIFN5
bnRheENoZWNrZXIoSlNHbG9iYWxEYXRhKiAsIExleGVyKikKKyAgICAgICAgOiBtX3RvcEJpbmFy
eUV4cHIoMCkKICAgICB7CiAgICAgfQogCiAgICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0
aW9uQm9keUJ1aWxkZXI7CisgICAgZW51bSB7IE5vbmVFeHByID0gMCwKKyAgICAgICAgUmVzb2x2
ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgTnVtYmVyRXhwciwgU3RyaW5nRXhwciwKKyAgICAgICAg
VGhpc0V4cHIsIE51bGxFeHByLCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4
cHIsCisgICAgICAgIEZ1bmN0aW9uRXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHBy
LAorICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlF
eHByLAorICAgICAgICBDb25kaXRpb25hbEV4cHIsIEFzc2lnbm1lbnRFeHByLCBUeXBlb2ZFeHBy
LAorICAgICAgICBEZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHByIH07CisgICAgdHlwZWRlZiBp
bnQgRXhwcmVzc2lvblR5cGU7CiAKLSAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uOworICAgIHR5
cGVkZWYgRXhwcmVzc2lvblR5cGUgRXhwcmVzc2lvbjsKICAgICB0eXBlZGVmIGludCBTb3VyY2VF
bGVtZW50czsKICAgICB0eXBlZGVmIGludCBBcmd1bWVudHM7Ci0gICAgdHlwZWRlZiBpbnQgQ29t
bWE7CisgICAgdHlwZWRlZiBFeHByZXNzaW9uVHlwZSBDb21tYTsKICAgICBzdHJ1Y3QgUHJvcGVy
dHkgewogICAgICAgICBBTFdBWVNfSU5MSU5FIFByb3BlcnR5KHZvaWQqID0gMCkKICAgICAgICAg
ICAgIDogdHlwZSgoUHJvcGVydHlOb2RlOjpUeXBlKTApCkBAIC03MywzOCArODIsMzggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IGZhbHNl
OwogCiAgICAgaW50IGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQotICAgIHZvaWQgYXBwZW5kVG9Db21tYShpbnQsIGludCkgeyB9Ci0gICAgaW50IGNyZWF0
ZUNvbW1hRXhwcihpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBtYWtlQXNzaWduTm9k
ZShpbnQsIE9wZXJhdG9yLCBpbnQsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgbWFrZVByZWZpeE5vZGUoaW50LCBPcGVyYXRvciwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBtYWtlUG9zdGZpeE5vZGUoaW50LCBPcGVyYXRvciwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBtYWtlVHlwZU9mTm9kZShpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgbWFrZURlbGV0ZU5vZGUoaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IG1ha2VOZWdhdGVOb2RlKGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBtYWtlQml0d2lzZU5vdE5vZGUoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50
IGNyZWF0ZUxvZ2ljYWxOb3QoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVVuYXJ5
UGx1cyhpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlVm9pZChpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgdGhpc0V4cHIoKSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVJl
c29sdmUoY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVPYmplY3RMaXRlcmFsKCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVPYmplY3RMaXRl
cmFsKGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcnJheShpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlQXJyYXkoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlTnVtYmVyRXhwcihkb3VibGUpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
U3RyaW5nKGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJv
b2xlYW4oYm9vbCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVOdWxsKCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVCcmFja2V0QWNjZXNzKGludCwgaW50LCBib29sLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURvdEFjY2VzcyhpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0
ZVJlZ2V4KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgaW50IGNyZWF0ZU5ld0V4cHIoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlTmV3RXhwcihpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSWRlbnRpZmllciYs
IGludCwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVG
dW5jdGlvbkV4cHIoY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KCkgeyByZXR1cm4g
MTsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiBDYWxsRXhwcjsgfQorICAgIHZvaWQgYXBwZW5kVG9Db21t
YShFeHByZXNzaW9uVHlwZSYgYmFzZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgYmFzZSA9IHJp
Z2h0OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHByKEV4cHJlc3Npb25UeXBl
LCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBtYWtlQXNzaWduTm9kZShFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25U
eXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKEV4cHJlc3Npb25UeXBlLCBPcGVy
YXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUHJlRXhwcjsgfQorICAgIEV4cHJlc3Npb25U
eXBlIG1ha2VQb3N0Zml4Tm9kZShFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5v
ZGUoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBtYWtlRGVsZXRlTm9kZShFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gRGVsZXRlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKEV4cHJl
c3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtl
Qml0d2lzZU5vdE5vZGUoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUxvZ2ljYWxOb3QoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJu
IFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhFeHByZXNz
aW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
Vm9pZChFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lv
blR5cGUgdGhpc0V4cHIoKSB7IHJldHVybiBUaGlzRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZVJlc29sdmUoY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gUmVzb2x2ZUV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKCkgeyByZXR1cm4g
T2JqZWN0TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRl
cmFsKGludCkgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVBcnJheShpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVBcnJheShpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bWJlckV4cHIoZG91YmxlKSB7IHJldHVy
biBOdW1iZXJFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGNvbnN0IElk
ZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlQm9vbGVhbihib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZU51bGwoKSB7IHJldHVybiBOdWxsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUJyYWNrZXRBY2Nlc3MoRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBp
bnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZURvdEFjY2VzcyhFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciYsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVS
ZWdleChjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllciYsIGludCkgeyByZXR1cm4g
UmVnRXhwRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoRXhwcmVzc2lv
blR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVy
biBOZXdFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKEV4
cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENv
bmRpdGlvbmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUo
Y29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0
aW9uRXhwcihjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShib29s
KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIDE7IH0K
ICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVh
dGVBcmd1bWVudHNMaXN0KGludCkgeyByZXR1cm4gMTsgfQpAQCAtMTY5LDI2ICsxNzgsMzggQEAg
cHVibGljOgogICAgIHZvaWQgYWRkVmFyKGNvbnN0IElkZW50aWZpZXIqLCBib29sKSB7IH0KICAg
ICBpbnQgY29tYmluZUNvbW1hTm9kZXMoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQg
ZXZhbENvdW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZvaWQgYXBwZW5kQmluYXJ5RXhw
cmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50LCBpbnQsIGludCwgaW50LCBi
b29sKSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KKyAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJl
c3Npb25JbmZvKGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBleHByLCBpbnQsIGludCwgaW50
LCBib29sKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3RvcEJpbmFyeUV4cHIpCisgICAgICAgICAg
ICBtX3RvcEJpbmFyeUV4cHIgPSBleHByOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Rv
cEJpbmFyeUV4cHIgPSBCaW5hcnlFeHByOworICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwor
ICAgIH0KICAgICAKICAgICAvLyBMb2dpYyB0byBoYW5kbGUgZGF0YXN0cnVjdHVyZXMgdXNlZCBk
dXJpbmcgcGFyc2luZyBvZiBiaW5hcnkgZXhwcmVzc2lvbnMKICAgICB2b2lkIG9wZXJhdG9yU3Rh
Y2tQb3AoaW50JiBvcGVyYXRvclN0YWNrRGVwdGgpIHsgb3BlcmF0b3JTdGFja0RlcHRoLS07IH0K
ICAgICBib29sIG9wZXJhdG9yU3RhY2tIYXNIaWdoZXJQcmVjZWRlbmNlKGludCYsIGludCkgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIEJpbmFyeU9wZXJhbmQgZ2V0RnJvbU9wZXJhbmRTdGFjayhpbnQp
IHsgcmV0dXJuIDE7IH0KKyAgICBCaW5hcnlPcGVyYW5kIGdldEZyb21PcGVyYW5kU3RhY2soaW50
KSB7IHJldHVybiBtX3RvcEJpbmFyeUV4cHI7IH0KICAgICB2b2lkIHNocmlua09wZXJhbmRTdGFj
a0J5KGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBhbW91bnQpIHsgb3BlcmFuZFN0YWNrRGVw
dGggLT0gYW1vdW50OyB9CiAgICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oaW50JiBvcGVy
YW5kU3RhY2tEZXB0aCwgaW50JiwgQmluYXJ5T3BlcmFuZCwgQmluYXJ5T3BlcmFuZCkgeyBvcGVy
YW5kU3RhY2tEZXB0aCsrOyB9CiAgICAgdm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3Bl
cmF0b3JTdGFja0RlcHRoLCBpbnQsIGludCkgeyBvcGVyYXRvclN0YWNrRGVwdGgrKzsgfQotICAg
IGludCBwb3BPcGVyYW5kU3RhY2soaW50JikgeyByZXR1cm4gMTsgfQorICAgIGludCBwb3BPcGVy
YW5kU3RhY2soaW50JikgeyBpbnQgcmVzID0gbV90b3BCaW5hcnlFeHByOyBtX3RvcEJpbmFyeUV4
cHIgPSAwOyByZXR1cm4gcmVzOyB9CiAgICAgCi0gICAgdm9pZCBhcHBlbmRVbmFyeVRva2VuKGlu
dCYsIGludCwgaW50KSB7IH0KLSAgICBpbnQgdW5hcnlUb2tlblN0YWNrTGFzdFR5cGUoaW50Jikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KLSAgICBpbnQgdW5hcnlUb2tlblN0
YWNrTGFzdFN0YXJ0KGludCYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9Ci0g
ICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYpIHsgfQorICAgIHZvaWQgYXBw
ZW5kVW5hcnlUb2tlbihpbnQmIHN0YWNrRGVwdGgsIGludCB0b2ssIGludCkgeyBzdGFja0RlcHRo
ID0gMTsgbV90b3BVbmFyeVRva2VuID0gdG9rOyB9CisgICAgaW50IHVuYXJ5VG9rZW5TdGFja0xh
c3RUeXBlKGludCYpIHsgcmV0dXJuIG1fdG9wVW5hcnlUb2tlbjsgfQorICAgIGludCB1bmFyeVRv
a2VuU3RhY2tMYXN0U3RhcnQoaW50JikgeyByZXR1cm4gMDsgfQorICAgIHZvaWQgdW5hcnlUb2tl
blN0YWNrUmVtb3ZlTGFzdChpbnQmIHN0YWNrRGVwdGgpIHsgc3RhY2tEZXB0aCA9IDA7IH0KICAg
ICAKICAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgT3BlcmF0b3IpIHsgfQogICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGludCwgaW50LCBpbnQs
IGludCwgaW50KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQogICAgIGNvbnN0
IElkZW50aWZpZXImIGdldE5hbWUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSB7IEFTU0VSVChw
cm9wZXJ0eS5uYW1lKTsgcmV0dXJuICpwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2Rl
OjpUeXBlIGdldFR5cGUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSB7IHJldHVybiBwcm9wZXJ0
eS50eXBlOyB9CisgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikgeyByZXR1
cm4gZXhwciA9PSBSZXNvbHZlRXhwciB8fCBleHByID09IFJlc29sdmVFdmFsRXhwcjsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBpbnQgbV90b3BCaW5hcnlFeHByOworICAgIGludCBtX3RvcFVuYXJ5
VG9rZW47CiB9OwogCiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggNDUw
ZGM3ZDZmNzg4ODMxZWUzNTY3Y2FiYmIxOTQyNDAwYjQyNWRhOC4uOWNmOTg5YjgzMWI0NWI0NWMy
OTk4N2IxYTE1ZjBhYmNhNzRlYmQ1ZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNw
cApAQCAtMTUzLDYgKzE1MywyOCBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgUHJvcGVydHlTbG90JiBzbAogCiAgICAgcmV0
dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgSWRlbnRpZmllcihleGVjLCBV
U3RyaW5nOjpudW1iZXIoaSkpLCBzbG90KTsKIH0KKyAgICAKK3ZvaWQgQXJndW1lbnRzOjpjcmVh
dGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3NhcnkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFT
U0VSVCghZC0+b3ZlcnJvZGVDYWxsZXIpOworCisgICAgZC0+b3ZlcnJvZGVDYWxsZXIgPSB0cnVl
OworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIEpTVmFsdWUgdGhyb3dl
ciA9IGNyZWF0ZVR5cGVFcnJvckZ1bmN0aW9uKGV4ZWMsICJVbmFibGUgdG8gYWNjZXNzIGNhbGxl
ciBvZiBzdHJpY3QgbW9kZSBmdW5jdGlvbiIpOworICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNzb3JE
ZXNjcmlwdG9yKHRocm93ZXIsIHRocm93ZXIsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IEdldHRl
ciB8IFNldHRlcik7CisgICAgZGVmaW5lT3duUHJvcGVydHkoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNhbGxlciwgZGVzY3JpcHRvciwgZmFsc2UpOworfQorCit2b2lkIEFyZ3VtZW50czo6
Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBBU1NFUlQoIWQtPm92ZXJyb2RlQ2FsbGVlKTsKKyAgICAKKyAgICBkLT5vdmVycm9kZUNhbGxl
ZSA9IHRydWU7CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgSlNWYWx1
ZSB0aHJvd2VyID0gY3JlYXRlVHlwZUVycm9yRnVuY3Rpb24oZXhlYywgIlVuYWJsZSB0byBhY2Nl
c3MgY2FsbGVlIG9mIHN0cmljdCBtb2RlIGZ1bmN0aW9uIik7CisgICAgZGVzY3JpcHRvci5zZXRB
Y2Nlc3NvckRlc2NyaXB0b3IodGhyb3dlciwgdGhyb3dlciwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgR2V0dGVyIHwgU2V0dGVyKTsKKyAgICBkZWZpbmVPd25Qcm9wZXJ0eShleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY2FsbGVlLCBkZXNjcmlwdG9yLCBmYWxzZSk7Cit9CiAKIGJvb2wgQXJn
dW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKQEAgLTE3MiwxMCArMTk0
LDE2IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hCiAgICAgfQogCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYmIExJS0VMWSghZC0+b3ZlcnJv
ZGVDYWxsZWUpKSB7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUoZC0+Y2FsbGVlKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGlmICghZC0+aXNTdHJpY3RNb2RlKSB7CisgICAgICAgICAg
ICBzbG90LnNldFZhbHVlKGQtPmNhbGxlZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7
CiAgICAgfQogCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y2FsbGVyICYmIGQtPmlzU3RyaWN0TW9kZSkKKyAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxl
cklmTmVjZXNzYXJ5KGV4ZWMpOworCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIApAQCAtMTk3LDkgKzIyNSwxNSBA
QCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcAogICAgIH0KICAgICAKICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUgJiYgTElLRUxZKCFkLT5vdmVycm9k
ZUNhbGxlZSkpIHsKLSAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGQtPmNhbGxlZSwg
RG9udEVudW0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCFkLT5pc1N0cmlj
dE1vZGUpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihkLT5jYWxsZWUs
IERvbnRFbnVtKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IGNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2FyeShleGVjKTsKICAgICB9CisKKyAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIgJiYgZC0+aXNT
dHJpY3RNb2RlKQorICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3NhcnkoZXhl
Yyk7CiAgICAgCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KQEAgLTI0OSwxMSArMjgzLDE3IEBA
IHZvaWQgQXJndW1lbnRzOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsCiAgICAgfQogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYmICFkLT5vdmVycm9kZUNhbGxlZSkgewot
ICAgICAgICBkLT5vdmVycm9kZUNhbGxlZSA9IHRydWU7Ci0gICAgICAgIHB1dERpcmVjdChwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51bSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KCFkLT5pc1N0cmljdE1vZGUpIHsKKyAgICAgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gdHJ1
ZTsKKyAgICAgICAgICAgIHB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBEb250RW51bSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY3JlYXRlU3RyaWN0TW9k
ZUNhbGxlZUlmTmVjZXNzYXJ5KGV4ZWMpOwogICAgIH0KIAorICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlciAmJiBkLT5pc1N0cmljdE1vZGUpCisgICAg
ICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeShleGVjKTsKKwogICAgIEpTT2Jq
ZWN0OjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKQEAgLTI5NCw5
ICszMzQsMTUgQEAgYm9vbCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIH0KIAogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSAmJiAhZC0+b3ZlcnJvZGVD
YWxsZWUpIHsKLSAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSB0cnVlOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCFkLT5pc1N0cmljdE1vZGUpIHsKKyAgICAgICAgICAgIGQt
Pm92ZXJyb2RlQ2FsbGVlID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2FyeShleGVjKTsKICAg
ICB9CisgICAgCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y2FsbGVyICYmICFkLT5pc1N0cmljdE1vZGUpCisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxs
ZXJJZk5lY2Vzc2FyeShleGVjKTsKIAogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmlu
ZGV4IDQ5YzhiM2I1OGFlMzg1NTQ1ZWQzOTM3YTYyYjkyNzVlZjZkOGZlNTguLjcxNWEyYWMxNzVk
YjU0YTg2MTc0Mzk5ODNmZTVmNDQ2NGU4NzU0OGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaApAQCAtNTAsNiArNTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNGdW5jdGlv
biogY2FsbGVlOwogICAgICAgICBib29sIG92ZXJyb2RlTGVuZ3RoIDogMTsKICAgICAgICAgYm9v
bCBvdmVycm9kZUNhbGxlZSA6IDE7CisgICAgICAgIGJvb2wgb3ZlcnJvZGVDYWxsZXIgOiAxOwor
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA6IDE7CiAgICAgfTsKIAogCkBAIC0xMDUsNiArMTA3
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0
eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB2b2lkIGNyZWF0
ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeShFeGVjU3RhdGUqKTsKKyAgICAgICAgdm9pZCBj
cmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CiAKICAgICAgICAg
dmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZv
OyB9CiAKQEAgLTE3Miw2ICsxNzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGQtPmNh
bGxlZSA9IGNhbGxlZTsKICAgICAgICAgZC0+b3ZlcnJvZGVMZW5ndGggPSBmYWxzZTsKICAgICAg
ICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSBmYWxzZTsKKyAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZXIg
PSBmYWxzZTsKKyAgICAgICAgZC0+aXNTdHJpY3RNb2RlID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIGlmIChkLT5pc1N0cmljdE1vZGUpCisgICAgICAg
ICAgICBjb3B5UmVnaXN0ZXJzKCk7CiAgICAgfQogCiAgICAgaW5saW5lIEFyZ3VtZW50czo6QXJn
dW1lbnRzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBOb1BhcmFtZXRlcnNUeXBlKQpAQCAtMjAxLDYg
KzIwOSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZC0+Y2FsbGVlID0gYXNGdW5jdGlv
bihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKICAgICAgICAgZC0+b3ZlcnJvZGVMZW5ndGggPSBmYWxz
ZTsKICAgICAgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSBmYWxzZTsKKyAgICAgICAgZC0+b3ZlcnJv
ZGVDYWxsZXIgPSBmYWxzZTsKKyAgICAgICAgZC0+aXNTdHJpY3RNb2RlID0gY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIGlmIChkLT5pc1N0cmljdE1vZGUp
CisgICAgICAgICAgICBjb3B5UmVnaXN0ZXJzKCk7CiAgICAgfQogCiAgICAgaW5saW5lIHZvaWQg
QXJndW1lbnRzOjpjb3B5UmVnaXN0ZXJzKCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5jcHAKaW5kZXggMzgzNzgxN2QwNTJmNzhlY2UwNjFhYzZkZTcxNzEwNGRl
ZmI3YjdlYi4uMTU2MTEwMjM1MjA3ZjZhYzlmYjE2N2MyNzVjYTRjMzIyZDEzNTlmZCAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKICAgICAsIGVtcHR5SWRlbnRpZmllcihnbG9iYWxEYXRhLCAiIikKICAgICAs
IHVuZGVyc2NvcmVQcm90byhnbG9iYWxEYXRhLCAiX19wcm90b19fIikKICAgICAsIHRoaXNJZGVu
dGlmaWVyKGdsb2JhbERhdGEsICJ0aGlzIikKKyAgICAsIHVzZVN0cmljdElkZW50aWZpZXIoZ2xv
YmFsRGF0YSwgInVzZSBzdHJpY3QiKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKIHsKIH0KZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBkZTI0ZjRhMGQ0ODQ3YjVhMmE4
OTg5NmU5NjRkMDM0YmFkNzE3ZjZhLi4xZTIyYjZhYmRmZmRhZjg4NTQ3ZjU4Zjc0ZDdmMjFkNmNl
ZmFlYTJhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBA
IC05NCw2ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVy
IGVtcHR5SWRlbnRpZmllcjsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciB1bmRlcnNjb3JlUHJv
dG87CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgdGhpc0lkZW50aWZpZXI7CisgICAgICAgIGNv
bnN0IElkZW50aWZpZXIgdXNlU3RyaWN0SWRlbnRpZmllcjsKIAogI2RlZmluZSBKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIg
bmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5jcHAKaW5kZXggYTJiZTQ3MzY1OGY2MjRmMWQ3ZWYxNTYxM2ZiMjVlYzQxODU0NGJk
My4uZTM1NDI0YmI0MjJiMzljYTc1YWI4NDU0MjJkYTkyMjk1MzViYTQ4NiAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5jcHAKQEAgLTE5NSw0ICsxOTUsNDcgQEAgSlNPYmplY3QqIHRocm93U3ludGF4
RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsICJTeW50YXggZXJyb3IiKSk7CiB9CiAKK2NsYXNzIFN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoK
KyAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVj
dHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKKyAgICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5nbG9i
YWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKQorICAgICAgICAsIG1fbWVz
c2FnZShtZXNzYWdlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
KQorICAgIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKKyAgICB9CisgICAgCisgICAg
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERh
dGEpCisgICAgeworICAgICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0
cnVjdFRocm93VHlwZUVycm9yOworICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxU
aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCisgICAgeworICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qPihleGVj
LT5jYWxsZWUoKSktPm1fbWVzc2FnZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOworICAgIH0KKworICAgIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJiBj
YWxsRGF0YSkKKyAgICB7CisgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxU
aHJvd1R5cGVFcnJvcjsKKyAgICAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgVVN0cmluZyBtX21lc3NhZ2U7Cit9OworCitDT01QSUxFX0FTU0VSVChzaXpl
b2YoU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKSA8PSBzaXplb2YoQ29sbGVjdG9yQ2VsbCks
IHNpemVvZl9TdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25fbXVzdF9iZV9sZXNzX3RoYW5fQ29s
bGVjdG9yQ2VsbCk7CisKK0pTVmFsdWUgY3JlYXRlVHlwZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHJldHVybiBuZXcgKGV4ZWMp
IFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+aW50ZXJuYWxGdW5jdGlvblN0cnVj
dHVyZSgpLCBtZXNzYWdlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgKaW5kZXggMWEwZWNlNTRiMmNjZTk3YmZjMTY3Njc1N2FmYTRlZDk1MDI1Y2YwOC4uYmZk
ZTdkYzY2MjgyNGE0MGI4YjU5Y2Y0M2Y4NzQ0NzYzNzhkZDdmZSAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaApAQCAtNzMsNiArNzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikgeyBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXJyb3IoZXhlYywgZXJyb3IpKTsgfQogICAgIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykgeyBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsgfQogCisgICAgSlNW
YWx1ZSBjcmVhdGVUeXBlRXJyb3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJp
bmcmIG1lc3NhZ2UpOworICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFcnJv
cl9oCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA4NzFmM2UyMDQwZDgx
ZWQ3Mjg0MDUwYTBmOTVlZmU4NGEwYWE0NWVkLi44NTc5MTA5ZDZmODM2YmU1ZWNhY2Y1NjVhOTE0
NGYwYTI4MGE5ZDQ0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTQ1
LDggKzQ1LDggQEAgVlB0ckhhY2tFeGVjdXRhYmxlOjp+VlB0ckhhY2tFeGVjdXRhYmxlKCkKIHsK
IH0KIAotRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3Vy
Y2UpCitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAgIDogU2NyaXB0
RXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIApAQCAtNTUs
NyArNTUsNyBAQCBFdmFsRXhlY3V0YWJsZTo6fkV2YWxFeGVjdXRhYmxlKCkKIH0KIAogUHJvZ3Jh
bUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UpCisg
ICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgZmFsc2UpCiB7CiB9CiAKQEAgLTYz
LDggKzYzLDggQEAgUHJvZ3JhbUV4ZWN1dGFibGU6On5Qcm9ncmFtRXhlY3V0YWJsZSgpCiB7CiB9
CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0
ZXJzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxl
KGdsb2JhbERhdGEsIHNvdXJjZSkKK0Z1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRh
YmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGluU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGlu
ZSwgaW50IGxhc3RMaW5lKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShnbG9iYWxEYXRhLCBzb3Vy
Y2UsIGluU3RyaWN0Q29udGV4dCkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMoMCkKICAg
ICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKGZvcmNlVXNlc0FyZ3VtZW50cykKICAgICAsIG1fcGFy
YW1ldGVycyhwYXJhbWV0ZXJzKQpAQCAtNzUsOCArNzUsOCBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6
OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZQogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKIH0KIAotRnVuY3Rpb25FeGVjdXRhYmxl
OjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBG
dW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGlu
ZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYywgc291cmNlKQorRnVuY3Rpb25FeGVjdXRh
YmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRz
LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBp
bnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMs
IHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0KQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcygw
KQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMoZm9yY2VVc2VzQXJndW1lbnRzKQogICAgICwg
bV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCkBAIC05Niw3ICs5Niw3IEBAIEpTT2JqZWN0KiBFdmFs
RXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlCiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7CiAgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBS
ZWZQdHI8RXZhbE5vZGU+IGV2YWxOb2RlID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxFdmFs
Tm9kZT4oZ2xvYmFsRGF0YSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dC0+ZGVidWdnZXIoKSwgZXhlYywgbV9zb3VyY2UsIDAsICZleGNlcHRpb24pOworICAgIFJlZlB0
cjxFdmFsTm9kZT4gZXZhbE5vZGUgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPEV2YWxOb2Rl
PihleGVjLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5kZWJ1Z2dl
cigpLCBleGVjLCBtX3NvdXJjZSwgMCwgaXNTdHJpY3RNb2RlKCksICZleGNlcHRpb24pOwogICAg
IGlmICghZXZhbE5vZGUpIHsKICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJl
dHVybiBleGNlcHRpb247CkBAIC0xMzEsNyArMTMxLDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNPYmplY3QqIGV4Y2Vw
dGlvbiA9IDA7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2Rl
ID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZ2xvYmFsRGF0YSwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgZXhlYywg
bV9zb3VyY2UsIDAsICZleGNlcHRpb24pOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3Jh
bU5vZGUgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPihleGVjLCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLCBleGVjLCBt
X3NvdXJjZSwgMCwgZmFsc2UsICZleGNlcHRpb24pOwogICAgIGlmIChwcm9ncmFtTm9kZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CkBAIC0xNDUsNyArMTQ1LDcg
QEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRl
KiBleGVjLCBTY29wZUNoYWluTm9kZSogc2MKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsK
ICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAg
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwotICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBnbG9iYWxE
YXRhLT5wYXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPihnbG9iYWxEYXRhLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLCBleGVjLCBtX3NvdXJjZSwg
MCwgJmV4Y2VwdGlvbik7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IGds
b2JhbERhdGEtPnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5vZGU+KGV4ZWMsIGxleGljYWxHbG9iYWxP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCksIGV4ZWMsIG1fc291cmNlLCAw
LCBpc1N0cmljdE1vZGUoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKCFwcm9ncmFtTm9kZSkgewog
ICAgICAgICBBU1NFUlQoZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKQEAg
LTE3OCw3ICsxNzgsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9y
Q2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbgogewogICAgIEpTT2JqZWN0
KiBleGNlcHRpb24gPSAwOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IHNjb3BlQ2hh
aW5Ob2RlLT5nbG9iYWxEYXRhOwotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0g
Z2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihnbG9iYWxEYXRhLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIDAsIG1fc291cmNlLCBtX3BhcmFtZXRlcnMu
Z2V0KCksICZleGNlcHRpb24pOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0g
Z2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihleGVjLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIDAsIG1fc291cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCks
IGlzU3RyaWN0TW9kZSgpLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAg
QVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBleGNlcHRpb247CkBAIC0yMTksNyAr
MjE5LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVj
dEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKIHsKICAgICBKU09iamVjdCogZXhjZXB0
aW9uID0gMDsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBzY29wZUNoYWluTm9kZS0+
Z2xvYmFsRGF0YTsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IGdsb2JhbERh
dGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZ2xvYmFsRGF0YSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJzLmdldCgpLCAm
ZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IGdsb2JhbERh
dGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJzLmdldCgpLCBpc1N0cmlj
dE1vZGUoKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKCFib2R5KSB7CiAgICAgICAgIEFTU0VSVChl
eGNlcHRpb24pOwogICAgICAgICByZXR1cm4gZXhjZXB0aW9uOwpAQCAtMjY0LDEyICsyNjQsMTQg
QEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJr
U3RhY2spCiAgICAgICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5tYXJrQWdncmVnYXRlKG1h
cmtTdGFjayk7CiB9CiAKLVBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gRnVuY3Rpb25FeGVjdXRh
YmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCitQYXNzT3du
UHRyPEV4Y2VwdGlvbkluZm8+IEZ1bmN0aW9uRXhlY3V0YWJsZTo6cmVwYXJzZUV4Y2VwdGlvbklu
Zm8oRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIENvZGVC
bG9jayogY29kZUJsb2NrKQogewogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwotICAgIFJl
ZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBuZXdGdW5jdGlvbkJvZHkgPSBnbG9iYWxEYXRhLT5wYXJz
ZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGdsb2JhbERhdGEsIDAsIDAsIDAsIG1fc291cmNl
LCBtX3BhcmFtZXRlcnMuZ2V0KCksICZleGNlcHRpb24pOworICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9IHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxEYXRhOworICAgIFJlZlB0cjxGdW5jdGlv
bkJvZHlOb2RlPiBuZXdGdW5jdGlvbkJvZHkgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPEZ1
bmN0aW9uQm9keU5vZGU+KGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxPYmplY3QsIDAsIDAs
IG1fc291cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCksIGlzU3RyaWN0TW9kZSgpLCAmZXhjZXB0aW9u
KTsKICAgICBpZiAoIW5ld0Z1bmN0aW9uQm9keSkKICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8
RXhjZXB0aW9uSW5mbz4oKTsKKyAgICBBU1NFUlQobmV3RnVuY3Rpb25Cb2R5LT5pc1N0cmljdE1v
ZGUoKSA9PSBpc1N0cmljdE1vZGUoKSk7CiAgICAgaWYgKG1fZm9yY2VVc2VzQXJndW1lbnRzKQog
ICAgICAgICBuZXdGdW5jdGlvbkJvZHktPnNldFVzZXNBcmd1bWVudHMoKTsKICAgICBuZXdGdW5j
dGlvbkJvZHktPmZpbmlzaFBhcnNpbmcobV9wYXJhbWV0ZXJzLCBtX25hbWUpOwpAQCAtMjk4LDEw
ICszMDAsMTIgQEAgUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBGdW5jdGlvbkV4ZWN1dGFibGU6
OnJlcGFyc2VFeGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSoKICAgICByZXR1cm4gbmV3Q29kZUJs
b2NrLT5leHRyYWN0RXhjZXB0aW9uSW5mbygpOwogfQogCi1QYXNzT3duUHRyPEV4Y2VwdGlvbklu
Zm8+IEV2YWxFeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCitQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IEV2YWxFeGVjdXRhYmxlOjpyZXBhcnNl
RXhjZXB0aW9uSW5mbyhFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
Tm9kZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9
IDA7Ci0gICAgUmVmUHRyPEV2YWxOb2RlPiBuZXdFdmFsQm9keSA9IGdsb2JhbERhdGEtPnBhcnNl
ci0+cGFyc2U8RXZhbE5vZGU+KGdsb2JhbERhdGEsIDAsIDAsIDAsIG1fc291cmNlLCAwLCAmZXhj
ZXB0aW9uKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBzY29wZUNoYWluTm9kZS0+
Z2xvYmFsRGF0YTsKKyAgICBSZWZQdHI8RXZhbE5vZGU+IG5ld0V2YWxCb2R5ID0gZ2xvYmFsRGF0
YS0+cGFyc2VyLT5wYXJzZTxFdmFsTm9kZT4oZXhlYywgc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9i
amVjdCwgMCwgMCwgbV9zb3VyY2UsIDAsIGlzU3RyaWN0TW9kZSgpLCAmZXhjZXB0aW9uKTsKKyAg
ICBBU1NFUlQobmV3RXZhbEJvZHktPmlzU3RyaWN0TW9kZSgpID09IGlzU3RyaWN0TW9kZSgpKTsK
ICAgICBpZiAoIW5ld0V2YWxCb2R5KQogICAgICAgICByZXR1cm4gUGFzc093blB0cjxFeGNlcHRp
b25JbmZvPigpOwogCkBAIC0zNDEsNyArMzQ1LDcgQEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6
OnJlY29tcGlsZShFeGVjU3RhdGUqKQogUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IEZ1
bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYgZnVuY3Rp
b25OYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIERlYnVnZ2VyKiBkZWJ1Z2dlciwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBKU09iamVjdCoqIGV4Y2VwdGlvbikKIHsKICAgICBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAg
ICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBleGVjLT5nbG9iYWxEYXRhKCkucGFyc2Vy
LT5wYXJzZTxQcm9ncmFtTm9kZT4oJmV4ZWMtPmdsb2JhbERhdGEoKSwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgZGVidWdnZXIsIGV4ZWMsIHNvdXJjZSwgMCwgZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8
UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBleGVjLT5nbG9iYWxEYXRhKCkucGFyc2VyLT5wYXJzZTxQ
cm9ncmFtTm9kZT4oZXhlYywgbGV4aWNhbEdsb2JhbE9iamVjdCwgZGVidWdnZXIsIGV4ZWMsIHNv
dXJjZSwgMCwgZmFsc2UsIGV4Y2VwdGlvbik7CiAgICAgaWYgKCFwcm9ncmFtKSB7CiAgICAgICAg
IEFTU0VSVCgqZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNTcsNyArMzYxLDcg
QEAgUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJv
bUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmkKICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0g
c3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CiAgICAgQVNTRVJU
KGJvZHkpOwogCi0gICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZleGVjLT5n
bG9iYWxEYXRhKCksIGZ1bmN0aW9uTmFtZSwgYm9keS0+c291cmNlKCksIGJvZHktPnVzZXNBcmd1
bWVudHMoKSwgYm9keS0+cGFyYW1ldGVycygpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExp
bmUoKSk7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZleGVjLT5nbG9i
YWxEYXRhKCksIGZ1bmN0aW9uTmFtZSwgYm9keS0+c291cmNlKCksIGJvZHktPnVzZXNBcmd1bWVu
dHMoKSwgYm9keS0+cGFyYW1ldGVycygpLCBmYWxzZSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxh
c3RMaW5lKCkpOwogfQogCiBVU3RyaW5nIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmco
KSBjb25zdApAQCAtMzcyLDcgKzM3Niw3IEBAIFVTdHJpbmcgRnVuY3Rpb25FeGVjdXRhYmxlOjpw
YXJhbVN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTsKIH0KIAotUGFz
c093blB0cjxFeGNlcHRpb25JbmZvPiBQcm9ncmFtRXhlY3V0YWJsZTo6cmVwYXJzZUV4Y2VwdGlv
bkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKQorUGFzc093
blB0cjxFeGNlcHRpb25JbmZvPiBQcm9ncmFtRXhlY3V0YWJsZTo6cmVwYXJzZUV4Y2VwdGlvbklu
Zm8oRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKQogewogICAgIC8vIENv
ZGVCbG9ja3MgZm9yIHByb2dyYW0gY29kZSBhcmUgdHJhbnNpZW50IGFuZCB0aGVyZWZvcmUgZG8g
bm90IGdhaW4gZnJvbSBmcm9tIHRocm93aW5nIG91dCB0aGVpciBleGNlcHRpb24gaW5mb3JtYXRp
b24uCiAgICAgcmV0dXJuIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4oKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKaW5kZXggZmVhYjdlZjkwNzEwMjE4ZGZmNGUyOTljNmU2N2I3YjBm
NWIyYjc0YS4uMTlhODgzZDgxYTFhMmY2ODA0MGQwNDA2MTA5NmVmMjc4YTc5MmNkNCAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTEzOCwxMCArMTM4LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxl
QmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICBTY3JpcHRF
eGVjdXRhYmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFz
ZShOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAgICAgICAgICAsIG1fc291cmNlKHNv
dXJjZSkKLSAgICAgICAgICAgICwgbV9mZWF0dXJlcygwKQorICAgICAgICAgICAgLCBtX2ZlYXR1
cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQogICAgICAgICB7
CiAjaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKICAgICAgICAgICAgIHJlbGF4QWRvcHRp
b25SZXF1aXJlbWVudCgpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAj
ZW5kaWYKICAgICAgICAgfQogCi0gICAgICAgIFNjcmlwdEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQpCiAgICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX05P
VF9DT01QSUxFRCkKICAgICAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQotICAgICAgICAgICAg
LCBtX2ZlYXR1cmVzKDApCisgICAgICAgICAgICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRl
eHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDApCiAgICAgICAgIHsKICNpZiBFTkFCTEUoQ09ERUJM
T0NLX1NBTVBMSU5HKQogICAgICAgICAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CkBA
IC0xNzUsOCArMTc1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgdXNlc0V2YWwo
KSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1cmU7IH0KICAgICAgICAgYm9v
bCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEFyZ3VtZW50c0Zl
YXR1cmU7IH0KICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2hhc0NhcHR1cmVkVmFyaWFibGVzIHx8IG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRo
RmVhdHVyZSB8IENhdGNoRmVhdHVyZSk7IH0KKyAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KIAotICAgICAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8o
SlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiByZXBhcnNlRXhjZXB0aW9uSW5mbyhF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIENvZGVCbG9jayopID0gMDsKIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJv
b2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKQEAg
LTIxNCw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqbV9l
dmFsQ29kZUJsb2NrOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZh
bEV4ZWN1dGFibGU+IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSkp
OyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENv
bnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2Us
IGlzSW5TdHJpY3RDb250ZXh0KSk7IH0KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENv
ZGUmIGdlbmVyYXRlZEpJVENvZGUoKQpAQCAtMjI0LDExICsyMjUsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0
YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wpOwogCiAgICAgICAgIEpTT2JqZWN0KiBjb21w
aWxlSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAotICAgICAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9i
YWxEYXRhKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKTsKKyAgICAgICAgdmlydHVhbCBQ
YXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25JbmZvKEV4ZWNTdGF0ZSos
IFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKik7CiAKICAgICAgICAgT3duUHRyPEV2YWxDb2Rl
QmxvY2s+IG1fZXZhbENvZGVCbG9jazsKICAgICB9OwpAQCAtMjcxLDcgKzI3Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRl
KiwgU2NvcGVDaGFpbk5vZGUqKTsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0
aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVDaGFpbk5v
ZGUqLCBDb2RlQmxvY2sqKTsKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEV4Y2VwdGlvbklu
Zm8+IHJlcGFyc2VFeGNlcHRpb25JbmZvKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29k
ZUJsb2NrKik7CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNv
ZGVCbG9jazsKICAgICB9OwpAQCAtMjc5LDE0ICsyODAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewog
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VV
c2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGludCBmaXJzdExp
bmUsIGludCBsYXN0TGluZSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVj
dXRhYmxlPiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlv
blBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIGludCBmaXJz
dExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGdW5jdGlvbkV4ZWN1dGFibGUoZXhlYywgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNB
cmd1bWVudHMsIHBhcmFtZXRlcnMsIGZpcnN0TGluZSwgbGFzdExpbmUpKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxlKGV4ZWMsIG5hbWUsIHNvdXJj
ZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBpc0luU3RyaWN0Q29udGV4dCwgZmly
c3RMaW5lLCBsYXN0TGluZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9y
Y2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGludCBmaXJz
dExpbmUsIGludCBsYXN0TGluZSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25F
eGVjdXRhYmxlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1l
bnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENvbnRl
eHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgbmFtZSwg
c291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGZpcnN0TGluZSwgbGFzdExp
bmUpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxl
KGdsb2JhbERhdGEsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJz
LCBpc0luU3RyaWN0Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgfkZ1bmN0aW9uRXhlY3V0YWJsZSgpOwpAQCAtMzU4LDEzICszNTksMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJs
ZT4gZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSosIERlYnVnZ2Vy
KiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMs
IEZ1bmN0aW9uUGFyYW1ldGVycyosIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7Ci0gICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFy
YW1ldGVycyosIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7CisgICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZShKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBT
b3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyos
IGJvb2wsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7CisgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VD
b2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGJvb2ws
IGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBp
bGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAg
SlNPYmplY3QqIGNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqLCBTY29wZUNo
YWluTm9kZSopOwogCi0gICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBy
ZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERhdGEqLCBTY29wZUNoYWluTm9kZSosIENvZGVC
bG9jayopOworICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJz
ZUV4Y2VwdGlvbkluZm8oRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKTsK
IAogICAgICAgICB1bnNpZ25lZCBtX251bUNhcHR1cmVkVmFyaWFibGVzIDogMzE7CiAgICAgICAg
IGJvb2wgbV9mb3JjZVVzZXNBcmd1bWVudHMgOiAxOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fj
dGl2YXRpb24uY3BwCmluZGV4IGQxMjE1MThmNTlmMmQzMzA5MzQ1MjlkYTk5Yjc5MWZlMWZmYzRj
NDkuLjc5NWFkMWY3MWMyMTEzN2Q2MTlhYWNkNGVhOGZkODY3OTJlZTZkYWYgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTE4Niw2ICsxODYsMTEgQEAgSlNPYmpl
Y3QqIEpTQWN0aXZhdGlvbjo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAg
ICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKK0pTVmFsdWUgSlNBY3RpdmF0
aW9uOjp0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICByZXR1cm4g
anNOdWxsKCk7Cit9CisgICAgCiBib29sIEpTQWN0aXZhdGlvbjo6aXNEeW5hbWljU2NvcGUoYm9v
bCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdAogewogICAgIHJlcXVpcmVzRHluYW1pY0No
ZWNrcyA9IGQoKS0+ZnVuY3Rpb25FeGVjdXRhYmxlLT51c2VzRXZhbCgpOwpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBY3RpdmF0aW9uLmgKaW5kZXggOWZmOTE2ODVkZGRlMmExNDFkZGNmNGIyNzNmMDk2
MTljNjgzZTM3Yy4uNmRkNmQ3MDcwYWY3OGE1NDdjYTgzZDYxMzE5N2VhZWU3YmU3OGJmMyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICB2aXJ0dWFsIEpT
T2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
SlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAg
dm9pZCBjb3B5UmVnaXN0ZXJzKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKaW5kZXggN2ViOWJhNTI2YjUzMDk4ZTAzNDIwMTQxOWZlODY2ZjQ4ZGNhYzNhNS4u
ZmRhYTUwOTliMTJjODliOTUzZWUyZDk5YjRmODJkOWRiYWZjODA1MSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMjIsNiArMTIyLDE1IEBAIEpTRnVuY3Rpb246On5K
U0Z1bmN0aW9uKCkKICAgICB9CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBTdHJpY3RNb2RlQ2Fs
bGVyQWNjZXNzRXJyb3IgPSAiQ2Fubm90IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkgb2YgYSBzdHJp
Y3QgbW9kZSBmdW5jdGlvbiI7CitzdGF0aWMgY29uc3QgY2hhciogU3RyaWN0TW9kZUFyZ3VtZW50
c0FjY2Vzc0Vycm9yID0gIkNhbm5vdCBhY2Nlc3MgYXJndW1lbnRzIHByb3BlcnR5IG9mIGEgc3Ry
aWN0IG1vZGUgZnVuY3Rpb24iOworCitzdGF0aWMgdm9pZCBjcmVhdGVEZXNjcmlwdG9yRm9yVGhy
b3dpbmdQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBKU1ZhbHVlIHRocm93ZXIgPSBjcmVh
dGVUeXBlRXJyb3JGdW5jdGlvbihleGVjLCBtZXNzYWdlKTsKKyAgICBkZXNjcmlwdG9yLnNldEFj
Y2Vzc29yRGVzY3JpcHRvcih0aHJvd2VyLCB0aHJvd2VyLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBHZXR0ZXIgfCBTZXR0ZXIpOworfQorCiBjb25zdCBVU3RyaW5nJiBKU0Z1bmN0aW9uOjpuYW1l
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CkBAIC0y
MDksNiArMjE4LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOCiAgICAgfQogCiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7CisgICAg
ICAgIGlmIChqc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsICJDYW4ndCBhY2Nlc3MgYXJndW1lbnRzIG9iamVjdCBvZiBhIHN0
cmljdCBtb2RlIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzTnVsbCgp
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAKICAgICAgICAgc2xv
dC5zZXRDYWNoZWFibGVDdXN0b20odGhpcywgYXJndW1lbnRzR2V0dGVyKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMjE5LDYgKzIzNCwxMSBAQCBib29sIEpTRnVuY3Rpb246Omdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TgogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmNhbGxlcikgeworICAgICAgICBpZiAoanNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgp
KSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlQ2FsbGVyQWNj
ZXNzRXJyb3IpOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShqc051bGwoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1
c3RvbSh0aGlzLCBjYWxsZXJHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0yMjYsMzUgKzI0Niw0MSBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TgogICAgIHJldHVybiBC
YXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAot
ICAgIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCi0gICAgewotICAgICAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKLSAgICAg
ICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewotICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICBnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKLSAgICAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
YXJndW1lbnRzKSB7Citib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAg
ICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7CisgICAgCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOworICAgIH0KKyAgICAKKyAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpIHsKKyAgICAgICAgaWYgKGpzRXhlY3V0
YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGNyZWF0ZURlc2NyaXB0b3JGb3JU
aHJvd2luZ1Byb3BlcnR5KGV4ZWMsIGRlc2NyaXB0b3IsIFN0cmljdE1vZGVBcmd1bWVudHNBY2Nl
c3NFcnJvcik7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3Jp
cHRvcihleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUFyZ3VtZW50cyhleGVjLCB0aGlzKSwg
UmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRE
ZXNjcmlwdG9yKGpzTnVtYmVyKGV4ZWMsIGpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgp
KSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CisgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihqc051bWJlcihleGVj
LCBqc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKSksIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgeworICAgICAg
ICBpZiAoanNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgY3JlYXRl
RGVzY3JpcHRvckZvclRocm93aW5nUHJvcGVydHkoZXhlYywgZGVzY3JpcHRvciwgU3RyaWN0TW9k
ZUNhbGxlckFjY2Vzc0Vycm9yKTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgZGVzY3JpcHRv
ci5zZXREZXNjcmlwdG9yKGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlQ2FsbGVyKGV4ZWMs
IHRoaXMpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIEJhc2U6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCisgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQor
CiB2b2lkIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7
CiAgICAgaWYgKCFpc0hvc3RGdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpKSB7CkBAIC0yNzIsNiArMjk4LDE2IEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
CiAgICAgICAgIEJhc2U6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoanNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9k
ZSgpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LmFyZ3VtZW50cykgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZUFyZ3VtZW50c0FjY2Vzc0Vycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIp
IHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVDYWxsZXJBY2Nl
c3NFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKQogICAgICAgICByZXR1cm47
CiAgICAgQmFzZTo6cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDVlYWE1OWI3OWUyMDQ5M2RkZjZh
MmJjNDYzYTQ4MWFlOWMyNjU2NTcuLjA3M2I1NGM3YmYzOGJhMzMwYTA3YWEzNDFlYjY0Yjc3MTU2
YzUxMjkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTUwLDYg
KzUwLDcgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1
ZGUgIlJlZ0V4cENhY2hlLmgiCisjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNp
bmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykK
ICNpbmNsdWRlICJSZWdFeHAuaCIKQEAgLTEyNCw2ICsxMjUsNyBAQCBKU0dsb2JhbERhdGE6OkpT
R2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBl
IHRocmVhZAogICAgICwgaW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZShKU09iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIHRlcm1pbmF0ZWRFeGVjdXRpb25F
cnJvclN0cnVjdHVyZShKU09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAs
IHN0YXRpY1Njb3BlU3RydWN0dXJlKEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZShqc051bGwoKSkpCisgICAgLCBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZShTdHJpY3RF
dmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIHN0cmluZ1N0
cnVjdHVyZShKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIG5vdEFu
T2JqZWN0RXJyb3JTdHViU3RydWN0dXJlKEpTTm90QW5PYmplY3RFcnJvclN0dWI6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSkpCiAgICAgLCBub3RBbk9iamVjdFN0cnVjdHVyZShKU05vdEFuT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmgKaW5kZXggOGUyZWQ2MTQzYTBlYzhjODk2MGRlYjVkY2ZhMDI2Zjg3Nzk4NGZmNS4u
NjdmMmVkNGJhOTZmOTUxZWJlNDg5N2FkN2IwOTUyYjlhYmVlNmZmYyAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1
Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
clN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RhdGljU2NvcGVTdHJ1Y3R1
cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0
dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJpbmdTdHJ1Y3R1cmU7CiAgICAgICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IG5vdEFuT2JqZWN0RXJyb3JTdHViU3RydWN0dXJlOwogICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBub3RBbk9iamVjdFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggODljMDQyYTRlZjQ5MWY2NzYyOTQ5ZmI5
NjYwNzRkMjY5NjFmMThjNC4uOTAzZTU3M2ZiODdkNDE0Yzg2NTRjOTlmZmM2YjdmYmNjYjVhYzM0
NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIwNCw2
ICsyMDQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkK
IAogICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUgPSBuZXcgKGV4ZWMpIEZ1bmN0aW9uUHJvdG90
eXBlKGV4ZWMsIHRoaXMsIEZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxs
KCkpKTsgLy8gVGhlIHJlYWwgcHJvdG90eXBlIHdpbGwgYmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90
eXBlIGlzIGNyZWF0ZWQuCiAgICAgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSA9IFBy
b3RvdHlwZUZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSk7
CisgICAgZCgpLT5pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpOwogICAgIE5hdGl2ZUZ1bmN0
aW9uV3JhcHBlciogY2FsbEZ1bmN0aW9uID0gMDsKICAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIq
IGFwcGx5RnVuY3Rpb24gPSAwOwogICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPmFkZEZ1bmN0
aW9uUHJvcGVydGllcyhleGVjLCB0aGlzLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZjVkMmZiMDdjMWRhZDA4MWE1ODBlNmMwMTAzNWE0
MWY2NjcxM2QwOC4uM2I5OTQzOTExODAxY2NjYTk5ZGM5N2UwOTBkODUwYjI3ODYyYzE2YiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTQ4LDYgKzE0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlOwogICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcmVnRXhw
U3RydWN0dXJlOwogICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RyaW5nT2JqZWN0U3Ry
dWN0dXJlOworICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gaW50ZXJuYWxGdW5jdGlvblN0
cnVjdHVyZTsKIAogICAgICAgICAgICAgU3ltYm9sVGFibGUgc3ltYm9sVGFibGU7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBwcm9maWxlR3JvdXA7CkBAIC0yNDMsNiArMjQ0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBkKCktPmZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSog
bnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5udW1iZXJPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCk7IH0KKyAgICAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gZCgpLT5pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gZCgpLT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAg
U3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPnJlZ0V4cFN0
cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
CmluZGV4IDFlMjBmN2ZlMmJhZDIxNzc5ZTFkNjNmZjQzNDg1MzFlMTA3ZTQxODYuLmNkODlkZDIw
Y2UyODMzZDU5Yjg4MWYwYmE1ZDc5MDBiMjIwNDRhYmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC00NTAsNyArNDUwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVy
YWxQYXJzZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBhcnNlZE9iamVjdCk7
CiAKLSAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKGV4ZWMsIG1ha2VTb3VyY2UocykpOworICAgIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZXZh
bCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShzKSwgZmFsc2UpOwog
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGV2YWwtPmNvbXBpbGUoZXhlYywgc3RhdGljX2Nhc3Q8SlNH
bG9iYWxPYmplY3QqPih1bndyYXBwZWRPYmplY3QpLT5nbG9iYWxTY29wZUNoYWluKCkubm9kZSgp
KTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgZXJy
b3IpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBjYWJjNDI4YjU3NmEzOTUy
NmI1MjE3YWI3NzU4ODU0MWRmOWU4ZTY3Li4zMGU0MGU0OTRjZjRkZWNlMjM2ZTkwZGI1MGE5NTgx
Y2JjYTQ1MzNlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNDMsNiArNDMs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU09iamVj
dCk7CiAKK2NvbnN0IGNoYXIqIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciA9
ICJBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiI7CisKIHN0YXRpYyBp
bmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGZyb20gdGhlIHN0
YXRpYyBoYXNodGFibGVzIG9mIHByb3BlcnRpZXMKQEAgLTExNCwxNSArMTE2LDE5IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1CiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpczsgIW9iai0+
c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgb2JqID0gYXNPYmplY3Qo
cHJvdG90eXBlKSkgewogICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOwogICAg
ICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBwdXREaXJlY3RJbnRl
cm5hbChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUsIHNs
b3QpOworICAgICAgICAgICAgaWYgKCFwdXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9iYWxEYXRh
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RN
b2RlKCkpCisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZTsKLSAgICBpZiAoKG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKSAmJiBhdHRyaWJ1dGVzICYg
UmVhZE9ubHkpCisgICAgaWYgKChtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgJiYgYXR0cmlidXRlcyAmIFJl
YWRPbmx5KSB7CisgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAg
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBmb3Ig
KEpTT2JqZWN0KiBvYmogPSB0aGlzOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAg
ICAgICAgaWYgKEpTVmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChwcm9wZXJ0eU5hbWUpKSB7CkBA
IC0xNTEsNyArMTU3LDggQEAgdm9pZCBKU09iamVjdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHUKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIHB1dERpcmVjdEludGVybmFsKGV4ZWMtPmdsb2JhbERhdGEoKSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1ZSwgc2xvdCk7CisgICAgaWYgKCFwdXREaXJlY3RJ
bnRlcm5hbChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUs
IHNsb3QpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgcmV0dXJuOwog
fQogCkBAIC00ODksNiArNDk2LDExIEBAIEpTT2JqZWN0KiBKU09iamVjdDo6dG9UaGlzT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlz
KTsKIH0KIAorSlNWYWx1ZSBKU09iamVjdDo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSop
IGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKTsKK30KKwog
SlNPYmplY3QqIEpTT2JqZWN0Ojp1bndyYXBwZWRPYmplY3QoKQogewogICAgIHJldHVybiB0aGlz
OwpAQCAtNzAyLDQgKzcxNCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK0pTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFVTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNDIwMTcwMzE2MjU2ZmVjOTYxMDkzMjAwYTZk
YTdlM2JiNmE4YTdkNy4uZGE5NWYwN2Q0NGUwZDk0MWViM2JmOWQwMDc5YTNlYTE1OTg1ZTc4OSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNTUsNiArNTUsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgc3RydWN0IEhhc2hUYWJsZTsKIAorICAg
IEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Cisg
ICAgZXh0ZXJuIGNvbnN0IGNoYXIqIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cjsKKwogICAgIC8vIEVDTUEgMjYyLTMgOC42LjEKICAgICAvLyBQcm9wZXJ0eSBhdHRyaWJ1dGVz
CiAgICAgZW51bSBBdHRyaWJ1dGUgewpAQCAtMTQwLDYgKzE0Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsK
IAogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRl
KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCgpOwog
CiAgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY0Z1bmN0aW9u
KSBjb25zdDsKQEAgLTE3NSw5ICsxNzksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gIW1fc3RydWN0dXJlLT5pc0VtcHR5KCk7
IH0KICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9z
dHJ1Y3R1cmUtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgfQogCi0gICAgICAgIHZvaWQg
cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
OworICAgICAgICBib29sIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7Ci0gICAg
ICAgIHZvaWQgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0KGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CiAKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKICAgICAgICAg
dm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Q2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KTsKQEAgLTIwNSw2ICsyMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmF0aW9uT2JqZWN0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzTm90QW5PYmplY3RFcnJvclN0dWIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHJpY3RN
b2RlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIHZpcnR1YWwg
Q29tcGxUeXBlIGV4Y2VwdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBUaHJvdzsgfQogCkBAIC0y
NjUsOCArMjcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxKU1ZhbHVlKj4oJnByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0pOwogICAgICAg
ICB9CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFk
T25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKLSAgICAgICAgdm9pZCBwdXRE
aXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIs
IGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKKyAg
ICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hl
Y2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJl
Y3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAogICAgICAgICBib29sIGlubGlu
ZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtNDUwLDcgKzQ1NSw3IEBAIGlubGluZSBKU1ZhbHVl
IEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNv
bnN0CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90LCBKU0NlbGwqIHNwZWNpZmljRnVuY3Rpb24pCitpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHks
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uKQogewogICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpo
ZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKQEAgLTQ2NSw3ICs0NzAsOCBAQCBpbmxp
bmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rp
b24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQogICAg
ICAgICAgICAgICAgIG1fc3RydWN0dXJlLT5kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24ocHJv
cGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmIChjaGVja1JlYWRPbmx5ICYmIGN1cnJlbnRBdHRy
aWJ1dGVzICYgUmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwg
dmFsdWUpOwogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIG9iamVjdHMgc3RydWN0
dXJlIG9ubHkgaGFzIGEgc3BlY2lmaWMgdmFsdWUgc2V0IGlmIHByZXZpb3VzbHkgdGhlcmUKICAg
ICAgICAgICAgIC8vIGhhZCBiZWVuIG9uZSBzZXQsIGFuZCBpZiB0aGUgbmV3IHZhbHVlIGJlaW5n
IHNwZWNpZmllZCBpcyB0aGUgc2FtZSAob3RoZXJ3aXNlIHdlIHdvdWxkCkBAIC00NzUsNyArNDgx
LDcgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2Fz
IHByZXZpb3VzbHkgYSB2YWx1ZSwgYW5kIHRoZSBuZXcgdmFsdWUgaXMgdGhlIHNhbWUsIHRoZW4g
d2UgY2Fubm90IGNhY2hlLgogICAgICAgICAgICAgaWYgKCFjdXJyZW50U3BlY2lmaWNGdW5jdGlv
biB8fCAoc3BlY2lmaWNGdW5jdGlvbiAhPSBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbikpCiAgICAg
ICAgICAgICAgICAgc2xvdC5zZXRFeGlzdGluZ1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7Ci0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAg
ICAgICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKTsKQEAgLTQ4OCw3ICs0OTQsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
CiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwgYmVsb3cuCiAg
ICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAgICAgICAgIHNsb3Quc2V0TmV3UHJv
cGVydHkodGhpcywgb2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKICAgICBzaXplX3Qgb2Zmc2V0OwpAQCAtNTA0LDcgKzUxMCw3IEBAIGlubGlu
ZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5j
YWNoYWJsZSBzdGF0ZS4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQogICAgICAgICAg
ICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1
dGVzOwpAQCAtNTEyLDcgKzUxOCw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJ
bnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICBvZmZz
ZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1
cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQp
IHsKICAgICAgICAgaWYgKGNoZWNrUmVhZE9ubHkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFk
T25seSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgICAgICAvLyBUaGVyZSBhcmUgdGhyZWUgcG9zc2liaWxpdGllcyBoZXJlOgogICAgICAgICAv
LyAgKDEpIFRoZXJlIGlzIGFuIGV4aXN0aW5nIHNwZWNpZmljIHZhbHVlIHNldCwgYW5kIHdlJ3Jl
IG92ZXJ3cml0aW5nIHdpdGggKnRoZSBzYW1lIHZhbHVlKi4KQEAgLTUyNyw3ICs1MzMsNyBAQCBp
bmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICAvLyBjYXNlICgxKSBEbyB0aGUgcHV0
LCB0aGVuIHJldHVybiBsZWF2aW5nIHRoZSBzbG90IHVuY2FjaGFibGUuCiAgICAgICAgICAgICBp
ZiAoc3BlY2lmaWNGdW5jdGlvbiA9PSBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbikgewogICAgICAg
ICAgICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZzZXQsIHZhbHVlKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAvLyBjYXNlICgyKSBEZXNwZWNpZnksIGZhbGwgdGhyb3VnaCB0byAoMykuCiAg
ICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5z
aXRpb24obV9zdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpOwpAQCAtNTM2LDcgKzU0Miw3IEBAIGlu
bGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90LCBk
byB0aGUgcHV0LCByZXR1cm4uCiAgICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlz
LCBvZmZzZXQpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gSWYgd2Ug
aGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBp
ZiB0aGVyZSBpcwpAQCAtNTYxLDE0ICs1NjcsMTUgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQog
ICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCiAgICAgaWYg
KCFzcGVjaWZpY0Z1bmN0aW9uKQogICAgICAgICBzbG90LnNldE5ld1Byb3BlcnR5KHRoaXMsIG9m
ZnNldCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBj
aGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VS
VCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZh
bHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIAotICAgIHB1dERpcmVjdEludGVybmFsKHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIGdldEpTRnVu
Y3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwo
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgZ2V0
SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
CkBAIC01NzcsMTIgKzU4NCwxMiBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50
ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgIHB1dERp
cmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBzbG90
LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NF
UlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2
YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKLSAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCAwKTsKKyAg
ICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRl
cywgY2hlY2tSZWFkT25seSwgc2xvdCwgMCk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAtNTkxLDkgKzU5OCw5IEBAIGlubGluZSB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1CiAgICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmli
dXRlcywgZmFsc2UsIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBm
YWxzZSwgc2xvdCwgMCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFt
ZSwgdmFsdWUsIDAsIGZhbHNlLCBzbG90LCAwKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxs
KiB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCkBAIC02OTgsMTAgKzcwNSwxMSBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVl
OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdQogICAgIGFzQ2VsbCgpLT5wdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dERpcmVjdChFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK2lubGluZSB2b2lkIEpTVmFsdWU6OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEFTU0VSVChpc0NlbGwoKSAmJiBpc09iamVjdCgpKTsKLSAgICBh
c09iamVjdChhc0NlbGwoKSktPnB1dERpcmVjdChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
KyAgICBpZiAoIWFzT2JqZWN0KGFzQ2VsbCgpKS0+cHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiB9CiAKIGlubGlu
ZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTc1Niw2ICs3NjQsMTMgQEAgaW5saW5lIEpTU3RyaW5nKiBK
U1ZhbHVlOjp0b1RoaXNKU1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJu
IGlzU3RyaW5nKCkgPyBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKSA6IGpzU3RyaW5n
KGV4ZWMsIHRvVGhpc09iamVjdChleGVjKS0+dG9TdHJpbmcoZXhlYykpOwogfQogCitpbmxpbmUg
SlNWYWx1ZSBKU1ZhbHVlOjp0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAoreworICAgIGlmICghaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIHJl
dHVybiBhc09iamVjdChhc0NlbGwoKSktPnRvU3RyaWN0VGhpc09iamVjdChleGVjKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU09iamVjdF9oCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCBhZDEwMjE4MDkzODZm
Njk1ZTdlMjI1MzhhYTNlZGYzNjU5ODM4NGQzLi43YWIxZDFjMTA3NDRmNTAzYmZhODFkMTc5YTdi
M2Y0YjNkYjA2NDQzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGlj
U2NvcGVPYmplY3QuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29w
ZU9iamVjdC5jcHAKQEAgLTQyLDYgKzQyLDExIEBAIEpTT2JqZWN0KiBKU1N0YXRpY1Njb3BlT2Jq
ZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBleGVj
LT5nbG9iYWxUaGlzVmFsdWUoKTsKIH0KIAorSlNWYWx1ZSBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0
b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICByZXR1cm4ganNOdWxs
KCk7Cit9CisKIHZvaWQgSlNTdGF0aWNTY29wZU9iamVjdDo6cHV0KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JikKIHsKICAgICBpZiAoc3ltYm9sVGFibGVQdXQocHJvcGVydHlOYW1lLCB2YWx1ZSkpCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCmluZGV4IGMwNTE5YzFm
YzYwNDRmZjQxYzBjNzIyY2M0YTdlNzc4ZDhjYmVjYzUuLmU2OTM1NmEzMjVlNmZjMDJjZTgwMzQ1
OTY0MTNjMWU4ZTY2Y2VhNTIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAgICAgICAgIGJvb2wgaXNEeW5h
bWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKICAgICAgICAgdmly
dHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICB2
aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAg
ICAgICAgIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
aAppbmRleCBiNTgzNGMxOTY2MGM5ZjllMGIxZjc3NDg0Y2E1YWQyYzkxNTI0NDc5Li5mNzc2MTU3
M2RlOTFmNDEwNzdkOTMyOTE1N2NjODc4YjU4ZDgxZjllIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuaApAQCAtMTkzLDYgKzE5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wg
bmVlZHNUaGlzQ29udmVyc2lvbigpIGNvbnN0OwogICAgICAgICBKU09iamVjdCogdG9UaGlzT2Jq
ZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVj
dChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgVVN0cmluZyB0b1RoaXNTdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgIEpTU3RyaW5nKiB0b1RoaXNKU1N0cmluZyhFeGVjU3RhdGUq
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5o
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCmluZGV4IDcxMWY2NzMyYmNjZWFl
YjgxYzBlMDc3NzBjMjM0ZDI3MjAxNTBmNTQuLmRhNDU2OTliOTYxNTc0NmY2NTEzZWRmNDc3MjE2
NGRmY2JmZWEzM2YgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgKQEAgLTYwLDYgKzYwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkKSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBKU1ZhbHVlKCk7
IH0KICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4ganNOdWxsKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1
dFByb3BlcnR5U2xvdC5oCmluZGV4IGViOGVhOGE5OTQyZjdhYWYxY2I4MDAzYzkyY2VkNzZiYjRk
ZDNjYmYuLjRiMGIzOTQ4ZmJiMjlmMDgyYTMxNjIxZDY2NWQzNWMzZGMyNmY3MTcgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaApAQCAtMzgsOSArMzgsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5cGUgeyBVbmNhY2hhYmxl
LCBFeGlzdGluZ1Byb3BlcnR5LCBOZXdQcm9wZXJ0eSB9OwogCi0gICAgICAgIFB1dFByb3BlcnR5
U2xvdCgpCisgICAgICAgIFB1dFByb3BlcnR5U2xvdChib29sIGlzU3RyaWN0TW9kZSA9IGZhbHNl
KQogICAgICAgICAgICAgOiBtX3R5cGUoVW5jYWNoYWJsZSkKICAgICAgICAgICAgICwgbV9iYXNl
KDApCisgICAgICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAg
ewogICAgICAgICB9CiAKQEAgLTYxLDYgKzYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgICAgICBKU09iamVjdCog
YmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogCisgICAgICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICAgICAgYm9vbCBpc0Nh
Y2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBVbmNhY2hhYmxlOyB9CiAgICAgICAg
IHNpemVfdCBjYWNoZWRPZmZzZXQoKSBjb25zdCB7CiAgICAgICAgICAgICBBU1NFUlQoaXNDYWNo
ZWFibGUoKSk7CkBAIC03MCw2ICs3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUeXBl
IG1fdHlwZTsKICAgICAgICAgSlNPYmplY3QqIG1fYmFzZTsKICAgICAgICAgc2l6ZV90IG1fb2Zm
c2V0OworICAgICAgICBib29sIG1faXNTdHJpY3RNb2RlOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41YmIwMTNiNzNlMjVhMTA0MjY1MDQyNWRlZDhlZTEyMTFlNmY5MzU2
Ci0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgorCituYW1lc3BhY2UgSlND
IHsKKworU3RyaWN0RXZhbEFjdGl2YXRpb246OlN0cmljdEV2YWxBY3RpdmF0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKKyAgICA6IEpTT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5zdHJpY3RFdmFsQWN0
aXZhdGlvblN0cnVjdHVyZSkKK3sKK30KKworYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVs
ZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitKU09iamVjdCogU3RyaWN0RXZhbEFjdGl2YXRpb246OnRvVGhpc09iamVj
dChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRoaXNW
YWx1ZSgpOworfQorCitKU1ZhbHVlIFN0cmljdEV2YWxBY3RpdmF0aW9uOjp0b1N0cmljdFRoaXNP
YmplY3QoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICByZXR1cm4ganNOdWxsKCk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24u
aCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMzg1ZWVjZTRiMjViMzYyODQ2YzlkNWViMjI4ZDNmNzFhZmI2ODUwCi0tLSAvZGV2L251
bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0cmljdEV2YWxBY3RpdmF0aW9u
X2gKKyNkZWZpbmUgU3RyaWN0RXZhbEFjdGl2YXRpb25faAorCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cmljdEV2YWxBY3RpdmF0aW9uIDogcHVi
bGljIEpTT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBTdHJpY3RFdmFsQWN0aXZhdGlvbihFeGVjU3Rh
dGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYpOworICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3Rh
dGUqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNT
dGF0ZSopIGNvbnN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTdHJp
Y3RFdmFsQWN0aXZhdGlvbl9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMThlNDFiMzEwNTVhMDM4NDJlYTA2ZGMxY2JlNWVh
NzBjMjY5YzBkZi4uOTYxZGFlM2Q3OWYyYTY3YjJiYjUwYTdlMzEzOGJmOGE3OWNlMTIyOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0VTNV0gSW1wbGVtZW50IHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwMQorCisgICAgICAgIFRlc3RzIGZvciB0aGUgbWFueSBk
aWZmZXJlbnQgYmVoYXZpb3VycyB3ZSBnZXQgaW4gc3RyaWN0IG1vZGUuCisKKyAgICAgICAgKiBm
YXN0L2pzL2Jhc2ljLXN0cmljdC1tb2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9kZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L3NjcmlwdC10ZXN0cy9iYXNpYy1zdHJpY3QtbW9kZS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0
VGhpcyk6CisgICAgICAgICh0ZXN0R2xvYmFsQWNjZXNzKToKKwogMjAxMC0xMC0wOSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZp
eC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc3RyaWN0LW1vZGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9kZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzI5Yzc4OTQwOWRkNThjMTllZjc1NzY3OWE2NzIyZDNlMDQ5NzQ0
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc3RyaWN0LW1v
ZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAwIEBACitUZXN0IGJlaGF2aW91ciBvZiBzdHJp
Y3QgbW9kZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0VGhpcy5j
YWxsKG51bGwpIGlzIG51bGwKK1BBU1MgdGVzdFRoaXMuY2FsbCgxKSBpcyAxCitQQVNTIHRlc3RU
aGlzLmNhbGwodHJ1ZSkgaXMgdHJ1ZQorUEFTUyB0ZXN0VGhpcy5jYWxsKGZhbHNlKSBpcyBmYWxz
ZQorUEFTUyB0ZXN0VGhpcy5jYWxsKHVuZGVmaW5lZCkgaXMgdW5kZWZpbmVkCitQQVNTIHRlc3RU
aGlzLmNhbGwoJ2Egc3RyaW5nJykgaXMgJ2Egc3RyaW5nJworUEFTUyB0ZXN0R2xvYmFsQWNjZXNz
KCkgaXMgbnVsbAorUEFTUyAoZnVuY3Rpb24gZXZhbCgpeyd1c2Ugc3RyaWN0Jzt9KSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKGV2YWwp
eyd1c2Ugc3RyaWN0Jzt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9y
LgorUEFTUyAoZnVuY3Rpb24gYXJndW1lbnRzKCl7J3VzZSBzdHJpY3QnO30pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoYXJndW1lbnRz
KXsndXNlIHN0cmljdCc7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJv
ci4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgdmFyIGV2YWw7fSkgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ug
c3RyaWN0JzsgdmFyIGFyZ3VtZW50czt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBh
cnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyB0cnl7fWNhdGNoKGV2
YWwpe319KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAo
ZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyB0cnl7fWNhdGNoKGFyZ3VtZW50cyl7fX0pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoYSwg
YSl7J3VzZSBzdHJpY3QnO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJy
b3IuCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBkZWxldGUgYTt9KSgpIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoKXsn
dXNlIHN0cmljdCc7IHZhciBhOyBkZWxldGUgYTt9KSgpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoKXt2YXIgYTsgZnVuY3Rpb24gZigp
IHsndXNlIHN0cmljdCc7IGRlbGV0ZSBhO30gfSkoKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyB3aXRoKDEp
e307fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1
bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzLmNhbGxlZTsgfSkoKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBVbmFibGUgdG8gYWNjZXNzIGNhbGxlZSBvZiBzdHJpY3QgbW9kZSBm
dW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzLmNhbGxl
cjsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBVbmFibGUgdG8gYWNjZXNzIGNhbGxl
ciBvZiBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIGYoKXsndXNlIHN0cmlj
dCc7IGYuYXJndW1lbnRzOyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbid0IGFj
Y2VzcyBhcmd1bWVudHMgb2JqZWN0IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTIChm
dW5jdGlvbiBmKCl7J3VzZSBzdHJpY3QnOyBmLmNhbGxlcjsgfSkoKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBDYW5ub3QgYWNjZXNzIGNhbGxlciBwcm9wZXJ0eSBvZiBhIHN0cmljdCBtb2Rl
IGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gZigpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM9
NTsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3QgYWNjZXNzIGFyZ3VtZW50
cyBwcm9wZXJ0eSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gZigp
eyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI9NTsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBDYW5ub3QgYWNjZXNzIGNhbGxlciBwcm9wZXJ0eSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9u
LgorUEFTUyAoZnVuY3Rpb24gKGFyZyl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHMuY2FsbGVlOyB9
KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVuYWJsZSB0byBhY2Nlc3MgY2FsbGVlIG9m
IHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gKGFyZyl7J3VzZSBzdHJpY3Qn
OyBhcmd1bWVudHMuY2FsbGVyOyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVuYWJs
ZSB0byBhY2Nlc3MgY2FsbGVyIG9mIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rp
b24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM7IH0pKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQ2FuJ3QgYWNjZXNzIGFyZ3VtZW50cyBvYmplY3Qgb2YgYSBzdHJpY3QgbW9k
ZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IGYuY2FsbGVy
OyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBhY2Nlc3MgY2FsbGVyIHBy
b3BlcnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7
J3VzZSBzdHJpY3QnOyBmLmFyZ3VtZW50cz01OyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IENhbm5vdCBhY2Nlc3MgYXJndW1lbnRzIHByb3BlcnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVu
Y3Rpb24uCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyBmLmNhbGxlcj01OyB9
KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBhY2Nlc3MgY2FsbGVyIHByb3Bl
cnR5IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTICd1c2Ugc3RyaWN0JzsgKGZ1bmN0
aW9uICgpe3dpdGgoMSl7fTt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVy
cm9yLgorUEFTUyAndXNlIHN0cmljdCc7IChmdW5jdGlvbiAoKXt2YXIgYTsgZGVsZXRlIGE7fSkg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJp
Y3QnOyB2YXIgYTsgKGZ1bmN0aW9uICgpeyBkZWxldGUgYTt9KSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyB2YXIgYTsgKGZ1bmN0aW9uICgpeyAndXNlIHN0
cmljdCc7IGRlbGV0ZSBhO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJy
b3IuCitQQVNTICdtaXNjIGRpcmVjdGl2ZSc7ICd1c2Ugc3RyaWN0Jzsgd2l0aCh7fSl7fSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7
IHJldHVybiB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFsaWQgcmV0dXJuIHN0YXRl
bWVudC4uCitQQVNTICd1c2Ugc3RyaWN0JzsgYnJlYWsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBjb250aW51ZSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGZvcig7
OylyZXR1cm4gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIHJldHVybiBzdGF0
ZW1lbnQuLgorUEFTUyAndXNlIHN0cmljdCc7IGZvcig7OylicmVhayBtaXNzaW5nTGFiZWwgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3Qn
OyBmb3IoOzspY29udGludWUgbWlzc2luZ0xhYmVsIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgMDA3OyB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7ICdcMDA3JzsgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ1wwMDcnOyAndXNl
IHN0cmljdCc7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNT
ICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpeyBkZWxldGUgc29tZURlY2xhcmVkR2xvYmFsO30p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlv
biAoKXsgJ3VzZSBzdHJpY3QnOyBkZWxldGUgc29tZURlY2xhcmVkR2xvYmFsO30pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0Jzsgc29t
ZUdsb2JhbCA9ICdTaG91bGRuXCd0IGJlIGFibGUgdG8gYXNzaWduIHRoaXMuJzsgc29tZUdsb2Jh
bDsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBz
dHJpY3QnOyBldmFsKCd2YXIgaW50cm9kdWNlZFZhcmlhYmxlID0gIkZBSUw6IHZhcmlhYmxlIGlu
dHJvZHVjZWQgaW50byBjb250YWluaW5nIHNjb3BlIjsnKTsgaW50cm9kdWNlZFZhcmlhYmxlIHRo
cmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogaW50cm9k
dWNlZFZhcmlhYmxlLgorUEFTUyAndXNlIHN0cmljdCc7IG9iamVjdFdpdGhSZWFkb25seVByb3Bl
cnR5LnByb3AgPSAnZmFpbCcgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRv
IGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4uCitQQVNTICd1c2Ugc3RyaWN0JzsgZGVsZXRl
IG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5LnByb3AgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4uCitQQVNTICd1c2Ugc3RyaWN0JzsgZGVsZXRl
IG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5W3JlYWRvbmx5UHJvcE5hbWVdIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuLgorUEFTUyAndXNlIHN0
cmljdCc7ICsrZXZhbCB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgor
UEFTUyAndXNlIHN0cmljdCc7IGV2YWwrKyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBh
cnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IC0tZXZhbCB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGV2YWwtLSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGlm
ICgwKSBkZWxldGUgK2EuYiB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9y
LgorUEFTUyAndXNlIHN0cmljdCc7IGlmICgwKSBkZWxldGUgKythLmIgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBpZiAoMCkgZGVs
ZXRlIHZvaWQgYS5iIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQ
QVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhID0gZmFsc2U7IHJldHVybiBhICE9PSBh
cmd1bWVudHNbMF07IH0pKHRydWUpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0
cmljdCc7IGFyZ3VtZW50c1swXSA9IGZhbHNlOyByZXR1cm4gYSAhPT0gYXJndW1lbnRzWzBdOyB9
KSh0cnVlKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhPWZhbHNl
OyByZXR1cm4gYXJndW1lbnRzOyB9KSh0cnVlKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAo
YSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09ZmFsc2U7IHJldHVybiBhOyB9KSh0cnVlKSBp
cyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09dHJ1
ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoZmFsc2UpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9u
ICgpeyd1c2Ugc3RyaWN0JzsgIGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9
KShmYWxzZSlbMF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJn
dW1lbnRzWzBdPXRydWU7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0gaXMgdHJ1
ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPWZhbHNlOyBh
PXRydWU7IHJldHVybiBhOyB9KSgpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0
cmljdCc7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIGlzIHRy
dWUKK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgIGFyZ3VtZW50c1swXT10cnVlOyBy
ZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNl
IHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGEgPSBmYWxzZTsg
cmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsgfSkodHJ1ZSkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rp
b24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsg
YXJndW1lbnRzWzBdID0gZmFsc2U7IHJldHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0pKHRydWUp
IGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1
bmN0aW9uICgpe2xvY2FsO30pKCk7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKHRydWUp
WzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsg
KGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50c1swXT1mYWxzZTsgcmV0dXJuIGE7IH0p
KHRydWUpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2Nh
bDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJn
dW1lbnRzOyB9KShmYWxzZSlbMF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJp
Y3QnOyAgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRy
dWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlv
biAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBh
cmd1bWVudHNbMF09dHJ1ZTsgYT1mYWxzZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoKVswXSBpcyB0
cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlv
biAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSko
KVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7
IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09ZmFsc2U7IGE9dHJ1ZTsgcmV0
dXJuIGE7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgdmFy
IGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVy
biBhcmd1bWVudHM7IH0pKClbMF0gaXMgdHJ1ZQorUEFTUyAndXNlIHN0cmljdCc7IChmdW5jdGlv
biAoKXt2YXIgYSA9IHRydWU7IGV2YWwoJ3ZhciBhID0gZmFsc2UnKTsgcmV0dXJuIGE7IH0pKCkg
aXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKCl7dmFyIGEgPSB0cnVlOyBldmFsKCcidXNlIHN0cmlj
dCI7IHZhciBhID0gZmFsc2UnKTsgcmV0dXJuIGE7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rp
b24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZiwgJ2FyZ3VtZW50cycpLnZhbHVlOyB9KSgpIGlzIHVuZGVmaW5lZC4KK1BBU1MgKGZ1
bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGYsICdjYWxsZXInKS52YWx1ZTsgfSkoKSBpcyB1bmRlZmluZWQuCitQQVNTIChm
dW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZWUnKS52YWx1ZTsgfSkoKSBpcyB1bmRlZmluZWQu
CitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZXInKS52YWx1ZTsgfSkoKSBpcyB1
bmRlZmluZWQuCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3Jp
cHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVy
Jyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkgaXMgdHJ1
ZQorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlZScpOyByZXR1
cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIGlzIHRydWUKK1BBU1Mg
KGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihmLCAnY2FsbGVyJyk7IHJldHVybiBkZXNjcmlwdG9yLmdl
dCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gZihhcmcp
eyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGYsICdhcmd1bWVudHMnKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlw
dG9yLnNldDsgfSkoKSBpcyB0cnVlCitQQVNTICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uIGYoKSB7
IGZvcih2YXIgaSBpbiB0aGlzKTsgfSkoKTsgdHJ1ZTsgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvanMvYmFzaWMtc3RyaWN0LW1vZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMv
YmFzaWMtc3RyaWN0LW1vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTc3MWRmMDEzODUyMGRiMDhlOWE0
OGNiNjU0Y2QzYmU4ZTE3MWM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9iYXNpYy1zdHJpY3QtbW9kZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvYmFzaWMtc3RyaWN0LW1vZGUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0
cy9iYXNpYy1zdHJpY3QtbW9kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTkyYmU0NWM1MmE5MTZkY2NjMTE4
ZWFmZGMyNzI3MDMzMmUwZDYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanMKQEAgLTAsMCArMSwxMTUgQEAKK2Rl
c2NyaXB0aW9uKCJUZXN0IGJlaGF2aW91ciBvZiBzdHJpY3QgbW9kZSIpOworCit2YXIgZ2xvYmFs
VGhpc1Rlc3Q7CitmdW5jdGlvbiB0ZXN0VGhpcygpIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAg
cmV0dXJuIHRoaXM7Cit9CitmdW5jdGlvbiB0ZXN0R2xvYmFsQWNjZXNzKCkgeworICAgIHJldHVy
biB0ZXN0VGhpcygpOworfQorc2hvdWxkQmUoInRlc3RUaGlzLmNhbGwobnVsbCkiLCAibnVsbCIp
Oworc2hvdWxkQmUoInRlc3RUaGlzLmNhbGwoMSkiLCAiMSIpOworc2hvdWxkQmUoInRlc3RUaGlz
LmNhbGwodHJ1ZSkiLCAidHJ1ZSIpOworc2hvdWxkQmUoInRlc3RUaGlzLmNhbGwoZmFsc2UpIiwg
ImZhbHNlIik7CitzaG91bGRCZSgidGVzdFRoaXMuY2FsbCh1bmRlZmluZWQpIiwgInVuZGVmaW5l
ZCIpOworc2hvdWxkQmUoInRlc3RUaGlzLmNhbGwoJ2Egc3RyaW5nJykiLCAiJ2Egc3RyaW5nJyIp
OworCitzaG91bGRCZSgidGVzdEdsb2JhbEFjY2VzcygpIiwgIm51bGwiKTsKKworc2hvdWxkVGhy
b3coIihmdW5jdGlvbiBldmFsKCl7J3VzZSBzdHJpY3QnO30pIik7CitzaG91bGRUaHJvdygiKGZ1
bmN0aW9uIChldmFsKXsndXNlIHN0cmljdCc7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24g
YXJndW1lbnRzKCl7J3VzZSBzdHJpY3QnO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIChh
cmd1bWVudHMpeyd1c2Ugc3RyaWN0Jzt9KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsn
dXNlIHN0cmljdCc7IHZhciBldmFsO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1
c2Ugc3RyaWN0JzsgdmFyIGFyZ3VtZW50czt9KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAo
KXsndXNlIHN0cmljdCc7IHRyeXt9Y2F0Y2goZXZhbCl7fX0pIik7CitzaG91bGRUaHJvdygiKGZ1
bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgdHJ5e31jYXRjaChhcmd1bWVudHMpe319KSIpOworc2hv
dWxkVGhyb3coIihmdW5jdGlvbiAoYSwgYSl7J3VzZSBzdHJpY3QnO30pIik7CitzaG91bGRUaHJv
dygiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGRlbGV0ZSBhO30pKCkiKTsKK3Nob3VsZFRo
cm93KCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyB2YXIgYTsgZGVsZXRlIGE7fSkoKSIpOwor
c2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXt2YXIgYTsgZnVuY3Rpb24gZigpIHsndXNlIHN0cmlj
dCc7IGRlbGV0ZSBhO30gfSkoKSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0
cmljdCc7IHdpdGgoMSl7fTt9KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0
cmljdCc7IGFyZ3VtZW50cy5jYWxsZWU7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24g
KCl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHMuY2FsbGVyOyB9KSgpIik7CitzaG91bGRUaHJvdygi
KGZ1bmN0aW9uIGYoKXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzOyB9KSgpIik7CitzaG91bGRU
aHJvdygiKGZ1bmN0aW9uIGYoKXsndXNlIHN0cmljdCc7IGYuY2FsbGVyOyB9KSgpIik7CitzaG91
bGRUaHJvdygiKGZ1bmN0aW9uIGYoKXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzPTU7IH0pKCki
KTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gZigpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI9NTsg
fSkoKSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoYXJnKXsndXNlIHN0cmljdCc7IGFyZ3Vt
ZW50cy5jYWxsZWU7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKGFyZyl7J3VzZSBz
dHJpY3QnOyBhcmd1bWVudHMuY2FsbGVyOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9u
IGYoYXJnKXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzOyB9KSgpIik7CitzaG91bGRUaHJvdygi
KGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IGYuY2FsbGVyOyB9KSgpIik7CitzaG91bGRU
aHJvdygiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzPTU7IH0pKCki
KTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI9
NTsgfSkoKSIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpe3dpdGgo
MSl7fTt9KSIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpe3ZhciBh
OyBkZWxldGUgYTt9KSIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgdmFyIGE7IChmdW5j
dGlvbiAoKXsgZGVsZXRlIGE7fSkiKTsKK3Nob3VsZFRocm93KCJ2YXIgYTsgKGZ1bmN0aW9uICgp
eyAndXNlIHN0cmljdCc7IGRlbGV0ZSBhO30pIik7CitzaG91bGRUaHJvdygiJ21pc2MgZGlyZWN0
aXZlJzsgJ3VzZSBzdHJpY3QnOyB3aXRoKHt9KXt9Iik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJp
Y3QnOyByZXR1cm4iKTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7IGJyZWFrIik7CitzaG91
bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBjb250aW51ZSIpOworc2hvdWxkVGhyb3coIid1c2Ugc3Ry
aWN0JzsgZm9yKDs7KXJldHVybiIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZm9yKDs7
KWJyZWFrIG1pc3NpbmdMYWJlbCIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZm9yKDs7
KWNvbnRpbnVlIG1pc3NpbmdMYWJlbCIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgMDA3
OyIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgJ1xcMDA3JzsiKTsKK3Nob3VsZFRocm93
KCInXFwwMDcnOyAndXNlIHN0cmljdCc7Iik7CisKK3ZhciBzb21lRGVjbGFyZWRHbG9iYWw7Citz
aG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7IGRlbGV0ZSBzb21lRGVjbGFy
ZWRHbG9iYWw7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKCl7ICd1c2Ugc3RyaWN0Jzsg
ZGVsZXRlIHNvbWVEZWNsYXJlZEdsb2JhbDt9KSIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0
Jzsgc29tZUdsb2JhbCA9ICdTaG91bGRuXFwndCBiZSBhYmxlIHRvIGFzc2lnbiB0aGlzLic7IHNv
bWVHbG9iYWw7Iik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBldmFsKCd2YXIgaW50cm9k
dWNlZFZhcmlhYmxlID0gXCJGQUlMOiB2YXJpYWJsZSBpbnRyb2R1Y2VkIGludG8gY29udGFpbmlu
ZyBzY29wZVwiOycpOyBpbnRyb2R1Y2VkVmFyaWFibGUiKTsKK3ZhciBvYmplY3RXaXRoUmVhZG9u
bHlQcm9wZXJ0eSA9IHt9OworT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdFdpdGhSZWFkb25s
eVByb3BlcnR5LCAicHJvcCIsIHt2YWx1ZTogInZhbHVlIiwgd3JpdGFibGU6ZmFsc2V9KTsKK3No
b3VsZFRocm93KCIndXNlIHN0cmljdCc7IG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5LnByb3Ag
PSAnZmFpbCciKTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7IGRlbGV0ZSBvYmplY3RXaXRo
UmVhZG9ubHlQcm9wZXJ0eS5wcm9wIik7CityZWFkb25seVByb3BOYW1lID0gInByb3AiOworc2hv
dWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZGVsZXRlIG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5
W3JlYWRvbmx5UHJvcE5hbWVdIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyArK2V2YWwi
KTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7IGV2YWwrKyIpOworc2hvdWxkVGhyb3coIid1
c2Ugc3RyaWN0JzsgLS1ldmFsIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBldmFsLS0i
KTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7IGlmICgwKSBkZWxldGUgK2EuYiIpOworc2hv
dWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgaWYgKDApIGRlbGV0ZSArK2EuYiIpOworc2hvdWxkVGhy
b3coIid1c2Ugc3RyaWN0JzsgaWYgKDApIGRlbGV0ZSB2b2lkIGEuYiIpOworCitzaG91bGRCZVRy
dWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhID0gZmFsc2U7IHJldHVybiBhICE9PSBh
cmd1bWVudHNbMF07IH0pKHRydWUpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3Vz
ZSBzdHJpY3QnOyBhcmd1bWVudHNbMF0gPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1sw
XTsgfSkodHJ1ZSkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7
IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKHRydWUpWzBdIik7CitzaG91bGRCZVRydWUo
IihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09ZmFsc2U7IHJldHVybiBh
OyB9KSh0cnVlKSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0Jzsg
YXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSIpOworc2hv
dWxkQmVUcnVlKCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgYXJndW1lbnRzWzBdPXRydWU7
IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rp
b24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPXRydWU7IGE9ZmFsc2U7IHJldHVybiBh
cmd1bWVudHM7IH0pKClbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0
cmljdCc7IGFyZ3VtZW50c1swXT1mYWxzZTsgYT10cnVlOyByZXR1cm4gYTsgfSkoKSIpOworc2hv
dWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPXRydWU7
IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uICgp
eyd1c2Ugc3RyaWN0JzsgIGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgp
WzBdIik7CisKKy8vIFNhbWUgdGVzdHMgYWdhaW4sIHRoaXMgdGltZSBmb3JjaW5nIGFuIGFjdGl2
YXRpb24gdG8gYmUgY3JlYXRlZCBhcyB3ZWxsCitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7
J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhID0gZmFs
c2U7IHJldHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0pKHRydWUpIik7CitzaG91bGRCZVRydWUo
IihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2Nh
bDt9KSgpOyBhcmd1bWVudHNbMF0gPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsg
fSkodHJ1ZSkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZh
ciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVu
dHM7IH0pKHRydWUpWzBdIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJp
Y3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09ZmFs
c2U7IHJldHVybiBhOyB9KSh0cnVlKSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1
c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRz
WzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSIpOworc2hvdWxkQmVUcnVl
KCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9j
YWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNlKVsw
XSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2Fs
OyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IGE9ZmFsc2U7IHJl
dHVybiBhcmd1bWVudHM7IH0pKClbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsn
dXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50
c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIik7CitzaG91bGRCZVRydWUoIihm
dW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9
KSgpOyBhcmd1bWVudHNbMF09ZmFsc2U7IGE9dHJ1ZTsgcmV0dXJuIGE7IH0pKCkiKTsKK3Nob3Vs
ZEJlVHJ1ZSgiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgIHZhciBsb2NhbDsgKGZ1bmN0aW9u
ICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgp
WzBdIik7CisKK3Nob3VsZEJlVHJ1ZSgiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7dmFyIGEg
PSB0cnVlOyBldmFsKCd2YXIgYSA9IGZhbHNlJyk7IHJldHVybiBhOyB9KSgpIik7CitzaG91bGRC
ZVRydWUoIihmdW5jdGlvbiAoKXt2YXIgYSA9IHRydWU7IGV2YWwoJ1widXNlIHN0cmljdFwiOyB2
YXIgYSA9IGZhbHNlJyk7IHJldHVybiBhOyB9KSgpIik7CisKK3Nob3VsZEJlVW5kZWZpbmVkKCIo
ZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZiwgJ2FyZ3VtZW50cycpLnZhbHVlOyB9KSgpIik7CitzaG91bGRCZVVuZGVm
aW5lZCgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGYsICdjYWxsZXInKS52YWx1ZTsgfSkoKSIpOworc2hvdWxkQmVV
bmRlZmluZWQoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZWUnKS52YWx1ZTsgfSkoKSIp
Oworc2hvdWxkQmVVbmRlZmluZWQoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1
cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZXInKS52
YWx1ZTsgfSkoKSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0
JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3Vt
ZW50cywgJ2NhbGxlcicpOyByZXR1cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0
OyB9KSgpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2
YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRz
LCAnY2FsbGVlJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0p
KCkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBk
ZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmLCAnY2FsbGVyJyk7
IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKK3Nob3Vs
ZEJlVHJ1ZSgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmLCAnYXJndW1lbnRzJyk7IHJldHVybiBk
ZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgi
J3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gZigpIHsgZm9yKHZhciBpIGluIHRoaXMpOyB9KSgpOyB0
cnVlOyIpCisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZGQ4YzExNjY2YWMwNDU0
NGMzNzc0MjQ1Y2Q4YTEwMmViM2UwOTJiLi42OTRiMmM1N2EyYjExNjI4NDJhZWE4YWVhMzM3ZGQ3
ZjJiMGY5Zjk4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0VTNV0gSW1wbGVtZW50IHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwMQorCisgICAgICAgIFRlc3Q6IGZhc3QvanMv
YmFzaWMtc3RyaWN0LW1vZGUuaHRtbAorCisgICAgICAgIE92ZXJyaWRlIHRvU3RyaWN0VGhpc09i
amVjdCBvbiB0aGUgZG9td2luZG93IHNvIHRoYXQKKyAgICAgICAgaXQgY29ycmVjdGx5IHByb3Zp
ZGVzIHRoZSBzaGVsbCBvYmplY3Qgd2hlbiB1c2VkIGFzIHRoaXMKKyAgICAgICAgaW4gYSBzdHJp
Y3QgbW9kZSBmdW5jdGlvbi4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnRvU3RyaWN0VGhpc09i
amVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisKIDIwMTAt
MTAtMDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDk0YjNjYTIyNmZkODE1NTJjMmNlMjFkZTM0YzQwY2Q2MTQ2ZDQ4ODIuLmRmNTE0
MDFkODcwMWYwMjZmYTdlYWE5ZTJlMDk4YzQ3NzI3M2U4NTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTE1MCw3ICsyMTE1MCw2IEBACiAJCQlpc2Eg
PSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJC
MTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldl
YkNvcmUiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRl
dmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAx
OwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKaW5kZXggODJhYzFjZWUyNTFmNjA4OTMzN2FjMjA4NTNhODZlM2Ey
MjcwYTNkNy4uMjg3MmE1NDljNWE0NTE1YjY2YTEyZDA4NjQwNTY5NWRhYzZkZGM5NCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMTQ2LDYgKzE0NiwxMSBAQCBK
U09iamVjdCogSlNET01XaW5kb3dCYXNlOjp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QK
ICAgICByZXR1cm4gc2hlbGwoKTsKIH0KIAorSlNWYWx1ZSBKU0RPTVdpbmRvd0Jhc2U6OnRvU3Ry
aWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdAoreworICAgIHJldHVybiBzaGVsbCgpOwor
fQorCiBKU0RPTVdpbmRvd1NoZWxsKiBKU0RPTVdpbmRvd0Jhc2U6OnNoZWxsKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gZCgpLT5zaGVsbDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5o
CmluZGV4IGY0ZjFlZjllZWEwMTY2OTMyZWNhOTU1ZWNkMDliYTZkMTI5Njg2ZjguLmNhZmNhNzNh
YzkzZGYwMGM4YzczZjU1MDc1YjQzZTU5ZmNlZmNmNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuaApAQCAtNjksOCArNjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgLy8gRG9uJ3QgY2FsbCB0aGlzIHZlcnNpb24gb2YgYWxsb3dzQWNjZXNzRnJvbSAtLSBp
dCdzIGEgc2xpZ2h0bHkgaW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIHVzZWQgb25seSBieSBXZWJT
Y3JpcHRPYmplY3QKICAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0FjY2Vzc0Zyb20oY29uc3Qg
SlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotCisgICAgICAgIAogICAgICAgICB2aXJ0dWFs
IEpTQzo6SlNPYmplY3QqIHRvVGhpc09iamVjdChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAg
ICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoSlNDOjpFeGVjU3Rh
dGUqKSBjb25zdDsKICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogc2hlbGwoKSBjb25zdDsKIAog
ICAgICAgICBzdGF0aWMgSlNDOjpKU0dsb2JhbERhdGEqIGNvbW1vbkpTR2xvYmFsRGF0YSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70418</attachid>
            <date>2010-10-10 18:16:48 -0700</date>
            <delta_ts>2010-10-11 11:57:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-10701-20101010181646.patch</filename>
            <type>text/plain</type>
            <size>203978</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2RiMWQwOTA5NWVhMjRjNTkzN2QyMWRjODFiMjVjY2I4
ZmQ0YjkwMC4uOTAwNjdhNGM1MDAwN2I2NDg0OTdmY2NjZGU2Njc5MDNjZmJlMzgyYiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTE1Nyw2ICsxNTcsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIHJ1bnRpbWUvUm9wZUltcGwuY3BwCiAgICAgcnVudGltZS9TY29wZUNoYWluLmNw
cAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAorICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL1N0cmluZ09iamVjdC5jcHAKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCBlMTQ0NzIzODUyOGIwMGVjNjVlZDQ5NzllM2JmMjA0ZjRkNDMwNDMwLi4wZmJi
OTFhZGU4NGIxNTEwNjljMzYxYmFmZDFkYjFlNGVhM2QwNWU3IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAxIEBACisyMDEwLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VTNV0gSW1w
bGVtZW50IHN0cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDcwMQorCisgICAgICAgIEluaXRpYWwgc3RyaWN0IG1vZGUgaW1wbGVtZW50
YXRpb24uICBUaGlzIGlzIHRoZSBzaW1wbGVzdAorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0aGF0
IGNvdWxkIHBvc3NpYmx5IHdvcmsgYW5kIGFkZHMgKGhvcGVmdWxseSkKKyAgICAgICAgYWxsIG9m
IHRoZSByZXN0cmljdGlvbnMgcmVxdWlyZWQgYnkgc3RyaWN0IG1vZGUuICBUaGVyZSBhcmUKKyAg
ICAgICAgYSBudW1iZXIgb2YgaW5lZmZpY2llbmNpZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGhhbmRs
aW5nIG9mCisgICAgICAgIGFyZ3VtZW50cyBhbmQgZXZhbCBhcyBzbWFydCBpbXBsZW1lbnRhdGlv
bnMgd291bGQgbWFrZSB0aGlzCisgICAgICAgIHBhdGNoIG1vcmUgY29tcGxpY2F0ZWQuICAKKwor
ICAgICAgICBUaGUgU3ludGF4Q2hlY2tlciBBU1QgYnVpbGRlciBoYXMgYmVjb21lIHNvbWV3aGF0
IG1vcmUgY29tcGxleAorICAgICAgICBhcyBzdHJpY3QgbW9kZSBkb2VzIHJlcXVpcmUgbW9yZSBw
YXJzZSB0cmVlIGluZm9ybWF0aW9uIHRvCisgICAgICAgIHZhbGlkYXRlIHRoZSBzeW50YXguCisK
KyAgICAgICAgU3VtbWFyeSBvZiBtYWpvciBjaGFuZ2VzIHRvIHRoZSBwYXJzZXI6CisgICAgICAg
ICAgICAqIFdlIHRyYWNrIHdoZW4gd2UgZW50ZXIgc3RyaWN0IG1vZGUgKHRoaXMgbWF5IGNvbWUg
YXMgYSBzdXJwcmlzZSkKKyAgICAgICAgICAgICogU3RyaWN0IG1vZGUgYWN0dWFsbHkgcmVxdWly
ZXMgYSBkZWdyZWUgb2YgQVNUIGtub3dsZWRnZSB0byB2YWxpZGF0ZQorICAgICAgICAgICAgICBz
byB0aGUgU3ludGF4Q2hlY2tlciBub3cgcHJvZHVjZXMgdmFsdWVzIHRoYXQgY2FuIGJlIHVzZWQg
dG8gZGlzdGluZ3Vpc2gKKyAgICAgICAgICAgICAgIm5vZGUiIHR5cGVzLgorICAgICAgICAgICAg
KiBXZSBub3cgdHJhY2sgdmFyaWFibGVzIHRoYXQgYXJlIHdyaXR0ZW4gdG8uICBXZSBkbyB0aGlz
IHRvCisgICAgICAgICAgICAgIHN0YXRpY2FsbHkgaWRlbnRpZnkgd3JpdGVzIHRvIGdsb2JhbCBw
cm9wZXJ0aWVzIHRoYXQgZG9uJ3QgZXhpc3QKKyAgICAgICAgICAgICAgYW5kIGFib3J0IGF0IHRo
YXQgcG9pbnQuICBUaGlzIHNob3VsZCBhY3R1YWxseSBtYWtlIGl0IHBvc3NpYmxlCisgICAgICAg
ICAgICAgIHRvIG9wdGltaXNlIHNvbWUgb3RoZXIgY2FzZXMgaW4gdGhlIGZ1dHVyZSBidXQgZm9y
IG5vdyBpdCdzCisgICAgICAgICAgICAgIHB1cmVseSBmb3IgdmFsaWRpdHkgY2hlY2tpbmcuICBD
dXJyZW50bHkgd3JpdGVzIGFyZSBvbmx5IHRyYWNrZWQKKyAgICAgICAgICAgICAgaW4gc3RyaWN0
IG1vZGUgY29kZS4KKyAgICAgICAgICAgICogTGFiZWxzIGFyZSBub3cgdHJhY2tlZCBhcyBpdCBp
cyBub3cgYSBzeW50YXggZXJyb3IgdG8ganVtcCB0byBhIGxhYmVsCisgICAgICAgICAgICAgIHRo
YXQgZG9lcyBub3QgZXhpc3QgKG9yIHRvIHVzZSBicmVhaywgY29udGludWUsIG9yIHJldHVybiBp
biBhIGNvbnRleHQKKyAgICAgICAgICAgICAgd2hlcmUgdGhleSB3b3VsZCBiZSBpbnZhbGlkKS4K
KworICAgICAgICBSdW50aW1lIGNoYW5nZXM6CisgICAgICAgICAgICAqIEluIG9yZGVyIHRvIGdl
dCBjb3JyZWN0IGhhbmxkaW5nIG9mIHRoZSBBcmd1bWVudHMgb2JqZWN0IGFsbAorICAgICAgICAg
ICAgICBzdHJpY3QgbW9kZSBmdW5jdGlvbnMgdGhhdCByZWZlcmVuY2UgYXJndW1lbnRzIGNyZWF0
ZSBhbmQgdGVhcm9mZgorICAgICAgICAgICAgICB0aGUgYXJndW1lbnRzIG9iamVjdCBvbiBlbnRy
eS4gIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeQorICAgICAgICAgICAgICBidXQgd2Fz
IHRoZSBsZWFzdCB3b3JrIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGNvcnJlY3QgYmVoYXZpb3VyLgor
ICAgICAgICAgICAgKiBQdXRQcm9wZXJ0eVNsb3Qgbm93IHRyYWNrcyB3aGV0aGVyIGl0IGlzIGJl
aW5nIHVzZWQgZm9yIGEgc3RyaWN0CisgICAgICAgICAgICAgIG1vZGUgd3JpdGUsIGFuZCBpZiBz
byBPYmplY3Q6OnB1dCB3aWxsIHRocm93IHdoZW4gYSB3cml0ZSBjYW4ndCBiZQorICAgICAgICAg
ICAgICBjb21wbGV0ZWQuCisgICAgICAgICAgICAqIFN0cmljdEV2YWxBY3RpdmF0aW9uIHdhcyBh
ZGRlZCBhcyBhbiAiYWN0aXZhdGlvbiIgb2JqZWN0IGZvciBzdHJpY3QKKyAgICAgICAgICAgICAg
bW9kZSBldmFsIChzbyB0aGF0IHN0cmljdCBldmFsIGRvZXMgbm90IGludHJvZHVjZSBuZXcgdmFy
aWFibGVzIGludG8KKyAgICAgICAgICAgICAgdGhlIGNvbnRhaW5pbmcgc2NvcGUpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlcGFyc2VGb3JFeGNlcHRpb25JbmZvSWZOZWNlc3Nh
cnkpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmlzU3RyaWN0TW9kZSk6CisgICAgICAgICogYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5o
OgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpnZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2Fy
eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmlzU3RyaWN0TW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjptYWtlRnVuY3Rpb24pOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZSk6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZTo6ZXZhbHVhdGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmNhbGxFdmFsKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpl
eGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6Cisg
ICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY29udmVydF90aGlzX3N0cmljdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY29udmVydF90aGlzX3N0cmljdCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6aXNSZXNvbHZlKToKKyAgICAgICAgKiBwYXJzZXIvSlNQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6bmV4dCk6CisgICAgICAgIChKU0M6OkpTUGFy
c2VyOjpzdGFydExvb3ApOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZW5kTG9vcCk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpzdGFydFN3aXRjaCk6CisgICAgICAgIChKU0M6OkpTUGFyc2Vy
OjplbmRTd2l0Y2gpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6c2V0U3RyaWN0TW9kZSk6Cisg
ICAgICAgIChKU0M6OkpTUGFyc2VyOjpzdHJpY3RNb2RlKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OmlzVmFsaWRTdHJpY3RNb2RlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OmRlY2xhcmVQ
YXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6YnJlYWtJc1ZhbGlkKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpw
b3BMYWJlbCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpoYXNMYWJlbCk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpEZXB0aE1hbmFnZXI6OkRlcHRoTWFuYWdlcik6CisgICAgICAgIChKU0M6
OkpTUGFyc2VyOjpEZXB0aE1hbmFnZXI6On5EZXB0aE1hbmFnZXIpOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpz
dGFydFN3aXRjaCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZW5kU3dpdGNoKToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpzdGFydExvb3ApOgorICAgICAgICAoSlND
OjpKU1BhcnNlcjo6U2NvcGU6OmVuZExvb3ApOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2Nv
cGU6OmluTG9vcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6YnJlYWtJc1ZhbGlk
KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpwdXNoTGFiZWwpOgorICAgICAgICAo
SlNDOjpKU1BhcnNlcjo6U2NvcGU6OnBvcExhYmVsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6
OlNjb3BlOjpoYXNMYWJlbCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6aXNGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpTY29wZTo6ZGVjbGFyZVZhcmlhYmxlKToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OlNjb3BlOjpkZWNsYXJlV3JpdGUpOgorICAgICAgICAo
SlNDOjpKU1BhcnNlcjo6U2NvcGU6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNQ
YXJzZXI6OlNjb3BlOjpkZWNsYXJlUGFyYW1ldGVyKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6
OlNjb3BlOjpzZXROZWVkc0Z1bGxBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6
OlNjb3BlOjpjb2xsZWN0RnJlZVZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpT
Y29wZTo6Z2V0VW5jYXB0dXJlZFdyaXR0ZW5WYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6U2NvcGU6OmdldERlbGV0ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6U2NvcGU6OnNldFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6
OnN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6U2NvcGU6OmlzVmFsaWRTdHJp
Y3RNb2RlKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnB1c2hTY29wZSk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpwb3BTY29wZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpkZWNsYXJl
VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6ZGVjbGFyZVdyaXRlKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6anNQYXJz
ZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpKU1BhcnNlcik6CisgICAgICAgIChKU0M6OkpT
UGFyc2VyOjpwYXJzZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VTb3Vy
Y2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZURvV2hpbGVTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VXaGlsZVN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6
SlNQYXJzZXI6OnBhcnNlRm9yU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VDb250aW51
ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVJldHVyblN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVdpdGhTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6cGFyc2VTd2l0Y2hDbGF1c2VzKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlU3dpdGNoRGVmYXVsdENsYXVzZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVRy
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUJsb2NrU3RhdGVtZW50
KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlRm9ybWFsUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkpTUGFy
c2VyOjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVjbGFy
YXRpb24pOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUlmU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkpT
UGFyc2VyOjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6
OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVN0
cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VQcmltYXJ5
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZU1lbWJlckV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VVbmFyeUV4cHJlc3Npb24pOgorICAg
ICAgICAqIHBhcnNlci9KU1BhcnNlci5oOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6Cisg
ICAgICAgIChKU0M6OkxleGVyOjpwYXJzZVN0cmluZyk6CisgICAgICAgIChKU0M6OkxleGVyOjps
ZXgpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjpMZXhlcjo6aXNS
ZXBhcnNpbmcpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlNj
b3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVu
Y3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6aXNT
dHJpY3RNb2RlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
UGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlND
OjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpTeW50YXhDaGVja2VyKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjphcHBlbmRUb0NvbW1hKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQ29tbWFFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2ln
bk5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6Om1ha2VUeXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpt
YWtlTmVnYXRlTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNl
Tm90Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3Qp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVS
ZXNvbHZlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJh
bCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxs
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVJlZ2V4KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlTmV3RXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZUNvbmRpdGlvbmFsRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUFz
c2lnblJlc29sdmUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlv
bkV4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkJvZHkp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjphcHBlbmRCaW5hcnlFeHByZXNzaW9uSW5m
byk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3ApOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpj
cmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OkFy
Z3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnB1dCk6
CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6QXJndW1lbnRzKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAg
ICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6U3RyaWN0TW9kZVR5cGVFcnJv
ckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpj
b25zdHJ1Y3RUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6U3Ry
aWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OmNy
ZWF0ZVR5cGVFcnJvckZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFi
bGU6OkV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OlBy
b2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5j
dGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUlu
dGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KToK
KyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVy
bmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9u
SW5mbyk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5m
byk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUpOgor
ICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6cmVwYXJzZUV4Y2VwdGlvbkluZm8pOgor
ICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVj
dXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJs
ZTo6aXNTdHJpY3RNb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dG9T
dHJpY3RUaGlzT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZURlc2Ny
aXB0b3JGb3JUaHJvd2luZ1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dG9TdHJp
Y3RUaGlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6dGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzU3RyaWN0TW9k
ZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnB1dERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvU3RyaWN0VGhpc09iamVj
dCk6CisgICAgICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6dG9TdHJpY3RUaGlzT2JqZWN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFs
dWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTWm9tYmllLmg6CisgICAgICAgIChKU0M6OkpTWm9t
YmllOjp0b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlT
bG90Lmg6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6UHV0UHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojppc1N0cmljdE1vZGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
U3RyaWN0RXZhbEFjdGl2YXRpb246OlN0cmljdEV2YWxBY3RpdmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
U3RyaWN0RXZhbEFjdGl2YXRpb246OnRvVGhpc09iamVjdCk6CisgICAgICAgIChKU0M6OlN0cmlj
dEV2YWxBY3RpdmF0aW9uOjp0b1N0cmljdFRoaXNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaWN0RXZhbEFjdGl2YXRpb24uaDogQWRkZWQuCisKIDIwMTAtMTAtMDkgIFByYXRpayBTb2xh
bmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Bl
ei4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggODhkMTc2MTdiM2E0Yjg4ODRjMDRhMjY4NjhjNmYw
NmQxNzMxYzc1MC4uN2Q2MzdiMzUwNDFjNThkODhhYTliNzAxZGQ0ZDgxZWU2ODJhZDcwMiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0KQEAgLTM4OCw2ICszODgsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmggXAogCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbWFsbFN0cmluZ3MuaCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RF
dmFsQWN0aXZhdGlvbi5jcHBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5oXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oIFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbmNhdGVuYXRlLmggXAogCUphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAppbmRleCBmNzczZjBiYzA1NzUwMjcxMDQ0YzllZTM2ZmE2MGViYTI5OTYzZTVkLi45YWU1
MTA4MzBlOGVmZjEwZDQ1MzEzM2Y1NmRkOWVjNWViMDJjZTI4IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCkBAIC01MzEsNiArNTMxLDcgQEAgX19aTkszSlNDOEpTT2JqZWN0MTFoYXNQcm9w
ZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk5LM0pTQzhKU09iamVj
dDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFagogX19aTkszSlNDOEpTT2JqZWN0MTJkZWZh
dWx0VmFsdWVFUE5TXzlFeGVjU3RhdGVFTlNfMjJQcmVmZXJyZWRQcmltaXRpdmVUeXBlRQogX19a
TkszSlNDOEpTT2JqZWN0MTJ0b1RoaXNPYmplY3RFUE5TXzlFeGVjU3RhdGVFCitfX1pOSzNKU0M4
SlNPYmplY3QxOHRvU3RyaWN0VGhpc09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0pTQzhK
U09iamVjdDh0b051bWJlckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0pTQzhKU09iamVjdDh0b09i
amVjdEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0pTQzhKU09iamVjdDh0b1N0cmluZ0VQTlNfOUV4
ZWNTdGF0ZUUKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybyBi
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwppbmRleCBmNDYzZjQxZDVmNjI1YjJl
YmEyMmFhNmJkZjBhN2NhNDJjZGZmNTNmLi5mODNiZjRjNGVkZTI5MTkyZTUxN2E1YWM3N2IyNGE1
MWQ3NTFiYzFiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8K
KysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCkBAIC0xOTcsNiArMTk3LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9Sb3BlSW1wbC5jcHAgXAogICAgIHJ1bnRpbWUv
U2NvcGVDaGFpbi5jcHAgXAogICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcCBcCisgICAgcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgXAogICAgIHJ1bnRpbWUvU3RyaW5nQ29uc3Ry
dWN0b3IuY3BwIFwKICAgICBydW50aW1lL1N0cmluZ09iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcCBcCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagppbmRleCA4M2QzNGUzN2IyZmQ0YzRlN2Y3MTk0MWU3MzRlNWRkODY3MmVj
YmFmLi40NzliM2RkMDIyYmY5MWZiN2M1YWQ1NDJhMjkwYWQ1NDQwMDlmY2EwIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTExNzMsNiArMTE3
MywxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxydW50aW1lXFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcU3RyaWN0
RXZhbEFjdGl2YXRpb24uaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcU3RyaW5nQ29uc3RydWN0b3IuY3BwIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhlNzhiYmM2ZTg2NWJjMjk3Y2Y2N2Fk
NDkwM2NlMWJiZmI0YjhhMzUuLmE0NWY5ODI1NDFiMGM2MjA2MDY0NDcyZWM3OTEwMjVhNTI1NzIx
ZDUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzE4LDYgKzMxOCw4IEBACiAJCUE3MjcwMUI5MERBREU5
NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI3MDFCMzBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0
aW9uSGVscGVycy5oICovOyB9OwogCQlBNzI3RkY2QjBEQTMwOTIyMDBFNTQ4RDcgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzI3RkY2NjBEQTMwNTNCMDBFNTQ4RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5jcHAgKi87IH07CiAJCUE3MjgwQTI4MTE1NTdFMzAwMEQ1Njk1NyAvKiBKU09iamVjdFJl
ZlByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3OUVEQjA4MTE1MzFDRDYwMDE5RTkxMiAvKiBKU09iamVjdFJlZlByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzMwQjYxMjEyNTAw
NjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBT
dHJpY3RFdmFsQWN0aXZhdGlvbi5oICovOyB9OworCQlBNzMwQjYxMzEyNTAwNjhGMDA5RDI1QjEg
LyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTczMEI2MTExMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxB
Y3RpdmF0aW9uLmNwcCAqLzsgfTsKIAkJQTczODY1NTQxMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNp
YWxpemVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Mzg2NTUxMTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFsaXplZFRodW5rSklULmgg
Ki87IH07CiAJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczODY1NTIx
MTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgKi87IH07CiAJCUE3Mzg2NTU2
MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mzg2NTUzMTE4Njk3QjQwMDU0MDI3OSAvKiBU
aHVua0dlbmVyYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtOTUxLDYgKzk1Myw4IEBACiAJCUE3MjcwMUIzMERBREU5NDkwMEU1NDhENyAv
KiBFeGNlcHRpb25IZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
Y2VwdGlvbkhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyN0ZGNjUw
REEzMDUzQjAwRTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzI3RkY2NjBEQTMwNTNCMDBFNTQ4RDcgLyogSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTczMEI2MTAxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmljdEV2YWxBY3RpdmF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJp
Y3RFdmFsQWN0aXZhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3Mzg2NTUxMTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFsaXplZFRodW5rSklULmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWNpYWxpemVkVGh1bmtKSVQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTczODY1NTIxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5r
R2VuZXJhdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHVu
a0dlbmVyYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzM4NjU1MzEx
ODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRodW5rR2VuZXJhdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTgxNCw2ICsxODE4LDggQEAKIAkJCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyog
V2Vha0dDTWFwLmggKi8sCiAJCQkJMTQwMzVEQjAxMERCRkIyQTAwRkZGRkU3IC8qIFdlYWtHQ1B0
ci5oICovLAogCQkJCTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8s
CisJCQkJQTczMEI2MTAxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmgg
Ki8sCisJCQkJQTczMEI2MTExMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0yMzE0LDYgKzIzMjAsNyBAQAogCQkJCTk3MTRBRjVGMTIyRjMyMDcwMDkyRDlG
NSAvKiBQYXJzZWRVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MTRBRjYwMTIyRjMyMDcwMDky
RDlGNSAvKiBVUkxTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwMjEzRTNFMTIzQTQwQzIw
MEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzMwQjYx
MjEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjQwNyw3ICsyNDE0LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI3NzEwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiSmF2YVNjcmlwdENvcmUiICovOwogCQkJY29t
cGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0g
RW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25z
ID0gKAogCQkJCUVuZ2xpc2gsCkBAIC0yNzY5LDYgKzI3NzUsNyBAQAogCQkJCTk3MTRBRjQ2MTIy
RjI4ODUwMDkyRDlGNSAvKiBVUkxTZWdtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzE0
QUY1RTEyMkYzMjA3MDA5MkQ5RjUgLyogUGFyc2VkVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkwMjEzRTNEMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE3MzBCNjEzMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IGEyYjg2M2Q1N2M5ODU1MTBlMWVkYjAzOGE2OTg4NmM5NzFjYzE3YWMuLjkxZjFkMzYx
ZmY4ZDMzODEyM2U0Zjk3YWMzMGNiZTEyNzFiYTNlN2YgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtNTE3LDYgKzUxNywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9y
JgogICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBjb252ZXJ0X3RoaXMgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQorICAgICAgICBjYXNlIG9wX2NvbnZlcnRfdGhpc19zdHJpY3Q6IHsKKyAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSBjb252ZXJ0X3RoaXNfc3RyaWN0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbmV3X29iamVjdFx0ICVzXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwpAQCAtMTM3MSw2ICsxMzc2LDcgQEAg
Q29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBD
b2RlVHlwZSBjb2RlVHlwZSwgSlNHbG8KICAgICAsIG1fbmVlZHNGdWxsU2NvcGVDaGFpbihvd25l
ckV4ZWN1dGFibGUtPm5lZWRzQWN0aXZhdGlvbigpKQogICAgICwgbV91c2VzRXZhbChvd25lckV4
ZWN1dGFibGUtPnVzZXNFdmFsKCkpCiAgICAgLCBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihm
YWxzZSkKKyAgICAsIG1faXNTdHJpY3RNb2RlKG93bmVyRXhlY3V0YWJsZS0+aXNTdHJpY3RNb2Rl
KCkpCiAgICAgLCBtX2NvZGVUeXBlKGNvZGVUeXBlKQogICAgICwgbV9zb3VyY2Uoc291cmNlUHJv
dmlkZXIpCiAgICAgLCBtX3NvdXJjZU9mZnNldChzb3VyY2VPZmZzZXQpCkBAIC0xNTU3LDcgKzE1
NjMsNyBAQCBib29sIENvZGVCbG9jazo6cmVwYXJzZUZvckV4Y2VwdGlvbkluZm9JZk5lY2Vzc2Fy
eShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgICAgIHNjb3BlQ2hhaW4gPSBzY29wZUNo
YWluLT5uZXh0OwogICAgIH0KIAotICAgIG1fZXhjZXB0aW9uSW5mbyA9IG1fb3duZXJFeGVjdXRh
YmxlLT5yZXBhcnNlRXhjZXB0aW9uSW5mbyhtX2dsb2JhbERhdGEsIHNjb3BlQ2hhaW4sIHRoaXMp
OworICAgIG1fZXhjZXB0aW9uSW5mbyA9IG1fb3duZXJFeGVjdXRhYmxlLT5yZXBhcnNlRXhjZXB0
aW9uSW5mbyhzY29wZUNoYWluLCB0aGlzKTsKICAgICByZXR1cm4gbV9leGNlcHRpb25JbmZvOwog
fQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDg2OTcxY2I2Mjk1MzE0MTZj
ZjUxYmI4ZTQ0MzU0Zjc5MmFjZGIyZjUuLmE1ZjdkMjhjM2UyM2I4YmZhNGJiODYzZmQ2OTA0ODlm
MmExZTkwNmQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yOTcsNiArMjk3
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCkgY29uc3Q7CiAjZW5k
aWYKIAorICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJp
Y3RNb2RlOyB9CisKICAgICAgICAgaW5saW5lIGJvb2wgaXNLbm93bk5vdEltbWVkaWF0ZShpbnQg
aW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpbmRleCA9PSBtX3RoaXNSZWdpc3Rl
cikKQEAgLTU2NCw2ICs1NjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX25l
ZWRzRnVsbFNjb3BlQ2hhaW47CiAgICAgICAgIGJvb2wgbV91c2VzRXZhbDsKICAgICAgICAgYm9v
bCBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsKKyAgICAgICAgYm9vbCBtX2lzU3RyaWN0TW9k
ZTsKIAogICAgICAgICBDb2RlVHlwZSBtX2NvZGVUeXBlOwogCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggN2M0Y2IzM2U0MDFhZTY5YTI5NzUxYmMyZDZiMjA1MGZk
NWFkNjNkNi4uZWRkNTc1ZmU2ZTAyOTM0ZmYwOTQwNDg5MTYxYzA5NzYwNzcwNDE2NyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtNDMsMjAgKzQzLDIwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbENvZGVDYWNoZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBQYXNzUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBnZXQoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBVU3RyaW5nJiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNW
YWx1ZSYgZXhjZXB0aW9uVmFsdWUpCisgICAgICAgIFBhc3NSZWZQdHI8RXZhbEV4ZWN1dGFibGU+
IGdldChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBVU3RyaW5n
JiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNWYWx1ZSYgZXhjZXB0
aW9uVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4g
ZXZhbEV4ZWN1dGFibGU7CiAKLSAgICAgICAgICAgIGlmIChldmFsU291cmNlLmxlbmd0aCgpIDwg
bWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVDaGFpbi0+YmVnaW4oKSktPmlzVmFy
aWFibGVPYmplY3QoKSkKKyAgICAgICAgICAgIGlmICghaW5TdHJpY3RDb250ZXh0ICYmIGV2YWxT
b3VyY2UubGVuZ3RoKCkgPCBtYXhDYWNoZWFibGVTb3VyY2VMZW5ndGggJiYgKCpzY29wZUNoYWlu
LT5iZWdpbigpKS0+aXNWYXJpYWJsZU9iamVjdCgpKQogICAgICAgICAgICAgICAgIGV2YWxFeGVj
dXRhYmxlID0gbV9jYWNoZU1hcC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpOwogCiAgICAgICAgICAg
ICBpZiAoIWV2YWxFeGVjdXRhYmxlKSB7Ci0gICAgICAgICAgICAgICAgZXZhbEV4ZWN1dGFibGUg
PSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UoZXZhbFNvdXJjZSkpOwor
ICAgICAgICAgICAgICAgIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShl
eGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0cmljdENvbnRleHQpOwogICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvblZhbHVlID0gZXZhbEV4ZWN1dGFibGUtPmNvbXBpbGUoZXhlYywgc2Nv
cGVDaGFpbik7CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICAgICAgICAgIGlmIChldmFsU291cmNlLmxl
bmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVDaGFpbi0+YmVnaW4o
KSktPmlzVmFyaWFibGVPYmplY3QoKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hlRW50
cmllcykKKyAgICAgICAgICAgICAgICBpZiAoIWluU3RyaWN0Q29udGV4dCAmJiBldmFsU291cmNl
Lmxlbmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVDaGFpbi0+YmVn
aW4oKSktPmlzVmFyaWFibGVPYmplY3QoKSAmJiBtX2NhY2hlTWFwLnNpemUoKSA8IG1heENhY2hl
RW50cmllcykKICAgICAgICAgICAgICAgICAgICAgbV9jYWNoZU1hcC5zZXQoZXZhbFNvdXJjZS5p
bXBsKCksIGV2YWxFeGVjdXRhYmxlKTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaAppbmRleCAzZjZiMjEzZjU2MDg3ODJkYjIzZTRjY2QyYTYyZWFhYzRhZDNjOTk1Li44
ODRiZWE1ZmEyNTg3NTkxMGI1NWUxOTMyN2VhZDhlOWI3N2I3NTJjIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGNvZGUuaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFj
cm8ob3BfY3JlYXRlX3RoaXMsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2NhbGxlZSwgMikg
XAogICAgICAgICBtYWNybyhvcF9jb252ZXJ0X3RoaXMsIDIpIFwKKyAgICAgICAgbWFjcm8ob3Bf
Y29udmVydF90aGlzX3N0cmljdCwgMikgXAogICAgICAgICBcCiAgICAgICAgIG1hY3JvKG9wX25l
d19vYmplY3QsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfbmV3X2FycmF5LCA0KSBcCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0
YzZlMWYzYjExMTcxYmIxNDEwOWI5ZDE3MGYwYjdlZWQ5NmYyZTExLi5kNThmZDU1NDAyMzdlYTEw
ZmU0MjcyNjc5MmY2YzNmN2IwNTBjY2JjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM0Myw2ICszNDMsMTEgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9u
Qm9keSwgY29uc3QgRGVidWcKIAogICAgICAgICBlbWl0SW5pdExhenlSZWdpc3Rlcihhcmd1bWVu
dHNSZWdpc3Rlcik7CiAgICAgICAgIGVtaXRJbml0TGF6eVJlZ2lzdGVyKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3Rlcik7CisgICAgICAgIAorICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpKSB7CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMp
OworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3VtZW50c1JlZ2lzdGVyLT5p
bmRleCgpKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBkZWJ1Z2dlciBjdXJyZW50bHkg
cmV0cmlldmVzIHRoZSBhcmd1bWVudHMgb2JqZWN0IGZyb20gYW4gYWN0aXZhdGlvbiByYXRoZXIg
dGhhbiBwdWxsaW5nCiAgICAgICAgIC8vIGl0IGZyb20gYSBjYWxsIGZyYW1lLiAgSW4gdGhlIGxv
bmctdGVybSBpdCBzaG91bGQgc3RvcCBkb2luZyB0aGF0ICg8cmRhcjovL3Byb2JsZW0vNjkxMTg4
Nj4pLApAQCAtNDQyLDcgKzQ0NywxMCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBjb25zdCBEZWJ1ZwogICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7CiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jUHJvdG8tPmluZGV4KCkpOwogICAgIH0gZWxzZSBp
ZiAoZnVuY3Rpb25Cb2R5LT51c2VzVGhpcygpIHx8IG1fc2hvdWxkRW1pdERlYnVnSG9va3MpIHsK
LSAgICAgICAgZW1pdE9wY29kZShvcF9jb252ZXJ0X3RoaXMpOworICAgICAgICBpZiAoY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfY29udmVydF90
aGlzX3N0cmljdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfY29u
dmVydF90aGlzKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVy
LmluZGV4KCkpOwogICAgIH0KIH0KQEAgLTE1NTcsNiArMTU2NSwxMiBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybjsK
ICAgICBBU1NFUlQobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSk7CiAKKyAgICAvLyBJZiB3
ZSdyZSBpbiBzdHJpY3QgbW9kZSB3ZSB0ZWFyIG9mZiB0aGUgYXJndW1lbnRzIG9uIGZ1bmN0aW9u
CisgICAgLy8gZW50cnksIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBjaGVjayBpZiB3ZSBuZWVkIHRv
IGNyZWF0ZSB0aGVtCisgICAgLy8gbm93CisgICAgaWYgKG1fY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1l
bnRzKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFyZ3VtZW50c1Jl
Z2lzdGVyKCkpOwogfQpAQCAtMTY3NCw3ICsxNjg4LDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQogICAgICAgICBlbWl0T3Bjb2Rl
KG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24pOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV9hY3RpdmF0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpOwotICAgIH0gZWxzZSBpZiAo
bV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSAmJiBtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0
ZXJzID4gMSkgeyAvLyBJZiB0aGVyZSBhcmUgbm8gbmFtZWQgcGFyYW1ldGVycywgdGhlcmUncyBu
b3RoaW5nIHRvIHRlYXIgb2ZmLCBzaW5jZSBleHRyYSAvIHVubmFtZWQgcGFyYW1ldGVycyBnZXQg
Y29waWVkIHRvIHRoZSBhcmd1bWVudHMgb2JqZWN0IGF0IGNvbnN0cnVjdCB0aW1lLgorICAgIH0g
ZWxzZSBpZiAobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSAmJiBtX2NvZGVCbG9jay0+bV9u
dW1QYXJhbWV0ZXJzID4gMQorICAgICAgICAgICAgICAgJiYgIW1fY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSkgeyAvLyBJZiB0aGVyZSBhcmUgbm8gbmFtZWQgcGFyYW1ldGVycywgdGhlcmUncyBu
b3RoaW5nIHRvIHRlYXIgb2ZmLCBzaW5jZSBleHRyYSAvIHVubmFtZWQgcGFyYW1ldGVycyBnZXQg
Y29waWVkIHRvIHRoZSBhcmd1bWVudHMgb2JqZWN0IGF0IGNvbnN0cnVjdCB0aW1lLgogICAgICAg
ICBlbWl0T3Bjb2RlKG9wX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CiAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBi
NjA0N2FlNGYyNjhiY2NmMGZkOTIxODQ2NTA5YzU5NjYyNTEwYzk1Li5iZDVjODAzYWMzNzY3MGUx
NjBhMGI2MDc1NmQzOTc3NWE3OGMzNWQ4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDE5LDYgKzQxOSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkg
eyByZXR1cm4gbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzOyB9CisgICAgICAgIAorICAgICAgICBi
b29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBlbWl0T3Bjb2RlKE9wY29kZUlE
KTsKQEAgLTQ5OSwxMiArNTAxLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFBhc3NS
ZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBtYWtlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBG
dW5jdGlvbkJvZHlOb2RlKiBib2R5KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgYm9keS0+aWRlbnQoKSwgYm9keS0+c291cmNl
KCksIGJvZHktPnVzZXNBcmd1bWVudHMoKSwgYm9keS0+cGFyYW1ldGVycygpLCBib2R5LT5saW5l
Tm8oKSwgYm9keS0+bGFzdExpbmUoKSk7CisgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUoZXhlYywgYm9keS0+aWRlbnQoKSwgYm9keS0+c291cmNlKCksIGJvZHkt
PnVzZXNBcmd1bWVudHMoKSwgYm9keS0+cGFyYW1ldGVycygpLCBib2R5LT5pc1N0cmljdE1vZGUo
KSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxhc3RMaW5lKCkpOwogICAgICAgICB9CiAKICAgICAg
ICAgUGFzc1JlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IG1ha2VGdW5jdGlvbihKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxEYXRhLCBib2R5
LT5pZGVudCgpLCBib2R5LT5zb3VyY2UoKSwgYm9keS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5w
YXJhbWV0ZXJzKCksIGJvZHktPmxpbmVObygpLCBib2R5LT5sYXN0TGluZSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxEYXRhLCBib2R5LT5p
ZGVudCgpLCBib2R5LT5zb3VyY2UoKSwgYm9keS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5wYXJh
bWV0ZXJzKCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFz
dExpbmUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlS
ZWdpc3RlcihSZWdpc3RlcklEKik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5k
ZXggY2JjYmQyMWE5NmU4ZTJkM2UxMjI2YjNlNzEyMmFhMWIxOTczZDgxYy4uMTdkZmRmNzY5YTVi
NTc3ZmYyMmNjNjRkMGU3ZGIwNzdhNGFlYmRiMiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIEpTVmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxG
cmFtZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbiwgSlNHCiB7CiAg
ICAgQ2FsbEZyYW1lKiBnbG9iYWxDYWxsRnJhbWUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKIAotICAgIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGUoZ2xvYmFsQ2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCkpOworICAgIFJlZlB0cjxF
dmFsRXhlY3V0YWJsZT4gZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsQ2FsbEZy
YW1lLCBtYWtlU291cmNlKHNjcmlwdCksIGZhbHNlKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBl
dmFsLT5jb21waWxlKGdsb2JhbENhbGxGcmFtZSwgZ2xvYmFsQ2FsbEZyYW1lLT5zY29wZUNoYWlu
KCkpOwogICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDMyZjY1ZGRiODA0MDE2
ZDU5YTI4M2ZiMmM4OGU4ZWU0ODUzODRhZGUuLmM5OGM3Y2NkZGMxNzBjMDRmYWMzODA4NGZjNGZk
NWEzOTJlOGRjZTMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
Q2FsbEZyYW1lLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZh
bHVhdGUoY29uc3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24pIGMKICAgICBp
ZiAoIW1fY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
IAotICAgIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUobV9jYWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0KSk7CisgICAgUmVmUHRyPEV2YWxFeGVj
dXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShtX2NhbGxGcmFtZSwgbWFrZVNv
dXJjZShzY3JpcHQpLCBtX2NhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsK
ICAgICBKU09iamVjdCogZXJyb3IgPSBldmFsLT5jb21waWxlKG1fY2FsbEZyYW1lLCBtX2NhbGxG
cmFtZS0+c2NvcGVDaGFpbigpKTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBlcnJv
cjsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cCBiL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBlY2Zm
N2Q2NGI1YWZiZWVkMzNhODk1MmRhZGY3M2VlOTA4ZWE2Zjc4Li45Njg5ZDFhMjllODc5NzU0Yjc3
MDBiOGQ4MGUzMjBhMGI2NTcxMmFjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNp
bmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMzg5LDE0ICsz
OTAsMTggQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmNhbGxFdmFsKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHIKICAgICBVU3RyaW5nIHByb2dyYW1Tb3Vy
Y2UgPSBhc1N0cmluZyhwcm9ncmFtKS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBpZiAoY2FsbEZy
YW1lLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLQotICAgIExp
dGVyYWxQYXJzZXIgcHJlcGFyc2VyKGNhbGxGcmFtZSwgcHJvZ3JhbVNvdXJjZSwgTGl0ZXJhbFBh
cnNlcjo6Tm9uU3RyaWN0SlNPTik7Ci0gICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJl
cGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKQotICAgICAgICByZXR1cm4gcGFyc2VkT2JqZWN0Owor
ICAgIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
KyAgICBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IFdlIGNhbiB1c2UgdGhlIHByZXBhcnNlciBpbiBzdHJpY3QgbW9kZSwgd2UganVzdCBuZWVkIGFk
ZGl0aW9uYWwgbG9naWMKKyAgICAgICAgLy8gdG8gcHJldmVudCBkdXBsaWNhdGVzLgorICAgICAg
ICBMaXRlcmFsUGFyc2VyIHByZXBhcnNlcihjYWxsRnJhbWUsIHByb2dyYW1Tb3VyY2UsIExpdGVy
YWxQYXJzZXI6Ok5vblN0cmljdEpTT04pOworICAgICAgICBpZiAoSlNWYWx1ZSBwYXJzZWRPYmpl
Y3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpCisgICAgICAgICAgICByZXR1cm4gcGFy
c2VkT2JqZWN0OworICAgIH0KIAogICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0gY2Fs
bEZyYW1lLT5zY29wZUNoYWluKCk7Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOwotICAgIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gZXZhbCA9IGNvZGVC
bG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldChjYWxsRnJhbWUsIHByb2dyYW1Tb3VyY2UsIHNjb3Bl
Q2hhaW4sIGV4Y2VwdGlvblZhbHVlKTsKKyAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+IGV2YWwg
PSBjb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXQoY2FsbEZyYW1lLCBjb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpLCBwcm9ncmFtU291cmNlLCBzY29wZUNoYWluLCBleGNlcHRpb25WYWx1ZSk7
CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKGV2YWwpCkBA
IC01NjEsOSArNTY2LDExIEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRD
YWxsRnJhbWUoQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlIGV4CiAgICAgICAgICAgICBz
Y29wZUNoYWluID0gc2NvcGVDaGFpbi0+cG9wKCk7CiAgICAgICAgIEpTQWN0aXZhdGlvbiogYWN0
aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihzY29wZUNoYWluLT5vYmplY3QpOwogICAgICAgICBhY3Rp
dmF0aW9uLT5jb3B5UmVnaXN0ZXJzKCk7Ci0gICAgICAgIGlmIChKU1ZhbHVlIGFyZ3VtZW50cyA9
IGNhbGxGcmFtZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIob2xkQ29kZUJsb2NrLT5h
cmd1bWVudHNSZWdpc3RlcigpKSkuanNWYWx1ZSgpKQotICAgICAgICAgICAgYXNBcmd1bWVudHMo
YXJndW1lbnRzKS0+c2V0QWN0aXZhdGlvbihhY3RpdmF0aW9uKTsKLSAgICB9IGVsc2UgaWYgKG9s
ZENvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIGFyZ3Vt
ZW50cyA9IGNhbGxGcmFtZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIob2xkQ29kZUJs
b2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAo
IW9sZENvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgYXNBcmd1bWVu
dHMoYXJndW1lbnRzKS0+c2V0QWN0aXZhdGlvbihhY3RpdmF0aW9uKTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSBpZiAob2xkQ29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkgJiYgIW9sZENvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2Fs
bEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihvbGRDb2RlQmxvY2stPmFyZ3Vt
ZW50c1JlZ2lzdGVyKCkpKS5qc1ZhbHVlKCkpCiAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1
bWVudHMpLT5jb3B5UmVnaXN0ZXJzKCk7CiAgICAgfQpAQCAtMTA2MSw3ICsxMDY4LDcgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTT2JqZWMKICAgICB9CiAgICAgRXZhbENvZGVCbG9jayogY29kZUJsb2Nr
ID0gJmV2YWwtPmdlbmVyYXRlZEJ5dGVjb2RlKCk7CiAKLSAgICBKU1ZhcmlhYmxlT2JqZWN0KiB2
YXJpYWJsZU9iamVjdDsKKyAgICBKU09iamVjdCogdmFyaWFibGVPYmplY3Q7CiAgICAgZm9yIChT
Y29wZUNoYWluTm9kZSogbm9kZSA9IHNjb3BlQ2hhaW47IDsgbm9kZSA9IG5vZGUtPm5leHQpIHsK
ICAgICAgICAgQVNTRVJUKG5vZGUpOwogICAgICAgICBpZiAobm9kZS0+b2JqZWN0LT5pc1Zhcmlh
YmxlT2JqZWN0KCkpIHsKQEAgLTEwNzIsNyArMTA3OSwxMyBAQCBKU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNP
YmplYwogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzID0gY29kZUJsb2NrLT5udW1WYXJpYWJs
ZXMoKTsKICAgICBpbnQgbnVtRnVuY3Rpb25zID0gY29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKTsKKyAgICBib29sIHB1c2hlZFNjb3BlID0gZmFsc2U7CiAgICAgaWYgKG51bVZhcmlh
YmxlcyB8fCBudW1GdW5jdGlvbnMpIHsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpIHsKKyAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0ID0gbmV3IChjYWxsRnJhbWUpIFN0
cmljdEV2YWxBY3RpdmF0aW9uKGNhbGxGcmFtZSk7CisgICAgICAgICAgICBzY29wZUNoYWluID0g
c2NvcGVDaGFpbi0+cHVzaCh2YXJpYWJsZU9iamVjdCk7CisgICAgICAgICAgICBwdXNoZWRTY29w
ZSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgLy8gU2NvcGUgZm9yIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyCiAgICAgICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIG9wdGltaXpl
cih2YXJpYWJsZU9iamVjdCk7CiAKQEAgLTEwOTUsNiArMTEwOCw4IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU09iamVjCiAgICAgUmVnaXN0ZXIqIG5ld0VuZCA9IG1fcmVnaXN0ZXJGaWxlLnN0YXJ0KCkg
KyBnbG9iYWxSZWdpc3Rlck9mZnNldCArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7
CiAgICAgaWYgKCFtX3JlZ2lzdGVyRmlsZS5ncm93KG5ld0VuZCkpIHsKICAgICAgICAgKmV4Y2Vw
dGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworICAgICAgICBpZiAo
cHVzaGVkU2NvcGUpCisgICAgICAgICAgICBzY29wZUNoYWluLT5wb3AoKTsKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwogICAgIH0KIApAQCAtMTEzNyw2ICsxMTUyLDggQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTT2JqZWMKICAgICAgICAgKCpwcm9maWxlciktPmRpZEV4ZWN1dGUoY2FsbEZyYW1lLCBl
dmFsLT5zb3VyY2VVUkwoKSwgZXZhbC0+bGluZU5vKCkpOwogCiAgICAgbV9yZWdpc3RlckZpbGUu
c2hyaW5rKG9sZEVuZCk7CisgICAgaWYgKHB1c2hlZFNjb3BlKQorICAgICAgICBzY29wZUNoYWlu
LT5wb3AoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yOTY0LDcgKzI5ODEsNyBAQCBz
a2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gY2FsbEZy
YW1lLT5yKGJhc2UpLmpzVmFsdWUoKTsKICAgICAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2Rl
QmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSk7CiAgICAgICAgIGlmIChkaXJlY3QpIHsKICAgICAgICAgICAgIGJhc2VWYWx1ZS5wdXREaXJl
Y3QoY2FsbEZyYW1lLCBpZGVudCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCksIHNsb3Qp
OwogICAgICAgICAgICAgQVNTRVJUKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSk7CkBAIC0zMDgw
LDcgKzMwOTcsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFsdWUoKTsKICAgICAgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwotICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAgIGlmIChkaXJlY3QpIHsKICAgICAgICAgICAgIGJh
c2VWYWx1ZS5wdXREaXJlY3QoY2FsbEZyYW1lLCBpZGVudCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5q
c1ZhbHVlKCksIHNsb3QpOwogICAgICAgICAgICAgQVNTRVJUKHNsb3QuYmFzZSgpID09IGJhc2VW
YWx1ZSk7CkBAIC0zMTA1LDkgKzMxMjIsMTMgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAg
ICAgICBKU09iamVjdCogYmFzZU9iaiA9IGNhbGxGcmFtZS0+cihiYXNlKS5qc1ZhbHVlKCkudG9P
YmplY3QoY2FsbEZyYW1lKTsKICAgICAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2st
PmlkZW50aWZpZXIocHJvcGVydHkpOwotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVh
bihiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIGlkZW50KSk7CisgICAgICAgIGJv
b2wgcmVzdWx0ID0gYmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBpZGVudCk7Cisg
ICAgICAgIGlmICghcmVzdWx0ICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAg
ICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICBnb3RvIHZtX3Rocm93OworICAg
ICAgICB9CiAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgY2FsbEZyYW1l
LT5yKGRzdCkgPSByZXN1bHQ7CisgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0ganNCb29sZWFu
KHJlc3VsdCk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2RlbF9ieV9pZCk7CiAg
ICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CkBAIC0zMjYwLDcgKzMyODEsNyBAQCBz
a2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eShjYWxsRnJhbWUsIHN1YnNjcmlwdC50b1N0cmluZyhjYWxsRnJhbWUpKTsK
ICAgICAgICAgICAgIGlmICghZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKSB7IC8vIERvbid0IHB1dCB0
byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICAgICAgICAgIGJhc2VW
YWx1ZS5wdXQoY2FsbEZyYW1lLCBwcm9wZXJ0eSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVl
KCksIHNsb3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMjg0LDE5ICszMzA1LDIy
IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gY2Fs
bEZyYW1lLT5yKGJhc2UpLmpzVmFsdWUoKS50b09iamVjdChjYWxsRnJhbWUpOyAvLyBtYXkgdGhy
b3cKIAogICAgICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGNhbGxGcmFtZS0+cihwcm9wZXJ0eSku
anNWYWx1ZSgpOwotICAgICAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICAgICAgYm9vbCByZXN1bHQ7
CiAgICAgICAgIHVpbnQzMl90IGk7CiAgICAgICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkp
KQotICAgICAgICAgICAgcmVzdWx0ID0ganNCb29sZWFuKGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5
KGNhbGxGcmFtZSwgaSkpOworICAgICAgICAgICAgcmVzdWx0ID0gYmFzZU9iai0+ZGVsZXRlUHJv
cGVydHkoY2FsbEZyYW1lLCBpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBDSEVDS19G
T1JfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFt
ZSwgc3Vic2NyaXB0LnRvU3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgQ0hFQ0tfRk9S
X0VYQ0VQVElPTigpOwotICAgICAgICAgICAgcmVzdWx0ID0ganNCb29sZWFuKGJhc2VPYmotPmRl
bGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgcHJvcGVydHkpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgcHJvcGVydHkpOworICAgICAgICB9
CisgICAgICAgIGlmICghcmVzdWx0ICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAg
ICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgIlVu
YWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICBnb3RvIHZtX3Rocm93Owog
ICAgICAgICB9Ci0KICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwotICAgICAgICBjYWxs
RnJhbWUtPnIoZHN0KSA9IHJlc3VsdDsKKyAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBqc0Jv
b2xlYW4ocmVzdWx0KTsKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZGVsX2J5X3Zh
bCk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CkBAIC00MDM2LDYgKzQwNjAs
MTEgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlIGFy
Z3VtZW50c1ZhbHVlID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihh
cmd1bWVudHMpKS5qc1ZhbHVlKCkpCiAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHNW
YWx1ZSktPmNvcHlSZWdpc3RlcnMoKTsKIAorICAgICAgICBpZiAoSlNWYWx1ZSBhcmd1bWVudHMg
PSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHNyYzIpKS5qc1ZhbHVl
KCkpIHsKKyAgICAgICAgICAgIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAg
ICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5zZXRBY3RpdmF0aW9uKGFjdGl2YXRp
b24pOworICAgICAgICB9CisKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfdGVhcl9v
ZmZfYWN0aXZhdGlvbik7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CkBAIC00
MjI1LDYgKzQyNTQsMjUgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgdlBDICs9IE9Q
Q09ERV9MRU5HVEgob3BfY29udmVydF90aGlzKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigp
OwogICAgIH0KKyAgICBERUZJTkVfT1BDT0RFKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpIHsKKyAg
ICAgICAgLyogY29udmVydF90aGlzX3N0cmljdCB0aGlzKHIpCisgICAgICAgICAKKyAgICAgICAg
IFRha2VzIHRoZSB2YWx1ZSBpbiB0aGUgJ3RoaXMnIHJlZ2lzdGVyLCBhbmQgY29udmVydHMgaXQg
dG8KKyAgICAgICAgIGl0cyAidGhpcyIgZm9ybSBpZiAoYW5kIG9ubHkgaWYpICJ0aGlzIiBpcyBh
biBvYmplY3Qgd2l0aCBhCisgICAgICAgICBjdXN0b20gdGhpcyBjb252ZXJzaW9uCisgICAgICAg
ICAKKyAgICAgICAgIFRoaXMgb3Bjb2RlIHNob3VsZCBvbmx5IGJlIHVzZWQgYXQgdGhlIGJlZ2lu
bmluZyBvZiBhIGNvZGUKKyAgICAgICAgIGJsb2NrLgorICAgICAgICAgKi8KKyAgICAgICAgCisg
ICAgICAgIGludCB0aGlzUmVnaXN0ZXIgPSB2UENbMV0udS5vcGVyYW5kOworICAgICAgICBKU1Zh
bHVlIHRoaXNWYWwgPSBjYWxsRnJhbWUtPnIodGhpc1JlZ2lzdGVyKS5qc1ZhbHVlKCk7CisgICAg
ICAgIGlmICh0aGlzVmFsLmlzT2JqZWN0KCkgJiYgdGhpc1ZhbC5uZWVkc1RoaXNDb252ZXJzaW9u
KCkpCisgICAgICAgICAgICBjYWxsRnJhbWUtPnIodGhpc1JlZ2lzdGVyKSA9IEpTVmFsdWUodGhp
c1ZhbC50b1N0cmljdFRoaXNPYmplY3QoY2FsbEZyYW1lKSk7CisgICAgICAgIAorICAgICAgICB2
UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXNfc3RyaWN0KTsKKyAgICAgICAgTkVY
VF9JTlNUUlVDVElPTigpOworICAgIH0KICAgICBERUZJTkVfT1BDT0RFKG9wX2luaXRfbGF6eV9y
ZWcpIHsKICAgICAgICAgLyogaW5pdF9sYXp5X3JlZyBkc3QocikKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCBmM2U5ZTYyZmNmYTZiNDY1YmE3YTQ4OGIwYjFkNzIyY2U0YWQzNjAwLi43OTEwODI3MmQ2NzM5
M2EzMGQ1ODIwZTk0NGI0ZjM3MGE2Y2Q3NzU1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjI1LDYgKzIy
NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5F
X09QKG9wX2dldF9jYWxsZWUpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAg
ICAgICAgREVGSU5FX09QKG9wX2NvbnZlcnRfdGhpcykKKyAgICAgICAgREVGSU5FX09QKG9wX2Nv
bnZlcnRfdGhpc19zdHJpY3QpCiAgICAgICAgIERFRklORV9PUChvcF9pbml0X2xhenlfcmVnKQog
ICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09Q
KG9wX2RlYnVnKQpAQCAtMzk2LDYgKzM5Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jYWxsX3ZhcmFyZ3MpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9jb252ZXJ0X3RoaXMpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9jb252ZXJ0X3RoaXNfc3RyaWN0KQogI2lmICFVU0UoSlNWQUxVRTMyKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfZGl2KQogI2VuZGlmCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmggYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggOGNiMjA1NWM1MThk
OWNiZDE4M2FhZjgwZmUxM2IyZDhkMmNmMmQ4ZS4uODlkZWFjNjYzYzAwNjY3ZjMzNzIzZmU1YzY0
MGNjZTg5OTlhZTYzNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNzM4LDYgKzczOCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfY3JlYXRlX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
ZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0
cnVjdGlvbiopOwpAQCAtODQ1LDYgKzg0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2NhbGxfdmFyYXJncyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3Qo
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnZlcnRf
dGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VxKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA3MTg1NDhh
MzBhMjQ4ODliMzU5ODJlZTBmYWQ1MTk4YzU5MDY1ZjM4Li4zZTcwNTc4YTJjYWVkNWQyODE2ZmY4
MzBhYjY1YWI3ODcxNWJjMWQ0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC04OTUs
NyArODk1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDAp
OwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUoYmFzZSkpCiAgICAg
ICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKSk7Ci0gICAg
aWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpKSB7CisgICAgaWYgKGJhc2Ug
IT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkgewogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihK
U0NlbGwsIG1fc3RydWN0dXJlKSksIHJlZ1QyKTsKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5k
KGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1
cmUsIG1fdHlwZUluZm8ubV90eXBlKSksIEltbTMyKE9iamVjdFR5cGUpKSk7CiAgICAgfQpAQCAt
MTI1NSw2ICsxMjU1LDIzIEBAIHZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5v
blplcm8sIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUlu
Zm8ubV9mbGFncykpLCBJbW0zMihOZWVkc1RoaXNDb252ZXJzaW9uKSkpOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgSnVtcCBub3ROdWxsID0gYnJhbmNoVGVzdFB0cihO
b25aZXJvLCByZWdUMCk7CisgICAgbW92ZShJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KSksIHJlZ1QwKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBKdW1wIHNldFRoaXMgPSBqdW1wKCk7CisgICAg
bm90TnVsbC5saW5rKHRoaXMpOworICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90
SlNDZWxsKHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRP
RihKU0NlbGwsIG1fc3RydWN0dXJlKSksIHJlZ1QxKTsKKyAgICBKdW1wIG5vdEFuT2JqZWN0ID0g
YnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVy
ZSwgbV90eXBlSW5mby5tX3R5cGUpKSwgSW1tMzIoT2JqZWN0VHlwZSkpOworICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihT
dHJ1Y3R1cmUsIG1fdHlwZUluZm8ubV9mbGFncykpLCBJbW0zMihOZWVkc1RoaXNDb252ZXJzaW9u
KSkpOworICAgIGlzSW1tZWRpYXRlLmxpbmsodGhpcyk7CisgICAgbm90QW5PYmplY3QubGluayh0
aGlzKTsKKyAgICBzZXRUaGlzLmxpbmsodGhpcyk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2dl
dF9jYWxsZWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICB1bnNpZ25l
ZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtMTMwNCw2ICsx
MzIxLDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgc3R1YkNhbGwuY2FsbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2NvbnZlcnRfdGhp
c19zdHJpY3QpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKKyAgICBzdHViQ2Fs
bC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworfQorCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBmYWQ4
NWU0YTJiNmRiMWM3ODNhNmEwMmQ5MjJiMjI0ZmJhMDhjYjYxLi4zMjY3MDRkYjRmNTE3MTczZDNk
YWYyNzJkMGNjMmVkYzFkNTI1MTViIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcApAQCAtMTIzOSw3ICsxMjM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1Qx
LCByZWdUMCk7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShiYXNl
KSkKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwg
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+
dGhpc1JlZ2lzdGVyKCkpIHsKKyAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lz
dGVyKCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgcmVn
VDIpOwogICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX3R5cGUpKSwg
SW1tMzIoT2JqZWN0VHlwZSkpKTsKICAgICB9CkBAIC0xNTU0LDYgKzE1NTQsMjYgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhp
cyksIHRoaXNSZWdpc3RlciwgcmVnVDEsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
Y29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIHVuc2lnbmVkIHRoaXNSZWdpc3RlciA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgCisgICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOworICAg
IAorICAgIEp1bXAgbm90TnVsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgSW1tMzIoSlNW
YWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgIGVtaXRTdG9yZSh0aGlzUmVnaXN0ZXIsIGpzTnVs
bCgpKTsKKyAgICBKdW1wIHNldFRoaXMgPSBqdW1wKCk7CisgICAgbm90TnVsbC5saW5rKHRoaXMp
OworICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9P
RkZTRVRPRihKU0NlbGwsIG1fc3RydWN0dXJlKSksIHJlZ1QxKTsKKyAgICBKdW1wIG5vdEFuT2Jq
ZWN0ID0gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKFN0
cnVjdHVyZSwgbV90eXBlSW5mby5tX3R5cGUpKSwgSW1tMzIoT2JqZWN0VHlwZSkpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZT
RVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUluZm8ubV9mbGFncykpLCBJbW0zMihOZWVkc1RoaXNDb252
ZXJzaW9uKSkpOworICAgIGlzSW1tZWRpYXRlLmxpbmsodGhpcyk7CisgICAgbm90QW5PYmplY3Qu
bGluayh0aGlzKTsKKyAgICBzZXRUaGlzLmxpbmsodGhpcyk7CisgICAgbWFwKG1fYnl0ZWNvZGVP
ZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpcyksIHRoaXNSZWdpc3RlciwgcmVn
VDEsIHJlZ1QwKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRfdGhpcyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIHVuc2lnbmVkIHRoaXNSZWdpc3RlciA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CkBAIC0xNTY2LDYgKzE1ODYsMTcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0MKICAgICBzdHViQ2FsbC5jYWxsKHRoaXNSZWdpc3Rlcik7CiB9CiAKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAg
dW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICAKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgCisgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX2NvbnZlcnRfdGhpc19zdHJpY3QpOworICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KHJlZ1QxLCByZWdUMCk7CisgICAgc3R1YkNhbGwuY2FsbCh0aGlzUmVnaXN0ZXIp
OworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3dpbGxfY2FsbChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIHBlZWsocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihK
SVRTdGFja0ZyYW1lLCBlbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UpIC8gc2l6ZW9mKHZvaWQqKSk7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCAwN2FkYzY4NzE1NDdmZGNmMTg1ZTM5NDBlOTlh
YWJkZTM5OGNjMGVlLi5lZDJhZDdlZTRlMjE1NzRhZmU1OGE0OTAwOTU3YzkxZGQ5MDgxYjhkIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTEwNjUsNyArMTA2NSw5IEBAIHN0YXRpYyBORVZF
Ul9JTkxJTkUgdm9pZCB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNHbG9iYWxECiAgICAgICAgIHJldHVybiAwOyBcCiAgICAgfSB3aGlsZSAoMCkKICNkZWZp
bmUgVk1fVEhST1dfRVhDRVBUSU9OX0FUX0VORCgpIFwKLSAgICByZXR1cm5Ub1Rocm93VHJhbXBv
bGluZShzdGFja0ZyYW1lLmdsb2JhbERhdGEsIFNUVUJfUkVUVVJOX0FERFJFU1MsIFNUVUJfUkVU
VVJOX0FERFJFU1MpCisgICAgZG8ge1wKKyAgICAgICAgcmV0dXJuVG9UaHJvd1RyYW1wb2xpbmUo
c3RhY2tGcmFtZS5nbG9iYWxEYXRhLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBTVFVCX1JFVFVSTl9B
RERSRVNTKTtcCisgICAgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBDSEVDS19GT1JfRVhDRVBUSU9O
KCkgXAogICAgIGRvIHsgXApAQCAtMTMwMSw2ICsxMzAzLDE4IEBAIERFRklORV9TVFVCX0ZVTkNU
SU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9jb252ZXJ0X3RoaXMpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCitERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1
ZSwgb3BfY29udmVydF90aGlzX3N0cmljdCkKK3sKKyAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUo
c3RhY2tGcmFtZSk7CisgICAgCisgICAgSlNWYWx1ZSB2MSA9IHN0YWNrRnJhbWUuYXJnc1swXS5q
c1ZhbHVlKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gdjEudG9TdHJpY3RUaGlzT2JqZWN0KGNhbGxGcmFt
ZSk7CisgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX2Vu
ZCkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBAIC0xNDA0LDcg
KzE0MTgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfZ2VuZXJp
YykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKLSAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzdGFja0ZyYW1lLmNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICBzdGFja0ZyYW1lLmFy
Z3NbMF0uanNWYWx1ZSgpLnB1dChzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdz
WzFdLmlkZW50aWZpZXIoKSwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAg
ICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKIH0KQEAgLTE0MTMsNyArMTQyNyw3IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZF9kaXJlY3RfZ2VuZXJpYykK
IHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgCi0gICAgUHV0
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc3RhY2tGcmFtZS5j
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgc3RhY2tGcmFtZS5h
cmdzWzBdLmpzVmFsdWUoKS5wdXREaXJlY3Qoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJh
bWUuYXJnc1sxXS5pZGVudGlmaWVyKCksIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNs
b3QpOwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiB9CkBAIC0xNDQxLDcgKzE0
NTUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWQpCiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKICAgICBJZGVudGlmaWVy
JiBpZGVudCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCk7CiAgICAgCi0gICAgUHV0
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHN0YWNrRnJhbWUuYXJnc1swXS5qc1Zh
bHVlKCkucHV0KGNhbGxGcmFtZSwgaWRlbnQsIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCks
IHNsb3QpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhY2tGcmFtZS5jYWxs
RnJhbWUtPmNvZGVCbG9jaygpOwpAQCAtMTQ2MCw3ICsxNDc0LDcgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCwgb3BfcHV0X2J5X2lkX2RpcmVjdCkKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgIElkZW50aWZpZXImIGlkZW50ID0gc3RhY2tG
cmFtZS5hcmdzWzFdLmlkZW50aWZpZXIoKTsKICAgICAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSk7CiAgICAgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS5wdXREaXJlY3Qo
Y2FsbEZyYW1lLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAg
ICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCk7CkBAIC0xNDc5LDggKzE0OTMsOCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcF9wdXRfYnlfaWRfZmFpbCkKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tG
cmFtZS5jYWxsRnJhbWU7CiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3Nb
MV0uaWRlbnRpZmllcigpOwotCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgCisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2Rl
KCkpOwogICAgIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkucHV0KGNhbGxGcmFtZSwgaWRl
bnQsIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3QpOwogCiAgICAgQ0hFQ0tfRk9S
X0VYQ0VQVElPTl9BVF9FTkQoKTsKQEAgLTE0OTMsNyArMTUwNyw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZF9kaXJlY3RfZmFpbCkKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgIElkZW50aWZpZXImIGlkZW50ID0g
c3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50aWZpZXIoKTsKICAgICAKLSAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSk7CiAgICAgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS5wdXRE
aXJlY3QoY2FsbEZyYW1lLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xv
dCk7CiAgICAgCiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKQEAgLTE4ODAsNyAr
MTg5NCwxMSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZGVsX2J5
X2lkKQogICAgIAogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpz
VmFsdWUoKS50b09iamVjdChjYWxsRnJhbWUpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jv
b2xlYW4oYmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3Nb
MV0uaWRlbnRpZmllcigpKSk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPmRlbGV0
ZVByb3BlcnR5KGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50aWZpZXIoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oY291bGREZWxldGUpOworICAgIGlmICghY291
bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAg
ICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9yKHN0
YWNrRnJhbWUuY2FsbEZyYW1lLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKwogICAg
IENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMjIyMiw4ICsyMjQwLDEwIEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQsIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24pCiAgICAgfQogICAgIEpTQWN0aXZhdGlvbiog
YWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKTsK
ICAgICBhY3RpdmF0aW9uLT5jb3B5UmVnaXN0ZXJzKCk7Ci0gICAgaWYgKEpTVmFsdWUgdiA9IHN0
YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCkpCi0gICAgICAgIGFzQXJndW1lbnRzKHYpLT5zZXRB
Y3RpdmF0aW9uKGFjdGl2YXRpb24pOworICAgIGlmIChKU1ZhbHVlIHYgPSBzdGFja0ZyYW1lLmFy
Z3NbMV0uanNWYWx1ZSgpKSB7CisgICAgICAgIGlmICghc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNv
ZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT5z
ZXRBY3RpdmF0aW9uKGFjdGl2YXRpb24pOworICAgIH0KIH0KIAogREVGSU5FX1NUVUJfRlVOQ1RJ
T04odm9pZCwgb3BfdGVhcl9vZmZfYXJndW1lbnRzKQpAQCAtMjUwMyw3ICsyNTIzLDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X3ZhbCkKICAgICB9IGVsc2UgewogICAg
ICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgc3Vic2NyaXB0LnRvU3RyaW5nKGNh
bGxGcmFtZSkpOwogICAgICAgICBpZiAoIXN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9u
KSB7IC8vIERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0
aW9uLgotICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7
CiAgICAgICAgICAgICBiYXNlVmFsdWUucHV0KGNhbGxGcmFtZSwgcHJvcGVydHksIHZhbHVlLCBz
bG90KTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1NDYsNyArMjU2Niw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV92YWxfYnl0ZV9hcnJheSkKICAgICB9IGVsc2Ugewog
ICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgc3Vic2NyaXB0LnRvU3RyaW5n
KGNhbGxGcmFtZSkpOwogICAgICAgICBpZiAoIXN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0
aW9uKSB7IC8vIERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhj
ZXB0aW9uLgotICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSk7CiAgICAgICAgICAgICBiYXNlVmFsdWUucHV0KGNhbGxGcmFtZSwgcHJvcGVydHksIHZhbHVl
LCBzbG90KTsKICAgICAgICAgfQogICAgIH0KQEAgLTM1MDEsMTkgKzM1MjEsMjIgQEAgREVGSU5F
X1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2RlbF9ieV92YWwpCiAgICAgSlNPYmpl
Y3QqIGJhc2VPYmogPSBiYXNlVmFsdWUudG9PYmplY3QoY2FsbEZyYW1lKTsgLy8gbWF5IHRocm93
CiAKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgYm9vbCByZXN1bHQ7CiAgICAgdWludDMyX3QgaTsK
ICAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKLSAgICAgICAgcmVzdWx0ID0ganNCb29s
ZWFuKGJhc2VPYmotPmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgaSkpOworICAgICAgICByZXN1
bHQgPSBiYXNlT2JqLT5kZWxldGVQcm9wZXJ0eShjYWxsRnJhbWUsIGkpOwogICAgIGVsc2Ugewog
ICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVy
dHkoY2FsbEZyYW1lLCBzdWJzY3JpcHQudG9TdHJpbmcoY2FsbEZyYW1lKSk7CiAgICAgICAgIENI
RUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgcmVzdWx0ID0ganNCb29sZWFuKGJhc2VPYmot
PmRlbGV0ZVByb3BlcnR5KGNhbGxGcmFtZSwgcHJvcGVydHkpKTsKKyAgICAgICAgcmVzdWx0ID0g
YmFzZU9iai0+ZGVsZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBwcm9wZXJ0eSk7CiAgICAgfQogCisg
ICAgaWYgKCFyZXN1bHQgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
CisgICAgICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVy
cm9yKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsK
KwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJl
c3VsdCkpOwogfQogCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfZ2V0dGVyKQpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmggYi9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaAppbmRleCAyYjIyZTZkNDQ5YzVmY2NiZGNlOThhZmYwOWQ3ODk0Mzhl
NzcyNzA5Li5iZDdkMTljZGQ2YzdjZDE2YjY4Zjk5MDhiM2U2NDQ5YmE5Nzg3ZjJhIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIGV4dGVybiAiQyIgewogICAgIEVuY29k
ZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1Y3QoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY3Jl
YXRlX3RoaXMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRf
U1RVQiBjdGlfb3BfY29udmVydF90aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CisgICAgRW5j
b2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NvbnZlcnRfdGhpc19zdHJpY3QoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY3JlYXRl
X2FyZ3VtZW50cyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJ
VF9TVFVCIGN0aV9vcF9jcmVhdGVfYXJndW1lbnRzX25vX3BhcmFtcyhTVFVCX0FSR1NfREVDTEFS
QVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9kZWxfYnlfaWQoU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDQw
MDIzZjhiNjlkNzI2YzU0MDNkYzc5NmM4NmIxYzc3OWVkODIzYjEuLjlhNjgxNDQ2OTViODkyOWU1
ZjFmYzJmYzI3ZTU1NzZlNjNkZDFjNDggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApA
QCAtMjQ5LDEwICsyNDksMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keSgpCisgICAgRnVu
Y3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGJvb2wgaW5TdHJpY3RDb250ZXh0KQog
ICAgIHsKICAgICAgICAgdXNlc0Nsb3N1cmVzKCk7Ci0gICAgICAgIHJldHVybiBGdW5jdGlvbkJv
ZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9k
eU5vZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEsIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogICAg
IAogICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVy
UHJvcGVydHkoUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUs
IFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5C
cmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVu
ZExpbmUpCkBAIC01NzgsNiArNTc4LDkgQEAgcHVibGljOgogICAgIAogICAgIGNvbnN0IElkZW50
aWZpZXImIGdldE5hbWUoUHJvcGVydHkgcHJvcGVydHkpIHsgcmV0dXJuIHByb3BlcnR5LT5uYW1l
KCk7IH0KICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShQcm9wZXJ0eSBwcm9wZXJ0eSkg
eyByZXR1cm4gcHJvcGVydHktPnR5cGUoKTsgfQorCisgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVz
c2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIGV4cHItPmlzUmVzb2x2ZU5vZGUoKTsgfQorCiBwcml2
YXRlOgogICAgIHN0cnVjdCBTY29wZSB7CiAgICAgICAgIFNjb3BlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAg
Yi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCmluZGV4IDBlNTI2YWM3N2ZkZGQ3
NGJjYmM2MGE3MDBlMWY3NTdmZGVmYWEwZWMuLjViYTJhMGFiNzg4MzAwNTFjNzhiMWRlZjc2MmM5
NGNlYzY3MTE4MDcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcApAQCAtMjksNiArMjks
NyBAQAogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKICNpbmNsdWRl
ICJBU1RCdWlsZGVyLmgiCkBAIC00Miw2ICs0Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmlu
ZSBmYWlsKCkgZG8geyBtX2Vycm9yID0gdHJ1ZTsgcmV0dXJuIDA7IH0gd2hpbGUgKDApCiAjZGVm
aW5lIGZhaWxJZkZhbHNlKGNvbmQpIGRvIHsgaWYgKCEoY29uZCkpIGZhaWwoKTsgfSB3aGlsZSAo
MCkKICNkZWZpbmUgZmFpbElmVHJ1ZShjb25kKSBkbyB7IGlmICgoY29uZCkpIGZhaWwoKTsgfSB3
aGlsZSAoMCkKKyNkZWZpbmUgZmFpbElmVHJ1ZUlmU3RyaWN0KGNvbmQpIGRvIHsgaWYgKChjb25k
KSAmJiBzdHJpY3RNb2RlKCkpIGZhaWwoKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZmFpbElmRmFs
c2VJZlN0cmljdChjb25kKSBkbyB7IGlmICgoIShjb25kKSkgJiYgc3RyaWN0TW9kZSgpKSBmYWls
KCk7IH0gd2hpbGUgKDApCiAjZGVmaW5lIGNvbnN1bWVPckZhaWwodG9rZW5UeXBlKSBkbyB7IGlm
ICghY29uc3VtZSh0b2tlblR5cGUpKSBmYWlsKCk7IH0gd2hpbGUgKDApCiAjZGVmaW5lIG1hdGNo
T3JGYWlsKHRva2VuVHlwZSkgZG8geyBpZiAoIW1hdGNoKHRva2VuVHlwZSkpIGZhaWwoKTsgfSB3
aGlsZSAoMCkKICNkZWZpbmUgZmFpbElmU3RhY2tPdmVyZmxvdygpIGRvIHsgZmFpbElmRmFsc2Uo
Y2FuUmVjdXJzZSgpKTsgfSB3aGlsZSAoMCkKQEAgLTY3LDggKzcwLDggQEAgc3RhdGljIGNvbnN0
IHB0cmRpZmZfdCBrTWF4UGFyc2VyU3RhY2tVc2FnZSA9IDEyOCAqIHNpemVvZih2b2lkKikgKiAx
MDI0OwogCiBjbGFzcyBKU1BhcnNlciB7CiBwdWJsaWM6Ci0gICAgSlNQYXJzZXIoTGV4ZXIqLCBK
U0dsb2JhbERhdGEqLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBTb3VyY2VQcm92aWRlciopOwotICAg
IGJvb2wgcGFyc2VQcm9ncmFtKCk7CisgICAgSlNQYXJzZXIoTGV4ZXIqLCBKU0dsb2JhbERhdGEq
LCBGdW5jdGlvblBhcmFtZXRlcnMqLCBib29sIGlzU3RyaWN0Q29udGV4dCwgYm9vbCBpc0Z1bmN0
aW9uLCBTb3VyY2VQcm92aWRlciopOworICAgIGJvb2wgcGFyc2VQcm9ncmFtKEpTR2xvYmFsT2Jq
ZWN0Kik7CiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewogICAgICAgICBB
bGxvd0luT3ZlcnJpZGUoSlNQYXJzZXIqIHBhcnNlcikKQEAgLTkwLDcgKzkzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9rZW4ubV9pbmZvLmxpbmU7CiAgICAgICAgIG1f
bGFzdFRva2VuRW5kID0gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OwogICAgICAgICBtX2xleGVy
LT5zZXRMYXN0TGluZU51bWJlcihtX2xhc3RMaW5lKTsKLSAgICAgICAgbV90b2tlbi5tX3R5cGUg
PSBtX2xleGVyLT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2luZm8sIGxleFR5cGUp
OworICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleCgmbV90b2tlbi5tX2RhdGEs
ICZtX3Rva2VuLm1faW5mbywgbGV4VHlwZSwgc3RyaWN0TW9kZSgpKTsKICAgICAgICAgbV90b2tl
bkNvdW50Kys7CiAgICAgfQogCkBAIC0xMjEsOSArMTI0LDIzIEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OwogICAgIH0KLQotICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNl
RWxlbWVudHMoVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKKyAgICAKKyAgICB2
b2lkIHN0YXJ0TG9vcCgpIHsgY3VycmVudFNjb3BlKCktPnN0YXJ0TG9vcCgpOyB9CisgICAgdm9p
ZCBlbmRMb29wKCkgeyBjdXJyZW50U2NvcGUoKS0+ZW5kTG9vcCgpOyB9CisgICAgdm9pZCBzdGFy
dFN3aXRjaCgpIHsgY3VycmVudFNjb3BlKCktPnN0YXJ0U3dpdGNoKCk7IH0KKyAgICB2b2lkIGVu
ZFN3aXRjaCgpIHsgY3VycmVudFNjb3BlKCktPmVuZFN3aXRjaCgpOyB9CisgICAgdm9pZCBzZXRT
dHJpY3RNb2RlKCkgeyBjdXJyZW50U2NvcGUoKS0+c2V0U3RyaWN0TW9kZSgpOyB9CisgICAgYm9v
bCBzdHJpY3RNb2RlKCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPnN0cmljdE1vZGUoKTsgfQor
ICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUoKSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+aXNW
YWxpZFN0cmljdE1vZGUoKTsgfQorICAgIGJvb2wgZGVjbGFyZVBhcmFtZXRlcihjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPmRlY2xhcmVQYXJhbWV0ZXIo
aWRlbnQpOyB9CisgICAgYm9vbCBicmVha0lzVmFsaWQoKSB7IHJldHVybiBjdXJyZW50U2NvcGUo
KS0+YnJlYWtJc1ZhbGlkKCk7IH0KKyAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVy
KiBsYWJlbCkgeyBjdXJyZW50U2NvcGUoKS0+cHVzaExhYmVsKGxhYmVsKTsgfQorICAgIHZvaWQg
cG9wTGFiZWwoKSB7IGN1cnJlbnRTY29wZSgpLT5wb3BMYWJlbCgpOyB9CisgICAgYm9vbCBoYXNM
YWJlbChjb25zdCBJZGVudGlmaWVyKiBsYWJlbCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPmhh
c0xhYmVsKGxhYmVsKTsgfQorCisgICAgZW51bSBTb3VyY2VFbGVtZW50c01vZGUgeyBDaGVja0Zv
clN0cmljdE1vZGUsIERvbnRDaGVja0ZvclN0cmljdE1vZGUgfTsKKyAgICB0ZW1wbGF0ZSA8U291
cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYs
IGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxk
ZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFy
c2VWYXJEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUNvbnN0RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXIm
KTsKQEAgLTE5OSwzMiArMjE2LDExOCBAQCBwcml2YXRlOgogICAgIGludCBtX2Fzc2lnbm1lbnRD
b3VudDsKICAgICBpbnQgbV9ub25MSFNDb3VudDsKICAgICBib29sIG1fc3ludGF4QWxyZWFkeVZh
bGlkYXRlZDsKKyAgICBpbnQgbV9zdGF0ZW1lbnREZXB0aDsKKyAgICBpbnQgbV9ub25Ucml2aWFs
RXhwcmVzc2lvbkNvdW50OworICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbGFzdElkZW50aWZpZXI7
CisKKyAgICBzdHJ1Y3QgRGVwdGhNYW5hZ2VyIHsKKyAgICAgICAgRGVwdGhNYW5hZ2VyKGludCog
ZGVwdGgpCisgICAgICAgICAgICA6IG1fb3JpZ2luYWxEZXB0aCgqZGVwdGgpCisgICAgICAgICAg
ICAsIG1fZGVwdGgoZGVwdGgpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgfkRlcHRoTWFuYWdlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgICptX2RlcHRoID0gbV9v
cmlnaW5hbERlcHRoOworICAgICAgICB9CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAg
IGludCBtX29yaWdpbmFsRGVwdGg7CisgICAgICAgIGludCogbV9kZXB0aDsKKyAgICB9OwogCiAg
ICAgc3RydWN0IFNjb3BlIHsKLSAgICAgICAgU2NvcGUoKQotICAgICAgICAgICAgOiBtX3VzZXNF
dmFsKGZhbHNlKQorICAgICAgICBTY29wZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wg
aXNGdW5jdGlvbiwgYm9vbCBzdHJpY3RNb2RlKQorICAgICAgICAgICAgOiBtX2dsb2JhbERhdGEo
Z2xvYmFsRGF0YSkKKyAgICAgICAgICAgICwgbV91c2VzRXZhbChmYWxzZSkKICAgICAgICAgICAg
ICwgbV9uZWVkc0Z1bGxBY3RpdmF0aW9uKGZhbHNlKQogICAgICAgICAgICAgLCBtX2FsbG93c05l
d0RlY2xzKHRydWUpCisgICAgICAgICAgICAsIG1fc3RyaWN0TW9kZShzdHJpY3RNb2RlKQorICAg
ICAgICAgICAgLCBtX2lzRnVuY3Rpb24oaXNGdW5jdGlvbikKKyAgICAgICAgICAgICwgbV9pc1Zh
bGlkU3RyaWN0TW9kZSh0cnVlKQorICAgICAgICAgICAgLCBtX2xvb3BEZXB0aCgwKQorICAgICAg
ICAgICAgLCBtX3N3aXRjaERlcHRoKDApCisgICAgICAgICAgICAsIG1fbGFiZWxzKDApCiAgICAg
ICAgIHsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBkZWNsYXJlVmFyaWFibGUo
Y29uc3QgSWRlbnRpZmllciogaWRlbnQpCisgICAgICAgIHZvaWQgc3RhcnRTd2l0Y2goKSB7IG1f
c3dpdGNoRGVwdGgrKzsgfQorICAgICAgICB2b2lkIGVuZFN3aXRjaCgpIHsgbV9zd2l0Y2hEZXB0
aC0tOyB9CisgICAgICAgIHZvaWQgc3RhcnRMb29wKCkgeyBtX2xvb3BEZXB0aCsrOyB9CisgICAg
ICAgIHZvaWQgZW5kTG9vcCgpIHsgQVNTRVJUKG1fbG9vcERlcHRoKTsgbV9sb29wRGVwdGgtLTsg
fQorICAgICAgICBib29sIGluTG9vcCgpIHsgcmV0dXJuICEhbV9sb29wRGVwdGg7IH0KKyAgICAg
ICAgYm9vbCBicmVha0lzVmFsaWQoKSB7IHJldHVybiBtX2xvb3BEZXB0aCB8fCBtX3N3aXRjaERl
cHRoOyB9CisKKyAgICAgICAgdm9pZCBwdXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9sYWJlbHMpCisgICAgICAgICAgICAgICAg
bV9sYWJlbHMgPSBuZXcgTGFiZWxTdGFjazsKKyAgICAgICAgICAgIG1fbGFiZWxzLT5hcHBlbmQo
bGFiZWwtPmltcGwoKSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBvcExhYmVsKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fbGFiZWxzKTsKKyAgICAgICAgICAgIEFTU0VS
VChtX2xhYmVscy0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fbGFiZWxzLT5yZW1vdmVMYXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBib29sIGhhc0xhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fbGFiZWxzKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBtX2xhYmVscy0+c2l6
ZSgpOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbGFiZWxzLT5hdChpIC0g
MSkgPT0gbGFiZWwtPmltcGwoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1faXNGdW5jdGlvbiA9IHRydWU7IH0KKyAgICAg
ICAgYm9vbCBpc0Z1bmN0aW9uKCkgeyByZXR1cm4gbV9pc0Z1bmN0aW9uOyB9CisgICAgICAgIAor
ICAgICAgICBib29sIGRlY2xhcmVWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKICAg
ICAgICAgeworICAgICAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9IG1fZ2xvYmFsRGF0
YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCAhPSAqaWRlbnQgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0
eU5hbWVzLT5hcmd1bWVudHMgIT0gKmlkZW50OworICAgICAgICAgICAgbV9pc1ZhbGlkU3RyaWN0
TW9kZSA9IG1faXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1vZGU7CiAgICAgICAg
ICAgICBtX2RlY2xhcmVkVmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gaXNWYWxpZFN0cmljdE1vZGU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHZvaWQgZGVjbGFyZVdyaXRlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9zdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIG1f
d3JpdHRlblZhcmlhYmxlcy5hZGQoaWRlbnQtPmltcGwoKSk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKGlk
ZW50LT5pbXBsKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IG1fZGVsZXRlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPmltcGwoKSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBwcmV2ZW50TmV3RGVj
bHMoKSB7IG1fYWxsb3dzTmV3RGVjbHMgPSBmYWxzZTsgfQogICAgICAgICBib29sIGFsbG93c05l
d0RlY2xzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NOZXdEZWNsczsgfQogCisgICAgICAgIGJv
b2wgZGVjbGFyZVBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9IG1fZGVjbGFyZWRWYXJpYWJsZXMu
YWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKS5zZWNvbmQgJiYgbV9nbG9iYWxEYXRhLT5wcm9w
ZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAmJiBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMt
PmFyZ3VtZW50cyAhPSAqaWRlbnQ7CisgICAgICAgICAgICBtX2lzVmFsaWRTdHJpY3RNb2RlID0g
bV9pc1ZhbGlkU3RyaWN0TW9kZSAmJiBpc1ZhbGlkU3RyaWN0TW9kZTsKKyAgICAgICAgICAgIHJl
dHVybiBpc1ZhbGlkU3RyaWN0TW9kZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9p
ZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1fdXNlc0V2YWwgfD0gaXNFdmFsOwogICAgICAgICAgICAgbV91
c2VkVmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIHZvaWQgbmVlZHNGdWxsQWN0aXZhdGlvbigpIHsgbV9uZWVkc0Z1bGxB
Y3RpdmF0aW9uID0gdHJ1ZTsgfQorICAgICAgICB2b2lkIHNldE5lZWRzRnVsbEFjdGl2YXRpb24o
KSB7IG1fbmVlZHNGdWxsQWN0aXZhdGlvbiA9IHRydWU7IH0KICAgICAgICAgCi0gICAgICAgIHZv
aWQgY29sbGVjdEZyZWVWYXJpYWJsZXMoU2NvcGUqIG5lc3RlZFNjb3BlLCBib29sIHNob3VsZFRy
YWNrQ2xvc2VkVmFyaWFibGVzKQorICAgICAgICBib29sIGNvbGxlY3RGcmVlVmFyaWFibGVzKFNj
b3BlKiBuZXN0ZWRTY29wZSwgYm9vbCBzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcykKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX3VzZXNFdmFsKQogICAgICAgICAg
ICAgICAgIG1fdXNlc0V2YWwgPSB0cnVlOwpAQCAtMjM2LDYgKzMzOSw0NSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRUcmFja0Nsb3NlZFZhcmlhYmxlcykKICAgICAgICAg
ICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJsZXMuYWRkKCpwdHIpOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX3dyaXR0ZW5WYXJpYWJsZXMuc2l6ZSgpKSB7
CisgICAgICAgICAgICAgICAgSWRlbnRpZmllclNldDo6aXRlcmF0b3IgZW5kID0gbmVzdGVkU2Nv
cGUtPm1fd3JpdHRlblZhcmlhYmxlcy5lbmQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKElkZW50
aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5tX3dyaXR0ZW5WYXJpYWJsZXMu
YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5l
c3RlZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIG1fd3JpdHRlblZh
cmlhYmxlcy5hZGQoKnB0cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKG5lc3RlZFNjb3BlLT5tX2RlbGV0ZWRWYXJpYWJsZXMuc2l6ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgSWRlbnRpZmllclNldDo6aXRlcmF0b3IgZW5kID0gbmVzdGVkU2NvcGUt
Pm1fZGVsZXRlZFZhcmlhYmxlcy5lbmQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKElkZW50aWZp
ZXJTZXQ6Oml0ZXJhdG9yIHB0ciA9IG5lc3RlZFNjb3BlLT5tX2RlbGV0ZWRWYXJpYWJsZXMuYmVn
aW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5lc3Rl
ZFNjb3BlLT5tX2RlY2xhcmVkVmFyaWFibGVzLmNvbnRhaW5zKCpwdHIpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9kZWNs
YXJlZFZhcmlhYmxlcy5jb250YWlucygqcHRyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbV9kZWxldGVkVmFyaWFibGVzLmFkZCgq
cHRyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZ2V0VW5jYXB0dXJlZFdyaXR0ZW5W
YXJpYWJsZXMoSWRlbnRpZmllclNldCYgd3JpdHRlblZhcmlhYmxlcykKKyAgICAgICAgeworICAg
ICAgICAgICAgSWRlbnRpZmllclNldDo6aXRlcmF0b3IgZW5kID0gbV93cml0dGVuVmFyaWFibGVz
LmVuZCgpOworICAgICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBt
X3dyaXR0ZW5WYXJpYWJsZXMuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1fZGVjbGFyZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAg
ICAgICAgICAgICAgIHdyaXR0ZW5WYXJpYWJsZXMuYWRkKCpwdHIpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgYm9vbCBnZXREZWxldGVkVmFyaWFibGVzKElkZW50aWZpZXJT
ZXQmIGRlbGV0ZWRWYXJpYWJsZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIElkZW50aWZpZXJT
ZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fZGVsZXRlZFZhcmlhYmxlcy5lbmQoKTsKKyAgICAgICAgICAg
IGZvciAoSWRlbnRpZmllclNldDo6aXRlcmF0b3IgcHRyID0gbV9kZWxldGVkVmFyaWFibGVzLmJl
Z2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZGVjbGFy
ZWRWYXJpYWJsZXMuY29udGFpbnMoKnB0cikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZWRWYXJpYWJsZXMuc3dhcCht
X2RlbGV0ZWRWYXJpYWJsZXMpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIGdldENhcHR1cmVkVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzKQpAQCAtMjUwLDEzICszOTIsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjYXB0dXJlZFZhcmlhYmxlcy5hZGQoKnB0cik7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KKyAgICAgICAgdm9pZCBzZXRTdHJpY3RNb2RlKCkgeyBtX3N0cmljdE1vZGUgPSB0cnVlOyB9
CisgICAgICAgIGJvb2wgc3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0TW9kZTsg
fQorICAgICAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zh
bGlkU3RyaWN0TW9kZTsgfQorCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBtX3VzZXNFdmFs
OwotICAgICAgICBib29sIG1fbmVlZHNGdWxsQWN0aXZhdGlvbjsKLSAgICAgICAgYm9vbCBtX2Fs
bG93c05ld0RlY2xzOworICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKKyAgICAg
ICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICAgICAgYm9vbCBtX25lZWRzRnVsbEFjdGl2YXRp
b24gOiAxOworICAgICAgICBib29sIG1fYWxsb3dzTmV3RGVjbHMgOiAxOworICAgICAgICBib29s
IG1fc3RyaWN0TW9kZSA6IDE7CisgICAgICAgIGJvb2wgbV9pc0Z1bmN0aW9uIDogMTsKKyAgICAg
ICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RNb2RlIDogMTsKKyAgICAgICAgaW50IG1fbG9vcERlcHRo
OworICAgICAgICBpbnQgbV9zd2l0Y2hEZXB0aDsKKyAgICAgICAgdHlwZWRlZiBWZWN0b3I8U3Ry
aW5nSW1wbCosIDI+IExhYmVsU3RhY2s7CisgICAgICAgIExhYmVsU3RhY2sqIG1fbGFiZWxzOwog
ICAgICAgICBJZGVudGlmaWVyU2V0IG1fZGVjbGFyZWRWYXJpYWJsZXM7CiAgICAgICAgIElkZW50
aWZpZXJTZXQgbV91c2VkVmFyaWFibGVzOwogICAgICAgICBJZGVudGlmaWVyU2V0IG1fY2xvc2Vk
VmFyaWFibGVzOworICAgICAgICBJZGVudGlmaWVyU2V0IG1fd3JpdHRlblZhcmlhYmxlczsKKyAg
ICAgICAgSWRlbnRpZmllclNldCBtX2RlbGV0ZWRWYXJpYWJsZXM7CiAgICAgfTsKICAgICAKICAg
ICB0eXBlZGVmIFZlY3RvcjxTY29wZSwgMTA+IFNjb3BlU3RhY2s7CkBAIC0yODEsMTkgKzQzNywy
NiBAQCBwcml2YXRlOgogICAgIAogICAgIFNjb3BlUmVmIHB1c2hTY29wZSgpCiAgICAgewotICAg
ICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKFNjb3BlKCkpOworICAgICAgICBib29sIGlzRnVuY3Rp
b24gPSBmYWxzZTsKKyAgICAgICAgYm9vbCBpc1N0cmljdCA9IGZhbHNlOworICAgICAgICBpZiAo
IW1fc2NvcGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlzU3RyaWN0ID0gbV9zY29w
ZVN0YWNrLmxhc3QoKS5zdHJpY3RNb2RlKCk7CisgICAgICAgICAgICBpc0Z1bmN0aW9uID0gbV9z
Y29wZVN0YWNrLmxhc3QoKS5pc0Z1bmN0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9zY29w
ZVN0YWNrLmFwcGVuZChTY29wZShtX2dsb2JhbERhdGEsIGlzRnVuY3Rpb24sIGlzU3RyaWN0KSk7
CiAgICAgICAgIHJldHVybiBjdXJyZW50U2NvcGUoKTsKICAgICB9CiAKLSAgICB2b2lkIHBvcFNj
b3BlKFNjb3BlUmVmIHNjb3BlLCBib29sIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKQorICAg
IGJvb2wgcG9wU2NvcGUoU2NvcGVSZWYgc2NvcGUsIGJvb2wgc2hvdWxkVHJhY2tDbG9zZWRWYXJp
YWJsZXMpCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCBzY29wZS5pbmRleCgp
ID09IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxKTsKICAgICAgICAgQVNTRVJUKG1fc2NvcGVTdGFj
ay5zaXplKCkgPiAxKTsKLSAgICAgICAgbV9zY29wZVN0YWNrW21fc2NvcGVTdGFjay5zaXplKCkg
LSAyXS5jb2xsZWN0RnJlZVZhcmlhYmxlcygmbV9zY29wZVN0YWNrLmxhc3QoKSwgc2hvdWxkVHJh
Y2tDbG9zZWRWYXJpYWJsZXMpOworICAgICAgICBib29sIHJlc3VsdCA9IG1fc2NvcGVTdGFja1tt
X3Njb3BlU3RhY2suc2l6ZSgpIC0gMl0uY29sbGVjdEZyZWVWYXJpYWJsZXMoJm1fc2NvcGVTdGFj
ay5sYXN0KCksIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKTsKICAgICAgICAgbV9zY29wZVN0
YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBkZWNsYXJlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCisgICAgYm9v
bCBkZWNsYXJlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CiAgICAgICAgIEFTU0VSVChp
IDwgbV9zY29wZVN0YWNrLnNpemUoKSk7CkBAIC0zMDEsMTkgKzQ2NCwzMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6
ZSgpKTsKICAgICAgICAgfQotICAgICAgICBtX3Njb3BlU3RhY2tbaV0uZGVjbGFyZVZhcmlhYmxl
KGlkZW50KTsKKyAgICAgICAgcmV0dXJuIG1fc2NvcGVTdGFja1tpXS5kZWNsYXJlVmFyaWFibGUo
aWRlbnQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGRlY2xhcmVXcml0ZShjb25zdCBJZGVudGlm
aWVyKiBpZGVudCkKKyAgICB7CisgICAgICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVk
KQorICAgICAgICAgICAgbV9zY29wZVN0YWNrLmxhc3QoKS5kZWNsYXJlV3JpdGUoaWRlbnQpOwog
ICAgIH0KIAorICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogaWRlbnQp
CisgICAgeworICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkKKyAgICAgICAg
ICAgIHJldHVybiBtX3Njb3BlU3RhY2subGFzdCgpLmRlbGV0ZVByb3BlcnR5KGlkZW50KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIFNjb3BlU3RhY2sgbV9zY29wZVN0
YWNrOwogfTsKIAotaW50IGpzUGFyc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBGdW5jdGlv
blBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZSkKK2ludCBq
c1BhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBGdW5jdGlvblBhcmFt
ZXRlcnMqIHBhcmFtZXRlcnMsIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzLCBKU1BhcnNl
ck1vZGUgcGFyc2VyTW9kZSwgY29uc3QgU291cmNlQ29kZSogc291cmNlKQogewotICAgIEpTUGFy
c2VyIHBhcnNlcihnbG9iYWxEYXRhLT5sZXhlciwgZ2xvYmFsRGF0YSwgcGFyYW1ldGVycywgc291
cmNlLT5wcm92aWRlcigpKTsKLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlUHJvZ3JhbSgpOworICAg
IEpTUGFyc2VyIHBhcnNlcihsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPmxleGVy
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHBhcmFtZXRlcnMsIHN0cmljdG5l
c3MgPT0gSlNQYXJzZVN0cmljdCwgcGFyc2VyTW9kZSA9PSBKU1BhcnNlRnVuY3Rpb25Db2RlLCBz
b3VyY2UtPnByb3ZpZGVyKCkpOworICAgIHJldHVybiBwYXJzZXIucGFyc2VQcm9ncmFtKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogfQogCi1KU1BhcnNlcjo6SlNQYXJzZXIoTGV4ZXIqIGxleGVyLCBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywg
U291cmNlUHJvdmlkZXIqIHByb3ZpZGVyKQorSlNQYXJzZXI6OkpTUGFyc2VyKExleGVyKiBsZXhl
ciwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRl
cnMsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBib29sIGlzRnVuY3Rpb24sIFNvdXJjZVByb3ZpZGVy
KiBwcm92aWRlcikKICAgICA6IG1fbGV4ZXIobGV4ZXIpCiAgICAgLCBtX2VuZEFkZHJlc3MoMCkK
ICAgICAsIG1fZXJyb3IoZmFsc2UpCkBAIC0zMjUsMjggKzUwMSw1NiBAQCBKU1BhcnNlcjo6SlNQ
YXJzZXIoTGV4ZXIqIGxleGVyLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEZ1bmN0aW9uUGFy
YW1ldGVycyogcAogICAgICwgbV9hc3NpZ25tZW50Q291bnQoMCkKICAgICAsIG1fbm9uTEhTQ291
bnQoMCkKICAgICAsIG1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZChwcm92aWRlci0+aXNWYWxpZCgp
KQorICAgICwgbV9zdGF0ZW1lbnREZXB0aCgwKQorICAgICwgbV9ub25Ucml2aWFsRXhwcmVzc2lv
bkNvdW50KDApCisgICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiB7CiAgICAgbV9lbmRBZGRyZXNz
ID0gd3RmVGhyZWFkRGF0YSgpLmFwcHJveGltYXRlZFN0YWNrU3RhcnQoKSAtIGtNYXhQYXJzZXJT
dGFja1VzYWdlOwotICAgIG5leHQoKTsKLSAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcih0
b2tlbkxpbmUoKSk7CiAgICAgU2NvcGVSZWYgc2NvcGUgPSBwdXNoU2NvcGUoKTsKKyAgICBpZiAo
aXNGdW5jdGlvbikKKyAgICAgICAgc2NvcGUtPnNldElzRnVuY3Rpb24oKTsKKyAgICBpZiAoaW5T
dHJpY3RDb250ZXh0KQorICAgICAgICBzY29wZS0+c2V0U3RyaWN0TW9kZSgpOwogICAgIGlmIChw
YXJhbWV0ZXJzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJz
LT5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIHNjb3BlLT5kZWNsYXJlVmFyaWFibGUoJnBhcmFt
ZXRlcnMtPmF0KGkpKTsKKyAgICAgICAgICAgIHNjb3BlLT5kZWNsYXJlUGFyYW1ldGVyKCZwYXJh
bWV0ZXJzLT5hdChpKSk7CiAgICAgfQorICAgIG5leHQoKTsKKyAgICBtX2xleGVyLT5zZXRMYXN0
TGluZU51bWJlcih0b2tlbkxpbmUoKSk7CiB9CiAKLWJvb2wgSlNQYXJzZXI6OnBhcnNlUHJvZ3Jh
bSgpCitib29sIEpTUGFyc2VyOjpwYXJzZVByb2dyYW0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QpCiB7CiAgICAgQVNUQnVpbGRlciBjb250ZXh0KG1fZ2xvYmFsRGF0YSwgbV9s
ZXhlcik7CisgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nKCkpCisgICAgICAgIG1fc3RhdGVt
ZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1cnJlbnRTY29wZSgpOwotICAgIFNv
dXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8QVNUQnVp
bGRlcj4oY29udGV4dCk7CisgICAgU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzID0gcGFy
c2VTb3VyY2VFbGVtZW50czxDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgIGlmICgh
c291cmNlRWxlbWVudHMgfHwgIWNvbnN1bWUoRU9GVE9LKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQpIHsKKyAgICAgICAgSWRlbnRpZmll
clNldCB3cml0dGVuVmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0VW5jYXB0dXJlZFdyaXR0
ZW5WYXJpYWJsZXMod3JpdHRlblZhcmlhYmxlcyk7CisgICAgICAgIElkZW50aWZpZXJTZXQ6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IHdyaXR0ZW5WYXJpYWJsZXMuZW5kKCk7CisgICAgICAgIGZvciAo
SWRlbnRpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgcHRyID0gd3JpdHRlblZhcmlhYmxlcy5iZWdp
bigpOyBwdHIgIT0gZW5kOyArK3B0cikgeworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qo
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBpZiAoIWxleGljYWxHbG9iYWxPYmpl
Y3QtPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIElk
ZW50aWZpZXIobV9nbG9iYWxEYXRhLCAqcHRyKSwgc2xvdCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgSWRlbnRpZmllclNldCBkZWxldGVkVmFyaWFi
bGVzOworICAgICAgICBpZiAoIXNjb3BlLT5nZXREZWxldGVkVmFyaWFibGVzKGRlbGV0ZWRWYXJp
YWJsZXMpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGVuZCA9IGRlbGV0ZWRW
YXJpYWJsZXMuZW5kKCk7CisgICAgICAgIFN5bWJvbFRhYmxlJiBnbG9iYWxFbnZSZWNvcmQgPSBs
ZXhpY2FsR2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpOworICAgICAgICBmb3IgKElkZW50aWZp
ZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIHB0ciA9IGRlbGV0ZWRWYXJpYWJsZXMuYmVnaW4oKTsgcHRy
ICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgIGlmICghZ2xvYmFsRW52UmVjb3JkLmdldCgq
cHRyKS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KICAgICBJZGVudGlmaWVyU2V0IGNhcHR1cmVkVmFyaWFibGVzOwogICAgIHNjb3BlLT5n
ZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcyk7Ci0gICAgbV9nbG9iYWxEYXRh
LT5wYXJzZXItPmRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNvbnRleHQudmFyRGVj
bGFyYXRpb25zKCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZlYXR1cmVz
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhc3RMaW5l
LCBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgbV9nbG9i
YWxEYXRhLT5wYXJzZXItPmRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNvbnRleHQu
dmFyRGVjbGFyYXRpb25zKCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZl
YXR1cmVzKCkgfCAoc2NvcGUtPnN0cmljdE1vZGUoKSA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0TGluZSwg
Y29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtMzU1LDExICs1NTksMzAgQEAgYm9vbCBKU1BhcnNlcjo6YWxsb3dBdXRv
bWF0aWNTZW1pY29sb24oKQogICAgIHJldHVybiBtYXRjaChDTE9TRUJSQUNFKSB8fCBtYXRjaChF
T0ZUT0spIHx8IG1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCk7CiB9CiAKLXRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIEpTUGFyc2VyOjpwYXJzZVNvdXJjZUVs
ZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPEpTUGFyc2VyOjpTb3VyY2VF
bGVtZW50c01vZGUgbW9kZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBK
U1BhcnNlcjo6cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAg
ICBUcmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJj
ZUVsZW1lbnRzKCk7Ci0gICAgd2hpbGUgKFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VT
dGF0ZW1lbnQoY29udGV4dCkpCisgICAgYm9vbCBzZWVuTm9uRGlyZWN0aXZlID0gZmFsc2U7Cisg
ICAgY29uc3QgSWRlbnRpZmllciogZGlyZWN0aXZlID0gMDsKKyAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldCA9IG1fdG9rZW4ubV9pbmZvLnN0YXJ0T2Zmc2V0OworICAgIGJvb2wgaGFzU2V0U3RyaWN0
ID0gZmFsc2U7CisgICAgd2hpbGUgKFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0
ZW1lbnQoY29udGV4dCwgZGlyZWN0aXZlKSkgeworICAgICAgICBpZiAobW9kZSA9PSBDaGVja0Zv
clN0cmljdE1vZGUgJiYgIXNlZW5Ob25EaXJlY3RpdmUpIHsKKyAgICAgICAgICAgIGlmIChkaXJl
Y3RpdmUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWhhc1NldFN0cmljdCAmJiBtX2dsb2JhbERh
dGEtPnByb3BlcnR5TmFtZXMtPnVzZVN0cmljdElkZW50aWZpZXIgPT0gKmRpcmVjdGl2ZSkgewor
ICAgICAgICAgICAgICAgICAgICBzZXRTdHJpY3RNb2RlKCk7CisgICAgICAgICAgICAgICAgICAg
IGhhc1NldFN0cmljdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlz
VmFsaWRTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX2xleGVyLT5zZXRPZmZz
ZXQoc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAg
ICAgICAgICAgIGZhaWxJZlRydWUobV9lcnJvcik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIHNlZW5Ob25EaXJlY3RpdmUgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIGNvbnRleHQu
YXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOworICAgIH0KIAogICAg
IGlmIChtX2Vycm9yKQogICAgICAgICBmYWlsKCk7CkBAIC0zOTksNyArNjIyLDEwIEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VEb1do
aWxlU3RhdGVtZW50KFRyZWVCCiAgICAgQVNTRVJUKG1hdGNoKERPKSk7CiAgICAgaW50IHN0YXJ0
TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKLSAgICBUcmVlU3RhdGVtZW50IHN0YXRl
bWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOworICAgIGNvbnN0IElkZW50aWZpZXIqIHVu
dXNlZCA9IDA7CisgICAgc3RhcnRMb29wKCk7CisgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQg
PSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOworICAgIGVuZExvb3AoKTsKICAgICBm
YWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAg
ICAgY29uc3VtZU9yRmFpbChXSElMRSk7CkBAIC00MjIsNyArNjQ4LDEwIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VXaGlsZVN0YXRl
bWVudChUcmVlQnVpCiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgaW50IGVuZExpbmUgPSB0
b2tlbkxpbmUoKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwotICAgIFRyZWVTdGF0
ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgY29uc3QgSWRl
bnRpZmllciogdW51c2VkID0gMDsKKyAgICBzdGFydExvb3AoKTsKKyAgICBUcmVlU3RhdGVtZW50
IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CisgICAgZW5kTG9v
cCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlV2hpbGVTdGF0ZW1lbnQoZXhwciwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOwog
fQpAQCAtNDQxLDcgKzY3MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyCiAgICAgICAgIGxh
c3RJZGVudCA9IG5hbWU7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgYm9vbCBoYXNJbml0aWFs
aXplciA9IG1hdGNoKEVRVUFMKTsKLSAgICAgICAgZGVjbGFyZVZhcmlhYmxlKG5hbWUpOworICAg
ICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShuYW1lKSk7CiAgICAgICAg
IGNvbnRleHQuYWRkVmFyKG5hbWUsIChoYXNJbml0aWFsaXplciB8fCAoIW1fYWxsb3dzSW4gJiYg
bWF0Y2goSU5UT0tFTikpKSA/IERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplciA6IDAp
OwogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIpIHsKICAgICAgICAgICAgIGludCB2YXJEaXZv
dCA9IHRva2VuU3RhcnQoKSArIDE7CkBAIC00NjUsNiArNjk0LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VWYXJEZWNsYXJhdGlv
bkxpc3QoVHIKIAogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlz
dCBKU1BhcnNlcjo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKKyAgICBmYWlsSWZUcnVlKHN0cmljdE1vZGUoKSk7CiAgICAgVHJlZUNvbnN0RGVjbExp
c3QgY29uc3REZWNscyA9IDA7CiAgICAgVHJlZUNvbnN0RGVjbExpc3QgdGFpbCA9IDA7CiAgICAg
ZG8gewpAQCAtNTMyLDcgKzc2MiwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlRm9yU3RhdGVtZW50KFRyZWVCdWlsZAogICAgICAg
ICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NF
UEFSRU4pOwogCi0gICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1l
bnQoY29udGV4dCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CisgICAg
ICAgIHN0YXJ0TG9vcCgpOworICAgICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNl
U3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CisgICAgICAgIGVuZExvb3AoKTsKICAgICAgICAg
ZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKIAogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
b3JJbkxvb3AoZm9ySW5UYXJnZXQsIGZvckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRlbWVudCwg
ZGVjbHNTdGFydCwgaW5Mb2NhdGlvbiwgZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5kLCBzdGFy
dExpbmUsIGVuZExpbmUpOwpAQCAtNTY2LDcgKzc5OSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlRm9yU3RhdGVtZW50KFRyZWVC
dWlsZAogICAgICAgICB9CiAgICAgICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAg
ICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7Ci0gICAgICAgIFRyZWVTdGF0ZW1lbnQgc3Rh
dGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgICAgIGNvbnN0IElkZW50aWZp
ZXIqIHVudXNlZCA9IDA7CisgICAgICAgIHN0YXJ0TG9vcCgpOworICAgICAgICBUcmVlU3RhdGVt
ZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CisgICAgICAg
IGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcChkZWNscywgY29uZGl0aW9uLCBpbmNyZW1lbnQsIHN0
YXRlbWVudCwgaGFzRGVjbGFyYXRpb24sIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgfQpAQCAt
NTc5LDcgKzgxNSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgSlNQYXJzZXI6OnBhcnNlRm9yU3RhdGVtZW50KFRyZWVCdWlsZAogICAgIGludCBleHByRW5k
ID0gbGFzdFRva2VuRW5kKCk7CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBj
b25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwotICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0g
cGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CisgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0g
MDsKKyAgICBzdGFydExvb3AoKTsKKyAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNl
U3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CisgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZh
bHNlKHN0YXRlbWVudCk7CiAgICAgCiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29w
KGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBz
dGFydExpbmUsIGVuZExpbmUpOwpAQCAtNTk0LDEwICs4MzMsMTMgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUJyZWFrU3RhdGVtZW50
KFRyZWVCdWkKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKIAot
ICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpCisgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgeworICAg
ICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGJyZWFrSXNWYWxpZCgpKTsKICAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQoc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKKyAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgZmFpbElmRmFsc2VJ
ZlN0cmljdChoYXNMYWJlbChpZGVudCkpOwogICAgIGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAg
ZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKQEAgLTYxNCwxMCArODU2LDEzIEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFy
c2VDb250aW51ZVN0YXRlbWVudChUcmVlCiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsK
ICAgICBuZXh0KCk7CiAKLSAgICBpZiAoYXV0b1NlbWlDb2xvbigpKQorICAgIGlmIChhdXRvU2Vt
aUNvbG9uKCkpIHsKKyAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChicmVha0lzVmFsaWQoKSk7
CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KHN0YXJ0Q29s
LCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgfQogICAgIG1hdGNoT3JGYWlsKElE
RU5UKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50
OworICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoaGFzTGFiZWwoaWRlbnQpKTsKICAgICBlbmRDb2wg
PSB0b2tlbkVuZCgpOwogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CkBA
IC02MjgsNiArODczLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IEpTUGFyc2VyOjpwYXJzZUNvbnRpbnVlU3RhdGVtZW50KFRyZWUKIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VSZXR1cm5TdGF0ZW1l
bnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFJFVFVSTikpOwor
ICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24oKSk7CiAg
ICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5lID0gc3RhcnRM
aW5lOwogICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKQEAgLTY2OCw3ICs5MTQsOCBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNl
VGhyb3dTdGF0ZW1lbnQoVHJlZUJ1aQogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZVdpdGhTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFdJVEgpKTsKLSAgICBjdXJyZW50U2NvcGUoKS0+bmVl
ZHNGdWxsQWN0aXZhdGlvbigpOworICAgIGZhaWxJZlRydWUoc3RyaWN0TW9kZSgpKTsKKyAgICBj
dXJyZW50U2NvcGUoKS0+c2V0TmVlZHNGdWxsQWN0aXZhdGlvbigpOwogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFS
RU4pOwpAQCAtNjc5LDggKzkyNiw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VXaXRoU3RhdGVtZW50KFRyZWVCdWlsCiAKICAgICBp
bnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7
Ci0gICAgCi0gICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250
ZXh0KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIFRyZWVTdGF0ZW1l
bnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBmYWls
SWZGYWxzZShzdGF0ZW1lbnQpOwogCiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2l0aFN0YXRl
bWVudChleHByLCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CkBA
IC02OTcsNyArOTQ0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IEpTUGFyc2VyOjpwYXJzZVN3aXRjaFN0YXRlbWVudChUcmVlQnUKICAgICBpbnQgZW5kTGlu
ZSA9IHRva2VuTGluZSgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgY29u
c3VtZU9yRmFpbChPUEVOQlJBQ0UpOwotCisgICAgc3RhcnRTd2l0Y2goKTsKICAgICBUcmVlQ2xh
dXNlTGlzdCBmaXJzdENsYXVzZXMgPSBwYXJzZVN3aXRjaENsYXVzZXMoY29udGV4dCk7CiAgICAg
ZmFpbElmVHJ1ZShtX2Vycm9yKTsKIApAQCAtNzA2LDYgKzk1Myw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTd2l0Y2hTdGF0ZW1l
bnQoVHJlZUJ1CiAKICAgICBUcmVlQ2xhdXNlTGlzdCBzZWNvbmRDbGF1c2VzID0gcGFyc2VTd2l0
Y2hDbGF1c2VzKGNvbnRleHQpOwogICAgIGZhaWxJZlRydWUobV9lcnJvcik7CisgICAgZW5kU3dp
dGNoKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKIAogICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZVN3aXRjaFN0YXRlbWVudChleHByLCBmaXJzdENsYXVzZXMsIGRlZmF1bHRDbGF1
c2UsIHNlY29uZENsYXVzZXMsIHN0YXJ0TGluZSwgZW5kTGluZSk7CkBAIC03MjAsNyArOTY4LDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhdXNlTGlzdCBKU1BhcnNlcjo6
cGFyc2VTd2l0Y2hDbGF1c2VzKFRyZWVCdWkKICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24g
PSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoY29uZGl0aW9uKTsK
ICAgICBjb25zdW1lT3JGYWlsKENPTE9OKTsKLSAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVt
ZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCk7CisgICAgVHJlZVNvdXJjZUVsZW1l
bnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERvbnRDaGVja0ZvclN0cmljdE1v
ZGU+KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMpOwogICAgIFRyZWVDbGF1
c2UgY2xhdXNlID0gY29udGV4dC5jcmVhdGVDbGF1c2UoY29uZGl0aW9uLCBzdGF0ZW1lbnRzKTsK
ICAgICBUcmVlQ2xhdXNlTGlzdCBjbGF1c2VMaXN0ID0gY29udGV4dC5jcmVhdGVDbGF1c2VMaXN0
KGNsYXVzZSk7CkBAIC03MzEsNyArOTc5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlQ2xhdXNlTGlzdCBKU1BhcnNlcjo6cGFyc2VTd2l0Y2hDbGF1c2VzKFRyZWVCdWkKICAg
ICAgICAgVHJlZUV4cHJlc3Npb24gY29uZGl0aW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQp
OwogICAgICAgICBmYWlsSWZGYWxzZShjb25kaXRpb24pOwogICAgICAgICBjb25zdW1lT3JGYWls
KENPTE9OKTsKLSAgICAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNv
dXJjZUVsZW1lbnRzKGNvbnRleHQpOworICAgICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVt
ZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3RyaWN0TW9kZT4oY29udGV4
dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMpOwogICAgICAgICBjbGF1c2UgPSBj
b250ZXh0LmNyZWF0ZUNsYXVzZShjb25kaXRpb24sIHN0YXRlbWVudHMpOwogICAgICAgICB0YWls
ID0gY29udGV4dC5jcmVhdGVDbGF1c2VMaXN0KHRhaWwsIGNsYXVzZSk7CkBAIC03NDUsNyArOTkz
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhdXNlIEpTUGFyc2VyOjpw
YXJzZVN3aXRjaERlZmF1bHRDbGF1c2UoVHJlZUIKICAgICAgICAgcmV0dXJuIDA7CiAgICAgbmV4
dCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ09MT04pOwotICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
dGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKKyAgICBUcmVlU291cmNl
RWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3Ry
aWN0TW9kZT4oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50cyk7CiAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQ2xhdXNlKDAsIHN0YXRlbWVudHMpOwogfQpAQCAtNzY3LDE0ICsx
MDE1LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1Bh
cnNlcjo6cGFyc2VUcnlTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgaW50IGxhc3RMaW5lID0gbV9s
YXN0TGluZTsKIAogICAgIGlmIChtYXRjaChDQVRDSCkpIHsKLSAgICAgICAgY3VycmVudFNjb3Bl
KCktPm5lZWRzRnVsbEFjdGl2YXRpb24oKTsKKyAgICAgICAgY3VycmVudFNjb3BlKCktPnNldE5l
ZWRzRnVsbEFjdGl2YXRpb24oKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBjb25zdW1lT3JG
YWlsKE9QRU5QQVJFTik7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgaWRl
bnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBTY29w
ZVJlZiBjYXRjaFNjb3BlID0gcHVzaFNjb3BlKCk7Ci0gICAgICAgIGNhdGNoU2NvcGUtPmRlY2xh
cmVWYXJpYWJsZShpZGVudCk7CisgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoY2F0Y2hTY29w
ZS0+ZGVjbGFyZVZhcmlhYmxlKGlkZW50KSk7CiAgICAgICAgIGNhdGNoU2NvcGUtPnByZXZlbnRO
ZXdEZWNscygpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogICAgICAgICBt
YXRjaE9yRmFpbChPUEVOQlJBQ0UpOwpAQCAtNzgyLDcgKzEwMzAsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlVHJ5U3RhdGVtZW50
KFRyZWVCdWlsZAogICAgICAgICBjYXRjaEJsb2NrID0gcGFyc2VCbG9ja1N0YXRlbWVudChjb250
ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoY2F0Y2hCbG9jayk7CiAgICAgICAgIGNhdGNoSGFz
RXZhbCA9IGluaXRpYWxFdmFsQ291bnQgIT0gY29udGV4dC5ldmFsQ291bnQoKTsKLSAgICAgICAg
cG9wU2NvcGUoY2F0Y2hTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7
CisgICAgICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGNhdGNoU2NvcGUsIFRyZWVCdWlsZGVyOjpO
ZWVkc0ZyZWVWYXJpYWJsZUluZm8pKTsKICAgICB9CiAKICAgICBpZiAobWF0Y2goRklOQUxMWSkp
IHsKQEAgLTgxNiwxNSArMTA2NCwxOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlQmxvY2tTdGF0ZW1lbnQoVHJlZUJ1aQogICAgICAg
ICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KDAs
IHN0YXJ0LCBtX2xhc3RMaW5lKTsKICAgICB9Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRy
ZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOworICAgIFRyZWVTb3VyY2VFbGVtZW50
cyBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihj
b250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShzdWJ0cmVlKTsKICAgICBtYXRjaE9yRmFpbChDTE9T
RUJSQUNFKTsKICAgICBuZXh0KCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0
ZW1lbnQoc3VidHJlZSwgc3RhcnQsIG1fbGFzdExpbmUpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KFRyZWVC
dWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IEpTUGFyc2VyOjpwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3Qg
SWRlbnRpZmllciomIGRpcmVjdGl2ZSkKIHsKKyAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVw
dGgoJm1fc3RhdGVtZW50RGVwdGgpOworICAgIG1fc3RhdGVtZW50RGVwdGgrKzsKKyAgICBkaXJl
Y3RpdmUgPSAwOworICAgIGludCBub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50ID0gMDsKICAgICBm
YWlsSWZTdGFja092ZXJmbG93KCk7CiAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewogICAg
IGNhc2UgT1BFTkJSQUNFOgpAQCAtODM0LDYgKzEwODYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KFRyZWVCdWls
ZGVyJgogICAgIGNhc2UgQ09OU1RUT0tFTjoKICAgICAgICAgcmV0dXJuIHBhcnNlQ29uc3REZWNs
YXJhdGlvbihjb250ZXh0KTsKICAgICBjYXNlIEZVTkNUSU9OOgorICAgICAgICBmYWlsSWZGYWxz
ZUlmU3RyaWN0KG1fc3RhdGVtZW50RGVwdGggPT0gMSk7CiAgICAgICAgIHJldHVybiBwYXJzZUZ1
bmN0aW9uRGVjbGFyYXRpb24oY29udGV4dCk7CiAgICAgY2FzZSBTRU1JQ09MT046CiAgICAgICAg
IG5leHQoKTsKQEAgLTg3MCw4ICsxMTIzLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImCiAg
ICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIHJldHVybiBwYXJzZUV4
cHJlc3Npb25PckxhYmVsU3RhdGVtZW50KGNvbnRleHQpOworICAgIGNhc2UgU1RSSU5HOgorICAg
ICAgICBkaXJlY3RpdmUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgbm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCA9IG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudDsKICAgICBkZWZh
dWx0OgotICAgICAgICByZXR1cm4gcGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KGNvbnRleHQpOwor
ICAgICAgICBUcmVlU3RhdGVtZW50IGV4cHJTdGF0ZW1lbnQgPSBwYXJzZUV4cHJlc3Npb25TdGF0
ZW1lbnQoY29udGV4dCk7CisgICAgICAgIGlmIChkaXJlY3RpdmUgJiYgbm9uVHJpdmlhbEV4cHJl
c3Npb25Db3VudCAhPSBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQpCisgICAgICAgICAgICBk
aXJlY3RpdmUgPSAwOworICAgICAgICByZXR1cm4gZXhwclN0YXRlbWVudDsKICAgICB9CiB9CiAK
QEAgLTg3OSw3ICsxMTM4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9y
bWFsUGFyYW1ldGVyTGlzdCBKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWUKIHsKICAgICBtYXRj
aE9yRmFpbChJREVOVCk7CiAgICAgdXNlc0FyZ3VtZW50cyA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzID09ICptX3Rva2VuLm1fZGF0YS5pZGVudDsKLSAgICBkZWNsYXJl
VmFyaWFibGUobV90b2tlbi5tX2RhdGEuaWRlbnQpOworICAgIGZhaWxJZkZhbHNlSWZTdHJpY3Qo
ZGVjbGFyZVBhcmFtZXRlcihtX3Rva2VuLm1fZGF0YS5pZGVudCkpOwogICAgIFRyZWVGb3JtYWxQ
YXJhbWV0ZXJMaXN0IGxpc3QgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKm1f
dG9rZW4ubV9kYXRhLmlkZW50KTsKICAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCB0YWlsID0g
bGlzdDsKICAgICBuZXh0KCk7CkBAIC04ODcsNyArMTE0Niw4IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgSlNQYXJzZXI6OnBhcnNlRm9ybWFs
UGFyYW1lCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAg
ICAgICBkZWNsYXJlVmFyaWFibGUoaWRlbnQpOworICAgICAgICB1c2VzQXJndW1lbnRzIHw9IG1f
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICptX3Rva2VuLm1fZGF0YS5p
ZGVudDsKKyAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlUGFyYW1ldGVyKGlkZW50
KSk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgdXNlc0FyZ3VtZW50cyA9IHVzZXNBcmd1bWVu
dHMgfHwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50Owog
ICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHRhaWwsICpp
ZGVudCk7CkBAIC04OTgsMjAgKzExNTgsMjMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBKU1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWUKIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBKU1BhcnNlcjo6cGFy
c2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgaWYgKG1hdGNoKENM
T1NFQlJBQ0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0cmljdE1vZGUoKSk7
CisgICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVudERlcHRoKCZtX3N0YXRlbWVudERlcHRoKTsKKyAg
ICBtX3N0YXRlbWVudERlcHRoID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rp
b25Cb2R5QnVpbGRlciBib2R5QnVpbGRlcihtX2dsb2JhbERhdGEsIG1fbGV4ZXIpOwotICAgIGZh
aWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoYm9keUJ1aWxkZXIpKTsKLSAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoKTsKKyAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJj
ZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oYm9keUJ1aWxkZXIpKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RyaWN0TW9kZSgpKTsKIH0KIAogdGVtcGxhdGUg
PEpTUGFyc2VyOjpGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlz
SW5Db250YWluaW5nU2NvcGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIEpTUGFyc2VyOjpwYXJz
ZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIG5h
bWUsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzLCBUcmVlRnVuY3Rpb25Cb2R5
JiBib2R5LCBpbnQmIG9wZW5CcmFjZVBvcywgaW50JiBjbG9zZUJyYWNlUG9zLCBpbnQmIGJvZHlT
dGFydExpbmUpCiB7CiAgICAgU2NvcGVSZWYgZnVuY3Rpb25TY29wZSA9IHB1c2hTY29wZSgpOwor
ICAgIGZ1bmN0aW9uU2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBpZiAobWF0Y2goSURFTlQp
KSB7CiAgICAgICAgIG5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgp
OwogICAgICAgICBpZiAoIW5hbWVJc0luQ29udGFpbmluZ1Njb3BlKQotICAgICAgICAgICAgZnVu
Y3Rpb25TY29wZS0+ZGVjbGFyZVZhcmlhYmxlKG5hbWUpOworICAgICAgICAgICAgZmFpbElmRmFs
c2VJZlN0cmljdChmdW5jdGlvblNjb3BlLT5kZWNsYXJlVmFyaWFibGUobmFtZSkpOwogICAgIH0g
ZWxzZSBpZiAocmVxdWlyZW1lbnRzID09IEZ1bmN0aW9uTmVlZHNOYW1lKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtOTMxLDcgKzExOTQs
MTEgQEAgdGVtcGxhdGUgPEpTUGFyc2VyOjpGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVu
dHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2MKICAgICBmYWlsSWZGYWxzZShib2R5KTsKICAg
ICBpZiAodXNlc0FyZ3VtZW50cykKICAgICAgICAgY29udGV4dC5zZXRVc2VzQXJndW1lbnRzKGJv
ZHkpOwotICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVW
YXJpYWJsZUluZm8pOworICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgbmFt
ZSkgeworICAgICAgICBmYWlsSWZUcnVlKG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJn
dW1lbnRzID09ICpuYW1lKTsKKyAgICAgICAgZmFpbElmVHJ1ZShtX2dsb2JhbERhdGEtPnByb3Bl
cnR5TmFtZXMtPmV2YWwgPT0gKm5hbWUpOworICAgIH0KKyAgICBmYWlsSWZGYWxzZShwb3BTY29w
ZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSk7CiAg
ICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFDRSk7CiAgICAgY2xvc2VCcmFjZVBvcyA9IG1fdG9rZW4u
bV9kYXRhLmludFZhbHVlOwogICAgIG5leHQoKTsKQEAgLTk1MCw3ICsxMjE3LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUZ1bmN0
aW9uRGVjbGFyYXRpb24oVHIKICAgICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7CiAgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0
LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJv
ZHlTdGFydExpbmUpKSk7CiAgICAgZmFpbElmRmFsc2UobmFtZSk7Ci0gICAgZGVjbGFyZVZhcmlh
YmxlKG5hbWUpOworICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKG5hbWUp
KTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChuYW1lLCBib2R5
LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUs
IG1fbGFzdExpbmUpOwogfQogCkBAIC05NzMsNyArMTI0MCwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlRXhwcmVzc2lvbk9yTGFi
ZWxTdGF0ZQogICAgIGZhaWxJZkZhbHNlKGN1cnJlbnRUb2tlbiArIDEgPT0gbV90b2tlbkNvdW50
KTsKICAgICBpbnQgZW5kID0gdG9rZW5FbmQoKTsKICAgICBjb25zdW1lT3JGYWlsKENPTE9OKTsK
LSAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOwor
ICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CisgICAgaWYgKHN0cmljdE1vZGUoKSAm
JiAhbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKQorICAgICAgICBwdXNoTGFiZWwoaWRlbnQpOwor
ICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51
c2VkKTsKKyAgICBpZiAoc3RyaWN0TW9kZSgpICYmICFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQp
CisgICAgICAgIHBvcExhYmVsKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVMYWJlbFN0YXRlbWVudChpZGVudCwgc3RhdGVtZW50LCBzdGFy
dCwgZW5kKTsKIH0KQEAgLTEwMDEsNyArMTI3Myw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VJZlN0YXRlbWVudChUcmVlQnVpbGRl
CiAgICAgaW50IGVuZCA9IHRva2VuTGluZSgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJF
Tik7CiAKLSAgICBUcmVlU3RhdGVtZW50IHRydWVCbG9jayA9IHBhcnNlU3RhdGVtZW50KGNvbnRl
eHQpOworICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CisgICAgVHJlZVN0YXRlbWVu
dCB0cnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgIGZhaWxJ
ZkZhbHNlKHRydWVCbG9jayk7CiAKICAgICBpZiAoIW1hdGNoKEVMU0UpKQpAQCAtMTAxNCw3ICsx
Mjg3LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFy
c2VyOjpwYXJzZUlmU3RhdGVtZW50KFRyZWVCdWlsZGUKICAgICBkbyB7CiAgICAgICAgIG5leHQo
KTsKICAgICAgICAgaWYgKCFtYXRjaChJRikpIHsKLSAgICAgICAgICAgIFRyZWVTdGF0ZW1lbnQg
YmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIHVudXNlZCA9IDA7CisgICAgICAgICAgICBUcmVlU3RhdGVtZW50IGJsb2NrID0gcGFy
c2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGJs
b2NrKTsKICAgICAgICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVuZChibG9jayk7CiAgICAgICAg
ICAgICB0cmFpbGluZ0Vsc2UgPSB0cnVlOwpAQCAtMTAyOSw4ICsxMzAzLDggQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUlmU3RhdGVt
ZW50KFRyZWVCdWlsZGUKICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJDb25kaXRpb24pOwogICAg
ICAgICBpbnQgaW5uZXJFbmQgPSB0b2tlbkxpbmUoKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChD
TE9TRVBBUkVOKTsKLSAgICAgICAgCi0gICAgICAgIFRyZWVTdGF0ZW1lbnQgaW5uZXJUcnVlQmxv
Y2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciog
dW51c2VkID0gMDsKKyAgICAgICAgVHJlZVN0YXRlbWVudCBpbm5lclRydWVCbG9jayA9IHBhcnNl
U3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyVHJ1
ZUJsb2NrKTsgICAgIAogICAgICAgICBleHByU3RhY2suYXBwZW5kKGlubmVyQ29uZGl0aW9uKTsK
ICAgICAgICAgcG9zU3RhY2suYXBwZW5kKG1ha2VfcGFpcihpbm5lclN0YXJ0LCBpbm5lckVuZCkp
OwpAQCAtMTA3MCw2ICsxMzQ0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uKFRyZWVCdWlsZGUKICAgICBpZiAo
IW1hdGNoKENPTU1BKSkKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgbmV4dCgpOworICAgIG1f
bm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIG1fbm9uTEhTQ291bnQrKzsKICAgICBU
cmVlRXhwcmVzc2lvbiByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7
CiAgICAgZmFpbElmRmFsc2UocmlnaHQpOwpAQCAtMTExNSwxMSArMTM5MCwxNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZUFz
c2lnbm1lbnRFeHByZXNzaQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZ290byBlbmQ7
CiAgICAgICAgIH0KKyAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAg
ICAgIGhhZEFzc2lnbm1lbnQgPSB0cnVlOwogICAgICAgICBjb250ZXh0LmFzc2lnbm1lbnRTdGFj
a0FwcGVuZChhc3NpZ25tZW50U3RhY2ssIGxocywgc3RhcnQsIHRva2VuU3RhcnQoKSwgbV9hc3Np
Z25tZW50Q291bnQsIG9wKTsKICAgICAgICAgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAg
IG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIG5leHQoKTsKKyAgICAgICAgaWYgKHN0cmlj
dE1vZGUoKSAmJiBtX2xhc3RJZGVudGlmaWVyICYmIGNvbnRleHQuaXNSZXNvbHZlKGxocykpIHsK
KyAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFt
ZXMtPmV2YWwgPT0gKm1fbGFzdElkZW50aWZpZXIpOworICAgICAgICAgICAgZGVjbGFyZVdyaXRl
KG1fbGFzdElkZW50aWZpZXIpOworICAgICAgICAgICAgbV9sYXN0SWRlbnRpZmllciA9IDA7Cisg
ICAgICAgIH0KICAgICAgICAgbGhzID0gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oY29udGV4
dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGxocyk7CiAgICAgICAgIGlmIChpbml0aWFsTm9uTEhT
Q291bnQgIT0gbV9ub25MSFNDb3VudCkKQEAgLTExNDQsNiArMTQyNSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlQ29uZGl0aW9u
YWxFeHByZXNzaW9uCiAgICAgZmFpbElmRmFsc2UoY29uZCk7CiAgICAgaWYgKCFtYXRjaChRVUVT
VElPTikpCiAgICAgICAgIHJldHVybiBjb25kOworICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25D
b3VudCsrOwogICAgIG1fbm9uTEhTQ291bnQrKzsKICAgICBuZXh0KCk7CiAgICAgVHJlZUV4cHJl
c3Npb24gbGhzID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTExODEs
NiArMTQ2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
SlNQYXJzZXI6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbihUcmVlCiAgICAgICAgIGludCBwcmVjZWRl
bmNlID0gaXNCaW5hcnlPcGVyYXRvcihtX3Rva2VuLm1fdHlwZSk7CiAgICAgICAgIGlmICghcHJl
Y2VkZW5jZSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtX25vblRyaXZpYWxFeHByZXNz
aW9uQ291bnQrKzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwogICAgICAgICBpbnQgb3BlcmF0
b3JUb2tlbiA9IG1fdG9rZW4ubV90eXBlOwogICAgICAgICBuZXh0KCk7CkBAIC0xMTk2LDcgKzE0
NzksNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFy
c2VyOjpwYXJzZUJpbmFyeUV4cHJlc3Npb24oVHJlZQogICAgICAgICB9CiAgICAgICAgIGNvbnRl
eHQub3BlcmF0b3JTdGFja0FwcGVuZChvcGVyYXRvclN0YWNrRGVwdGgsIG9wZXJhdG9yVG9rZW4s
IHByZWNlZGVuY2UpOwogICAgIH0KLQogICAgIHdoaWxlIChvcGVyYXRvclN0YWNrRGVwdGgpIHsK
ICAgICAgICAgQVNTRVJUKG9wZXJhbmRTdGFja0RlcHRoID4gMSk7CiAKQEAgLTEzMjcsNiArMTYw
OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJz
ZXI6OnBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChUCiAgICAgICAgIGlmICghbV9zeW50YXhBbHJl
YWR5VmFsaWRhdGVkKSB7CiAgICAgICAgICAgICBzdGQ6OnBhaXI8T2JqZWN0VmFsaWRhdGlvbk1h
cDo6aXRlcmF0b3IsIGJvb2w+IHByb3BlcnR5RW50cnlJdGVyID0gb2JqZWN0VmFsaWRhdG9yLmFk
ZChjb250ZXh0LmdldE5hbWUocHJvcGVydHkpLmltcGwoKSwgY29udGV4dC5nZXRUeXBlKHByb3Bl
cnR5KSk7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RW50cnlJdGVyLnNlY29uZCkgeworICAg
ICAgICAgICAgICAgIGZhaWxJZlRydWUoc3RyaWN0TW9kZSgpKTsKICAgICAgICAgICAgICAgICBp
ZiAoKGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkgJiBwcm9wZXJ0eUVudHJ5SXRlci5maXJzdC0+
c2Vjb25kKSAhPSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIENhbid0IGhhdmUgbXVsdGlwbGUgZ2V0dGVycyBvciBzZXR0ZXJzIHdpdGggdGhlIHNhbWUg
bmFtZSwgbm9yIGNhbiB3ZSBkZWZpbmUgCiAgICAgICAgICAgICAgICAgICAgIC8vIGEgcHJvcGVy
dHkgYXMgYm90aCBhbiBhY2Nlc3NvciBhbmQgYSBjb25zdGFudCB2YWx1ZQpAQCAtMTM4OSw2ICsx
NjcyLDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1Bh
cnNlcjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbihUcmUKIHsKICAgICBzd2l0Y2ggKG1fdG9rZW4u
bV90eXBlKSB7CiAgICAgY2FzZSBPUEVOQlJBQ0U6CisgICAgICAgIGlmIChzdHJpY3RNb2RlKCkp
CisgICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwog
ICAgICAgICByZXR1cm4gcGFyc2VPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgIGNhc2UgT1BF
TkJSQUNLRVQ6CiAgICAgICAgIHJldHVybiBwYXJzZUFycmF5TGl0ZXJhbChjb250ZXh0KTsKQEAg
LTE0MTAsNiArMTY5NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gSlNQYXJzZXI6OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24oVHJlCiAgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQo
KTsKICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBtX2dsb2JhbERh
dGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmlkZW50KTsKKyAgICAgICAgbV9sYXN0SWRlbnRp
ZmllciA9IGlkZW50OwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKGlkZW50
LCBzdGFydCk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CkBAIC0xNDg1LDYgKzE3NzEsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpw
YXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZQogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG5ld0Nv
dW50Kys7CiAgICAgfQorCiAgICAgaWYgKG1hdGNoKEZVTkNUSU9OKSkgewogICAgICAgICBjb25z
dCBJZGVudGlmaWVyKiBuYW1lID0gJm1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXI7CiAgICAgICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAw
OwpAQCAtMTUwMiw2ICsxNzg5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWUKICAgICB3aGls
ZSAodHJ1ZSkgewogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNh
c2UgT1BFTkJSQUNLRVQ6IHsKKyAgICAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3Vu
dCsrOwogICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAg
ICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGludCBub25MSFNDb3VudCA9IG1fbm9uTEhT
Q291bnQ7CkBAIC0xNTE1LDYgKzE4MDMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBPUEVOUEFSRU46IHsKKyAg
ICAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICAgICAgaWYg
KG5ld0NvdW50KSB7CiAgICAgICAgICAgICAgICAgbmV3Q291bnQtLTsKICAgICAgICAgICAgICAg
ICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewpAQCAtMTUzNSw2ICsxODI0LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VNZW1iZXJF
eHByZXNzaW9uKFRyZWUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRE9UOiB7CisgICAgICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAg
ICAgICAgICAgIGludCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAg
ICBuZXh0KExleGVyOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKICAgICAgICAgICAgIG1hdGNoT3JG
YWlsKElERU5UKTsKQEAgLTE1NTYsMjUgKzE4NDYsNTkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VVbmFyeUV4cHJlc3Npb24oVHJl
ZUIKIHsKICAgICBBbGxvd0luT3ZlcnJpZGUgYWxsb3dJbk92ZXJyaWRlKHRoaXMpOwogICAgIGlu
dCB0b2tlblN0YWNrRGVwdGggPSAwOworICAgIGJvb2wgbW9kaWZpZXNFeHByID0gZmFsc2U7Cisg
ICAgYm9vbCByZXF1aXJlc0xFeHByID0gZmFsc2U7CiAgICAgd2hpbGUgKGlzVW5hcnlPcChtX3Rv
a2VuLm1fdHlwZSkpIHsKKyAgICAgICAgaWYgKHN0cmljdE1vZGUoKSkgeworICAgICAgICAgICAg
c3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgeworICAgICAgICAgICAgY2FzZSBQTFVTUExVUzoKKyAg
ICAgICAgICAgIGNhc2UgTUlOVVNNSU5VUzoKKyAgICAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVT
OgorICAgICAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5VUzoKKyAgICAgICAgICAgICAgICBmYWls
SWZUcnVlKHJlcXVpcmVzTEV4cHIpOworICAgICAgICAgICAgICAgIG1vZGlmaWVzRXhwciA9IHRy
dWU7CisgICAgICAgICAgICAgICAgcmVxdWlyZXNMRXhwciA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERFTEVURVRPS0VOOgorICAgICAgICAgICAgICAg
IGZhaWxJZlRydWUocmVxdWlyZXNMRXhwcik7CisgICAgICAgICAgICAgICAgcmVxdWlyZXNMRXhw
ciA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIGZhaWxJZlRydWUocmVxdWlyZXNMRXhwcik7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgbV9ub25MSFNDb3Vu
dCsrOwogICAgICAgICBjb250ZXh0LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5TdGFja0RlcHRoLCBt
X3Rva2VuLm1fdHlwZSwgdG9rZW5TdGFydCgpKTsKICAgICAgICAgbmV4dCgpOworICAgICAgICBt
X25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICB9CiAgICAgaW50IHN1YkV4cHJTdGFy
dCA9IHRva2VuU3RhcnQoKTsKICAgICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VNZW1iZXJF
eHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHIpOworICAgIGJvb2wgaXNF
dmFsID0gZmFsc2U7CisgICAgaWYgKHN0cmljdE1vZGUoKSAmJiAhbV9zeW50YXhBbHJlYWR5VmFs
aWRhdGVkKSB7CisgICAgICAgIGlmIChjb250ZXh0LmlzUmVzb2x2ZShleHByKSkKKyAgICAgICAg
ICAgIGlzRXZhbCA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqbV9sYXN0
SWRlbnRpZmllcjsKKyAgICB9CisgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGlzRXZhbCAmJiBtb2Rp
Zmllc0V4cHIpOwogICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICBjYXNlIFBMVVNQ
TFVTOgorICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9u
b25MSFNDb3VudCsrOwogICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUoZXhw
ciwgT3BQbHVzUGx1cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7
CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CisgICAgICAgIGZhaWxJZlRydWVJZlN0cmlj
dChpc0V2YWwpOworICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CiAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU5VU01JTlVTOgorICAg
ICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9ub25MSFNDb3Vu
dCsrOwogICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUoZXhwciwgT3BNaW51
c01pbnVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKICAgICAg
ICAgbV9hc3NpZ25tZW50Q291bnQrKzsKKyAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGlzRXZh
bCk7CisgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChyZXF1aXJlc0xFeHByKTsKICAgICAgICAg
bmV4dCgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTU4Myw3ICsxOTA3LDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6
cGFyc2VVbmFyeUV4cHJlc3Npb24oVHJlZUIKIAogICAgIGludCBlbmQgPSBsYXN0VG9rZW5FbmQo
KTsKIAotICAgIGlmICghVHJlZUJ1aWxkZXI6OkNyZWF0ZXNBU1QpCisgICAgaWYgKCFUcmVlQnVp
bGRlcjo6Q3JlYXRlc0FTVCAmJiAobV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkIHx8ICFzdHJpY3RN
b2RlKCkpKQogICAgICAgICByZXR1cm4gZXhwcjsKIAogICAgIHdoaWxlICh0b2tlblN0YWNrRGVw
dGgpIHsKQEAgLTE2MTcsNiArMTk0MSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlVW5hcnlFeHByZXNzaW9uKFRyZWVCCiAgICAg
ICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVWb2lkKGV4cHIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgREVMRVRFVE9LRU46CisgICAgICAgICAgICBpZiAoc3RyaWN0TW9k
ZSgpICYmIGNvbnRleHQuaXNSZXNvbHZlKGV4cHIpKQorICAgICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKGRlbGV0ZVByb3BlcnR5KG1fbGFzdElkZW50aWZpZXIpKTsKICAgICAgICAgICAgIGV4cHIg
PSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFz
dFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFy
c2VyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuaAppbmRleCBhYjE4ZmFiMWU5
Nzg4OWU0OGJjZjAxYmZkNzY5N2Y4YzlmNmU2ODBkLi42NGIxOGU3NjFkMDg4ODA4NWE4YjliNzY2
YmJkOWNhODZmYjgxNmIwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJz
ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuaApAQCAtMjgsOSArMjgs
MTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEZ1bmN0
aW9uUGFyYW1ldGVyczsKIGNsYXNzIElkZW50aWZpZXI7Ci1jbGFzcyBKU0dsb2JhbERhdGE7Citj
bGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIFNvdXJjZUNvZGU7CiAKIGVudW0gewpAQCAtMTU1
LDYgKzE1Niw5IEBAIHN0cnVjdCBKU1Rva2VuIHsKICAgICBKU1Rva2VuSW5mbyBtX2luZm87CiB9
OwogCi1pbnQganNQYXJzZShKU0dsb2JhbERhdGEqLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25z
dCBTb3VyY2VDb2RlKik7CitlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWws
IEpTUGFyc2VTdHJpY3QgfTsKK2VudW0gSlNQYXJzZXJNb2RlIHsgSlNQYXJzZVByb2dyYW1Db2Rl
LCBKU1BhcnNlRnVuY3Rpb25Db2RlIH07CisKK2ludCBqc1BhcnNlKEpTR2xvYmFsT2JqZWN0Kiwg
RnVuY3Rpb25QYXJhbWV0ZXJzKiwgSlNQYXJzZXJTdHJpY3RuZXNzLCBKU1BhcnNlck1vZGUsIGNv
bnN0IFNvdXJjZUNvZGUqKTsKIH0KICNlbmRpZiAvLyBKU1BhcnNlcl9oCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmNwcAppbmRleCBjYzQzMjFkNjExYzNkYTA4Yjc3ZmE5M2VmZDlkZDY4ZjEwYzNkMzY1Li4y
Mzk3MjllZWFlMWEyODRlMDQwMzIyYTQ3MDU3NGQyNmNiYWU4ZjE5IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKQEAgLTQ1Myw3ICs0NTMsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyOjpwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIGx2YWxwLCBMZXhUeXBlIGxleAogICAg
IHJldHVybiBJREVOVDsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIExleGVyOjpwYXJzZVN0cmlu
ZyhKU1Rva2VuRGF0YSogbHZhbHApCitBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3Ry
aW5nKEpTVG9rZW5EYXRhKiBsdmFscCwgYm9vbCBzdHJpY3RNb2RlKQogewogICAgIGludCBzdHJp
bmdRdW90ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKICAgICBzaGlmdCgpOwpAQCAtNDk0LDYgKzQ5
NCw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEq
IGx2YWxwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBPY3RhbCBjaGFyYWN0ZXIgc2VxdWVuY2VzCisgICAgICAgICAgICAgICAgaWYgKHN0cmlj
dE1vZGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICBpbnQgY2hhcmFjdGVyMSA9IG1fY3VycmVudDsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwog
ICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpKSB7CkBAIC02
OTYsNyArNjk4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyOjpwYXJzZU11bHRpbGluZUNv
bW1lbnQoKQogICAgIH0KIH0KIAotSlNUb2tlblR5cGUgTGV4ZXI6OmxleChKU1Rva2VuRGF0YSog
bHZhbHAsIEpTVG9rZW5JbmZvKiBsbG9jcCwgTGV4VHlwZSBsZXhUeXBlKQorSlNUb2tlblR5cGUg
TGV4ZXI6OmxleChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBsbG9jcCwgTGV4VHlw
ZSBsZXhUeXBlLCBib29sIHN0cmljdE1vZGUpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9yKTsKICAg
ICBBU1NFUlQobV9idWZmZXI4LmlzRW1wdHkoKSk7CkBAIC05NzYsOCArOTc4LDExIEBAIHN0YXJ0
OgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVjb3JkOCgnMCcpOwogICAgICAgICAg
ICAgaWYgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAocGFyc2VPY3RhbChsdmFscC0+ZG91YmxlVmFsdWUpKQorICAgICAgICAgICAgICAgIGlmIChw
YXJzZU9jdGFsKGx2YWxwLT5kb3VibGVWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHN0cmljdE1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwog
ICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IE5VTUJFUjsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIGludG8gQ2hh
cmFjdGVyTnVtYmVyCkBAIC0xMDA2LDcgKzEwMTEsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBv
aW50OgogICAgICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENoYXJhY3RlclF1b3RlOgotICAgICAgICBpZiAoVU5MSUtFTFkoIXBhcnNlU3RyaW5nKGx2
YWxwKSkpCisgICAgICAgIGlmIChVTkxJS0VMWSghcGFyc2VTdHJpbmcobHZhbHAsIHN0cmljdE1v
ZGUpKSkKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIHNoaWZ0KCk7CiAg
ICAgICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IGU2YzFl
ZmQxNDA3YjBjOWE4YWI1MDJhZDQ3ZDljYzIyYTA3MjY4YTAuLjRkMjUxM2QwZmY0MTYwZWViNTM0
YjRiODRjMzUzN2RjYzgzYzcxYzYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC00OCwxMCArNDgs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIEZ1bmN0aW9ucyB0byBzZXQgdXAgcGFy
c2luZy4KICAgICAgICAgdm9pZCBzZXRDb2RlKGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJBcmVu
YSYpOwogICAgICAgICB2b2lkIHNldElzUmVwYXJzaW5nKCkgeyBtX2lzUmVwYXJzaW5nID0gdHJ1
ZTsgfQorICAgICAgICBib29sIGlzUmVwYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGFy
c2luZzsgfQogCiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgdGhlIHBhcnNlciBpdHNlbGYuCiAg
ICAgICAgIGVudW0gTGV4VHlwZSB7IElkZW50aWZ5UmVzZXJ2ZWRXb3JkcywgSWdub3JlUmVzZXJ2
ZWRXb3JkcyB9OwotICAgICAgICBKU1Rva2VuVHlwZSBsZXgoSlNUb2tlbkRhdGEqIGx2YWxwLCBK
U1Rva2VuSW5mbyogbGxvY3AsIExleFR5cGUpOworICAgICAgICBKU1Rva2VuVHlwZSBsZXgoSlNU
b2tlbkRhdGEqIGx2YWxwLCBKU1Rva2VuSW5mbyogbGxvY3AsIExleFR5cGUsIGJvb2wgc3RyaWN0
TW9kZSk7CiAgICAgICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVt
YmVyOyB9CiAgICAgICAgIHZvaWQgc2V0TGFzdExpbmVOdW1iZXIoaW50IGxhc3RMaW5lTnVtYmVy
KSB7IG1fbGFzdExpbmVOdW1iZXIgPSBsYXN0TGluZU51bWJlcjsgfQogICAgICAgICBpbnQgbGFz
dExpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lTnVtYmVyOyB9CkBAIC05NSw3
ICs5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGFz
dFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3Q7CiAKICAgICAgICAgQUxXQVlTX0lOTElORSBK
U1Rva2VuVHlwZSBwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqLCBMZXhUeXBlKTsKLSAgICAg
ICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCk7Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZVN0cmluZyhKU1Rva2VuRGF0YSogbHZhbHAs
IGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwYXJzZUhleChk
b3VibGUmIHJldHVyblZhbHVlKTsKICAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlT2N0
YWwoZG91YmxlJiByZXR1cm5WYWx1ZSk7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwYXJz
ZURlY2ltYWwoZG91YmxlJiByZXR1cm5WYWx1ZSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRl
eCA1MzRlMjhhZTE0ZmRkNmZiYmQ0MmFiN2Q2ZDIyNGQ2NmNkZGVmMTFiLi4zNGFhNjc0NmRjMDE3
NGEzOTYyMTQxNmNmMGE5NWY4OGI2NzY4YzJjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAg
LTg5LDEwICs4OSwxMCBAQCBTY29wZU5vZGVEYXRhOjpTY29wZU5vZGVEYXRhKFBhcnNlckFyZW5h
JiBhcmVuYSwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMsIFZhcgogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK1Nj
b3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBpblN0cmlj
dENvbnRleHQpCiAgICAgOiBTdGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpCiAgICAgLCBQYXJzZXJB
cmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkKLSAgICAsIG1fZmVhdHVyZXMoTm9GZWF0dXJlcykK
KyAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiBO
b0ZlYXR1cmVzKQogewogfQogCkBAIC0xNTQsOCArMTU0LDggQEAgRnVuY3Rpb25QYXJhbWV0ZXJz
OjpGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCiAgICAg
ICAgIGFwcGVuZChwYXJhbWV0ZXItPmlkZW50KCkpOwogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5
Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCi0gICAgOiBT
Y29wZU5vZGUoZ2xvYmFsRGF0YSkKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJv
ZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBpblN0cmljdENvbnRleHQpCisg
ICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgaW5TdHJpY3RDb250ZXh0KQogewogfQogCkBAIC0x
NzcsOSArMTc3LDkgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5pc2hQYXJzaW5nKFBhc3NS
ZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzLAogICAgIG1faWRlbnQgPSBpZGVu
dDsKIH0KIAotRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKK0Z1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6
OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQog
ewotICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhKTsKKyAgICByZXR1
cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgaW5TdHJpY3RDb250ZXh0KTsKIH0K
IAogUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0
YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBm
YTYxY2RjZWQyNGQxYjZmMDYzNmUxZjM1ODkzOWFkZmIzYWU3NzI4Li5mMmE3YzFlM2YwYmJiZjlj
YzU4MzdmY2RjNDA2OTE3MTllNGRlMTRiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNTcsNiAr
NTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjb25zdCBDb2RlRmVhdHVyZXMgV2l0aEZlYXR1
cmUgPSAxIDw8IDQ7CiAgICAgY29uc3QgQ29kZUZlYXR1cmVzIENhdGNoRmVhdHVyZSA9IDEgPDwg
NTsKICAgICBjb25zdCBDb2RlRmVhdHVyZXMgVGhpc0ZlYXR1cmUgPSAxIDw8IDY7CisgICAgY29u
c3QgQ29kZUZlYXR1cmVzIFN0cmljdE1vZGVGZWF0dXJlID0gMSA8PCA3OwogICAgIGNvbnN0IENv
ZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxGZWF0dXJlIHwgQ2xvc3VyZUZlYXR1cmUgfCBB
c3NpZ25GZWF0dXJlIHwgQXJndW1lbnRzRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0
dXJlIHwgVGhpc0ZlYXR1cmU7CiAKICAgICBlbnVtIE9wZXJhdG9yIHsKQEAgLTEzOTMsNyArMTM5
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tz
OjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6
RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIFNjb3BlTm9kZShKU0dsb2Jh
bERhdGEqKTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGJvb2wgaW5TdHJpY3RD
b250ZXh0KTsKICAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZp
ZXJTZXQmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHVzaW5n
IFBhcnNlckFyZW5hUmVmQ291bnRlZDo6b3BlcmF0b3IgbmV3OwpAQCAtMTQxMCw2ICsxNDExLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmVhdHVyZXMgJiBFdmFsRmVhdHVyZTsgfQogICAgICAgICBib29sIHVzZXNBcmd1bWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgQXJndW1lbnRzRmVhdHVyZTsgfQorICAg
ICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJp
Y3RNb2RlRmVhdHVyZTsgfQogICAgICAgICB2b2lkIHNldFVzZXNBcmd1bWVudHMoKSB7IG1fZmVh
dHVyZXMgfD0gQXJndW1lbnRzRmVhdHVyZTsgfQogICAgICAgICBib29sIHVzZXNUaGlzKCkgY29u
c3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFRoaXNGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgbmVl
ZHNBY3RpdmF0aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMoKSBjb25zdCB7IEFTU0VSVChtX2RhdGEp
OyByZXR1cm4gbV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hG
ZWF0dXJlKTsgfQpAQCAtMTQ0NCw2ICsxNDQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VF
bGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25z
dCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKQEAgLTE0NTYsNiAr
MTQ1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMg
U2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVu
Y3Rpb25Ob2RlID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBj
cmVhdGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9u
U3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1
bmN0aW9uID0gZmFsc2U7CkBAIC0xNDc2LDcgKzE0ODAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRh
Kik7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gdHJ1ZTsKKyAg
ICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBib29s
IGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5v
ZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVu
Y3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBh
cmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KQEAgLTE0OTIs
NyArMTQ5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
Y29wZUlzRnVuY3Rpb24gPSB0cnVlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRnVuY3Rpb25C
b2R5Tm9kZShKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2Jh
bERhdGEqLCBib29sIGluU3RyaWN0Q29udGV4dCk7CiAgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUo
SlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CiAKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAppbmRleCAwYzBiMmQ3NGVlODNiMTA1MWRmZDhjMDEyYjlmYmQ3OWMxNGVjYTdk
Li5kYzJjYmU0YmRkMGY4MGVmYjljYjJlMmIyYjI1YTgzMTMyNTE5ZTlmIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcApAQCAtMzUsOCArMzUsOSBAQCBleHRlcm4gaW50IGpzY3l5cGFyc2Uodm9p
ZCopOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBQYXJzZXI6OnBhcnNlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBpbnQqIGVyckxp
bmUsIFVTdHJpbmcqIGVyck1zZykKK3ZvaWQgUGFyc2VyOjpwYXJzZShKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBKU1Bh
cnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcywgSlNQYXJzZXJNb2RlIG1vZGUsIGludCogZXJyTGlu
ZSwgVVN0cmluZyogZXJyTXNnKQogeworICAgIEFTU0VSVChsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICBtX3NvdXJjZUVsZW1lbnRzID0gMDsKIAogICAgIGludCBkZWZhdWx0RXJyTGluZTsKQEAg
LTUwLDEwICs1MSwxMCBAQCB2b2lkIFBhcnNlcjo6cGFyc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGludAogICAgICplcnJMaW5lID0g
LTE7CiAgICAgKmVyck1zZyA9IFVTdHJpbmcoKTsKIAotICAgIExleGVyJiBsZXhlciA9ICpnbG9i
YWxEYXRhLT5sZXhlcjsKKyAgICBMZXhlciYgbGV4ZXIgPSAqbGV4aWNhbEdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLT5sZXhlcjsKICAgICBsZXhlci5zZXRDb2RlKCptX3NvdXJjZSwgbV9hcmVu
YSk7CiAKLSAgICBpbnQgcGFyc2VFcnJvciA9IGpzUGFyc2UoZ2xvYmFsRGF0YSwgcGFyYW1ldGVy
cywgbV9zb3VyY2UpOworICAgIGludCBwYXJzZUVycm9yID0ganNQYXJzZShsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwYXJhbWV0ZXJzLCBzdHJpY3RuZXNzLCBtb2RlLCBtX3NvdXJjZSk7CiAgICAgaW50
IGxpbmVOdW1iZXIgPSBsZXhlci5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBsZXhFcnJvciA9IGxl
eGVyLnNhd0Vycm9yKCk7CiAgICAgbGV4ZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApp
bmRleCA5MTM0ZGUxNDcxYjEwMGUyYzFhMmQ1ZGZmYWY2MDJiNTM1Nzg0ZGU4Li5mNWJiY2I4Y2M0
MTU2NTEzNmQ3NDExMGY2MDQ3ZTc2NTY4MTJmYzA5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFBhcnNlciA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
c2VkTm9kZT4KLSAgICAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBEZWJ1
Z2dlciosIEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJh
bWV0ZXJzKiwgSlNPYmplY3QqKiBleGNlcHRpb24pOworICAgICAgICBQYXNzUmVmUHRyPFBhcnNl
ZE5vZGU+IHBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBEZWJ1Z2dl
ciosIEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0
ZXJzKiwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIEpTT2JqZWN0KiogZXhjZXB0aW9u
KTsKIAogICAgICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJz
ZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiosIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5j
dGlvblN0YWNrPiosIENvZGVGZWF0dXJlcyBmZWF0dXJlcywKQEAgLTU3LDcgKzU3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFBhcnNlckFyZW5hJiBhcmVuYSgpIHsgcmV0dXJuIG1fYXJl
bmE7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgcGFyc2UoSlNHbG9iYWxEYXRhKiwg
RnVuY3Rpb25QYXJhbWV0ZXJzKiwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpOworICAg
ICAgICB2b2lkIHBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBGdW5j
dGlvblBhcmFtZXRlcnMqLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcywgSlNQYXJzZXJN
b2RlIG1vZGUsIGludCogZXJyTGluZSwgVVN0cmluZyogZXJyTXNnKTsKIAogICAgICAgICAvLyBV
c2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICAgICAgYm9vbCBp
c0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc1LDIw
ICs3NSwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFBhcnNlZE5vZGU+Ci0gICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI6OnBhcnNlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIERlYnVnZ2VyKiBkZWJ1Z2dlciwgRXhlY1N0YXRlKiBkZWJ1Z2dlckV4ZWNTdGF0ZSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIEpT
T2JqZWN0KiogZXhjZXB0aW9uKQorICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyOjpw
YXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRGVidWdnZXIqIGRlYnVn
Z2VyLCBFeGVjU3RhdGUqIGRlYnVnZ2VyRXhlY1N0YXRlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgSlNQYXJzZXJTdHJpY3RuZXNzIHN0
cmljdG5lc3MsIEpTT2JqZWN0KiogZXhjZXB0aW9uKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBBU1NFUlQoZXhjZXB0aW9uICYmICEqZXhjZXB0
aW9uKTsKICAgICAgICAgaW50IGVyckxpbmU7CiAgICAgICAgIFVTdHJpbmcgZXJyTXNnOwogCiAg
ICAgICAgIG1fc291cmNlID0gJnNvdXJjZTsKICAgICAgICAgaWYgKFBhcnNlZE5vZGU6OnNjb3Bl
SXNGdW5jdGlvbikKLSAgICAgICAgICAgIGdsb2JhbERhdGEtPmxleGVyLT5zZXRJc1JlcGFyc2lu
ZygpOwotICAgICAgICBwYXJzZShnbG9iYWxEYXRhLCBwYXJhbWV0ZXJzLCAmZXJyTGluZSwgJmVy
ck1zZyk7CisgICAgICAgICAgICBsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPmxl
eGVyLT5zZXRJc1JlcGFyc2luZygpOworICAgICAgICBwYXJzZShsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwYXJhbWV0ZXJzLCBzdHJpY3RuZXNzLCBQYXJzZWROb2RlOjppc0Z1bmN0aW9uTm9kZSA/IEpT
UGFyc2VGdW5jdGlvbkNvZGUgOiBKU1BhcnNlUHJvZ3JhbUNvZGUsICZlcnJMaW5lLCAmZXJyTXNn
KTsKIAogICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgICAgICBpZiAobV9z
b3VyY2VFbGVtZW50cykgewotICAgICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRl
KGdsb2JhbERhdGEsCisgICAgICAgICAgICByZXN1bHQgPSBQYXJzZWROb2RlOjpjcmVhdGUobGV4
aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLAogICAgICAgICAgICAgICAgIG1fc291cmNl
RWxlbWVudHMsCiAgICAgICAgICAgICAgICAgbV92YXJEZWNsYXJhdGlvbnMgPyAmbV92YXJEZWNs
YXJhdGlvbnMtPmRhdGEgOiAwLAogICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA/
ICZtX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEgOiAwLApAQCAtMTA3LDcgKzEwOCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb25Cb2R5Tm9kZShzdGF0aWNfY2Fz
dDxQYXJzZWROb2RlKj4oMCkpKQogICAgICAgICAgICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbyhnbG9iYWxEYXRhLCBj
cmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBz
b3VyY2UpOworICAgICAgICAgICAgICAgICpleGNlcHRpb24gPSBhZGRFcnJvckluZm8obGV4aWNh
bEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBzb3VyY2UpOwogICAgICAgICB9CiAKICAgICAg
ICAgbV9hcmVuYS5yZXNldCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5k
ZXggY2UzYWI2MTE2NmIxMjViMzAxMjczMDdlNDNlY2JkNDQ5NzNhZjEyMy4uZjkwOTNhNzQ0N2E5
NDMzMWI0ZThlMTA2M2Q1Yzg2ZGE5MmQ0NzlhZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCkBAIC0zMCwxNSArMzAsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTeW50
YXhDaGVja2VyIHsKIHB1YmxpYzoKICAgICBTeW50YXhDaGVja2VyKEpTR2xvYmFsRGF0YSogLCBM
ZXhlciopCisgICAgICAgIDogbV90b3BCaW5hcnlFeHByKDApCiAgICAgewogICAgIH0KIAogICAg
IHR5cGVkZWYgU3ludGF4Q2hlY2tlciBGdW5jdGlvbkJvZHlCdWlsZGVyOworICAgIGVudW0geyBO
b25lRXhwciA9IDAsCisgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIE51bWJl
ckV4cHIsIFN0cmluZ0V4cHIsCisgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIs
IFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAorICAgICAgICBGdW5jdGlvbkV4cHIsIEJy
YWNrZXRFeHByLCBEb3RFeHByLCBDYWxsRXhwciwKKyAgICAgICAgTmV3RXhwciwgUHJlRXhwciwg
UG9zdEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwKKyAgICAgICAgQ29uZGl0aW9uYWxFeHBy
LCBBc3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwKKyAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlM
aXRlcmFsRXhwciB9OworICAgIHR5cGVkZWYgaW50IEV4cHJlc3Npb25UeXBlOwogCi0gICAgdHlw
ZWRlZiBpbnQgRXhwcmVzc2lvbjsKKyAgICB0eXBlZGVmIEV4cHJlc3Npb25UeXBlIEV4cHJlc3Np
b247CiAgICAgdHlwZWRlZiBpbnQgU291cmNlRWxlbWVudHM7CiAgICAgdHlwZWRlZiBpbnQgQXJn
dW1lbnRzOwotICAgIHR5cGVkZWYgaW50IENvbW1hOworICAgIHR5cGVkZWYgRXhwcmVzc2lvblR5
cGUgQ29tbWE7CiAgICAgc3RydWN0IFByb3BlcnR5IHsKICAgICAgICAgQUxXQVlTX0lOTElORSBQ
cm9wZXJ0eSh2b2lkKiA9IDApCiAgICAgICAgICAgICA6IHR5cGUoKFByb3BlcnR5Tm9kZTo6VHlw
ZSkwKQpAQCAtNzMsMzggKzgyLDM4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBO
ZWVkc0ZyZWVWYXJpYWJsZUluZm8gPSBmYWxzZTsKIAogICAgIGludCBjcmVhdGVTb3VyY2VFbGVt
ZW50cygpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICB2b2lkIGFwcGVuZFRvQ29tbWEo
aW50LCBpbnQpIHsgfQotICAgIGludCBjcmVhdGVDb21tYUV4cHIoaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgbWFrZUFzc2lnbk5vZGUoaW50LCBPcGVyYXRvciwgaW50LCBib29sLCBi
b29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IG1ha2VQcmVmaXhOb2Rl
KGludCwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgbWFr
ZVBvc3RmaXhOb2RlKGludCwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
LSAgICBpbnQgbWFrZVR5cGVPZk5vZGUoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IG1ha2VE
ZWxldGVOb2RlKGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBtYWtl
TmVnYXRlTm9kZShpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgbWFrZUJpdHdpc2VOb3ROb2Rl
KGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVMb2dpY2FsTm90KGludCkgeyByZXR1
cm4gMTsgfQotICAgIGludCBjcmVhdGVVbmFyeVBsdXMoaW50KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IGNyZWF0ZVZvaWQoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IHRoaXNFeHByKCkgeyBy
ZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVSZXNvbHZlKGNvbnN0IElkZW50aWZpZXIqLCBpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlT2JqZWN0TGl0ZXJhbCgpIHsgcmV0dXJuIDE7
IH0KLSAgICBpbnQgY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlQXJyYXkoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUFycmF5KGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZU51bWJlckV4cHIoZG91YmxlKSB7
IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVN0cmluZyhjb25zdCBJZGVudGlmaWVyKikgeyBy
ZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCb29sZWFuKGJvb2wpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlTnVsbCgpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQnJhY2tldEFj
Y2VzcyhpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVEb3RBY2Nlc3MoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVSZWdleChjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgSWRlbnRpZmllciYsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVOZXdFeHBy
KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZU5l
d0V4cHIoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVDb25kaXRp
b25hbEV4cHIoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBc3Np
Z25SZXNvbHZlKGNvbnN0IElkZW50aWZpZXImLCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IElkZW50aWZpZXIq
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUZ1bmN0aW9uQm9keSgpIHsgcmV0dXJuIDE7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtl
RnVuY3Rpb25DYWxsTm9kZShpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4
cHI7IH0KKyAgICB2b2lkIGFwcGVuZFRvQ29tbWEoRXhwcmVzc2lvblR5cGUmIGJhc2UsIEV4cHJl
c3Npb25UeXBlIHJpZ2h0KSB7IGJhc2UgPSByaWdodDsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUNvbW1hRXhwcihFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgcmV0
dXJuIHJpZ2h0OyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUFzc2lnbk5vZGUoRXhwcmVzc2lv
blR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgYm9vbCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlUHJl
Zml4Tm9kZShFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IFByZUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlUG9zdGZpeE5vZGUoRXhwcmVzc2lv
blR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIG1ha2VUeXBlT2ZOb2RlKEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBU
eXBlb2ZFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZURlbGV0ZU5vZGUoRXhwcmVzc2lv
blR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBtYWtlTmVnYXRlTm9kZShFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2RlKEV4cHJlc3Npb25UeXBl
KSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVMb2dpY2Fs
Tm90KEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVVbmFyeVBsdXMoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQoRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJu
IFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIHRoaXNFeHByKCkgeyByZXR1cm4gVGhp
c0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNvbHZlKGNvbnN0IElkZW50aWZp
ZXIqLCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlT2JqZWN0TGl0ZXJhbCgpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CisgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVy
YWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoaW50KSB7IHJldHVybiBB
cnJheUxpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoaW50LCBp
bnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOdW1iZXJFeHByKGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQorICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVN0cmluZyhjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gU3RyaW5nRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oYm9vbCkgeyByZXR1cm4gQm9v
bEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKCkgeyByZXR1cm4gTnVsbEV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKEV4cHJlc3Npb25U
eXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tl
dEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoRXhwcmVzc2lvblR5
cGUsIGNvbnN0IElkZW50aWZpZXImLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9
CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnZXgoY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IElkZW50aWZpZXImLCBpbnQpIHsgcmV0dXJuIFJlZ0V4cEV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVOZXdFeHByKEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKEV4cHJl
c3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9u
VHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSWRlbnRpZmllciosIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQorICAg
IGludCBjcmVhdGVGdW5jdGlvbkJvZHkoYm9vbCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVh
dGVBcmd1bWVudHMoKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cyhpbnQp
IHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChpbnQpIHsgcmV0dXJu
IDE7IH0KQEAgLTE2OSwyNiArMTc4LDM4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFZhcihjb25z
dCBJZGVudGlmaWVyKiwgYm9vbCkgeyB9CiAgICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGludCwg
aW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGludCYgb3BlcmFuZFN0YWNr
RGVwdGgsIGludCwgaW50LCBpbnQsIGludCwgYm9vbCkgeyBvcGVyYW5kU3RhY2tEZXB0aCsrOyB9
CisgICAgdm9pZCBhcHBlbmRCaW5hcnlFeHByZXNzaW9uSW5mbyhpbnQmIG9wZXJhbmRTdGFja0Rl
cHRoLCBpbnQgZXhwciwgaW50LCBpbnQsIGludCwgYm9vbCkKKyAgICB7CisgICAgICAgIGlmICgh
bV90b3BCaW5hcnlFeHByKQorICAgICAgICAgICAgbV90b3BCaW5hcnlFeHByID0gZXhwcjsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV90b3BCaW5hcnlFeHByID0gQmluYXJ5RXhwcjsKKyAg
ICAgICAgb3BlcmFuZFN0YWNrRGVwdGgrKzsKKyAgICB9CiAgICAgCiAgICAgLy8gTG9naWMgdG8g
aGFuZGxlIGRhdGFzdHJ1Y3R1cmVzIHVzZWQgZHVyaW5nIHBhcnNpbmcgb2YgYmluYXJ5IGV4cHJl
c3Npb25zCiAgICAgdm9pZCBvcGVyYXRvclN0YWNrUG9wKGludCYgb3BlcmF0b3JTdGFja0RlcHRo
KSB7IG9wZXJhdG9yU3RhY2tEZXB0aC0tOyB9CiAgICAgYm9vbCBvcGVyYXRvclN0YWNrSGFzSGln
aGVyUHJlY2VkZW5jZShpbnQmLCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBCaW5hcnlPcGVy
YW5kIGdldEZyb21PcGVyYW5kU3RhY2soaW50KSB7IHJldHVybiAxOyB9CisgICAgQmluYXJ5T3Bl
cmFuZCBnZXRGcm9tT3BlcmFuZFN0YWNrKGludCkgeyByZXR1cm4gbV90b3BCaW5hcnlFeHByOyB9
CiAgICAgdm9pZCBzaHJpbmtPcGVyYW5kU3RhY2tCeShpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBp
bnQgYW1vdW50KSB7IG9wZXJhbmRTdGFja0RlcHRoIC09IGFtb3VudDsgfQogICAgIHZvaWQgYXBw
ZW5kQmluYXJ5T3BlcmF0aW9uKGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIEJpbmFyeU9w
ZXJhbmQsIEJpbmFyeU9wZXJhbmQpIHsgb3BlcmFuZFN0YWNrRGVwdGgrKzsgfQogICAgIHZvaWQg
b3BlcmF0b3JTdGFja0FwcGVuZChpbnQmIG9wZXJhdG9yU3RhY2tEZXB0aCwgaW50LCBpbnQpIHsg
b3BlcmF0b3JTdGFja0RlcHRoKys7IH0KLSAgICBpbnQgcG9wT3BlcmFuZFN0YWNrKGludCYpIHsg
cmV0dXJuIDE7IH0KKyAgICBpbnQgcG9wT3BlcmFuZFN0YWNrKGludCYpIHsgaW50IHJlcyA9IG1f
dG9wQmluYXJ5RXhwcjsgbV90b3BCaW5hcnlFeHByID0gMDsgcmV0dXJuIHJlczsgfQogICAgIAot
ICAgIHZvaWQgYXBwZW5kVW5hcnlUb2tlbihpbnQmLCBpbnQsIGludCkgeyB9Ci0gICAgaW50IHVu
YXJ5VG9rZW5TdGFja0xhc3RUeXBlKGludCYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biAxOyB9Ci0gICAgaW50IHVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydChpbnQmKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQotICAgIHZvaWQgdW5hcnlUb2tlblN0YWNrUmVtb3Zl
TGFzdChpbnQmKSB7IH0KKyAgICB2b2lkIGFwcGVuZFVuYXJ5VG9rZW4oaW50JiBzdGFja0RlcHRo
LCBpbnQgdG9rLCBpbnQpIHsgc3RhY2tEZXB0aCA9IDE7IG1fdG9wVW5hcnlUb2tlbiA9IHRvazsg
fQorICAgIGludCB1bmFyeVRva2VuU3RhY2tMYXN0VHlwZShpbnQmKSB7IHJldHVybiBtX3RvcFVu
YXJ5VG9rZW47IH0KKyAgICBpbnQgdW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KGludCYpIHsgcmV0
dXJuIDA7IH0KKyAgICB2b2lkIHVuYXJ5VG9rZW5TdGFja1JlbW92ZUxhc3QoaW50JiBzdGFja0Rl
cHRoKSB7IHN0YWNrRGVwdGggPSAwOyB9CiAgICAgCiAgICAgdm9pZCBhc3NpZ25tZW50U3RhY2tB
cHBlbmQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IH0KICAgICBpbnQgY3Jl
YXRlQXNzaWdubWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIDE7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBnZXROYW1lKGNvbnN0IFBy
b3BlcnR5JiBwcm9wZXJ0eSkgeyBBU1NFUlQocHJvcGVydHkubmFtZSk7IHJldHVybiAqcHJvcGVy
dHkubmFtZTsgfQogICAgIFByb3BlcnR5Tm9kZTo6VHlwZSBnZXRUeXBlKGNvbnN0IFByb3BlcnR5
JiBwcm9wZXJ0eSkgeyByZXR1cm4gcHJvcGVydHkudHlwZTsgfQorICAgIGJvb2wgaXNSZXNvbHZl
KEV4cHJlc3Npb25UeXBlIGV4cHIpIHsgcmV0dXJuIGV4cHIgPT0gUmVzb2x2ZUV4cHIgfHwgZXhw
ciA9PSBSZXNvbHZlRXZhbEV4cHI7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgaW50IG1fdG9wQmlu
YXJ5RXhwcjsKKyAgICBpbnQgbV90b3BVbmFyeVRva2VuOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDQ1MGRjN2Q2Zjc4ODgzMWVlMzU2N2NhYmJiMTk0MjQw
MGI0MjVkYTguLjVjNWU1MjIyZmIyMjdhZDczZGQzYTUzOWFmMmYwZGE1MmVkYTUyOGEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTE1Myw2ICsxNTMsMzAgQEAgYm9vbCBB
cmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGks
IFByb3BlcnR5U2xvdCYgc2wKIAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSwgc2xvdCk7CiB9
CisgICAgCit2b2lkIEFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVjZXNzYXJ5
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZC0+b3ZlcnJvZGVDYWxsZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGQtPm92ZXJyb2RlQ2FsbGVyID0gdHJ1ZTsKKyAgICBQcm9wZXJ0eURl
c2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgICBKU1ZhbHVlIHRocm93ZXIgPSBjcmVhdGVUeXBlRXJy
b3JGdW5jdGlvbihleGVjLCAiVW5hYmxlIHRvIGFjY2VzcyBjYWxsZXIgb2Ygc3RyaWN0IG1vZGUg
ZnVuY3Rpb24iKTsKKyAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcih0aHJvd2Vy
LCB0aHJvd2VyLCBEb250RW51bSB8IERvbnREZWxldGUgfCBHZXR0ZXIgfCBTZXR0ZXIpOworICAg
IGRlZmluZU93blByb3BlcnR5KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIsIGRl
c2NyaXB0b3IsIGZhbHNlKTsKK30KKwordm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVD
YWxsZWVJZk5lY2Vzc2FyeShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGQtPm92ZXJyb2Rl
Q2FsbGVlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSB0
cnVlOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIEpTVmFsdWUgdGhy
b3dlciA9IGNyZWF0ZVR5cGVFcnJvckZ1bmN0aW9uKGV4ZWMsICJVbmFibGUgdG8gYWNjZXNzIGNh
bGxlZSBvZiBzdHJpY3QgbW9kZSBmdW5jdGlvbiIpOworICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNz
b3JEZXNjcmlwdG9yKHRocm93ZXIsIHRocm93ZXIsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IEdl
dHRlciB8IFNldHRlcik7CisgICAgZGVmaW5lT3duUHJvcGVydHkoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmNhbGxlZSwgZGVzY3JpcHRvciwgZmFsc2UpOworfQogCiBib29sIEFyZ3VtZW50
czo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CkBAIC0xNzIsMTAgKzE5NiwxNiBA
QCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYQogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSAmJiBMSUtFTFkoIWQtPm92ZXJyb2RlQ2Fs
bGVlKSkgewotICAgICAgICBzbG90LnNldFZhbHVlKGQtPmNhbGxlZSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBpZiAoIWQtPmlzU3RyaWN0TW9kZSkgeworICAgICAgICAgICAgc2xv
dC5zZXRWYWx1ZShkLT5jYWxsZWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KGV4ZWMpOwogICAg
IH0KIAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxl
ciAmJiBkLT5pc1N0cmljdE1vZGUpCisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5l
Y2Vzc2FyeShleGVjKTsKKwogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKQEAgLTE5Nyw5ICsyMjcsMTUgQEAgYm9v
bCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3AKICAgICB9CiAgICAgCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlICYmIExJS0VMWSghZC0+b3ZlcnJvZGVDYWxs
ZWUpKSB7Ci0gICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihkLT5jYWxsZWUsIERvbnRF
bnVtKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghZC0+aXNTdHJpY3RNb2Rl
KSB7CisgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZC0+Y2FsbGVlLCBEb250
RW51bSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjcmVh
dGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgfQorCisgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyICYmIGQtPmlzU3RyaWN0
TW9kZSkKKyAgICAgICAgY3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVjZXNzYXJ5KGV4ZWMpOwog
ICAgIAogICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CkBAIC0yNDksMTEgKzI4NSwxNyBAQCB2b2lk
IEFyZ3VtZW50czo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbAogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSAmJiAhZC0+b3ZlcnJvZGVDYWxsZWUpIHsKLSAgICAg
ICAgZC0+b3ZlcnJvZGVDYWxsZWUgPSB0cnVlOwotICAgICAgICBwdXREaXJlY3QocHJvcGVydHlO
YW1lLCB2YWx1ZSwgRG9udEVudW0pOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghZC0+
aXNTdHJpY3RNb2RlKSB7CisgICAgICAgICAgICBkLT5vdmVycm9kZUNhbGxlZSA9IHRydWU7Cisg
ICAgICAgICAgICBwdXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSwgRG9udEVudW0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNyZWF0ZVN0cmljdE1vZGVDYWxs
ZWVJZk5lY2Vzc2FyeShleGVjKTsKICAgICB9CiAKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIgJiYgZC0+aXNTdHJpY3RNb2RlKQorICAgICAgICBj
cmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZOZWNlc3NhcnkoZXhlYyk7CisKICAgICBKU09iamVjdDo6
cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCkBAIC0yOTQsOSArMzM2
LDE1IEBAIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICB9CiAKICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUgJiYgIWQtPm92ZXJyb2RlQ2FsbGVl
KSB7Ci0gICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGlmICghZC0+aXNTdHJpY3RNb2RlKSB7CisgICAgICAgICAgICBkLT5vdmVy
cm9kZUNhbGxlZSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgfQor
ICAgIAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxl
ciAmJiAhZC0+aXNTdHJpY3RNb2RlKQorICAgICAgICBjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWZO
ZWNlc3NhcnkoZXhlYyk7CiAKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGV4
ZWMsIHByb3BlcnR5TmFtZSk7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAppbmRleCA0
OWM4YjNiNThhZTM4NTU0NWVkMzkzN2E2MmI5Mjc1ZWY2ZDhmZTU4Li43MTVhMmFjMTc1ZGI1NGE4
NjE3NDM5OTgzZmU1ZjQ0NjRlODc1NDhjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgK
QEAgLTUwLDYgKzUwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGNh
bGxlZTsKICAgICAgICAgYm9vbCBvdmVycm9kZUxlbmd0aCA6IDE7CiAgICAgICAgIGJvb2wgb3Zl
cnJvZGVDYWxsZWUgOiAxOworICAgICAgICBib29sIG92ZXJyb2RlQ2FsbGVyIDogMTsKKyAgICAg
ICAgYm9vbCBpc1N0cmljdE1vZGUgOiAxOwogICAgIH07CiAKIApAQCAtMTA1LDYgKzEwNyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgdm9pZCBjcmVhdGVTdHJp
Y3RNb2RlQ2FsbGVySWZOZWNlc3NhcnkoRXhlY1N0YXRlKik7CisgICAgICAgIHZvaWQgY3JlYXRl
U3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSopOwogCiAgICAgICAgIHZpcnR1
YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQog
CkBAIC0xNzIsNiArMTc2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBkLT5jYWxsZWUg
PSBjYWxsZWU7CiAgICAgICAgIGQtPm92ZXJyb2RlTGVuZ3RoID0gZmFsc2U7CiAgICAgICAgIGQt
Pm92ZXJyb2RlQ2FsbGVlID0gZmFsc2U7CisgICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVyID0gZmFs
c2U7CisgICAgICAgIGQtPmlzU3RyaWN0TW9kZSA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlz
U3RyaWN0TW9kZSgpOworICAgICAgICBpZiAoZC0+aXNTdHJpY3RNb2RlKQorICAgICAgICAgICAg
Y29weVJlZ2lzdGVycygpOwogICAgIH0KIAogICAgIGlubGluZSBBcmd1bWVudHM6OkFyZ3VtZW50
cyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgTm9QYXJhbWV0ZXJzVHlwZSkKQEAgLTIwMSw2ICsyMDks
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGQtPmNhbGxlZSA9IGFzRnVuY3Rpb24oY2Fs
bEZyYW1lLT5jYWxsZWUoKSk7CiAgICAgICAgIGQtPm92ZXJyb2RlTGVuZ3RoID0gZmFsc2U7CiAg
ICAgICAgIGQtPm92ZXJyb2RlQ2FsbGVlID0gZmFsc2U7CisgICAgICAgIGQtPm92ZXJyb2RlQ2Fs
bGVyID0gZmFsc2U7CisgICAgICAgIGQtPmlzU3RyaWN0TW9kZSA9IGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpOworICAgICAgICBpZiAoZC0+aXNTdHJpY3RNb2RlKQorICAg
ICAgICAgICAgY29weVJlZ2lzdGVycygpOwogICAgIH0KIAogICAgIGlubGluZSB2b2lkIEFyZ3Vt
ZW50czo6Y29weVJlZ2lzdGVycygpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuY3BwCmluZGV4IDM4Mzc4MTdkMDUyZjc4ZWNlMDYxYWM2ZGU3MTcxMDRkZWZiN2I3
ZWIuLjE1NjExMDIzNTIwN2Y2YWM5ZmIxNjdjMjc1Y2E0YzMyMmQxMzU5ZmQgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zMiw2ICszMiw3IEBA
IENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCiAgICAgLCBlbXB0eUlkZW50aWZpZXIoZ2xvYmFsRGF0YSwgIiIpCiAgICAgLCB1bmRl
cnNjb3JlUHJvdG8oZ2xvYmFsRGF0YSwgIl9fcHJvdG9fXyIpCiAgICAgLCB0aGlzSWRlbnRpZmll
cihnbG9iYWxEYXRhLCAidGhpcyIpCisgICAgLCB1c2VTdHJpY3RJZGVudGlmaWVyKGdsb2JhbERh
dGEsICJ1c2Ugc3RyaWN0IikKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiB7CiB9CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZGUyNGY0YTBkNDg0N2I1YTJhODk4OTZl
OTY0ZDAzNGJhZDcxN2Y2YS4uMWUyMmI2YWJkZmZkYWY4ODU0N2Y1OGY3NGQ3ZjIxZDZjZWZhZWEy
YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtOTQs
NiArOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciBlbXB0
eUlkZW50aWZpZXI7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgdW5kZXJzY29yZVByb3RvOwog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyIHRoaXNJZGVudGlmaWVyOworICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyIHVzZVN0cmljdElkZW50aWZpZXI7CiAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJf
REVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7
CiAgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwCmluZGV4IGEyYmU0NzM2NThmNjI0ZjFkN2VmMTU2MTNmYjI1ZWM0MTg1NDRiZDMuLmUz
NTQyNGJiNDIyYjM5Y2E3NWFiODQ1NDIyZGE5MjI5NTM1YmE0ODYgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuY3BwCkBAIC0xOTUsNCArMTk1LDQ3IEBAIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9y
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50
YXhFcnJvcihleGVjLCAiU3ludGF4IGVycm9yIikpOwogfQogCitjbGFzcyBTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAg
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUs
IGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZXhlYy0+Z2xvYmFsRGF0
YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcikKKyAgICAgICAgLCBtX21lc3NhZ2Uo
bWVzc2FnZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKKyAg
ICB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CisgICAgfQorICAgIAorICAgIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQor
ICAgIHsKKyAgICAgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RU
aHJvd1R5cGVFcnJvcjsKKyAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorICAgIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2Fs
bGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVs
bCgpKTsKKyAgICB9CisKKyAgICBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERh
dGEpCisgICAgeworICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsVGhyb3dU
eXBlRXJyb3I7CisgICAgICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CisgICAgfQorCitwcml2YXRl
OgorICAgIFVTdHJpbmcgbV9tZXNzYWdlOworfTsKKworQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbikgPD0gc2l6ZW9mKENvbGxlY3RvckNlbGwpLCBzaXpl
b2ZfU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uX211c3RfYmVfbGVzc190aGFuX0NvbGxlY3Rv
ckNlbGwpOworCitKU1ZhbHVlIGNyZWF0ZVR5cGVFcnJvckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gbmV3IChleGVjKSBTdHJp
Y3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUo
KSwgbWVzc2FnZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CmluZGV4IDFhMGVjZTU0YjJjY2U5N2JmYzE2NzY3NTdhZmE0ZWQ5NTAyNWNmMDguLmJmZGU3ZGM2
NjI4MjRhNDBiOGI1OWNmNDNmODc0NDc2Mzc4ZGQ3ZmUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgK
QEAgLTczLDYgKzczLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpIHsgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGVycm9yKSk7IH0KICAgICBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7IH0KIAorICAgIEpTVmFsdWUg
Y3JlYXRlVHlwZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRXJyb3JfaApk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggODcxZjNlMjA0MGQ4MWVkNzI4
NDA1MGEwZjk1ZWZlODRhMGFhNDVlZC4uNTZlNTA5YTVjM2ZkZDdiZDU0M2U1OTdmYjg2YzM3MGFj
YjE0YTQ1YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC00NSw4ICs0
NSw4IEBAIFZQdHJIYWNrRXhlY3V0YWJsZTo6flZQdHJIYWNrRXhlY3V0YWJsZSgpCiB7CiB9CiAK
LUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYywgc291cmNlKQor
RXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjcmlwdEV4ZWN1
dGFibGUoZXhlYywgc291cmNlLCBpblN0cmljdENvbnRleHQpCiB7CiB9CiAKQEAgLTU1LDcgKzU1
LDcgQEAgRXZhbEV4ZWN1dGFibGU6On5FdmFsRXhlY3V0YWJsZSgpCiB9CiAKIFByb2dyYW1FeGVj
dXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYywgc291cmNlKQorICAgIDog
U2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGZhbHNlKQogewogfQogCkBAIC02Myw4ICs2
Myw4IEBAIFByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUoKQogewogfQogCi1G
dW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShnbG9i
YWxEYXRhLCBzb3VyY2UpCitGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1l
dGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGlu
dCBsYXN0TGluZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgc291cmNlLCBp
blN0cmljdENvbnRleHQpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKDApCiAgICAgLCBt
X2ZvcmNlVXNlc0FyZ3VtZW50cyhmb3JjZVVzZXNBcmd1bWVudHMpCiAgICAgLCBtX3BhcmFtZXRl
cnMocGFyYW1ldGVycykKQEAgLTc1LDggKzc1LDggQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5j
dGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWUK
ICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVu
Y3Rpb25FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rp
b25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCi0g
ICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSkKK0Z1bmN0aW9uRXhlY3V0YWJsZTo6
RnVuY3Rpb25FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGluU3RyaWN0Q29udGV4dCwgaW50IGZp
cnN0TGluZSwgaW50IGxhc3RMaW5lKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLCBzb3Vy
Y2UsIGluU3RyaWN0Q29udGV4dCkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMoMCkKICAg
ICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKGZvcmNlVXNlc0FyZ3VtZW50cykKICAgICAsIG1fcGFy
YW1ldGVycyhwYXJhbWV0ZXJzKQpAQCAtOTYsNyArOTYsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1
dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZQogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwogICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgUmVmUHRy
PEV2YWxOb2RlPiBldmFsTm9kZSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RXZhbE5vZGU+
KGdsb2JhbERhdGEsIGxleGljYWxHbG9iYWxPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QtPmRl
YnVnZ2VyKCksIGV4ZWMsIG1fc291cmNlLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8RXZh
bE5vZGU+IGV2YWxOb2RlID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxFdmFsTm9kZT4obGV4
aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgZXhlYywg
bV9zb3VyY2UsIDAsIGlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3Jt
YWwsICZleGNlcHRpb24pOwogICAgIGlmICghZXZhbE5vZGUpIHsKICAgICAgICAgQVNTRVJUKGV4
Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBleGNlcHRpb247CkBAIC0xMzEsNyArMTMxLDcgQEAg
SlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBSZWZQdHI8UHJv
Z3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxQcm9ncmFt
Tm9kZT4oZ2xvYmFsRGF0YSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dC0+ZGVidWdnZXIoKSwgZXhlYywgbV9zb3VyY2UsIDAsICZleGNlcHRpb24pOworICAgIFJlZlB0
cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPFBy
b2dyYW1Ob2RlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5kZWJ1
Z2dlcigpLCBleGVjLCBtX3NvdXJjZSwgMCwgSlNQYXJzZU5vcm1hbCwgJmV4Y2VwdGlvbik7CiAg
ICAgaWYgKHByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQoZXhjZXB0
aW9uKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNv
bXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzYwogICAgIEpT
T2JqZWN0KiBleGNlcHRpb24gPSAwOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgUmVmUHRyPFByb2dyYW1Ob2Rl
PiBwcm9ncmFtTm9kZSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5vZGU+KGds
b2JhbERhdGEsIGxleGljYWxHbG9iYWxPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QtPmRlYnVn
Z2VyKCksIGV4ZWMsIG1fc291cmNlLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8UHJvZ3Jh
bU5vZGU+IHByb2dyYW1Ob2RlID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9k
ZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwg
ZXhlYywgbV9zb3VyY2UsIDAsIGlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFy
c2VOb3JtYWwsICZleGNlcHRpb24pOwogICAgIGlmICghcHJvZ3JhbU5vZGUpIHsKICAgICAgICAg
QVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBleGNlcHRpb247CkBAIC0xNzgsNyAr
MTc4LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRl
cm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW4KIHsKICAgICBKU09iamVjdCogZXhjZXB0
aW9uID0gMDsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBzY29wZUNoYWluTm9kZS0+
Z2xvYmFsRGF0YTsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IGdsb2JhbERh
dGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZ2xvYmFsRGF0YSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJzLmdldCgpLCAm
ZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IGdsb2JhbERh
dGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJzLmdldCgpLCBpc1N0cmljdE1vZGUo
KSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCAmZXhjZXB0aW9uKTsKICAgICBpZiAo
IWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBleGNl
cHRpb247CkBAIC0yMTksNyArMjE5LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKIHsKICAg
ICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSBzY29wZUNoYWluTm9kZS0+Z2xvYmFsRGF0YTsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9k
ZT4gYm9keSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZ2xv
YmFsRGF0YSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9w
YXJhbWV0ZXJzLmdldCgpLCAmZXhjZXB0aW9uKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9k
ZT4gYm9keSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAwLCAwLCBtX3NvdXJjZSwgbV9wYXJhbWV0ZXJzLmdl
dCgpLCBpc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCAmZXhj
ZXB0aW9uKTsKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAg
ICAgICAgIHJldHVybiBleGNlcHRpb247CkBAIC0yNjQsMTIgKzI2NCwxNCBAQCB2b2lkIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICAg
ICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKIH0K
IAotUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBGdW5jdGlvbkV4ZWN1dGFibGU6OnJlcGFyc2VF
eGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW5Ob2RlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK1Bhc3NPd25QdHI8RXhjZXB0aW9u
SW5mbz4gRnVuY3Rpb25FeGVjdXRhYmxlOjpyZXBhcnNlRXhjZXB0aW9uSW5mbyhTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbk5vZGUsIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIEpTT2Jq
ZWN0KiBleGNlcHRpb24gPSAwOwotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBuZXdGdW5j
dGlvbkJvZHkgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGds
b2JhbERhdGEsIDAsIDAsIDAsIG1fc291cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCksICZleGNlcHRp
b24pOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IHNjb3BlQ2hhaW5Ob2RlLT5nbG9i
YWxEYXRhOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBuZXdGdW5jdGlvbkJvZHkgPSBn
bG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KHNjb3BlQ2hhaW5Ob2Rl
LT5nbG9iYWxPYmplY3QsIDAsIDAsIG1fc291cmNlLCBtX3BhcmFtZXRlcnMuZ2V0KCksIGlzU3Ry
aWN0TW9kZSgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsICZleGNlcHRpb24pOwog
ICAgIGlmICghbmV3RnVuY3Rpb25Cb2R5KQogICAgICAgICByZXR1cm4gUGFzc093blB0cjxFeGNl
cHRpb25JbmZvPigpOworICAgIEFTU0VSVChuZXdGdW5jdGlvbkJvZHktPmlzU3RyaWN0TW9kZSgp
ID09IGlzU3RyaWN0TW9kZSgpKTsKICAgICBpZiAobV9mb3JjZVVzZXNBcmd1bWVudHMpCiAgICAg
ICAgIG5ld0Z1bmN0aW9uQm9keS0+c2V0VXNlc0FyZ3VtZW50cygpOwogICAgIG5ld0Z1bmN0aW9u
Qm9keS0+ZmluaXNoUGFyc2luZyhtX3BhcmFtZXRlcnMsIG1fbmFtZSk7CkBAIC0yOTgsMTAgKzMw
MCwxMiBAQCBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IEZ1bmN0aW9uRXhlY3V0YWJsZTo6cmVw
YXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKgogICAgIHJldHVybiBuZXdDb2RlQmxvY2st
PmV4dHJhY3RFeGNlcHRpb25JbmZvKCk7CiB9CiAKLVBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4g
RXZhbEV4ZWN1dGFibGU6OnJlcGFyc2VFeGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKK1Bhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gRXZhbEV4ZWN1dGFibGU6OnJlcGFyc2VFeGNl
cHRpb25JbmZvKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiB7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7Ci0gICAgUmVmUHRyPEV2YWxO
b2RlPiBuZXdFdmFsQm9keSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RXZhbE5vZGU+KGds
b2JhbERhdGEsIDAsIDAsIDAsIG1fc291cmNlLCAwLCAmZXhjZXB0aW9uKTsKKyAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSBzY29wZUNoYWluTm9kZS0+Z2xvYmFsRGF0YTsKKyAgICBSZWZQ
dHI8RXZhbE5vZGU+IG5ld0V2YWxCb2R5ID0gZ2xvYmFsRGF0YS0+cGFyc2VyLT5wYXJzZTxFdmFs
Tm9kZT4oc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdCwgMCwgMCwgbV9zb3VyY2UsIDAsIGlz
U3RyaWN0TW9kZSgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsICZleGNlcHRpb24p
OworICAgIEFTU0VSVChuZXdFdmFsQm9keS0+aXNTdHJpY3RNb2RlKCkgPT0gaXNTdHJpY3RNb2Rl
KCkpOwogICAgIGlmICghbmV3RXZhbEJvZHkpCiAgICAgICAgIHJldHVybiBQYXNzT3duUHRyPEV4
Y2VwdGlvbkluZm8+KCk7CiAKQEAgLTM0MSw3ICszNDUsNyBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6cmVjb21waWxlKEV4ZWNTdGF0ZSopCiBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJs
ZT4gRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiBm
dW5jdGlvbk5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgRGVidWdnZXIqIGRlYnVnZ2VyLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEpTT2JqZWN0KiogZXhjZXB0aW9uKQogewogICAgIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwotICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5w
YXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBkZWJ1Z2dlciwgZXhlYywgc291cmNlLCAwLCBleGNlcHRpb24pOworICAgIFJl
ZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5wYXJzZXItPnBh
cnNlPFByb2dyYW1Ob2RlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBkZWJ1Z2dlciwgZXhlYywgc291
cmNlLCAwLCBKU1BhcnNlTm9ybWFsLCBleGNlcHRpb24pOwogICAgIGlmICghcHJvZ3JhbSkgewog
ICAgICAgICBBU1NFUlQoKmV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMzU3LDcg
KzM2MSw3IEBAIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpCiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOwogICAg
IEFTU0VSVChib2R5KTsKIAotICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbk5hbWUsIGJvZHktPnNvdXJjZSgpLCBib2R5LT51
c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgYm9keS0+bGluZU5vKCksIGJvZHkt
Pmxhc3RMaW5lKCkpOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbk5hbWUsIGJvZHktPnNvdXJjZSgpLCBib2R5LT51c2Vz
QXJndW1lbnRzKCksIGJvZHktPnBhcmFtZXRlcnMoKSwgZmFsc2UsIGJvZHktPmxpbmVObygpLCBi
b2R5LT5sYXN0TGluZSgpKTsKIH0KIAogVVN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFt
U3RyaW5nKCkgY29uc3QKQEAgLTM3Miw3ICszNzYsNyBAQCBVU3RyaW5nIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6cGFyYW1TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7CiB9
CiAKLVBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gUHJvZ3JhbUV4ZWN1dGFibGU6OnJlcGFyc2VF
eGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKikK
K1Bhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gUHJvZ3JhbUV4ZWN1dGFibGU6OnJlcGFyc2VFeGNl
cHRpb25JbmZvKFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKikKIHsKICAgICAvLyBDb2RlQmxv
Y2tzIGZvciBwcm9ncmFtIGNvZGUgYXJlIHRyYW5zaWVudCBhbmQgdGhlcmVmb3JlIGRvIG5vdCBn
YWluIGZyb20gZnJvbSB0aHJvd2luZyBvdXQgdGhlaXIgZXhjZXB0aW9uIGluZm9ybWF0aW9uLgog
ICAgIHJldHVybiBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+KCk7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oCmluZGV4IGZlYWI3ZWY5MDcxMDIxOGRmZjRlMjk5YzZlNjdiN2IwZjViMmI3
NGEuLjRjNGNhNTZjMWM5OTI1NmRlYjQxNTMyYTdjMTI0MTQxZWU0NGE0MDQgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0xMzgsMTAgKzEzOCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2Ug
ewogICAgIHB1YmxpYzoKLSAgICAgICAgU2NyaXB0RXhlY3V0YWJsZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAgU2NyaXB0RXhlY3V0
YWJsZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoTlVN
X1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQogICAgICAgICAgICAgLCBtX3NvdXJjZShzb3VyY2Up
Ci0gICAgICAgICAgICAsIG1fZmVhdHVyZXMoMCkKKyAgICAgICAgICAgICwgbV9mZWF0dXJlcyhp
c0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCkKICAgICAgICAgewogI2lm
IEVOQUJMRShDT0RFQkxPQ0tfU0FNUExJTkcpCiAgICAgICAgICAgICByZWxheEFkb3B0aW9uUmVx
dWlyZW1lbnQoKTsKQEAgLTE1MiwxMCArMTUyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlm
CiAgICAgICAgIH0KIAotICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0KQogICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShOVU1fUEFSQU1FVEVSU19OT1RfQ09N
UElMRUQpCiAgICAgICAgICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAgICAgICAgICwgbV9m
ZWF0dXJlcygwKQorICAgICAgICAgICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8g
U3RyaWN0TW9kZUZlYXR1cmUgOiAwKQogICAgICAgICB7CiAjaWYgRU5BQkxFKENPREVCTE9DS19T
QU1QTElORykKICAgICAgICAgICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwpAQCAtMTc1
LDggKzE3NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHVzZXNFdmFsKCkgY29u
c3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEV2YWxGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNl
c0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJl
OyB9CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXND
YXB0dXJlZFZhcmlhYmxlcyB8fCBtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1
cmUgfCBDYXRjaEZlYXR1cmUpOyB9CisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9CiAKLSAgICAgICAgdmly
dHVhbCBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25JbmZvKEpTR2xv
YmFsRGF0YSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKikgPSAwOworICAgICAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oU2NvcGVD
aGFpbk5vZGUqLCBDb2RlQmxvY2sqKSA9IDA7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZv
aWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFy
aWFibGVzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCkBAIC0yMTQsNyArMjE1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKm1fZXZhbENvZGVCbG9jazsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpKTsgfQorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFdmFsRXhlY3V0YWJsZT4gY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgRXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4
dCkpOyB9CiAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlJiBnZW5lcmF0ZWRKSVRD
b2RlKCkKQEAgLTIyNCwxMSArMjI1LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAg
ICBwcml2YXRlOgotICAgICAgICBFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJik7CisgICAgICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sKTsKIAogICAgICAgICBKU09iamVjdCogY29tcGlsZUludGVybmFsKEV4ZWNT
dGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAKLSAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEV4
Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSosIFNjb3BlQ2hh
aW5Ob2RlKiwgQ29kZUJsb2NrKik7CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxFeGNlcHRp
b25JbmZvPiByZXBhcnNlRXhjZXB0aW9uSW5mbyhTY29wZUNoYWluTm9kZSosIENvZGVCbG9jayop
OwogCiAgICAgICAgIE93blB0cjxFdmFsQ29kZUJsb2NrPiBtX2V2YWxDb2RlQmxvY2s7CiAgICAg
fTsKQEAgLTI3MSw3ICsyNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU09iamVj
dCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAKLSAgICAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25JbmZv
KEpTR2xvYmFsRGF0YSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2NrKik7CisgICAgICAgIHZp
cnR1YWwgUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiByZXBhcnNlRXhjZXB0aW9uSW5mbyhTY29w
ZUNoYWluTm9kZSosIENvZGVCbG9jayopOwogCiAgICAgICAgIE93blB0cjxQcm9ncmFtQ29kZUJs
b2NrPiBtX3Byb2dyYW1Db2RlQmxvY2s7CiAgICAgfTsKQEAgLTI3OSwxNCArMjgwLDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0
ZXJzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0Fy
Z3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxlKGV4ZWMsIG5hbWUsIHNv
dXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBmaXJzdExpbmUsIGxhc3RMaW5l
KSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZ1bmN0aW9uRXhlY3V0YWJsZShl
eGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0
cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpKTsKICAgICAgICAgfQogCi0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gY3JlYXRlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJh
bWV0ZXJzLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29s
IGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29s
IGlzSW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxlKGds
b2JhbERhdGEsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBm
aXJzdExpbmUsIGxhc3RMaW5lKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZ1
bmN0aW9uRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3Vt
ZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUp
KTsKICAgICAgICAgfQogCiAgICAgICAgIH5GdW5jdGlvbkV4ZWN1dGFibGUoKTsKQEAgLTM1OCwx
MyArMzU5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
dW5jdGlvbkV4ZWN1dGFibGU+IGZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeGVj
U3RhdGUqLCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdCoqIGV4Y2VwdGlv
bik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxE
YXRhKiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgZm9y
Y2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBpbnQgZmlyc3RMaW5lLCBpbnQg
bGFzdExpbmUpOwotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1l
bnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwor
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5j
dGlvblBhcmFtZXRlcnMqLCBib29sLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBh
cmFtZXRlcnMqLCBib29sLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwogCiAgICAgICAg
IEpTT2JqZWN0KiBjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5O
b2RlKik7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
RXhjZXB0aW9uSW5mbz4gcmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwgU2NvcGVD
aGFpbk5vZGUqLCBDb2RlQmxvY2sqKTsKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEV4Y2Vw
dGlvbkluZm8+IHJlcGFyc2VFeGNlcHRpb25JbmZvKFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJsb2Nr
Kik7CiAKICAgICAgICAgdW5zaWduZWQgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyA6IDMxOwogICAg
ICAgICBib29sIG1fZm9yY2VVc2VzQXJndW1lbnRzIDogMTsKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcAppbmRleCBkMTIxNTE4ZjU5ZjJkMzMwOTM0NTI5ZGE5OWI3OTFmZTFm
ZmM0YzQ5Li43OTVhZDFmNzFjMjExMzdkNjE5YWFjZDRlYThmZDg2NzkyZWU2ZGFmIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC0xODYsNiArMTg2LDExIEBAIEpT
T2JqZWN0KiBKU0FjdGl2YXRpb246OnRvVGhpc09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiAgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpOwogfQogCitKU1ZhbHVlIEpTQWN0
aXZhdGlvbjo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgcmV0
dXJuIGpzTnVsbCgpOworfQorICAgIAogYm9vbCBKU0FjdGl2YXRpb246OmlzRHluYW1pY1Njb3Bl
KGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3QKIHsKICAgICByZXF1aXJlc0R5bmFt
aWNDaGVja3MgPSBkKCktPmZ1bmN0aW9uRXhlY3V0YWJsZS0+dXNlc0V2YWwoKTsKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmggYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCmluZGV4IDlmZjkxNjg1ZGRkZTJhMTQxZGRjZjRiMjcz
ZjA5NjE5YzY4M2UzN2MuLjZkZDZkNzA3MGFmNzhhNTQ3Y2E4M2Q2MTMxOTdlYWVlN2JlNzhiZjMg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaApAQCAtNjAsNiArNjAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdmlydHVh
bCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAgICAg
ICAgIHZvaWQgY29weVJlZ2lzdGVycygpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCmluZGV4IDdlYjliYTUyNmI1MzA5OGUwMzQyMDE0MTlmZTg2NmY0OGRjYWMz
YTUuLmZkYWE1MDk5YjEyYzg5Yjk1M2VlMmQ5OWI0ZjgyZDlkYmFmYzgwNTEgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTIyLDYgKzEyMiwxNSBAQCBKU0Z1bmN0aW9u
Ojp+SlNGdW5jdGlvbigpCiAgICAgfQogfQogCitzdGF0aWMgY29uc3QgY2hhciogU3RyaWN0TW9k
ZUNhbGxlckFjY2Vzc0Vycm9yID0gIkNhbm5vdCBhY2Nlc3MgY2FsbGVyIHByb3BlcnR5IG9mIGEg
c3RyaWN0IG1vZGUgZnVuY3Rpb24iOworc3RhdGljIGNvbnN0IGNoYXIqIFN0cmljdE1vZGVBcmd1
bWVudHNBY2Nlc3NFcnJvciA9ICJDYW5ub3QgYWNjZXNzIGFyZ3VtZW50cyBwcm9wZXJ0eSBvZiBh
IHN0cmljdCBtb2RlIGZ1bmN0aW9uIjsKKworc3RhdGljIHZvaWQgY3JlYXRlRGVzY3JpcHRvckZv
clRocm93aW5nUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgSlNWYWx1ZSB0aHJvd2VyID0g
Y3JlYXRlVHlwZUVycm9yRnVuY3Rpb24oZXhlYywgbWVzc2FnZSk7CisgICAgZGVzY3JpcHRvci5z
ZXRBY2Nlc3NvckRlc2NyaXB0b3IodGhyb3dlciwgdGhyb3dlciwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgR2V0dGVyIHwgU2V0dGVyKTsKK30KKwogY29uc3QgVVN0cmluZyYgSlNGdW5jdGlvbjo6
bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIGFzU3RyaW5nKGdldERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSkpLT50cnlHZXRWYWx1ZSgpOwpA
QCAtMjA5LDYgKzIxOCwxMiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TgogICAgIH0KIAogICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgewor
ICAgICAgICBpZiAoanNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCAiQ2FuJ3QgYWNjZXNzIGFyZ3VtZW50cyBvYmplY3Qgb2Yg
YSBzdHJpY3QgbW9kZSBmdW5jdGlvbiIpOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShqc051
bGwoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgCiAgICAgICAg
IHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGFyZ3VtZW50c0dldHRlcik7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIxOSw2ICsyMzQsMTEgQEAgYm9vbCBKU0Z1bmN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU4KICAgICB9CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jYWxsZXIpIHsKKyAgICAgICAgaWYgKGpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1v
ZGUoKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZUNhbGxl
ckFjY2Vzc0Vycm9yKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUoanNOdWxsKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgc2xvdC5zZXRDYWNoZWFi
bGVDdXN0b20odGhpcywgY2FsbGVyR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMjI2LDM1ICsyNDYsNDEgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU4KICAgICByZXR1
cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKLSAgICBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQotICAgIHsKLSAgICAgICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCi0g
ICAgICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Ci0gICAgICAgIAotICAgICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKLSAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90OwotICAgICAgICAgICAgZ2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmFyZ3VtZW50cykgeworYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkK
KyAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworICAgIAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgeworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgZ2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CisgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKKyAgICB9CisgICAgCisgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSB7CisgICAgICAgIGlmIChqc0V4
ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICBjcmVhdGVEZXNjcmlwdG9y
Rm9yVGhyb3dpbmdQcm9wZXJ0eShleGVjLCBkZXNjcmlwdG9yLCBTdHJpY3RNb2RlQXJndW1lbnRz
QWNjZXNzRXJyb3IpOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldERl
c2NyaXB0b3IoZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVBcmd1bWVudHMoZXhlYywgdGhp
cyksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcihqc051bWJlcihleGVjLCBqc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291
bnQoKSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCkgeworICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoanNOdW1iZXIo
ZXhlYywganNFeGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpLCBSZWFkT25seSB8IERvbnRF
bnVtIHwgRG9udERlbGV0ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKKyAg
ICAgICAgaWYgKGpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIGNy
ZWF0ZURlc2NyaXB0b3JGb3JUaHJvd2luZ1Byb3BlcnR5KGV4ZWMsIGRlc2NyaXB0b3IsIFN0cmlj
dE1vZGVDYWxsZXJBY2Nlc3NFcnJvcik7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRlc2Ny
aXB0b3Iuc2V0RGVzY3JpcHRvcihleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUNhbGxlcihl
eGVjLCB0aGlzKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBCYXNl
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAorICAgIHJldHVybiBCYXNlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsK
K30KKwogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
KQogewogICAgIGlmICghaXNIb3N0RnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKSkgewpAQCAtMjcyLDYgKzI5OCwxNiBAQCB2b2lkIEpTRnVuY3Rpb246OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YQogICAgICAgICBCYXNlOjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKGpzRXhlY3V0YWJsZSgpLT5pc1N0cmlj
dE1vZGUoKSkgeworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5hcmd1bWVudHMpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVBcmd1bWVudHNBY2Nlc3NFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2Fs
bGVyKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlQ2FsbGVy
QWNjZXNzRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyB8fCBw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkKICAgICAgICAgcmV0
dXJuOwogICAgIEJhc2U6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCA1ZWFhNTliNzllMjA0OTNk
ZGY2YTJiYzQ2M2E0ODFhZTljMjY1NjU3Li4wNzNiNTRjN2JmMzhiYTMzMGEwN2FhMzQxZWI2NGI3
NzE1NmM1MTI5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC01
MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNp
bmNsdWRlICJSZWdFeHBDYWNoZS5oIgorI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJ
TkcpCiAjaW5jbHVkZSAiUmVnRXhwLmgiCkBAIC0xMjQsNiArMTI1LDcgQEAgSlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNr
VHlwZSB0aHJlYWQKICAgICAsIGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUoSlNP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAgLCB0ZXJtaW5hdGVkRXhlY3V0
aW9uRXJyb3JTdHJ1Y3R1cmUoSlNPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAg
ICAgLCBzdGF0aWNTY29wZVN0cnVjdHVyZShKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoanNOdWxsKCkpKQorICAgICwgc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoU3Ry
aWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAgLCBzdHJp
bmdTdHJ1Y3R1cmUoSlNTdHJpbmc6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAgLCBu
b3RBbk9iamVjdEVycm9yU3R1YlN0cnVjdHVyZShKU05vdEFuT2JqZWN0RXJyb3JTdHViOjpjcmVh
dGVTdHJ1Y3R1cmUoanNOdWxsKCkpKQogICAgICwgbm90QW5PYmplY3RTdHJ1Y3R1cmUoSlNOb3RB
bk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oCmluZGV4IDhlMmVkNjE0M2EwZWM4Yzg5NjBkZWI1ZGNmYTAyNmY4Nzc5ODRm
ZjUuLjY3ZjJlZDRiYTk2Zjk1MWViZTQ4OTdhZDdiMDk1MmI5YWJlZTZmZmMgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBpbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9y
U3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiB0ZXJtaW5hdGVkRXhlY3V0aW9u
RXJyb3JTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0YXRpY1Njb3BlU3Ry
dWN0dXJlOworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJpY3RFdmFsQWN0aXZhdGlvblN0
cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RyaW5nU3RydWN0dXJlOwogICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBub3RBbk9iamVjdEVycm9yU3R1YlN0cnVjdHVyZTsKICAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbm90QW5PYmplY3RTdHJ1Y3R1cmU7CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDg5YzA0MmE0ZWY0OTFmNjc2Mjk0
OWZiOTY2MDc0ZDI2OTYxZjE4YzQuLjkwM2U1NzNmYjg3ZDQxNGM4NjU0Yzk5ZmZjNmI3ZmJjY2I1
YWMzNDYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0y
MDQsNiArMjA0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5
cGUpCiAKICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlID0gbmV3IChleGVjKSBGdW5jdGlvblBy
b3RvdHlwZShleGVjLCB0aGlzLCBGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGpz
TnVsbCgpKSk7IC8vIFRoZSByZWFsIHByb3RvdHlwZSB3aWxsIGJlIHNldCBvbmNlIE9iamVjdFBy
b3RvdHlwZSBpcyBjcmVhdGVkLgogICAgIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUg
PSBQcm90b3R5cGVGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5
cGUpOworICAgIGQoKS0+aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN0cnVjdHVyZShkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICBOYXRpdmVG
dW5jdGlvbldyYXBwZXIqIGNhbGxGdW5jdGlvbiA9IDA7CiAgICAgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKiBhcHBseUZ1bmN0aW9uID0gMDsKICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLT5hZGRG
dW5jdGlvblByb3BlcnRpZXMoZXhlYywgdGhpcywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSwgJmNhbGxGdW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGY1ZDJmYjA3YzFkYWQwODFhNTgwZTZjMDEw
MzVhNDFmNjY3MTNkMDguLjNiOTk0MzkxMTgwMWNjY2E5OWRjOTdlMDkwZDg1MGIyNzg2MmMxNmIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE0OCw2ICsxNDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHJl
Z0V4cFN0cnVjdHVyZTsKICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cmluZ09iamVj
dFN0cnVjdHVyZTsKKyAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmU7CiAKICAgICAgICAgICAgIFN5bWJvbFRhYmxlIHN5bWJvbFRhYmxlOwogICAg
ICAgICAgICAgdW5zaWduZWQgcHJvZmlsZUdyb3VwOwpAQCAtMjQzLDYgKzI0NCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gZCgpLT5mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1
cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+bnVtYmVyT2Jq
ZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLmdldCgpOyB9CisgICAgICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsg
fQogICAgICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIGQoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAg
ICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZCgpLT5yZWdF
eHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBkKCktPnN0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcAppbmRleCAxZTIwZjdmZTJiYWQyMTc3OWUxZDYzZmY0MzQ4NTMxZTEwN2U0MTg2Li5jZDg5
ZGQyMGNlMjgzM2Q1OWI4ODFmMGJhNWQ3OTAwYjIyMDQ0YWJjIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNDUwLDcgKzQ1
MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0
YXRlKiBleGVjKQogICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlM
aXRlcmFsUGFyc2UoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwYXJzZWRPYmpl
Y3QpOwogCi0gICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBldmFsID0gRXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKHMpKTsKKyAgICBSZWZQdHI8RXZhbEV4ZWN1dGFibGU+
IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNl
KTsKICAgICBKU09iamVjdCogZXJyb3IgPSBldmFsLT5jb21waWxlKGV4ZWMsIHN0YXRpY19jYXN0
PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+Z2xvYmFsU2NvcGVDaGFpbigpLm5v
ZGUoKSk7CiAgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGVycm9yKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggY2FiYzQyOGI1NzZh
Mzk1MjZiNTIxN2FiNzc1ODg1NDFkZjllOGU2Ny4uMzBlNDBlNDk0Y2Y0ZGVjZTIzNmU5MGRiNTBh
OTU4MWNiY2E0NTMzZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTQzLDYg
KzQzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNP
YmplY3QpOwogCitjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IgPSAiQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iOworCiBzdGF0
aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICAvLyBBZGQgcHJvcGVydGllcyBmcm9tIHRo
ZSBzdGF0aWMgaGFzaHRhYmxlcyBvZiBwcm9wZXJ0aWVzCkBAIC0xMTQsMTUgKzExNiwxOSBAQCB2
b2lkIEpTT2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdQogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXM7ICFv
YmotPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IG9iaiA9IGFzT2Jq
ZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsK
ICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkgewotICAgICAgICAgICAgcHV0RGlyZWN0
SW50ZXJuYWwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCB0cnVl
LCBzbG90KTsKKyAgICAgICAgICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWwoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCB0cnVlLCBzbG90KSAmJiBzbG90LmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwq
IHNwZWNpZmljVmFsdWU7Ci0gICAgaWYgKChtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgJiYgYXR0cmlidXRl
cyAmIFJlYWRPbmx5KQorICAgIGlmICgobV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpICYmIGF0dHJpYnV0ZXMg
JiBSZWFkT25seSkgeworICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAg
Zm9yIChKU09iamVjdCogb2JqID0gdGhpczsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7
CiAgICAgICAgIGlmIChKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3QocHJvcGVydHlOYW1lKSkg
ewpAQCAtMTUxLDcgKzE1Nyw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1CiAgICAgICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBwdXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9iYWxEYXRh
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHRydWUsIHNsb3QpOworICAgIGlmICghcHV0RGly
ZWN0SW50ZXJuYWwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCB0
cnVlLCBzbG90KSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIHJldHVy
bjsKIH0KIApAQCAtNDg5LDYgKzQ5NiwxMSBAQCBKU09iamVjdCogSlNPYmplY3Q6OnRvVGhpc09i
amVjdChFeGVjU3RhdGUqKSBjb25zdAogICAgIHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0Kj4o
dGhpcyk7CiB9CiAKK0pTVmFsdWUgSlNPYmplY3Q6OnRvU3RyaWN0VGhpc09iamVjdChFeGVjU3Rh
dGUqKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyk7Cit9
CisKIEpTT2JqZWN0KiBKU09iamVjdDo6dW53cmFwcGVkT2JqZWN0KCkKIHsKICAgICByZXR1cm4g
dGhpczsKQEAgLTcwMiw0ICs3MTQsOSBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0
eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZQogICAgIHJl
dHVybiB0cnVlOwogfQogCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtZXNzYWdlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDQyMDE3MDMxNjI1NmZlYzk2MTA5MzIw
MGE2ZGE3ZTNiYjZhOGE3ZDcuLmRhOTVmMDdkNDRlMGQ5NDFlYjNiZjlkMDA3OWEzZWExNTk4NWU3
ODkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTU1LDYgKzU1LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIHN0cnVjdCBIYXNoVGFibGU7CiAK
KyAgICBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYp
OworICAgIGV4dGVybiBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3I7CisKICAgICAvLyBFQ01BIDI2Mi0zIDguNi4xCiAgICAgLy8gUHJvcGVydHkgYXR0cmli
dXRlcwogICAgIGVudW0gQXR0cmlidXRlIHsKQEAgLTE0MCw2ICsxNDMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29u
c3Q7CiAKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSop
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNT
dGF0ZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3Qo
KTsKIAogICAgICAgICBib29sIGdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNGdW5j
dGlvbikgY29uc3Q7CkBAIC0xNzUsOSArMTc5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuICFtX3N0cnVjdHVyZS0+aXNFbXB0
eSgpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJu
IG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIAotICAgICAgICB2
b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KTsKKyAgICAgICAgYm9vbCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCk7CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0KGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwot
ICAgICAgICB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBib29sIHB1dERpcmVjdChj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogCiAgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CiAgICAg
ICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCk7CkBAIC0yMDUsNiArMjA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGlvbk9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc05vdEFuT2JqZWN0RXJyb3JT
dHViKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzU3Ry
aWN0TW9kZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICB2aXJ0
dWFsIENvbXBsVHlwZSBleGNlcHRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gVGhyb3c7IH0KIApA
QCAtMjY1LDggKzI3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KCZwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgcHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNr
UmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKik7Ci0gICAgICAgIHZvaWQg
cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHks
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwo
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKik7
CisgICAgICAgIGJvb2wgcHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CiAgICAgICAgIHZvaWQgcHV0
RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CiAKICAgICAgICAgYm9vbCBp
bmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTQ1MCw3ICs0NTUsNyBAQCBpbmxpbmUgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
KSBjb25zdAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1pbmxpbmUgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uKQoraW5saW5lIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRP
bmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKIHsK
ICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVh
cDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CkBAIC00NjUsNyArNDcwLDggQEAg
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGVjaWZpY0Z1
bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkK
ICAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9u
KHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoY2hlY2tSZWFkT25seSAmJiBjdXJyZW50
QXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgICAgIHB1dERpcmVjdE9mZnNldChvZmZz
ZXQsIHZhbHVlKTsKICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSBvYmplY3RzIHN0
cnVjdHVyZSBvbmx5IGhhcyBhIHNwZWNpZmljIHZhbHVlIHNldCBpZiBwcmV2aW91c2x5IHRoZXJl
CiAgICAgICAgICAgICAvLyBoYWQgYmVlbiBvbmUgc2V0LCBhbmQgaWYgdGhlIG5ldyB2YWx1ZSBi
ZWluZyBzcGVjaWZpZWQgaXMgdGhlIHNhbWUgKG90aGVyd2lzZSB3ZSB3b3VsZApAQCAtNDc1LDcg
KzQ4MSw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIC8vIElmIHRoZXJl
IHdhcyBwcmV2aW91c2x5IGEgdmFsdWUsIGFuZCB0aGUgbmV3IHZhbHVlIGlzIHRoZSBzYW1lLCB0
aGVuIHdlIGNhbm5vdCBjYWNoZS4KICAgICAgICAgICAgIGlmICghY3VycmVudFNwZWNpZmljRnVu
Y3Rpb24gfHwgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQog
ICAgICAgICAgICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
IAogICAgICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCk7CkBAIC00ODgsNyArNDk0LDcgQEAgaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZQogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxsIGJlbG93
LgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCiAgICAgICAgICAgICBzbG90LnNldE5l
d1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgc2l6ZV90IG9mZnNldDsKQEAgLTUwNCw3ICs1MTAsNyBAQCBp
bmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFu
IHVuY2FjaGFibGUgc3RhdGUuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAg
ICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0KTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0
cmlidXRlczsKQEAgLTUxMiw3ICs1MTgsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAg
b2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVz
LCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZv
dW5kKSB7CiAgICAgICAgIGlmIChjaGVja1JlYWRPbmx5ICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYg
UmVhZE9ubHkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgLy8gVGhlcmUgYXJlIHRocmVlIHBvc3NpYmlsaXRpZXMgaGVyZToKICAgICAg
ICAgLy8gICgxKSBUaGVyZSBpcyBhbiBleGlzdGluZyBzcGVjaWZpYyB2YWx1ZSBzZXQsIGFuZCB3
ZSdyZSBvdmVyd3JpdGluZyB3aXRoICp0aGUgc2FtZSB2YWx1ZSouCkBAIC01MjcsNyArNTMzLDcg
QEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgICAgICAgICAgLy8gY2FzZSAoMSkgRG8gdGhl
IHB1dCwgdGhlbiByZXR1cm4gbGVhdmluZyB0aGUgc2xvdCB1bmNhY2hhYmxlLgogICAgICAgICAg
ICAgaWYgKHNwZWNpZmljRnVuY3Rpb24gPT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pIHsKICAg
ICAgICAgICAgICAgICBwdXREaXJlY3RPZmZzZXQob2Zmc2V0LCB2YWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgLy8gY2FzZSAoMikgRGVzcGVjaWZ5LCBmYWxsIHRocm91Z2ggdG8gKDMp
LgogICAgICAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25U
cmFuc2l0aW9uKG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKTsKQEAgLTUzNiw3ICs1NDIsNyBA
QCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgIC8vIGNhc2UgKDMpIHNldCB0aGUgc2xv
dCwgZG8gdGhlIHB1dCwgcmV0dXJuLgogICAgICAgICBzbG90LnNldEV4aXN0aW5nUHJvcGVydHko
dGhpcywgb2Zmc2V0KTsKICAgICAgICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwgdmFsdWUpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8vIElm
IHdlIGhhdmUgYSBzcGVjaWZpYyBmdW5jdGlvbiwgd2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9p
bnQgaWYgdGhlcmUgaXMKQEAgLTU2MSwxNCArNTY3LDE1IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUKICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgogICAg
IGlmICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlz
LCBvZmZzZXQpOworICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJv
b2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBB
U1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVh
cCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKLSAgICBwdXREaXJlY3RJbnRlcm5hbChw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCBnZXRK
U0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVy
bmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3Qs
IGdldEpTRnVuY3Rpb24oZ2xvYmFsRGF0YSwgdmFsdWUpKTsKIH0KIAogaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQpAQCAtNTc3LDEyICs1ODQsMTIgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICBw
dXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwg
c2xvdCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
QVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6Omhl
YXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogCi0gICAgcHV0RGlyZWN0SW50ZXJuYWwo
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgMCk7
CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJp
YnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIDApOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKQEAgLTU5MSw5ICs1OTgsOSBAQCBpbmxpbmUgdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgdQogICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0
dHJpYnV0ZXMsIGZhbHNlLCBzbG90LCAwKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwg
MCwgZmFsc2UsIHNsb3QsIDApOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0
eU5hbWUsIHZhbHVlLCAwLCBmYWxzZSwgc2xvdCwgMCk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Q2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQpAQCAtNjk4LDEwICs3MDUsMTEgQEAgaW5saW5lIHZvaWQgSlNW
YWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHUKICAgICBhc0NlbGwoKS0+cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogfQogCi1pbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXREaXJlY3QoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCitpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXREaXJlY3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQoaXNDZWxsKCkgJiYgaXNPYmplY3QoKSk7Ci0g
ICAgYXNPYmplY3QoYXNDZWxsKCkpLT5wdXREaXJlY3QocHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CisgICAgaWYgKCFhc09iamVjdChhc0NlbGwoKSktPnB1dERpcmVjdChwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogfQogCiBp
bmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUpCkBAIC03NTYsNiArNzY0LDEzIEBAIGlubGluZSBKU1N0cmlu
ZyogSlNWYWx1ZTo6dG9UaGlzSlNTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJl
dHVybiBpc1N0cmluZygpID8gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSkgOiBqc1N0
cmluZyhleGVjLCB0b1RoaXNPYmplY3QoZXhlYyktPnRvU3RyaW5nKGV4ZWMpKTsKIH0KIAoraW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKK3sKKyAgICBpZiAoIWlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICByZXR1cm4gYXNPYmplY3QoYXNDZWxsKCkpLT50b1N0cmljdFRoaXNPYmplY3QoZXhlYyk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNPYmplY3RfaApkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKaW5kZXggYWQxMDIxODA5
Mzg2ZjY5NWU3ZTIyNTM4YWEzZWRmMzY1OTgzODRkMy4uN2FiMWQxYzEwNzQ0ZjUwM2JmYTgxZDE3
OWE3YjNmNGIzZGIwNjQ0MyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGlj
U2NvcGVPYmplY3QuY3BwCkBAIC00Miw2ICs0MiwxMSBAQCBKU09iamVjdCogSlNTdGF0aWNTY29w
ZU9iamVjdDo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICByZXR1cm4g
ZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKK0pTVmFsdWUgSlNTdGF0aWNTY29wZU9iamVj
dDo6dG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIGpz
TnVsbCgpOworfQorCiB2b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6OnB1dChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpCiB7CiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0KHByb3BlcnR5TmFtZSwgdmFsdWUpKQpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0Lmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAppbmRleCBjMDUx
OWMxZmM2MDQ0ZmY0MWMwYzcyMmNjNGE3ZTc3OGQ4Y2JlY2M1Li5lNjkzNTZhMzI1ZTZmYzAyY2U4
MDM0NTk2NDEzYzFlOGU2NmNlYTUyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RhdGljU2NvcGVPYmplY3QuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Rh
dGljU2NvcGVPYmplY3QuaApAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3BhY2UgSlNDewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogICAgICAgICBib29sIGlz
RHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgICAgICB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmgKaW5kZXggYjU4MzRjMTk2NjBjOWY5ZTBiMWY3NzQ4NGNhNWFkMmM5MTUyNDQ3OS4uZjc3
NjE1NzNkZTkxZjQxMDc3ZDkzMjkxNTdjYzg3OGI1OGQ4MWY5ZSAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmgKQEAgLTE5Myw2ICsxOTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBi
b29sIG5lZWRzVGhpc0NvbnZlcnNpb24oKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHRvVGhp
c09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNWYWx1ZSB0b1N0cmljdFRoaXNP
YmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFVTdHJpbmcgdG9UaGlzU3RyaW5nKEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU1N0cmluZyogdG9UaGlzSlNTdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21i
aWUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAppbmRleCA3MTFmNjczMmJj
Y2VhZWI4MWMwZTA3NzcwYzIzNGQyNzIwMTUwZjU0Li5kYTQ1Njk5Yjk2MTU3NDZmNjUxM2VkZjQ3
NzIxNjRkZmNiZmVhMzNmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9t
YmllLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCkBAIC02MCw2ICs2
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25l
ZCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBK
U09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVj
dChFeGVjU3RhdGUqKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSlNWYWx1
ZSgpOyB9CiAgICAgdmlydHVhbCBKU1ZhbHVlIGdldEpTTnVtYmVyKCkgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGpzTnVsbCgpOyB9CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90JikgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9QdXRQcm9wZXJ0eVNsb3QuaAppbmRleCBlYjhlYThhOTk0MmY3YWFmMWNiODAwM2M5MmNlZDc2
YmI0ZGQzY2JmLi40YjBiMzk0OGZiYjI5ZjA4MmEzMTYyMWQ2NjVkMzVjM2RjMjZmNzE3IDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKQEAgLTM4LDkgKzM4LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBUeXBlIHsgVW5jYWNo
YWJsZSwgRXhpc3RpbmdQcm9wZXJ0eSwgTmV3UHJvcGVydHkgfTsKIAotICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3QoKQorICAgICAgICBQdXRQcm9wZXJ0eVNsb3QoYm9vbCBpc1N0cmljdE1vZGUgPSBm
YWxzZSkKICAgICAgICAgICAgIDogbV90eXBlKFVuY2FjaGFibGUpCiAgICAgICAgICAgICAsIG1f
YmFzZSgwKQorICAgICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCkBAIC02MSw2ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICAgICAgSlNPYmpl
Y3QqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KIAorICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgICAgIGJvb2wg
aXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVW5jYWNoYWJsZTsgfQogICAg
ICAgICBzaXplX3QgY2FjaGVkT2Zmc2V0KCkgY29uc3QgewogICAgICAgICAgICAgQVNTRVJUKGlz
Q2FjaGVhYmxlKCkpOwpAQCAtNzAsNiArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
VHlwZSBtX3R5cGU7CiAgICAgICAgIEpTT2JqZWN0KiBtX2Jhc2U7CiAgICAgICAgIHNpemVfdCBt
X29mZnNldDsKKyAgICAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZh
bEFjdGl2YXRpb24uY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZh
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJiMDEzYjczZTI1YTEwNDI2NTA0MjVkZWQ4ZWUxMjExZTZm
OTM1NgotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZh
bEFjdGl2YXRpb24uY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1N0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihFeGVj
U3RhdGUqIGV4ZWMpCisgICAgOiBKU09iamVjdChleGVjLT5nbG9iYWxEYXRhKCkuc3RyaWN0RXZh
bEFjdGl2YXRpb25TdHJ1Y3R1cmUpCit7Cit9CisKK2Jvb2wgU3RyaWN0RXZhbEFjdGl2YXRpb246
OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKQoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworSlNPYmplY3QqIFN0cmljdEV2YWxBY3RpdmF0aW9uOjp0b1RoaXNP
YmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBleGVjLT5nbG9iYWxU
aGlzVmFsdWUoKTsKK30KKworSlNWYWx1ZSBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6dG9TdHJpY3RU
aGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIGpzTnVsbCgpOworfQor
Cit9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTM4NWVlY2U0YjI1YjM2Mjg0NmM5ZDVlYjIyOGQzZjcxYWZiNjg1MAotLS0gL2Rl
di9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24u
aApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJpY3RFdmFsQWN0aXZh
dGlvbl9oCisjZGVmaW5lIFN0cmljdEV2YWxBY3RpdmF0aW9uX2gKKworI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTdHJpY3RFdmFsQWN0aXZhdGlvbiA6
IHB1YmxpYyBKU09iamVjdCB7CitwdWJsaWM6CisgICAgU3RyaWN0RXZhbEFjdGl2YXRpb24oRXhl
Y1N0YXRlKik7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImKTsKKyAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVjdChF
eGVjU3RhdGUqKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
U3RyaWN0RXZhbEFjdGl2YXRpb25faApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE4ZTQxYjMxMDU1YTAzODQyZWEwNmRjMWNi
ZTVlYTcwYzI2OWMwZGYuLjk2MWRhZTNkNzlmMmE2N2IyYmI1MGE3ZTMxMzhiZjhhNzljZTEyMjgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0xMC0wMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtFUzVdIEltcGxlbWVudCBzdHJpY3QgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDEKKworICAgICAgICBUZXN0cyBmb3IgdGhlIG1h
bnkgZGlmZmVyZW50IGJlaGF2aW91cnMgd2UgZ2V0IGluIHN0cmljdCBtb2RlLgorCisgICAgICAg
ICogZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvanMvYmFzaWMtc3RyaWN0LW1vZGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanM6IEFkZGVkLgorICAgICAgICAo
dGVzdFRoaXMpOgorICAgICAgICAodGVzdEdsb2JhbEFjY2Vzcyk6CisKIDIwMTAtMTAtMDkgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWls
ZCBmaXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXN0cmljdC1tb2Rl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc3RyaWN0LW1vZGUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjM2RlODNkODBkOTBkMjExMmFiMDViNmI1OTJhYjQ1MzY5
YTAzMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXN0cmlj
dC1tb2RlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwMCBAQAorVGVzdCBiZWhhdmlvdXIgb2Yg
c3RyaWN0IG1vZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdFRo
aXMuY2FsbChudWxsKSBpcyBudWxsCitQQVNTIHRlc3RUaGlzLmNhbGwoMSkgaXMgMQorUEFTUyB0
ZXN0VGhpcy5jYWxsKHRydWUpIGlzIHRydWUKK1BBU1MgdGVzdFRoaXMuY2FsbChmYWxzZSkgaXMg
ZmFsc2UKK1BBU1MgdGVzdFRoaXMuY2FsbCh1bmRlZmluZWQpIGlzIHVuZGVmaW5lZAorUEFTUyB0
ZXN0VGhpcy5jYWxsKCdhIHN0cmluZycpIGlzICdhIHN0cmluZycKK1BBU1MgdGVzdEdsb2JhbEFj
Y2VzcygpIGlzIG51bGwKK1BBU1MgKGZ1bmN0aW9uIGV2YWwoKXsndXNlIHN0cmljdCc7fSkgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uIChl
dmFsKXsndXNlIHN0cmljdCc7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBl
cnJvci4KK1BBU1MgKGZ1bmN0aW9uIGFyZ3VtZW50cygpeyd1c2Ugc3RyaWN0Jzt9KSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKGFyZ3Vt
ZW50cyl7J3VzZSBzdHJpY3QnO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2Ug
ZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHZhciBldmFsO30pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoKXsn
dXNlIHN0cmljdCc7IHZhciBhcmd1bWVudHM7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgdHJ5e31jYXRj
aChldmFsKXt9fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BB
U1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgdHJ5e31jYXRjaChhcmd1bWVudHMpe319KSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24g
KGEsIGEpeyd1c2Ugc3RyaWN0Jzt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNl
IGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgZGVsZXRlIGE7fSkoKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24g
KCl7J3VzZSBzdHJpY3QnOyB2YXIgYTsgZGVsZXRlIGE7fSkoKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAoZnVuY3Rpb24gKCl7dmFyIGE7IGZ1bmN0aW9u
IGYoKSB7J3VzZSBzdHJpY3QnOyBkZWxldGUgYTt9IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0Jzsgd2l0
aCgxKXt9O30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNT
IChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50cy5jYWxsZWU7IH0pKCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVW5hYmxlIHRvIGFjY2VzcyBjYWxsZWUgb2Ygc3RyaWN0IG1v
ZGUgZnVuY3Rpb24uCitQQVNTIChmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50cy5j
YWxsZXI7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVW5hYmxlIHRvIGFjY2VzcyBj
YWxsZXIgb2Ygc3RyaWN0IG1vZGUgZnVuY3Rpb24uCitQQVNTIChmdW5jdGlvbiBmKCl7J3VzZSBz
dHJpY3QnOyBmLmFyZ3VtZW50czsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW4n
dCBhY2Nlc3MgYXJndW1lbnRzIG9iamVjdCBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFT
UyAoZnVuY3Rpb24gZigpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI7IH0pKCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQ2Fubm90IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkgb2YgYSBzdHJpY3Qg
bW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIGYoKXsndXNlIHN0cmljdCc7IGYuYXJndW1l
bnRzPTU7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IGFjY2VzcyBhcmd1
bWVudHMgcHJvcGVydHkgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9u
IGYoKXsndXNlIHN0cmljdCc7IGYuY2FsbGVyPTU7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQ2Fubm90IGFjY2VzcyBjYWxsZXIgcHJvcGVydHkgb2YgYSBzdHJpY3QgbW9kZSBmdW5j
dGlvbi4KK1BBU1MgKGZ1bmN0aW9uIChhcmcpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzLmNhbGxl
ZTsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBVbmFibGUgdG8gYWNjZXNzIGNhbGxl
ZSBvZiBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1bmN0aW9uIChhcmcpeyd1c2Ugc3Ry
aWN0JzsgYXJndW1lbnRzLmNhbGxlcjsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBV
bmFibGUgdG8gYWNjZXNzIGNhbGxlciBvZiBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KK1BBU1MgKGZ1
bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzOyB9KSgpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IENhbid0IGFjY2VzcyBhcmd1bWVudHMgb2JqZWN0IG9mIGEgc3RyaWN0
IG1vZGUgZnVuY3Rpb24uCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyBmLmNh
bGxlcjsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3QgYWNjZXNzIGNhbGxl
ciBwcm9wZXJ0eSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gZihh
cmcpeyd1c2Ugc3RyaWN0JzsgZi5hcmd1bWVudHM9NTsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBDYW5ub3QgYWNjZXNzIGFyZ3VtZW50cyBwcm9wZXJ0eSBvZiBhIHN0cmljdCBtb2Rl
IGZ1bmN0aW9uLgorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI9
NTsgfSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3QgYWNjZXNzIGNhbGxlciBw
cm9wZXJ0eSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uLgorUEFTUyAndXNlIHN0cmljdCc7IChm
dW5jdGlvbiAoKXt3aXRoKDEpe307fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJz
ZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7dmFyIGE7IGRlbGV0ZSBh
O30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ug
c3RyaWN0JzsgdmFyIGE7IChmdW5jdGlvbiAoKXsgZGVsZXRlIGE7fSkgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgdmFyIGE7IChmdW5jdGlvbiAoKXsgJ3Vz
ZSBzdHJpY3QnOyBkZWxldGUgYTt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNl
IGVycm9yLgorUEFTUyAnbWlzYyBkaXJlY3RpdmUnOyAndXNlIHN0cmljdCc7IHdpdGgoe30pe30g
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJp
Y3QnOyByZXR1cm4gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BB
U1MgJ3VzZSBzdHJpY3QnOyBicmVhayB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNl
IGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGNvbnRpbnVlIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgZm9yKDs7KXJldHVybiB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmlj
dCc7IGZvcig7OylicmVhayBtaXNzaW5nTGFiZWwgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBmb3IoOzspY29udGludWUgbWlzc2lu
Z0xhYmVsIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1
c2Ugc3RyaWN0JzsgMDA3OyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9y
LgorUEFTUyAndXNlIHN0cmljdCc7ICdcMDA3JzsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBQYXJzZSBlcnJvci4KK1BBU1MgJ1wwMDcnOyAndXNlIHN0cmljdCc7IHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9u
ICgpeyBkZWxldGUgc29tZURlY2xhcmVkR2xvYmFsO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoKXsgJ3VzZSBzdHJpY3QnOyBkZWxl
dGUgc29tZURlY2xhcmVkR2xvYmFsO30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFy
c2UgZXJyb3IuCitQQVNTICd1c2Ugc3RyaWN0Jzsgc29tZUdsb2JhbCA9ICdTaG91bGRuXCd0IGJl
IGFibGUgdG8gYXNzaWduIHRoaXMuJzsgc29tZUdsb2JhbDsgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBldmFsKCd2YXIgaW50cm9k
dWNlZFZhcmlhYmxlID0gIkZBSUw6IHZhcmlhYmxlIGludHJvZHVjZWQgaW50byBjb250YWluaW5n
IHNjb3BlIjsnKTsgaW50cm9kdWNlZFZhcmlhYmxlIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogaW50cm9kdWNlZFZhcmlhYmxlLgorUEFTUyAndXNl
IHN0cmljdCc7IG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5LnByb3AgPSAnZmFpbCcgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9w
ZXJ0eS4uCitQQVNTICd1c2Ugc3RyaWN0JzsgZGVsZXRlIG9iamVjdFdpdGhSZWFkb25seVByb3Bl
cnR5LnByb3AgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVW5hYmxlIHRvIGRlbGV0ZSBwcm9w
ZXJ0eS4uCitQQVNTICd1c2Ugc3RyaWN0JzsgZGVsZXRlIG9iamVjdFdpdGhSZWFkb25seVByb3Bl
cnR5W3JlYWRvbmx5UHJvcE5hbWVdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuLgorUEFTUyAndXNlIHN0cmljdCc7ICsrZXZhbCB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGV2YWwr
KyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0
cmljdCc7IC0tZXZhbCB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgor
UEFTUyAndXNlIHN0cmljdCc7IGV2YWwtLSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBh
cnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGlmICgwKSBkZWxldGUgK2EuYiB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyAndXNlIHN0cmljdCc7IGlm
ICgwKSBkZWxldGUgKythLmIgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJv
ci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyBpZiAoMCkgZGVsZXRlIHZvaWQgYS5iIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBz
dHJpY3QnOyBhID0gZmFsc2U7IHJldHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0pKHRydWUpIGlz
IHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50c1swXSA9IGZh
bHNlOyByZXR1cm4gYSAhPT0gYXJndW1lbnRzWzBdOyB9KSh0cnVlKSBpcyB0cnVlCitQQVNTIChm
dW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhPWZhbHNlOyByZXR1cm4gYXJndW1lbnRzOyB9KSh0
cnVlKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVu
dHNbMF09ZmFsc2U7IHJldHVybiBhOyB9KSh0cnVlKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAo
YSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSko
ZmFsc2UpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgIGFyZ3Vt
ZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KShmYWxzZSlbMF0gaXMgdHJ1ZQorUEFT
UyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPXRydWU7IGE9ZmFsc2U7
IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0gaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1
c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPWZhbHNlOyBhPXRydWU7IHJldHVybiBhOyB9KSgpIGlz
IHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50c1swXT10cnVl
OyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uICgpeyd1
c2Ugc3RyaWN0JzsgIGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBd
IGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1
bmN0aW9uICgpe2xvY2FsO30pKCk7IGEgPSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1sw
XTsgfSkodHJ1ZSkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFy
IGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdID0gZmFsc2U7IHJl
dHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0pKHRydWUpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9u
IChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGE9
ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKHRydWUpWzBdIGlzIHRydWUKK1BBU1MgKGZ1bmN0
aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7
IGFyZ3VtZW50c1swXT1mYWxzZTsgcmV0dXJuIGE7IH0pKHRydWUpIGlzIHRydWUKK1BBU1MgKGZ1
bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30p
KCk7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KShmYWxzZSlbMF0gaXMg
dHJ1ZQorUEFTUyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgdmFyIGxvY2FsOyAoZnVuY3Rp
b24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0p
KGZhbHNlKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIg
bG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09dHJ1ZTsgYT1mYWxz
ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoKVswXSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoYSl7
J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVu
dHNbMF09dHJ1ZTsgcmV0dXJuIGFyZ3VtZW50czsgfSkoKVswXSBpcyB0cnVlCitQQVNTIChmdW5j
dGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgp
OyBhcmd1bWVudHNbMF09ZmFsc2U7IGE9dHJ1ZTsgcmV0dXJuIGE7IH0pKCkgaXMgdHJ1ZQorUEFT
UyAoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyAgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9j
YWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0gaXMg
dHJ1ZQorUEFTUyAndXNlIHN0cmljdCc7IChmdW5jdGlvbiAoKXt2YXIgYSA9IHRydWU7IGV2YWwo
J3ZhciBhID0gZmFsc2UnKTsgcmV0dXJuIGE7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24g
KCl7dmFyIGEgPSB0cnVlOyBldmFsKCcidXNlIHN0cmljdCI7IHZhciBhID0gZmFsc2UnKTsgcmV0
dXJuIGE7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0Jzsg
cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZiwgJ2FyZ3VtZW50cycpLnZh
bHVlOyB9KSgpIGlzIHVuZGVmaW5lZC4KK1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmlj
dCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYsICdjYWxsZXInKS52
YWx1ZTsgfSkoKSBpcyB1bmRlZmluZWQuCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJp
Y3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdj
YWxsZWUnKS52YWx1ZTsgfSkoKSBpcyB1bmRlZmluZWQuCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7
J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1
bWVudHMsICdjYWxsZXInKS52YWx1ZTsgfSkoKSBpcyB1bmRlZmluZWQuCitQQVNTIChmdW5jdGlv
biBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVyJyk7IHJldHVybiBkZXNjcmlwdG9yLmdl
dCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gZihhcmcp
eyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlZScpOyByZXR1cm4gZGVzY3JpcHRvci5nZXQgPT09IGRl
c2NyaXB0b3Iuc2V0OyB9KSgpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0
cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihm
LCAnY2FsbGVyJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0p
KCkgaXMgdHJ1ZQorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2Ny
aXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYsICdhcmd1bWVudHMnKTsg
cmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSBpcyB0cnVlCitQ
QVNTICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uIGYoKSB7IGZvcih2YXIgaSBpbiB0aGlzKTsgfSko
KTsgdHJ1ZTsgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc3RyaWN0
LW1vZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc3RyaWN0LW1vZGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZTc3MWRmMDEzODUyMGRiMDhlOWE0OGNiNjU0Y2QzYmU4ZTE3MWM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zdHJpY3QtbW9kZS5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvYmFzaWMtc3RyaWN0LW1vZGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1zdHJpY3QtbW9kZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NTkyYmU0NWM1MmE5MTZkY2NjMTE4ZWFmZGMyNzI3MDMzMmUwZDYxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtc3Ry
aWN0LW1vZGUuanMKQEAgLTAsMCArMSwxMTUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGJlaGF2aW91
ciBvZiBzdHJpY3QgbW9kZSIpOworCit2YXIgZ2xvYmFsVGhpc1Rlc3Q7CitmdW5jdGlvbiB0ZXN0
VGhpcygpIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgcmV0dXJuIHRoaXM7Cit9CitmdW5jdGlv
biB0ZXN0R2xvYmFsQWNjZXNzKCkgeworICAgIHJldHVybiB0ZXN0VGhpcygpOworfQorc2hvdWxk
QmUoInRlc3RUaGlzLmNhbGwobnVsbCkiLCAibnVsbCIpOworc2hvdWxkQmUoInRlc3RUaGlzLmNh
bGwoMSkiLCAiMSIpOworc2hvdWxkQmUoInRlc3RUaGlzLmNhbGwodHJ1ZSkiLCAidHJ1ZSIpOwor
c2hvdWxkQmUoInRlc3RUaGlzLmNhbGwoZmFsc2UpIiwgImZhbHNlIik7CitzaG91bGRCZSgidGVz
dFRoaXMuY2FsbCh1bmRlZmluZWQpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoInRlc3RUaGlz
LmNhbGwoJ2Egc3RyaW5nJykiLCAiJ2Egc3RyaW5nJyIpOworCitzaG91bGRCZSgidGVzdEdsb2Jh
bEFjY2VzcygpIiwgIm51bGwiKTsKKworc2hvdWxkVGhyb3coIihmdW5jdGlvbiBldmFsKCl7J3Vz
ZSBzdHJpY3QnO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIChldmFsKXsndXNlIHN0cmlj
dCc7fSkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gYXJndW1lbnRzKCl7J3VzZSBzdHJpY3Qn
O30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIChhcmd1bWVudHMpeyd1c2Ugc3RyaWN0Jzt9
KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHZhciBldmFsO30p
Iik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgdmFyIGFyZ3VtZW50
czt9KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHRyeXt9Y2F0
Y2goZXZhbCl7fX0pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0Jzsg
dHJ5e31jYXRjaChhcmd1bWVudHMpe319KSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAoYSwg
YSl7J3VzZSBzdHJpY3QnO30pIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIChhKXsndXNlIHN0
cmljdCc7IGRlbGV0ZSBhO30pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKCl7J3VzZSBz
dHJpY3QnOyB2YXIgYTsgZGVsZXRlIGE7fSkoKSIpOworc2hvdWxkVGhyb3coIihmdW5jdGlvbiAo
KXt2YXIgYTsgZnVuY3Rpb24gZigpIHsndXNlIHN0cmljdCc7IGRlbGV0ZSBhO30gfSkoKSIpOwor
c2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IHdpdGgoMSl7fTt9KSIpOwor
c2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50cy5jYWxsZWU7
IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJpY3QnOyBhcmd1bWVu
dHMuY2FsbGVyOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYoKXsndXNlIHN0cmlj
dCc7IGYuYXJndW1lbnRzOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYoKXsndXNl
IHN0cmljdCc7IGYuY2FsbGVyOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYoKXsn
dXNlIHN0cmljdCc7IGYuYXJndW1lbnRzPTU7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rp
b24gZigpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI9NTsgfSkoKSIpOworc2hvdWxkVGhyb3coIihm
dW5jdGlvbiAoYXJnKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50cy5jYWxsZWU7IH0pKCkiKTsKK3No
b3VsZFRocm93KCIoZnVuY3Rpb24gKGFyZyl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHMuY2FsbGVy
OyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IGYu
YXJndW1lbnRzOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0
cmljdCc7IGYuY2FsbGVyOyB9KSgpIik7CitzaG91bGRUaHJvdygiKGZ1bmN0aW9uIGYoYXJnKXsn
dXNlIHN0cmljdCc7IGYuYXJndW1lbnRzPTU7IH0pKCkiKTsKK3Nob3VsZFRocm93KCIoZnVuY3Rp
b24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI9NTsgfSkoKSIpOworc2hvdWxkVGhyb3co
Iid1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpe3dpdGgoMSl7fTt9KSIpOworc2hvdWxkVGhyb3co
Iid1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uICgpe3ZhciBhOyBkZWxldGUgYTt9KSIpOworc2hvdWxk
VGhyb3coIid1c2Ugc3RyaWN0JzsgdmFyIGE7IChmdW5jdGlvbiAoKXsgZGVsZXRlIGE7fSkiKTsK
K3Nob3VsZFRocm93KCJ2YXIgYTsgKGZ1bmN0aW9uICgpeyAndXNlIHN0cmljdCc7IGRlbGV0ZSBh
O30pIik7CitzaG91bGRUaHJvdygiJ21pc2MgZGlyZWN0aXZlJzsgJ3VzZSBzdHJpY3QnOyB3aXRo
KHt9KXt9Iik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyByZXR1cm4iKTsKK3Nob3VsZFRo
cm93KCIndXNlIHN0cmljdCc7IGJyZWFrIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBj
b250aW51ZSIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZm9yKDs7KXJldHVybiIpOwor
c2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZm9yKDs7KWJyZWFrIG1pc3NpbmdMYWJlbCIpOwor
c2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZm9yKDs7KWNvbnRpbnVlIG1pc3NpbmdMYWJlbCIp
Oworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgMDA3OyIpOworc2hvdWxkVGhyb3coIid1c2Ug
c3RyaWN0JzsgJ1xcMDA3JzsiKTsKK3Nob3VsZFRocm93KCInXFwwMDcnOyAndXNlIHN0cmljdCc7
Iik7CisKK3ZhciBzb21lRGVjbGFyZWRHbG9iYWw7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3Qn
OyAoZnVuY3Rpb24gKCl7IGRlbGV0ZSBzb21lRGVjbGFyZWRHbG9iYWw7fSkiKTsKK3Nob3VsZFRo
cm93KCIoZnVuY3Rpb24gKCl7ICd1c2Ugc3RyaWN0JzsgZGVsZXRlIHNvbWVEZWNsYXJlZEdsb2Jh
bDt9KSIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0Jzsgc29tZUdsb2JhbCA9ICdTaG91bGRu
XFwndCBiZSBhYmxlIHRvIGFzc2lnbiB0aGlzLic7IHNvbWVHbG9iYWw7Iik7CitzaG91bGRUaHJv
dygiJ3VzZSBzdHJpY3QnOyBldmFsKCd2YXIgaW50cm9kdWNlZFZhcmlhYmxlID0gXCJGQUlMOiB2
YXJpYWJsZSBpbnRyb2R1Y2VkIGludG8gY29udGFpbmluZyBzY29wZVwiOycpOyBpbnRyb2R1Y2Vk
VmFyaWFibGUiKTsKK3ZhciBvYmplY3RXaXRoUmVhZG9ubHlQcm9wZXJ0eSA9IHt9OworT2JqZWN0
LmRlZmluZVByb3BlcnR5KG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5LCAicHJvcCIsIHt2YWx1
ZTogInZhbHVlIiwgd3JpdGFibGU6ZmFsc2V9KTsKK3Nob3VsZFRocm93KCIndXNlIHN0cmljdCc7
IG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5LnByb3AgPSAnZmFpbCciKTsKK3Nob3VsZFRocm93
KCIndXNlIHN0cmljdCc7IGRlbGV0ZSBvYmplY3RXaXRoUmVhZG9ubHlQcm9wZXJ0eS5wcm9wIik7
CityZWFkb25seVByb3BOYW1lID0gInByb3AiOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0Jzsg
ZGVsZXRlIG9iamVjdFdpdGhSZWFkb25seVByb3BlcnR5W3JlYWRvbmx5UHJvcE5hbWVdIik7Citz
aG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyArK2V2YWwiKTsKK3Nob3VsZFRocm93KCIndXNlIHN0
cmljdCc7IGV2YWwrKyIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgLS1ldmFsIik7Citz
aG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBldmFsLS0iKTsKK3Nob3VsZFRocm93KCIndXNlIHN0
cmljdCc7IGlmICgwKSBkZWxldGUgK2EuYiIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0Jzsg
aWYgKDApIGRlbGV0ZSArK2EuYiIpOworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgaWYgKDAp
IGRlbGV0ZSB2b2lkIGEuYiIpOworCitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBz
dHJpY3QnOyBhID0gZmFsc2U7IHJldHVybiBhICE9PSBhcmd1bWVudHNbMF07IH0pKHRydWUpIik7
CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyBhcmd1bWVudHNbMF0g
PSBmYWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsgfSkodHJ1ZSkiKTsKK3Nob3VsZEJl
VHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVu
dHM7IH0pKHRydWUpWzBdIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJp
Y3QnOyBhcmd1bWVudHNbMF09ZmFsc2U7IHJldHVybiBhOyB9KSh0cnVlKSIpOworc2hvdWxkQmVU
cnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVy
biBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKCl7
J3VzZSBzdHJpY3QnOyAgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZh
bHNlKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgYXJn
dW1lbnRzWzBdPXRydWU7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0iKTsKK3No
b3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IGFyZ3VtZW50c1swXT1mYWxz
ZTsgYT10cnVlOyByZXR1cm4gYTsgfSkoKSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEp
eyd1c2Ugc3RyaWN0JzsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVudHM7IH0pKClb
MF0iKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uICgpeyd1c2Ugc3RyaWN0JzsgIGFyZ3VtZW50
c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIik7CisKKy8vIFNhbWUgdGVzdHMg
YWdhaW4sIHRoaXMgdGltZSBmb3JjaW5nIGFuIGFjdGl2YXRpb24gdG8gYmUgY3JlYXRlZCBhcyB3
ZWxsCitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7
IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhID0gZmFsc2U7IHJldHVybiBhICE9PSBhcmd1bWVu
dHNbMF07IH0pKHRydWUpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJp
Y3QnOyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF0gPSBm
YWxzZTsgcmV0dXJuIGEgIT09IGFyZ3VtZW50c1swXTsgfSkodHJ1ZSkiKTsKK3Nob3VsZEJlVHJ1
ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xv
Y2FsO30pKCk7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKHRydWUpWzBdIik7CitzaG91
bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3QnOyB2YXIgbG9jYWw7IChmdW5jdGlv
biAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09ZmFsc2U7IHJldHVybiBhOyB9KSh0cnVlKSIp
Oworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAo
ZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRydWU7IHJldHVybiBhcmd1bWVu
dHM7IH0pKGZhbHNlKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVuY3Rpb24gKCl7J3VzZSBzdHJp
Y3QnOyAgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSkoKTsgYXJndW1lbnRzWzBdPXRy
dWU7IHJldHVybiBhcmd1bWVudHM7IH0pKGZhbHNlKVswXSIpOworc2hvdWxkQmVUcnVlKCIoZnVu
Y3Rpb24gKGEpeyd1c2Ugc3RyaWN0JzsgdmFyIGxvY2FsOyAoZnVuY3Rpb24gKCl7bG9jYWw7fSko
KTsgYXJndW1lbnRzWzBdPXRydWU7IGE9ZmFsc2U7IHJldHVybiBhcmd1bWVudHM7IH0pKClbMF0i
KTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIChhKXsndXNlIHN0cmljdCc7IHZhciBsb2NhbDsg
KGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50c1swXT10cnVlOyByZXR1cm4gYXJndW1l
bnRzOyB9KSgpWzBdIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoYSl7J3VzZSBzdHJpY3Qn
OyB2YXIgbG9jYWw7IChmdW5jdGlvbiAoKXtsb2NhbDt9KSgpOyBhcmd1bWVudHNbMF09ZmFsc2U7
IGE9dHJ1ZTsgcmV0dXJuIGE7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uICgpeyd1
c2Ugc3RyaWN0JzsgIHZhciBsb2NhbDsgKGZ1bmN0aW9uICgpe2xvY2FsO30pKCk7IGFyZ3VtZW50
c1swXT10cnVlOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpWzBdIik7CisKK3Nob3VsZEJlVHJ1ZSgi
J3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gKCl7dmFyIGEgPSB0cnVlOyBldmFsKCd2YXIgYSA9IGZh
bHNlJyk7IHJldHVybiBhOyB9KSgpIik7CitzaG91bGRCZVRydWUoIihmdW5jdGlvbiAoKXt2YXIg
YSA9IHRydWU7IGV2YWwoJ1widXNlIHN0cmljdFwiOyB2YXIgYSA9IGZhbHNlJyk7IHJldHVybiBh
OyB9KSgpIik7CisKK3Nob3VsZEJlVW5kZWZpbmVkKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3Ry
aWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZiwgJ2FyZ3VtZW50
cycpLnZhbHVlOyB9KSgpIik7CitzaG91bGRCZVVuZGVmaW5lZCgiKGZ1bmN0aW9uIGYoYXJnKXsn
dXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYsICdj
YWxsZXInKS52YWx1ZTsgfSkoKSIpOworc2hvdWxkQmVVbmRlZmluZWQoIihmdW5jdGlvbiBmKGFy
Zyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihh
cmd1bWVudHMsICdjYWxsZWUnKS52YWx1ZTsgfSkoKSIpOworc2hvdWxkQmVVbmRlZmluZWQoIihm
dW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZXInKS52YWx1ZTsgfSkoKSIpOworc2hvdWxkQmVU
cnVlKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlcicpOyByZXR1cm4g
ZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIik7CitzaG91bGRCZVRydWUo
IihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVlJyk7IHJldHVybiBkZXNj
cmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1
bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihmLCAnY2FsbGVyJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9
PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIGYoYXJn
KXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihmLCAnYXJndW1lbnRzJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3Jp
cHRvci5zZXQ7IH0pKCkiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24g
ZigpIHsgZm9yKHZhciBpIGluIHRoaXMpOyB9KSgpOyB0cnVlOyIpCisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA0ZGQ4YzExNjY2YWMwNDU0NGMzNzc0MjQ1Y2Q4YTEwMmViM2UwOTJi
Li42OTRiMmM1N2EyYjExNjI4NDJhZWE4YWVhMzM3ZGQ3ZjJiMGY5Zjk4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDEwLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VTNV0gSW1wbGVtZW50IHN0
cmljdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDcwMQorCisgICAgICAgIFRlc3Q6IGZhc3QvanMvYmFzaWMtc3RyaWN0LW1vZGUuaHRtbAor
CisgICAgICAgIE92ZXJyaWRlIHRvU3RyaWN0VGhpc09iamVjdCBvbiB0aGUgZG9td2luZG93IHNv
IHRoYXQKKyAgICAgICAgaXQgY29ycmVjdGx5IHByb3ZpZGVzIHRoZSBzaGVsbCBvYmplY3Qgd2hl
biB1c2VkIGFzIHRoaXMKKyAgICAgICAgaW4gYSBzdHJpY3QgbW9kZSBmdW5jdGlvbi4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvd0Jhc2U6OnRvU3RyaWN0VGhpc09iamVjdCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisKIDIwMTAtMTAtMDggIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk0YjNjYTIyNmZkODE1
NTJjMmNlMjFkZTM0YzQwY2Q2MTQ2ZDQ4ODIuLmRmNTE0MDFkODcwMWYwMjZmYTdlYWE5ZTJlMDk4
YzQ3NzI3M2U4NTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMTE1MCw3ICsyMTE1MCw2IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRD
b25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0aWJp
bGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlz
aDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAog
CQkJCUVuZ2xpc2gsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXgg
ODJhYzFjZWUyNTFmNjA4OTMzN2FjMjA4NTNhODZlM2EyMjcwYTNkNy4uMjg3MmE1NDljNWE0NTE1
YjY2YTEyZDA4NjQwNTY5NWRhYzZkZGM5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcApAQCAtMTQ2LDYgKzE0NiwxMSBAQCBKU09iamVjdCogSlNET01XaW5kb3dCYXNl
Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3QKICAgICByZXR1cm4gc2hlbGwoKTsKIH0K
IAorSlNWYWx1ZSBKU0RPTVdpbmRvd0Jhc2U6OnRvU3RyaWN0VGhpc09iamVjdChFeGVjU3RhdGUq
KSBjb25zdAoreworICAgIHJldHVybiBzaGVsbCgpOworfQorCiBKU0RPTVdpbmRvd1NoZWxsKiBK
U0RPTVdpbmRvd0Jhc2U6OnNoZWxsKCkgY29uc3QKIHsKICAgICByZXR1cm4gZCgpLT5zaGVsbDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCmluZGV4IGY0ZjFlZjllZWEwMTY2OTMy
ZWNhOTU1ZWNkMDliYTZkMTI5Njg2ZjguLmNhZmNhNzNhYzkzZGYwMGM4YzczZjU1MDc1YjQzZTU5
ZmNlZmNmNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNjksOCAr
NjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gRG9uJ3QgY2FsbCB0aGlz
IHZlcnNpb24gb2YgYWxsb3dzQWNjZXNzRnJvbSAtLSBpdCdzIGEgc2xpZ2h0bHkgaW5jb3JyZWN0
IGltcGxlbWVudGF0aW9uIHVzZWQgb25seSBieSBXZWJTY3JpcHRPYmplY3QKICAgICAgICAgdmly
dHVhbCBib29sIGFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNv
bnN0OwotCisgICAgICAgIAogICAgICAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHRvVGhpc09i
amVjdChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1
ZSB0b1N0cmljdFRoaXNPYmplY3QoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNE
T01XaW5kb3dTaGVsbCogc2hlbGwoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNDOjpKU0ds
b2JhbERhdGEqIGNvbW1vbkpTR2xvYmFsRGF0YSgpOwo=
</data>
<flag name="review"
          id="60263"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>