<?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>225135</bug_id>
          
          <creation_ts>2021-04-27 20:47:12 -0700</creation_ts>
          <short_desc>[JSC] Optimize bound function calls</short_desc>
          <delta_ts>2023-02-15 01:31:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1754897</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-27 20:47:12 -0700</bug_when>
    <thetext>[JSC] Optimize bound function calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754898</commentid>
    <comment_count>1</comment_count>
      <attachid>427233</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-27 20:47:41 -0700</bug_when>
    <thetext>Created attachment 427233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755921</commentid>
    <comment_count>2</comment_count>
      <attachid>427489</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-30 22:34:13 -0700</bug_when>
    <thetext>Created attachment 427489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755924</commentid>
    <comment_count>3</comment_count>
      <attachid>427491</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-01 00:31:36 -0700</bug_when>
    <thetext>Created attachment 427491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755925</commentid>
    <comment_count>4</comment_count>
      <attachid>427492</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-01 00:40:03 -0700</bug_when>
    <thetext>Created attachment 427492
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755926</commentid>
    <comment_count>5</comment_count>
      <attachid>427493</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-01 01:45:07 -0700</bug_when>
    <thetext>Created attachment 427493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755927</commentid>
    <comment_count>6</comment_count>
      <attachid>427494</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-01 03:20:34 -0700</bug_when>
    <thetext>Created attachment 427494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755980</commentid>
    <comment_count>7</comment_count>
      <attachid>427509</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-01 12:03:21 -0700</bug_when>
    <thetext>Created attachment 427509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756018</commentid>
    <comment_count>8</comment_count>
      <attachid>427517</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-01 20:46:56 -0700</bug_when>
    <thetext>Created attachment 427517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756023</commentid>
    <comment_count>9</comment_count>
      <attachid>427517</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-01 22:02:57 -0700</bug_when>
    <thetext>Comment on attachment 427517
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:764
&gt; +        RegisterID* emitCreateArgumentsButterflyExcludingThis(RegisterID* dst, RegisterID* count);

Did you mean &quot;target&quot; instead of &quot;count&quot;?

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1939
&gt; +    return generator.emitCreateArgumentsButterflyExcludingThis(generator.finalDestination(dst), additionalCount.get());

Is the 2nd argument supposed to be &quot;additionalCount&quot;?  This doesn&apos;t match the `@createArgumentsButterfly(this);` in FunctionPrototype.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756790</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-04 20:48:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/77539823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758446</commentid>
    <comment_count>11</comment_count>
      <attachid>427517</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-10 01:29:40 -0700</bug_when>
    <thetext>Comment on attachment 427517
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:764
&gt;&gt; +        RegisterID* emitCreateArgumentsButterflyExcludingThis(RegisterID* dst, RegisterID* count);
&gt; 
&gt; Did you mean &quot;target&quot; instead of &quot;count&quot;?

Changed to target. Yeah, &quot;count&quot; is the one from the old patch.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1939
&gt;&gt; +    return generator.emitCreateArgumentsButterflyExcludingThis(generator.finalDestination(dst), additionalCount.get());
&gt; 
&gt; Is the 2nd argument supposed to be &quot;additionalCount&quot;?  This doesn&apos;t match the `@createArgumentsButterfly(this);` in FunctionPrototype.js.

Changed to target.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758455</commentid>
    <comment_count>12</comment_count>
      <attachid>428162</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-10 03:05:41 -0700</bug_when>
    <thetext>Created attachment 428162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758457</commentid>
    <comment_count>13</comment_count>
      <attachid>428163</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-10 03:12:47 -0700</bug_when>
    <thetext>Created attachment 428163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1933660</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2023-02-14 17:49:24 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/10116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1933760</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-02-15 01:30:58 -0800</bug_when>
    <thetext>Committed 260303@main (d99a52c87599): &lt;https://commits.webkit.org/260303@main&gt;

Reviewed commits have been landed. Closing PR #10116 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427233</attachid>
            <date>2021-04-27 20:47:41 -0700</date>
            <delta_ts>2021-04-30 22:34:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210427204741.patch</filename>
            <type>text/plain</type>
            <size>58751</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTMzMGQyMzZhMjljN2Y1NzQ0NWIyMjU1NGE5ZjUwYjY5ODNhODU5Li4yOTBlYzZiNDk5NzU1Y2Ix
YmNiZGM5OTQxYjgxN2JlMGY0NGRjODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAyMS0wNC0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1bmN0aW9uIGNhbGxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzOgorICAg
ICAgICAoYmluZCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVz
ZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19jcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6
CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9i
YmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlw
ZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25z
Lmg6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAg
ICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAg
ICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25D
YWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQm91bmRG
dW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisKIDIwMjEt
MDQtMjMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc2NDg2LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGIwMmU1NjAyMTAyNjQ5OWVmMzc1YmM2MDkx
NGE5YTRkZTAxYjJkZjYuLjQyNTUyMDkzOTQyNzU3NWNmYmE3MmUzNzRmYTM4N2VmNzlhZmY5YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAg
LTE4MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhoYXNPd25Qcm9wZXJ0
eUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkgXAogICAgIG1hY3Jv
KGVudHJpZXMpIFwKLSAgICBtYWNybyhvdXRPZkxpbmVSZWFjdGlvbkNvdW50cykKKyAgICBtYWNy
byhvdXRPZkxpbmVSZWFjdGlvbkNvdW50cykgXAogCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlw
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5q
cwppbmRleCBhZjI5YWZkODM1NmNhZjliN2U5OGY0YjY2NzkxYTQzYTU3NDQ1OWFhLi42YjI1Mzk5
MDEwNzc0NWZiZTlhMTcxY2JjMmYyZjI4ZDAwZjY3MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCkBAIC02MSw4ICs2MSw3
IEBAIGZ1bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAg
IHZhciB0YXJnZXQgPSB0aGlzOwotICAgIGlmICghQGlzQ2FsbGFibGUodGFyZ2V0KSkKKyAgICBp
ZiAoIUBpc0NhbGxhYmxlKHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBp
cyBub3QgYSBmdW5jdGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQiKTsKIAogICAg
IHZhciBhcmd1bWVudENvdW50ID0gQGFyZ3VtZW50Q291bnQoKTsKQEAgLTcwLDEyICs2OSwxMiBA
QCBmdW5jdGlvbiBiaW5kKHRoaXNWYWx1ZSkKICAgICB2YXIgbnVtQm91bmRBcmdzID0gMDsKICAg
ICBpZiAoYXJndW1lbnRDb3VudCA+IDEpIHsKICAgICAgICAgbnVtQm91bmRBcmdzID0gYXJndW1l
bnRDb3VudCAtIDE7Ci0gICAgICAgIGJvdW5kQXJncyA9IEBjcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHkoKTsKKyAgICAgICAgYm91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSh0aGlz
KTsKICAgICB9CiAKICAgICB2YXIgbGVuZ3RoID0gMDsKLSAgICBpZiAoQGhhc093bkxlbmd0aFBy
b3BlcnR5KHRhcmdldCkpIHsKLSAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0gdGFyZ2V0Lmxlbmd0
aDsKKyAgICBpZiAoQGhhc093bkxlbmd0aFByb3BlcnR5KHRoaXMpKSB7CisgICAgICAgIHZhciBs
ZW5ndGhWYWx1ZSA9IHRoaXMubGVuZ3RoOwogICAgICAgICBpZiAodHlwZW9mIGxlbmd0aFZhbHVl
ID09PSAibnVtYmVyIikgewogICAgICAgICAgICAgbGVuZ3RoVmFsdWUgPSBAdG9JbnRlZ2VyT3JJ
bmZpbml0eShsZW5ndGhWYWx1ZSk7CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBj
YXJlIGFib3V0IHBvc2l0aXZlIGxlbmd0aFZhbHVlcywgaG93ZXZlciwgdGhpcyBjb21wYXJpc2lv
bgpAQCAtODUsOSArODQsOSBAQCBmdW5jdGlvbiBiaW5kKHRoaXNWYWx1ZSkKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHZhciBuYW1lID0gdGFyZ2V0Lm5hbWU7CisgICAgdmFyIG5hbWUgPSB0aGlz
Lm5hbWU7CiAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAic3RyaW5nIikKICAgICAgICAgbmFtZSA9
ICIiOwogCi0gICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0YXJnZXQsIHRoaXNWYWx1ZSwg
Ym91bmRBcmdzLCBsZW5ndGgsIG5hbWUpOworICAgIHJldHVybiBAbWFrZUJvdW5kRnVuY3Rpb24o
dGhpcywgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFtZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjYjBlN2M4Yzli
YmJhMTRjNTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhLi4yNmFmMDZlZjQ0YWZkYjhjMjc3YjViZGQ3
MTFlMDQ4MWNhYTY2MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKQEAgLTExMSw5ICsxMTEsMTAgQEAKICAgICAgICAgZHN0OiBWaXJ0dWFs
UmVnaXN0ZXIsCiAgICAgfQogCi1vcCA6Y3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHksCitvcCA6
Y3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMsCiAgICAgYXJnczogewog
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgdGFyZ2V0OiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgfQogCiBvcCA6Y3JlYXRlX3RoaXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCAwMTZhMDI3ZmEzM2FiNzk0
OTQzMTJhNGE0NzdkZmM1YjJlN2EwMGQ3Li45NDMyMGU2ZTQ3OWNhMGNjM2JmZGVmNDM5MmFlYjRm
YmY2ODIzYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKQEAgLTkyLDcgKzkyLDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUK
ICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNhc2Ugb3BfY3JlYXRlX2Rp
cmVjdF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czoKLSAg
ICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5OgogICAgIGNhc2Ugb3BfZ2V0X3Jl
c3RfbGVuZ3RoOgogICAgIGNhc2Ugb3BfY2hlY2tfdHJhcHM6CiAgICAgY2FzZSBvcF9nZXRfYXJn
dW1lbnQ6CkBAIC0xMDMsNiArMTAyLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBj
YXNlIG9wX2dldF9zY29wZToKICAgICAgICAgcmV0dXJuOwogCisgICAgVVNFUyhPcENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIHRhcmdldCkKICAgICBVU0VTKE9wVG9UaGlz
LCBzcmNEc3QpCiAgICAgVVNFUyhPcENoZWNrVGR6LCB0YXJnZXRWaXJ0dWFsUmVnaXN0ZXIpCiAg
ICAgVVNFUyhPcElkZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKQEAgLTU1MSw3ICs1NTEsNyBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BDcmVhdGVEaXJlY3RBcmd1bWVu
dHMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBkc3QpCiAgICAgREVG
UyhPcENyZWF0ZUNsb25lZEFyZ3VtZW50cywgZHN0KQotICAgIERFRlMoT3BDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHksIGRzdCkKKyAgICBERUZTKE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhj
bHVkaW5nVGhpcywgZHN0KQogICAgIERFRlMoT3BEZWxCeUlkLCBkc3QpCiAgICAgREVGUyhPcERl
bEJ5VmFsLCBkc3QpCiAgICAgREVGUyhPcFVuc2lnbmVkLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDQyNjA5M2YxMTc2ODBiNTE3ZDdjYjg2NDExN2MzNDYwMDA0ZmIzMzQuLjI1NDA4M2ZiNDE5
NjE3YjlmYTRkNzBkYWI5MmFiZTE5NTZmODlkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yODcy
LDkgKzI4NzIsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFz
eW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZQogICAgIHJldHVybiBkc3Q7CiB9
CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5KFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHRhcmdldCkKIHsKLSAgICBPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTo6
ZW1pdCh0aGlzLCBkc3QpOworICAgIE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5n
VGhpczo6ZW1pdCh0aGlzLCBkc3QsIHRhcmdldCk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IGU1MTFkYzI3NTU1ZGU1Yjg4NDQ3ZTMzM2Y5ZTE2NjI1YTg1NjI2MWMuLjM2
YjhiMDk0ZGIxN2JmNWE3OTZjNzVkMmM0M2I4NjI2NmViMTA2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTc2MSw3ICs3NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dENyZWF0ZVByb21pc2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJv
b2wgaXNJbnRlcm5hbFByb21pc2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2Vu
ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogbmV3VGFyZ2V0KTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUFyZ3Vt
ZW50c0J1dHRlcmZseShSZWdpc3RlcklEKiBkc3QpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGNvdW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlRmllbGRJ
bml0aWFsaXphdGlvbklmTmVlZGVkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY29uc3Ry
dWN0b3IsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIHZv
aWQgZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAgIGJvb2wgbmVlZHNU
RFpDaGVjayhjb25zdCBWYXJpYWJsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDNjYmQxMjA5OWU4NWIwYjQyNjIw
ODBhNDNhMzVkZTgxZjJiZDU3YjkuLmY0MjIzZDkyNmFiNjdmMTBmYjc0NGEwYzMxNzgzYTIzMjY4
YTVjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKQEAgLTE5MzMsOCArMTkzMywxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX25ld1Byb21pc2UoSlNDOjpCeXRlY29kZUdl
bmVyYQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2NyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIEpTQzo6UmVnaXN0ZXJJRCogZHN0KQogewotICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3RO
b2RlKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHko
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7CisgICAgQXJndW1lbnRMaXN0Tm9kZSog
bm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYWRkaXRp
b25hbENvdW50ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+
bV9uZXh0KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGFkZGl0aW9u
YWxDb3VudC5nZXQoKSk7CiB9CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklO
U0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDVk
MjVmZWE2MGM5YjE2ZDRlNmVmM2QxY2FmMDU2MDkxMmQ4ZTk2MjMuLmUwZmI3NmQ5NjAyODUyY2Nm
MDNlODk2NmY0YjJjNmYyODEyZGJjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMyMzAsNyAr
MzIzMCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldEZvck5vZGUobm9k
ZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5j
bG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzOgogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG1fdm0uaW1tdXRhYmxl
QnV0dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0
ZUFycmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uZ2V0KCkpOwog
ICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCA0MDhkYzA4YzE0MzA4M2Y4MTg0OTI3YjJhOGU1OTUyZDdhYjA4
ZGZhLi5hMDQyODFjOWU4MzdlYzUxMDBjNjNkODk2ZWQxMTEwM2EzMzU1MmY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTgsNiAr
NTgsNyBAQAogI2luY2x1ZGUgIkluQnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkluc3RhbmNlT2ZT
dGF0dXMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5k
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFi
bGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgpAQCAtMjAxLDcg
KzIwMiw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lkIGlubGluZUNhbGwoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFt
ZTo6S2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJl
dHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNh
bGwuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRs
ZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
KyAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3Vs
dCwgQ2FsbFZhcmlhbnQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1
bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rv
cj4KICAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3Vs
dCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a3NGdW5jdG9yPgpAQCAtMTkyNyw3ICsxOTI4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRp
bWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMK
IAogICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxp
emF0aW9uS2luZCk7CiAgICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAg
ICBpZiAoaGFuZGxlSW50cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBpbnRyaW5z
aWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlv
biwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRy
aW5zaWNDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHQsIGNhbGxlZSwgaW50cmluc2ljLCByZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG9zckV4aXRJbmRleCwga2lu
ZCwgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CiAgICAgICAgICAg
ICBlbmRTcGVjaWFsQ2FzZSgpOwogICAgICAgICAgICAgcmV0dXJuIENhbGxPcHRpbWl6YXRpb25S
ZXN1bHQ6OklubGluZWQ7CiAgICAgICAgIH0KQEAgLTIzMjIsNyArMjMyMyw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGlu
dCByZWdpc3Rlck9mZnNlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1i
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3Bl
cmFuZCByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJp
YW50IGNhbGxWYXJpYW50LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5k
ZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0co
IiAgICAgICBUaGUgaW50cmluc2ljIGlzICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTM3NTYs
NiArMzc1Nyw5NSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5v
ZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYwogI2VuZGlmCiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIEJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2ljOiB7CisgICAgICAgICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxWYXJpYW50LmZ1bmN0aW9uKCk7CisgICAgICAg
ICAgICBpZiAoIWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNC
b3VuZEZ1bmN0aW9uKj4oKm1fdm0sIGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGlmICghYm91bmRG
dW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlu
c2VydENoZWNrcygpOworCisgICAgICAgICAgICBDb2RlT3JpZ2luIG9sZEV4aXRPcmlnaW4gPSBt
X2N1cnJlbnRFeGl0T3JpZ2luOworICAgICAgICAgICAgbV9jdXJyZW50RXhpdE9yaWdpbiA9IGN1
cnJlbnRDb2RlT3JpZ2luKCk7CisKKyAgICAgICAgICAgIE9wZXJhbmQgaW5saW5lQ2FsbEZyYW1l
U3RhcnQgPSBWaXJ0dWFsUmVnaXN0ZXIobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZp
cnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLnZhbHVlKCkgKyBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVycyk7CisgICAgICAgICAgICBlbnN1cmVMb2NhbHMoaW5saW5lQ2FsbEZy
YW1lU3RhcnQudG9Mb2NhbCgpICsgMSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
KTsKKworICAgICAgICAgICAgSW5saW5lU3RhY2tFbnRyeSogY2FsbGVyU3RhY2tUb3AgPSBtX2lu
bGluZVN0YWNrVG9wOworICAgICAgICAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0Vu
dHJ5KHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIGJvdW5kRnVuY3Rpb24sIHJlc3VsdCwgaW5saW5l
Q2FsbEZyYW1lU3RhcnQudmlydHVhbFJlZ2lzdGVyKCksIDEsIGtpbmQsIGNvbnRpbnVhdGlvbkJs
b2NrKTsKKworICAgICAgICAgICAgLy8gVGhpcyBpcyB3aGVyZSB0aGUgYWN0dWFsIGlubGluaW5n
IHJlYWxseSBoYXBwZW5zLgorICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBvbGRJbmRleCA9IG1f
Y3VycmVudEluZGV4OworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBCeXRlY29kZUluZGV4
KDApOworCisgICAgICAgICAgICBJbmxpbmVWYXJpYWJsZURhdGEgaW5saW5lVmFyaWFibGVEYXRh
OworICAgICAgICAgICAgaW5saW5lVmFyaWFibGVEYXRhLmlubGluZUNhbGxGcmFtZSA9IG1faW5s
aW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgaW5saW5lVmFyaWFi
bGVEYXRhLmFyZ3VtZW50UG9zaXRpb25TdGFydCA9IGFyZ3VtZW50UG9zaXRpb25TdGFydDsKKyAg
ICAgICAgICAgIGlubGluZVZhcmlhYmxlRGF0YS5jYWxsZWVWYXJpYWJsZSA9IG51bGxwdHI7CisK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2Fs
bEZyYW1lLT5pc0Nsb3N1cmVDYWxsID09IGNhbGxWYXJpYW50LmlzQ2xvc3VyZUNhbGwoKSk7Cisg
ICAgICAgICAgICBpZiAoY2FsbFZhcmlhbnQuaXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGVlVmFyaWFibGUpOworICAgICAgICAgICAgICAgIGlu
bGluZVZhcmlhYmxlRGF0YS5jYWxsZWVWYXJpYWJsZSA9IGNhbGxlZVZhcmlhYmxlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBtX2dyYXBoLm1faW5saW5lVmFyaWFibGVEYXRhLmFwcGVu
ZChpbmxpbmVWYXJpYWJsZURhdGEpOworCisgICAgICAgICAgICAvLyBNYWtlIGEgY2FsbC4gV2Ug
ZG9uJ3QgdHJ5IHRvIGdldCBmYW5jeSB3aXRoIHVzaW5nIHRoZSBzbWFsbGVzdCBvcGVyYW5kIG51
bWJlciBiZWNhdXNlCisgICAgICAgICAgICAvLyB0aGUgc3RhY2sgbGF5b3V0IHBoYXNlIHNob3Vs
ZCBjb21wcmVzcyB0aGUgc3RhY2sgYW55d2F5LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
IC8vIFdlIGRvIG5vdCBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgc3RhY2sgZm9yIHRoaXMgY2FsbC4g
V2UgbmV3bHkgYWxsb2NhdGUgc3RhY2sgc3BhY2UgYW5kIGZpbGwgaXQgd2l0aCB2YWx1ZXMsCisg
ICAgICAgICAgICAvLyB0byBrZWVwIE9TUiBleGl0IGNvcnJlY3Qgd2hlbiB3ZSBleGl0IGluIHRo
ZSBtaWRkbGUgb2YgdGhpcyBzdGFjayBjb25zdHJ1Y3Rpb24uCisKKyAgICAgICAgICAgIEpTSW1t
dXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsK
KworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbWV0ZXJzID0gYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM7CisgICAgICAgICAgICBudW1iZXJPZlBhcmFtZXRlcnMrKzsgLy8gVHJ1
ZSByZXR1cm4gUEMuCisgICAgICAgICAgICBudW1iZXJPZlBhcmFtZXRlcnMgKz0gYm91bmRBcmdz
ID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDA7CisKKyAgICAgICAgICAgIC8vIFN0YXJ0IHdpdGgg
YSByZWdpc3RlciBvZmZzZXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgbGFzdCBpbi11c2UgcmVn
aXN0ZXIuCisgICAgICAgICAgICBpbnQgbmV3UmVnaXN0ZXJPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm51bUNhbGxlZUxv
Y2FscygpIC0gMSkub2Zmc2V0KCk7CisgICAgICAgICAgICBuZXdSZWdpc3Rlck9mZnNldCAtPSBu
dW1iZXJPZlBhcmFtZXRlcnM7CisgICAgICAgICAgICBuZXdSZWdpc3Rlck9mZnNldCAtPSBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKKworICAgICAgICAgICAgLy8gR2V0IHRoZSBh
bGlnbm1lbnQgcmlnaHQuCisgICAgICAgICAgICBuZXdSZWdpc3Rlck9mZnNldCA9IC1XVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLW5ld1JlZ2lzdGVy
T2Zmc2V0KTsKKworICAgICAgICAgICAgZW5zdXJlTG9jYWxzKG1faW5saW5lU3RhY2tUb3AtPnJl
bWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIobmV3UmVnaXN0ZXJPZmZzZXQpKS50b0xvY2FsKCkp
OworCisgICAgICAgICAgICAvLyBJc3N1ZSBTZXRMb2NhbHMuIFRoaXMgaGFzIHR3byBlZmZlY3Rz
OgorICAgICAgICAgICAgLy8gMSkgVGhhdCdzIGhvdyBoYW5kbGVDYWxsKCkgc2VlcyB0aGUgYXJn
dW1lbnRzLgorICAgICAgICAgICAgLy8gMikgSWYgd2UgaW5saW5lIHRoZW4gdGhpcyBlbnN1cmVz
IHRoYXQgdGhlIGFyZ3VtZW50cyBhcmUgZmx1c2hlZCBzbyB0aGF0IGlmIHlvdSB1c2UKKyAgICAg
ICAgICAgIC8vICAgIHRoZSBkcmVhZGVkIGFyZ3VtZW50cyBvYmplY3Qgb24gdGhlIGNhbGwgdGFy
Z2V0LCB0aGUgcmlnaHQgdGhpbmdzIGhhcHBlbi4gV2VsbCwgc29ydCBvZiAtCisgICAgICAgICAg
ICAvLyAgICBzaW5jZSB3ZSBvbmx5IHJlYWxseSBjYXJlIGFib3V0ICd0aGlzJyBpbiB0aGlzIGNh
c2UuIEJ1dCB3ZSdyZSBub3QgZ29pbmcgdG8gdGFrZSB0aGF0CisgICAgICAgICAgICAvLyAgICBz
aG9ydGN1dC4KKyAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmd1bWVudEluZGV4ID0gMDsK
KyAgICAgICAgICAgIHNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMo
Y3VycmVudEFyZ3VtZW50SW5kZXgrKywgbmV3UmVnaXN0ZXJPZmZzZXQpLCBqc0NvbnN0YW50KGJv
dW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpKSwgSW1tZWRpYXRlTmFrZWRTZXQpOworICAgICAgICAg
ICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAg
ICAgICAgIHNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoY3VycmVu
dEFyZ3VtZW50SW5kZXgrKywgbmV3UmVnaXN0ZXJPZmZzZXQpLCBqc0NvbnN0YW50KGJvdW5kQXJn
cy0+Z2V0KGluZGV4KSksIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gMSkgeworICAgICAgICAg
ICAgICAgIGZvciAoaW50IGluZGV4ID0gMTsgaW5kZXggPCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpczsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRleCsrLCBuZXdSZWdpc3Rl
ck9mZnNldCksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaW5k
ZXgsIHJlZ2lzdGVyT2Zmc2V0KSksIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gV2UndmUgc2V0IHNvbWUgbG9jYWxzLCBidXQgdGhleSBhcmUgbm90
IHVzZXItdmlzaWJsZSBzaW5jZSB0aGV5IGFyZSBuZXdseSBhbGxvY2F0ZWQgZm9yIHRoaXMgaW5s
aW5lZCBjYWxsLiBJdCdzIHN0aWxsIE9LIHRvIGV4aXQgZnJvbSBoZXJlLgorICAgICAgICAgICAg
Ly8gSlNCb3VuZEZ1bmN0aW9uJ3MgdHJhbXBvbGluZSBkb2VzIG5vdCBoYXZlIHVzZXItdmlzaWJs
ZSBlZmZlY3QuIFNvIGV4aXRpbmcgdG8gdGhlIHByZS1ib3VuZCBmdW5jdGlvbiBsb2NhdGlvbiBp
cyBPSy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRXhpdE9LKTsKKworICAgICAgICAgICAgaGFuZGxlQ2FsbChyZXN1bHQsIENhbGwsIGtpbmQs
IG9zckV4aXRJbmRleCwganNDb25zdGFudChib3VuZEZ1bmN0aW9uLT50YXJnZXRGdW5jdGlvbigp
KSwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgbmV3UmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5rU3Rh
dHVzKENhbGxWYXJpYW50KGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpKSwgcHJlZGlj
dGlvbik7CisKKyAgICAgICAgICAgIG1fY3VycmVudEV4aXRPcmlnaW4gPSBvbGRFeGl0T3JpZ2lu
OworICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRJbmRleDsKKyAgICAgICAgICAgIGRp
ZFNldFJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
QEAgLTgxMTEsMTEgKzgyMDEsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9jbG9uZWRf
YXJndW1lbnRzKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50
c19idXR0ZXJmbHk6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgICAgICBjYXNlIG9w
X2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzOiB7CisgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM+KCk7CiAgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNV
c2UoKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHkpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9h
cmd1bWVudHNfYnV0dGVyZmx5KTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRk
VG9HcmFwaChDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBFZGdlKGdldChi
eXRlY29kZS5tX3RhcmdldCksIENlbGxVc2UpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcyk7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpAQCAt
ODQ3OSwyOCArODU2OSwzMiBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5s
aW5lU3RhY2tFbnRyeSgKICAgICAsIG1fcmV0dXJuVmFsdWUocmV0dXJuVmFsdWUpCiAgICAgLCBt
X2NhbGxlcihieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCkKIHsKLSAgICB7Ci0gICAg
ICAgIG1fZXhpdFByb2ZpbGUuaW5pdGlhbGl6ZShtX3Byb2ZpbGVkQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCkpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCA9
IDA7CiAKLSAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX3Byb2ZpbGVkQmxvY2st
Pm1fbG9jayk7Ci0gICAgICAgIG1fbGF6eU9wZXJhbmRzLmluaXRpYWxpemUobG9ja2VyLCBtX3By
b2ZpbGVkQmxvY2stPmxhenlPcGVyYW5kVmFsdWVQcm9maWxlcyhsb2NrZXIpKTsKKyAgICBpZiAo
bV9wcm9maWxlZEJsb2NrKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZXhpdFByb2ZpbGUu
aW5pdGlhbGl6ZShtX3Byb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpOworCisgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fcHJvZmlsZWRCbG9jay0+bV9sb2Nr
KTsKKyAgICAgICAgICAgIG1fbGF6eU9wZXJhbmRzLmluaXRpYWxpemUobG9ja2VyLCBtX3Byb2Zp
bGVkQmxvY2stPmxhenlPcGVyYW5kVmFsdWVQcm9maWxlcyhsb2NrZXIpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gV2UgZG8gdGhpcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrIGJlY2F1
c2Ugd2Ugd2FudCB0byBlbmNvdXJhZ2UgU3RydWN0dXJlU3R1YkluZm8ncworICAgICAgICAgICAg
Ly8gdG8gYmUgcG90ZW50aWFsbHkgYWRkZWQgdG8gb3BlcmF0aW9ucyBhbmQgYmVjYXVzZSB0aGUg
cHJvZmlsZWQgYmxvY2sgY291bGQgYmUgaW4gdGhlCisgICAgICAgICAgICAvLyBtaWRkbGUgb2Yg
TExJbnQtPkpJVCB0aWVyLXVwIGluIHdoaWNoIGNhc2Ugd2Ugd291bGQgYmUgYWRkaW5nIHRoZSBp
bmZvJ3MgcmlnaHQgbm93LgorICAgICAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFz
ZWxpbmVKSVRQcm9maWxpbmcoKSkKKyAgICAgICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdl
dElDU3RhdHVzTWFwKGxvY2tlciwgbV9iYXNlbGluZU1hcCk7CisgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIC8vIFdlIGRvIHRoaXMgd2hpbGUgaG9sZGluZyB0aGUgbG9jayBiZWNhdXNlIHdl
IHdhbnQgdG8gZW5jb3VyYWdlIFN0cnVjdHVyZVN0dWJJbmZvJ3MKLSAgICAgICAgLy8gdG8gYmUg
cG90ZW50aWFsbHkgYWRkZWQgdG8gb3BlcmF0aW9ucyBhbmQgYmVjYXVzZSB0aGUgcHJvZmlsZWQg
YmxvY2sgY291bGQgYmUgaW4gdGhlCi0gICAgICAgIC8vIG1pZGRsZSBvZiBMTEludC0+SklUIHRp
ZXItdXAgaW4gd2hpY2ggY2FzZSB3ZSB3b3VsZCBiZSBhZGRpbmcgdGhlIGluZm8ncyByaWdodCBu
b3cuCi0gICAgICAgIGlmIChtX3Byb2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5n
KCkpCi0gICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldElDU3RhdHVzTWFwKGxvY2tlciwg
bV9iYXNlbGluZU1hcCk7Ci0gICAgfQotICAgIAotICAgIENvZGVCbG9jayogb3B0aW1pemVkQmxv
Y2sgPSBtX3Byb2ZpbGVkQmxvY2stPnJlcGxhY2VtZW50KCk7Ci0gICAgbV9vcHRpbWl6ZWRDb250
ZXh0Lm9wdGltaXplZENvZGVCbG9jayA9IG9wdGltaXplZEJsb2NrOwotICAgIGlmIChPcHRpb25z
Ojp1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24oKSAmJiBvcHRpbWl6ZWRCbG9jaykgewot
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG9wdGltaXplZEJsb2NrLT5tX2xvY2sp
OwotICAgICAgICBvcHRpbWl6ZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX29wdGlt
aXplZENvbnRleHQubWFwKTsKKyAgICAgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRCbG9jayA9IG1f
cHJvZmlsZWRCbG9jay0+cmVwbGFjZW1lbnQoKTsKKyAgICAgICAgbV9vcHRpbWl6ZWRDb250ZXh0
Lm9wdGltaXplZENvZGVCbG9jayA9IG9wdGltaXplZEJsb2NrOworICAgICAgICBpZiAoT3B0aW9u
czo6dXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uKCkgJiYgb3B0aW1pemVkQmxvY2spIHsK
KyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIob3B0aW1pemVkQmxvY2stPm1f
bG9jayk7CisgICAgICAgICAgICBvcHRpbWl6ZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2Vy
LCBtX29wdGltaXplZENvbnRleHQubWFwKTsKKyAgICAgICAgfQorICAgICAgICBieXRlQ29kZVBh
cnNlci0+bV9pY0NvbnRleHRTdGFjay5hcHBlbmQoJm1fb3B0aW1pemVkQ29udGV4dCk7CisKKyAg
ICAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwID0gc3RkOjptYXg8
aW50Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpOwogICAgIH0KLSAgICBieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFjay5hcHBlbmQo
Jm1fb3B0aW1pemVkQ29udGV4dCk7Ci0gICAgCi0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzV2l0aEZpeHVwID0gc3RkOjptYXg8aW50Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogCiAgICAgaWYgKG1fY2FsbGVyKSB7CiAg
ICAgICAgIC8vIElubGluZSBjYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IGY1ZTIyYTEwYTRkMTI2NWRiNWNkYzcxYjIzMWQwNmQ1MTYx
N2VkNmMuLmJmNGY3OTczZTkzNDE2ZGU4NjZmYWM3MTM3NzA3YTg2YjE3ZTMzZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTIzNiw3ICsy
MzYsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVj
dF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAgICBj
YXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3Vt
ZW50c19idXR0ZXJmbHk6CisgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseV9l
eGNsdWRpbmdfdGhpczoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICBjYXNl
IG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGNmMDFiY2UwNTNhM2U1Nzdk
ZTk5N2IwMzMzOWI3YjE0YzY2ODg5MjEuLmMyNDBhYTI2MTNmMGQxMjAxZWY0OGQ4YTJkMjJkOTEx
NTU5MjNhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBA
IC01NTksNyArNTU5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIENyZWF0
ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBj
YXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRl
cmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAg
ICAgICAgIHJlYWQoU3RhY2spOwogICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAg
ICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKaW5kZXggY2ZjMjIzMDAwYTUzMmIxYzNiMzk4MGU1NGE1MDFhM2QzZGZhYWIwOS4u
ZGQ1MWZhMzhjODgxMTBkOTFiOGZlNTU4ZmZlMGQ1NjdiZjYxNmE2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50
czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25l
ZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICBjYXNl
IENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBDYWxsOgog
ICAgIGNhc2UgQ2FsbEV2YWw6CiAgICAgY2FzZSBDYWxsRm9yd2FyZFZhcmFyZ3M6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzNzRkNTUzMDVkZjhk
ODc1MDMyZTA0Nzc3YmMzMjIxOWE1NTE1ODBhLi5kMDZkODY0MmY3N2VmM2FjNGY3NzUxODUwMTk5
MGE1MDNkNzI4MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTI4ODAsNyArMjg4MCw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAg
ICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgY2FzZSBJbnZhbGlk
YXRpb25Qb2ludDoKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAg
ICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICAgICAg
ICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGRlZmF1bHQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggYWYyNjgyODZjODEw
MDlkMTgyNmNiMTBiY2Y1N2I1MTEwYTRhNzMzOS4uN2M0OWRhYTkzMjQ0NjQ3NDdlMDRjNmJmNmY5
YzcxMzk5MTcyNjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApA
QCAtNDUxLDcgKzQ1MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhDcmVhdGVTY29wZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENy
ZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUGhhbnRvbUNs
b25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1h
Y3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8o
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oR2V0RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0
VG9Bcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRBcmd1bWVudCwg
Tm9kZVJlc3VsdEpTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAppbmRleCA5MjMxZjQ3Y2U5N2U4Mzc2NGRhMzgwMTkyNDllZjk3MDMxZWMzYWJkLi43MGM5
M2Y5ZTU3YjdkMzQ3YjFlMDM1YWI0NjYzMjgxYjQ2YTZhYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl
ICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxl
QnV0dGVyZmx5LmgiCkBAIC0yMDU4LDIwICsyMDU5LDQwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMsIEpTQ2VsbCosIChKU0dsb2JhbE9i
amVjCiAgICAgICAgIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhcmd1bWVudFN0YXJ0LCBsZW5n
dGgsIGNhbGxlZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHksIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCkpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
RXhjbHVkaW5nVGhpcywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
Z2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBKU0NlbGwqIHRh
cmdldCkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEFTU0VSVChhcmd1bWVudENvdW50
ID4gMSk7CisKKyAgICBDaGVja2VkSW50MzIgdG90YWxDb3VudCA9IGFyZ3VtZW50Q291bnQgLSAx
OworICAgIGludDMyX3QgYWRkaXRpb25hbENvdW50ID0gMDsKKyAgICBKU0ltbXV0YWJsZUJ1dHRl
cmZseSogYm91bmRBcmdzID0gbnVsbHB0cjsKKyAgICBpZiAodGFyZ2V0LT5pbmhlcml0czxKU0Jv
dW5kRnVuY3Rpb24+KHZtKSkgeworICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rp
b24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGFyZ2V0KTsKKyAgICAgICAgYm91bmRBcmdz
ID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgICAgIGFkZGl0aW9uYWxDb3VudCA9
IGJvdW5kQXJncyA/IDAgOiBib3VuZEFyZ3MtPmxlbmd0aCgpOworICAgICAgICB0b3RhbENvdW50
ICs9IGFkZGl0aW9uYWxDb3VudDsKKyAgICAgICAgaWYgKHRvdGFsQ291bnQuaGFzT3ZlcmZsb3dl
ZCgpKSB7CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KIAot
ICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZs
eTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5k
ZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1i
ZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgYXJndW1lbnRDb3VudCk7CisgICAgSlNJbW11dGFi
bGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVhdGUo
dm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGlu
Z1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdT
aGFwZXNdLmdldCgpLCB0b3RhbENvdW50LnVuc2FmZUdldCgpKTsKICAgICBpZiAoIWJ1dHRlcmZs
eSkgewogICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBhcmd1bWVudENvdW50OyArK2luZGV4KQotICAgICAgICBidXR0ZXJmbHkt
PnNldEluZGV4KHZtLCBpbmRleCwgYXJndW1lbnRTdGFydFtpbmRleF0uanNWYWx1ZSgpKTsKKyAg
ICBpZiAoYWRkaXRpb25hbENvdW50KSB7CisgICAgICAgIEFTU0VSVChib3VuZEFyZ3MpOworICAg
ICAgICBmb3IgKGludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IGFkZGl0aW9uYWxDb3VudDsgKytp
bmRleCkKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4LCBib3VuZEFy
Z3MtPmdldChpbmRleCkpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5k
ZXggPCAoYXJndW1lbnRDb3VudCAtIDEpOyArK2luZGV4KQorICAgICAgICBidXR0ZXJmbHktPnNl
dEluZGV4KHZtLCBpbmRleCArIGFkZGl0aW9uYWxDb3VudCwgYXJndW1lbnRTdGFydFtpbmRleCAr
IDFdLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJuIGJ1dHRlcmZseTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA1MmNkYmU4MjY2MTZlYmM0YTkyZDA1
OGIwMDFlYzM4ZWZjMmEzZDQ4Li43OWU3NzZmYjQzZTY1NTI3YTE0MmUyM2RjNzM2Y2MwMjA3MDRh
YzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjEx
LDcgKzIxMSw3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlRGly
ZWN0QXJndW1lbnRzRHVyaW5nRXhpdCwgSlNDZWxsKiwgKFZNCiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgSlNDZWxsKiwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxl
bmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlLCBKU0xleGljYWxFbnZpcm9ubWVudCopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5n
RXhpdCwgSlNDZWxsKiwgKFZNKiwgSW5saW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIHVpbnQz
Ml90IGFyZ3VtZW50Q291bnQpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
Q3JlYXRlQ2xvbmVkQXJndW1lbnRzLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9u
KiBjYWxsZWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJn
dW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCkpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBK
U0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMy
X3QgYXJndW1lbnRDb3VudCwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25DcmVhdGVSZXN0LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3Rlciog
YXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHVuc2lnbmVk
IGFycmF5U2l6ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJh
eUJ1ZmZlciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKiwgSlNDZWxsKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXRBZGQsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDk4
MDU5OWIyZTU0YWY3ZDBjYTg3YTk5YzE2OTYwNjQ5NzBhMDFlODQuLjcwNGViZTcxMTViOGM3ZDMx
N2EwMjE5MWMzOTFmOTQ3YzgxMjJhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0xODQsNyArMTg0LDcgQEAg
Y2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICBjYXNlIENyZWF0
ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAg
ICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgICAgICBjYXNlIENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseToKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlF
eGNsdWRpbmdUaGlzOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAg
ICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRSZXN0TGVu
Z3RoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZTc2ZDJiNmUwZjk2ZjNlMjhmYzNkOTgz
ZmIzM2FjMjMxNjg2YjMxLi43MGU0YTBjMTZmMjgxNWYxNGY3NzBmYTYyZDkwNGEzMTBiYzBlZjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgY2xhc3MgUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTog
eworICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6IHsK
ICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAppbmRleCAwN2E4NWRiM2Q2MGM2MDgwYTgzZTZkYTQxODY4YmJmNGI3Y2VmNmM3Li42
OWIzYmMyYTdiNTg1NmQ4OTk0MDI5NzI4NmI1Zjc3YWIwZDU4YThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTk3LDcgKzU5Nyw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAg
ICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1
bWVudHM6Ci0gICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVu
dHM6CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9u
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCBiMmJmNGQwYjMyN2NiYWJmNGJhNzBjNjc4MTZjMTM5YTUxZjg5MjkwLi4zM2ZjYzY1ZTc4
NzIwNWIzODBhNzkzNjkxYzA1ZDFlMzA3ZmMyZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtODQ3NSw4ICs4NDc1LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSogbm9k
ZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSogbm9kZSkKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdU
aGlzKE5vZGUqIG5vZGUpCiB7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGFyZ2V0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgdGFyZ2V0R1BSID0gdGFyZ2V0LmdwcigpOwor
CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTg0ODYsMTIg
Kzg0ODksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseShOb2RlKiBub2RlKQogICAgIC8vIFdlIHNldCB1cCB0aGUgYXJndW1lbnRzIG91cnNl
bHZlcywgYmVjYXVzZSB3ZSBoYXZlIHRoZSB3aG9sZSByZWdpc3RlciBmaWxlIGFuZCB3ZSBjYW4K
ICAgICAvLyBzZXQgdGhlbSB1cCBkaXJlY3RseSBpbnRvIHRoZSBhcmd1bWVudCByZWdpc3RlcnMu
CiAKLSAgICAvLyBBcmd1bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0LCAzOmxlbmd0
aAorICAgIC8vIEFyZ3VtZW50czogMDpKU0dsb2JhbE9iamVjdCosIDE6c3RhcnQsIDI6bGVuZ3Ro
LCAzOnRhcmdldAorCisgICAgLy8gRG8gdGhlIHRhcmdldEdQUiBmaXJzdCwgc2luY2UgaXQgbWln
aHQgYWxpYXMgYW4gYXJndW1lbnQgcmVnaXN0ZXIuCisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgz
LCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUodGFyZ2V0R1BSLCBkZXN0R1BSKTsg
fSk7CisKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDIsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsg
ZW1pdEdldExlbmd0aChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50KDEsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdldEFyZ3Vt
ZW50U3RhcnQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgZGVzdEdQUik7IH0p
OwogCi0gICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHksIHJlc3VsdEdQUik7CisgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCByZXN1bHRHUFIpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggOTcx
NzUyMjhmNjJkYTczNTAwMjEwZWZkMmNlY2NhOTU4MmI2ODAyZC4uNjZhNDE5MDljYzYwNjlkYjQ1
MTc3N2IyOWIxNzk3NDc1MDBiOGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTQxMSw3ICsxNDExLDcgQEAgY2xhc3MgU3BlY3VsYXRp
dmVKSVQgewogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50KE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVDcmVhdGVTY29wZWRBcmd1bWVudHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0
ZUNsb25lZEFyZ3VtZW50cyhOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVSZXN0KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVTcHJlYWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0Fy
cmF5KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDM0MjQwZTU0ZTg1N2Y1OGFkNDc2YTZhZjNiZWEzMmNk
N2MyMTZkNjguLjYyZDBmNzU0YzAwZWExODUwYzIyNzEyNmU4ZTEwNTdkNjA1NWQ5ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcApAQCAtMzk1MCw4ICszOTUwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENyZWF0ZUFyZ3Vt
ZW50c0J1dHRlcmZseTogewotICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
KG5vZGUpOworICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczog
eworICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAzOGVlNmI0YTZlZjkwOTc0MzVh
YjhlMDk1MjkxZDBiNmU3NzQxMzA1Li45NWU3ZjVlNzM4MzUxNzYxZWQ2MjUyZjc5M2IzZDkwNjlm
NTcxZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKQEAgLTQ5MzEsOCArNDkzMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHk6IHsKLSAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseShub2RlKTsKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGlu
Z1RoaXM6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGlu
Z1RoaXMobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cAppbmRleCBiOTA2NjVlY2NlNTJjNTdmNDRiNzBkNDY3YzRhNGU1YTVmMzcwMmUwLi5hZWY4YTlh
ODk2MDA3Zjg3ODEyMzQ3MjYxMGJjMGI3ODZhNGJmNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cApAQCAtMzU3LDcgKzM1Nyw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgog
ICAgICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNl
IENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5OgorICAgICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCA0MGYxMTE5MjczYmRiZTFhNWI5NTIxNTg4
NWY5Mjc0NDBmYzkxMTA3Li5kNTY3YzhmMjBlY2Y1MjRhNTA5MjVkMGZmNmY3NjRjOTU2YzYzZjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5o
IgogI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2lu
Y2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgpAQCAt
OTI3LDcgKzkyOCw4IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwog
ICAgICAgICAgICAgRWRnZSBjYWxsZWUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7
CiAgICAgICAgICAgICBDYWxsVmFyaWFudCBjYWxsVmFyaWFudDsKLSAgICAgICAgICAgIGlmIChK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0
aW9uKj4odm0oKSkpIHsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVl
LT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPih2bSgpKTsKKyAgICAgICAgICAgIGlm
IChmdW5jdGlvbikgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhl
Y3V0YWJsZSgpOwogICAgICAgICAgICAgICAgIGNhbGxWYXJpYW50ID0gQ2FsbFZhcmlhbnQoZnVu
Y3Rpb24pOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYWxsZWUtPmlzRnVuY3Rpb25BbGxvY2F0
aW9uKCkpIHsKQEAgLTk0Myw2ICs5NDUsNDUgQEAgY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzM5CiAgICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aW50
cmluc2ljKCkgPT0gV2FzbUZ1bmN0aW9uSW50cmluc2ljKQogICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aW50cmluc2ljKCkgPT0gQm91bmRGdW5j
dGlvbkNhbGxJbnRyaW5zaWMgJiYgZnVuY3Rpb24gJiYgKG1fbm9kZS0+b3AoKSA9PSBDYWxsIHx8
IG1fbm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkpIHsKKyAgICAgICAgICAgICAgICBKU0JvdW5kRnVu
Y3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZnVuY3Rpb24p
OworICAgICAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzRHlu
YW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtKCksIGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9u
KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHRhcmdldEV4ZWN1dGFibGUgPSB0YXJn
ZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICAgICAgICAgICAgICBKU0ltbXV0YWJs
ZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICgoKGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAw
KSArIG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSkgPD0gT3B0aW9uczo6bWF4aW11bURpcmVjdENhbGxT
dGFja1NpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPih2bSgpLCB0YXJnZXRFeGVjdXRhYmxlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIG1fcGFyYW1ldGVyU2xvdHMgYmVmb3JlIHdlIGdldCB0
byB0aGUgYmFja2VuZCwgYnV0IHdlIGRvbid0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gd2FudCB0byBkbyB0b28gbXVjaCBvZiB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG51bUFsbG9jYXRlZEFyZ3MgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnVu
Y3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSArIDE7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG51bUFsbG9jYXRlZEFyZ3MgPD0gT3B0aW9uczo6bWF4aW11bURpcmVj
dENhbGxTdGFja1NpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX3BhcmFtZXRlclNsb3RzID0gc3RkOjptYXgobV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzLCBH
cmFwaDo6cGFyYW1ldGVyU2xvdHNGb3JBcmdDb3VudChudW1BbGxvY2F0ZWRBcmdzKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlv
blNldC5pbnNlcnRDb25zdGFudChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIHRhcmdldEZ1
bmN0aW9uKSk7IC8vIENhbGxlZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2Rl
SW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSkpOyAvLyB8
dGhpc3wKKworICAgICAgICAgICAgICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJv
dW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5hcHBlbmQobV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2RlSW5kZXgsIG1fbm9k
ZS0+b3JpZ2luLCBib3VuZEFyZ3MtPmdldChpbmRleCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3Qgb25lIGlzIHxjYWxsZWV8
LCBzZWNvbmQgb25lIGlzIHx0aGlzfC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAyOyBpbmRleCA8IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytpbmRleCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBw
ZW5kKG1fZ3JhcGguY2hpbGQobV9ub2RlLCBpbmRleCkpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX25vZGUtPmNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpWYXJp
YWJsZSwgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0
Q2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3Rz
ID0gc3RkOjptYXgobV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzLCBHcmFwaDo6cGFyYW1ldGVyU2xv
dHNGb3JBcmdDb3VudChtX25vZGUtPm51bUNoaWxkcmVuKCkgLSAxKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRDYWxsTGlu
a1N0YXR1cyhtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlh
bnQodGFyZ2V0RXhlY3V0YWJsZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+
Y29udmVydFRvRGlyZWN0Q2FsbChtX2dyYXBoLmZyZWV6ZSh0YXJnZXRFeGVjdXRhYmxlKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4odm0oKSwgZXhlY3V0YWJsZSkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9ub2Rl
LT5vcCgpID09IENvbnN0cnVjdCAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxp
dHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggM2RmMDQ0YThmZjFiNTg1
MmI1ZWFmM2MwNGZhOTYwOGRjZmUwOTgyZi4uNDM5YzBkODY3MjA3ZWZkM2Q3MTQ1ZmJhZDE2YjYx
MjVhNDdkMDQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNh
c2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
OgotICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgorICAgIGNhc2UgQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6
CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIEdldEFyZ3VtZW50OgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDYyMTBiOTYw
MWI2MGI4YzMxNTllODI1NWRkMDI5YjMxNzAyYzYyNmUuLjUyMTFjODMwZjBhMmVlMzZmYTE1NDI1
ZTFjYzg0NTE5N2I0ZjMxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTExMDMsOCArMTEwMyw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICAgICAgY29tcGls
ZUNyZWF0ZUNsb25lZEFyZ3VtZW50cygpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgotICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseSgpOworICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eUV4Y2x1ZGluZ1RoaXM6CisgICAgICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5RXhjbHVkaW5nVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT2Jq
ZWN0Q3JlYXRlOgogICAgICAgICAgICAgY29tcGlsZU9iamVjdENyZWF0ZSgpOwpAQCAtNjg0OCwx
MCArNjg0OCwxMCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
KCkKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlz
KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRz
TGVuZ3RoKCkudmFsdWUpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBv
cGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBnZXRBcmd1bWVudHNTdGFydCgpLCBnZXRBcmd1bWVudHNMZW5ndGgo
KS52YWx1ZSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA2NmFkODRi
MGQ2MjBlMTYxNDA5ODAzNmUyYTQyZmQ0YmFlMDgxM2VhLi43NTM4ZDVjYTU0MTc4ODkyOGY1YTFl
ODg4NGQ2NDNkYWU1MjgyZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zMTYs
NyArMzE2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfU0xPV19PUChjcmVhdGVfZGlyZWN0X2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX1NM
T1dfT1AoY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNy
ZWF0ZV9jbG9uZWRfYXJndW1lbnRzKQotICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfYXJn
dW1lbnRzX2J1dHRlcmZseSkKKyAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2FyZ3VtZW50
c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0
ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAg
REVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggNTFmMDNiOWMxZjU5MTkwZjlkOTk4NGFmY2JiMTVi
OTBiNWExN2NlNy4uZjgwNjUyOTIxZjE2OTU4N2ZmNmUwNDdhNjkzOTUwY2FmODk0MTgzYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMTE4
OSw3ICsxMTg5LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3Vu
ZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiAgICAgYXV0byBub0FyZ3MgPSBqaXQuYnJh
bmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQu
bG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgSlNJbW11dGFibGVC
dXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAg
aml0LmFkZDMyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0LnN1YjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgbm9B
cmdzLmxpbmsoJmppdCk7CiAgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6
ZUluUmVnaXN0ZXJzKSwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQu
bHNoaWZ0MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMyksIEdQUkluZm86OnJlZ1QyKTsK
QEAgLTEyNDgsNyArMTI0Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBsb29wQm91bmQgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuc3ViMzIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBqaXQubG9hZFZhbHVl
KENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMSwg
Q0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZE
YXRhKCkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHZhbHVlUmVncyk7CisgICAg
aml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMywgR1BS
SW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgSlNJbW11dGFibGVCdXR0ZXJm
bHk6Om9mZnNldE9mRGF0YSgpKSwgdmFsdWVSZWdzKTsKICAgICBqaXQuc3RvcmVWYWx1ZSh2YWx1
ZVJlZ3MsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDEpLmluZGV4ZWRCeShHUFJJ
bmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0KSk7CiAgICAgaml0LmJyYW5jaFRl
c3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QxKS5saW5rVG8obG9vcEJv
dW5kLCAmaml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGQwOWQwYTkzMGFjMjQ0MjUyOTM5MjBiY2ZkNzllN2Zk
NTE3YTM4ZTMuLjE0M2MxNDg4NGM4ZTE2NTc2NzI1NmRjOGZiOGQwODg4Nzg1ODA3MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KQEAgLTE5ODEsNyArMTk4MSw3IEBAIG1hY3JvIHNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKIGVu
ZAogCiBzbG93UGF0aE9wKGNyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKQotc2xvd1BhdGhPcChjcmVh
dGVfYXJndW1lbnRzX2J1dHRlcmZseSkKK3Nsb3dQYXRoT3AoY3JlYXRlX2FyZ3VtZW50c19idXR0
ZXJmbHlfZXhjbHVkaW5nX3RoaXMpCiBzbG93UGF0aE9wKGNyZWF0ZV9kaXJlY3RfYXJndW1lbnRz
KQogc2xvd1BhdGhPcChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHNsb3dQYXRoT3AoY3Jl
YXRlX3Jlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAppbmRleCBhZTI0YzFhYTgwNTU0Y2Q5ZmEyODA0NjhlNTk1YjJkMWY2OWZjYzdi
Li43MWNiNGM4N2FkMWRiZDczYTcyNDBmMWFhZGMzMDUyZWEwNTk2MzdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0Fy
cmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
SW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKQEAg
LTIwNiwxNiArMjA3LDM2IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
Y3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpCiAgICAgUkVUVVJOKENsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlV2l0aE1hY2hpbmVGcmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgQXJndW1lbnRzTW9k
ZTo6Q2xvbmVkKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
Y3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpCitKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgo
c2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzKQogewog
ICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseT4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcz4oKTsKKyAgICBKU0NlbGwqIHRhcmdldCA9IGpzQ2Fz
dDxKU0NlbGwqPihHRVQoYnl0ZWNvZGUubV90YXJnZXQpLmpzVmFsdWUoKSk7CiAgICAgaW50MzJf
dCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7Ci0gICAgSlNJbW11
dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVh
dGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRl
eGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhp
bmdTaGFwZXNdLmdldCgpLCBhcmd1bWVudENvdW50KTsKKyAgICBBU1NFUlQoYXJndW1lbnRDb3Vu
dCA+IDEpOworCisgICAgQ2hlY2tlZEludDMyIHRvdGFsQ291bnQgPSBhcmd1bWVudENvdW50IC0g
MTsKKyAgICBpbnQzMl90IGFkZGl0aW9uYWxDb3VudCA9IDA7CisgICAgSlNJbW11dGFibGVCdXR0
ZXJmbHkqIGJvdW5kQXJncyA9IG51bGxwdHI7CisgICAgaWYgKHRhcmdldC0+aW5oZXJpdHM8SlNC
b3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0
aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAgICAgIGJvdW5kQXJn
cyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAgICBhZGRpdGlvbmFsQ291bnQg
PSBib3VuZEFyZ3MgPyAwIDogYm91bmRBcmdzLT5sZW5ndGgoKTsKKyAgICAgICAgdG90YWxDb3Vu
dCArPSBhZGRpdGlvbmFsQ291bnQ7CisgICAgICAgIGlmICh0b3RhbENvdW50Lmhhc092ZXJmbG93
ZWQoKSkKKyAgICAgICAgICAgIFRIUk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgfQorCisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpT
SW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVhdGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0
cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhD
b250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpLCB0b3RhbENvdW50LnVu
c2FmZUdldCgpKTsKICAgICBpZiAoIWJ1dHRlcmZseSkKICAgICAgICAgVEhST1coY3JlYXRlT3V0
T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKLSAgICBmb3IgKGludDMyX3QgaW5kZXggPSAw
OyBpbmRleCA8IGFyZ3VtZW50Q291bnQ7ICsraW5kZXgpCi0gICAgICAgIGJ1dHRlcmZseS0+c2V0
SW5kZXgodm0sIGluZGV4LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGluZGV4KSk7Cisg
ICAgaWYgKGFkZGl0aW9uYWxDb3VudCkgeworICAgICAgICBBU1NFUlQoYm91bmRBcmdzKTsKKyAg
ICAgICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBhZGRpdGlvbmFsQ291bnQ7ICsr
aW5kZXgpCisgICAgICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgYm91bmRB
cmdzLT5nZXQoaW5kZXgpKTsKKyAgICB9CisgICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5k
ZXggPCAoYXJndW1lbnRDb3VudCAtIDEpOyArK2luZGV4KQorICAgICAgICBidXR0ZXJmbHktPnNl
dEluZGV4KHZtLCBpbmRleCArIGFkZGl0aW9uYWxDb3VudCwgY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudChpbmRleCArIDEpKTsKICAgICBSRVRVUk4oYnV0dGVyZmx5KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBjNzZi
MTYxMGY5OTdhNDgyYzQwY2U3N2U3YzI4YTY2M2NiZTM4ZDJhLi5iNjFlZjQxZmRkMTEzYzA2ZmYw
ZDIxN2UxY2EzYjcxMzkyZGI1MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjEwLDcgKzIxMCw3IEBAIEpTQ19ERUNMQVJFX0NP
TU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKIEpTQ19ERUNM
QVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKTsK
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9zY29wZWRfYXJn
dW1lbnRzKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9j
bG9uZWRfYXJndW1lbnRzKTsKLUpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRo
X2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5KTsKK0pTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BB
VEgoc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzKTsK
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV90aGlzKTsKIEpT
Q19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudGVyKTsKIEpTQ19ERUNMQVJF
X0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3RvX3RoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXggZGRlOGYwOWE1OTdh
ODkxM2YzOTg0MmJmZjQyY2ExMTA0ZWFhMjE1Mi4uZDRmNzhmNDcwMjdhMmE4YTA4NjkxZWYzMmZl
MDliM2FkNTIxNWI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCkBAIC00MSw4ICs0MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3Mp
IHsKLSAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlz
fC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7
ICsraSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3Ro
KCk7ICsraSkKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAg
ICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpCkBAIC03MCw4ICs2OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihib3Vu
ZEZ1bmN0aW9uQ2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGCiAKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3MpIHsKLSAgICAg
ICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4KLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkK
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAgICB9CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kp
CkBAIC05NSw4ICs5Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNvbnN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3MpIHsKLSAgICAgICAgLy8gU3Rh
cnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAgICB9CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCkBAIC0xMjMs
OCArMTIwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25Db25zdHJ1
Y3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRo
IDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdz
LmFwcGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtMjM0LDggKzIzMCw3
IEBAIEpTQXJyYXkqIEpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkodGhpcy0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogICAgIGlmIChtX2JvdW5kQXJncykgewotICAgICAgICAvLyBT
dGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgYm91bmQgfHRoaXN8LgotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9ib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYm91bmRBcmdzLT5sZW5ndGgoKTsg
KytpKSB7CiAgICAgICAgICAgICByZXN1bHQtPnB1c2goZ2xvYmFsT2JqZWN0LCBtX2JvdW5kQXJn
cy0+Z2V0KGkpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMzQxODQ0YjJkMmIxMjI1NmQ3YjM2YzIwM2MyMTU5ZjhmYzQ1
YjIyYS4uM2Q4OWZhYzhmYjhiNWE2NGRlYzdhZjYwMmZiZmIyYzI2ZjBkZGVjYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzAw
LDEwICszMDAsMTggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1ha2VCb3VuZEZ1bmN0aW9u
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEYKICAgICBKU09iamVjdCogdGFy
Z2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgSlNW
YWx1ZSBib3VuZFRoaXMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIEpT
VmFsdWUgYm91bmRBcmdzID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKKyAgICBK
U0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5ID0gYm91bmRBcmdzLmlzQ2VsbCgpID8ganND
YXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oYm91bmRBcmdzKSA6IG51bGxwdHI7CiAgICAgZG91
YmxlIGxlbmd0aCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMykuYXNOdW1iZXIoKTsK
ICAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGFzU3RyaW5nKGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoNCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBi
b3VuZFRoaXMsIGJvdW5kQXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZs
eSo+KGJvdW5kQXJncykgOiBudWxscHRyLCBsZW5ndGgsIG5hbWVTdHJpbmcpKSk7CisgICAgLy8g
VW53cmFwIEpTQm91bmRGdW5jdGlvbiBieSBjb25maWd1cmluZyBidXR0ZXJmbHkgYW5kIHRhcmdl
dC4gVGhlIGxhcmdlciBCdXR0ZXJmbHkgaXMgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIHRoYXQgcHVy
cG9zZS4KKyAgICBpZiAodGFyZ2V0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgewor
ICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1
bmN0aW9uKj4odGFyZ2V0KTsKKyAgICAgICAgYm91bmRUaGlzID0gYm91bmRGdW5jdGlvbi0+Ym91
bmRUaGlzKCk7CisgICAgICAgIHRhcmdldCA9IGJvdW5kRnVuY3Rpb247CisgICAgfQorCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCb3VuZEZ1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBib3VuZFRoaXMsIGJ1dHRlcmZseSwg
bGVuZ3RoLCBuYW1lU3RyaW5nKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaGFz
T3duTGVuZ3RoUHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDljYzQzZjI1ZDVjZjM3OGY5MWUxMGE3OTc1NjhkNmRhOThjM2Y0MWMu
LjQ2YjgwMWY4OGQzM2VhMjk4YzgzMDY3ODMxYTc0NzgxNWU0MjhlZGUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMjEtMDQtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlvbiBjYWxscworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYm91bmQtZnVuY3Rpb24taW5s
aW5pbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgICh0KToKKyAgICAgICAgKiBzdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RyZW5ndGgtcmVk
dWN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAodDEpOgorICAgICAgICAodDIpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1i
aW5kLXRocm93LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRocm93
YWJsZSk6CisgICAgICAgIChpbm5lcik6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGNhdGNo
KToKKwogMjAyMS0wNC0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIEJhc2VsaW5lIHNob3VsZCBoYXZlIGZhc3QgcGF0aCBmb3Igc3dpdGNoX2lt
bQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24taW5saW5pbmcuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1pbmxpbmluZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YzUwNWIxZmU3MjIzOWU2YmNmZDcyMDliNTMwMzBiODBkYzFjYjJmCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24taW5saW5pbmcuanMKQEAgLTAsMCArMSwx
NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykgeworICAgIHJldHVybiBhICsg
YiArIGM7Cit9CisKK3ZhciBib3VuZCA9IHRlc3QuYmluZCgwLCAxKTsKKworZnVuY3Rpb24gdCgp
IHsKKyAgICByZXR1cm4gYm91bmQoMiwgMywgNCk7Cit9Citub0lubGluZSh0KTsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodCgpLCA2KTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcyBiL0pT
VGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MzM3ODZkMmViZjlhNTlkODEzZDNjYjI1NTQyYjAxNjE2ZjNjODdmCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RyZW5ndGgtcmVkdWN0aW9u
LmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpIHsK
KyAgICByZXR1cm4gYSArIGIgKyBjOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBib3VuZCA9
IHRlc3QuYmluZCgwLCAxKTsKK25vSW5saW5lKGJvdW5kKTsKKworZnVuY3Rpb24gdDEoKSB7Cisg
ICAgcmV0dXJuIGJvdW5kKDIsIDMsIDQpOworfQorbm9JbmxpbmUodDEpOworCitmdW5jdGlvbiB0
MigpIHsKKyAgICByZXR1cm4gYm91bmQoJ2hlbGxvJyk7Cit9Citub0lubGluZSh0Mik7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICBzaG91bGRCZSh0MSgpLCA2KTsKKyAg
ICBzaG91bGRCZSh0MigpLCAiMWhlbGxvdW5kZWZpbmVkIik7Cit9CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rp
b24tYmluZC10aHJvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTE1ODVlMTk5NmM4MDlmOWFhMDAwYTk4Njcw
MjU1NGM3MjgwYTlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24t
YmluZC10aHJvdy5qcwpAQCAtMCwwICsxLDM2IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGZsYWcgPSBmYWxz
ZTsKK2Z1bmN0aW9uIHRocm93YWJsZSgpCit7CisgICAgaWYgKGZsYWcpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiZXhwZWN0ZWQiKTsKK30KK25vSW5saW5lKHRocm93YWJsZSk7CisKK2Z1bmN0
aW9uIGlubmVyKCkKK3sKKyAgICB0aHJvd2FibGUoKTsKK30KK3ZhciBib3VuZCA9IGlubmVyLmJp
bmQoMSwgMiwgMyk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGJvdW5kKCk7Cit9Citub0lu
bGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0KCk7
CisKK3ZhciBsZW5ndGggPSAwOwordHJ5IHsKKyAgICBmbGFnID0gdHJ1ZTsKKyAgICB0ZXN0KCk7
Cit9IGNhdGNoIChlcnJvcikgeworICAgIGxlbmd0aCA9IGVycm9yLnN0YWNrLnRyaW0oKS5zcGxp
dCgnXG4nKS5sZW5ndGg7Cit9CitzaG91bGRCZShsZW5ndGgsIDUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427489</attachid>
            <date>2021-04-30 22:34:13 -0700</date>
            <delta_ts>2021-05-01 01:08:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210430223412.patch</filename>
            <type>text/plain</type>
            <size>75208</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTMzMGQyMzZhMjljN2Y1NzQ0NWIyMjU1NGE5ZjUwYjY5ODNhODU5Li44MGRjZjQ3YWI3YjZmZDQ1
NDJkYzlkZjc2YmEyZjRmY2RkODk3NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNC0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1bmN0aW9uIGNhbGxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ1aWx0aW5zL0Z1bmN0
aW9uUHJvdG90eXBlLmpzOgorICAgICAgICAoYmluZCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19jcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHkpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICog
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxl
dmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05v
ZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjpyZWFkVG9wKToK
KyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhl
Y3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4
Y2x1ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6
CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eUV4Y2x1ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkdldFN0YWNrVHJhY2VGdW5j
dG9yOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6OmdlbmVyYXRl
SW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGlj
Q2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6
OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
IChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisKIDIwMjEtMDQtMjMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc2NDg2LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4
IGFmMjlhZmQ4MzU2Y2FmOWI3ZTk4ZjRiNjY3OTFhNDNhNTc0NDU5YWEuLjZiMjUzOTkwMTA3NzQ1
ZmJlOWExNzFjYmMyZjJmMjhkMDBmNjcyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTYxLDggKzYxLDcgQEAgZnVu
Y3Rpb24gYmluZCh0aGlzVmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHRh
cmdldCA9IHRoaXM7Ci0gICAgaWYgKCFAaXNDYWxsYWJsZSh0YXJnZXQpKQorICAgIGlmICghQGlz
Q2FsbGFibGUodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBh
IGZ1bmN0aW9uIGluc2lkZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCIpOwogCiAgICAgdmFyIGFy
Z3VtZW50Q291bnQgPSBAYXJndW1lbnRDb3VudCgpOwpAQCAtNzAsMTIgKzY5LDEyIEBAIGZ1bmN0
aW9uIGJpbmQodGhpc1ZhbHVlKQogICAgIHZhciBudW1Cb3VuZEFyZ3MgPSAwOwogICAgIGlmIChh
cmd1bWVudENvdW50ID4gMSkgewogICAgICAgICBudW1Cb3VuZEFyZ3MgPSBhcmd1bWVudENvdW50
IC0gMTsKLSAgICAgICAgYm91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOwor
ICAgICAgICBib3VuZEFyZ3MgPSBAY3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KHRoaXMpOwogICAg
IH0KIAogICAgIHZhciBsZW5ndGggPSAwOwotICAgIGlmIChAaGFzT3duTGVuZ3RoUHJvcGVydHko
dGFyZ2V0KSkgewotICAgICAgICB2YXIgbGVuZ3RoVmFsdWUgPSB0YXJnZXQubGVuZ3RoOworICAg
IGlmIChAaGFzT3duTGVuZ3RoUHJvcGVydHkodGhpcykpIHsKKyAgICAgICAgdmFyIGxlbmd0aFZh
bHVlID0gdGhpcy5sZW5ndGg7CiAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsdWUgPT09ICJu
dW1iZXIiKSB7CiAgICAgICAgICAgICBsZW5ndGhWYWx1ZSA9IEB0b0ludGVnZXJPckluZmluaXR5
KGxlbmd0aFZhbHVlKTsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IGNhcmUgYWJv
dXQgcG9zaXRpdmUgbGVuZ3RoVmFsdWVzLCBob3dldmVyLCB0aGlzIGNvbXBhcmlzaW9uCkBAIC04
NSw5ICs4NCw5IEBAIGZ1bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgdmFyIG5hbWUgPSB0YXJnZXQubmFtZTsKKyAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsK
ICAgICBpZiAodHlwZW9mIG5hbWUgIT09ICJzdHJpbmciKQogICAgICAgICBuYW1lID0gIiI7CiAK
LSAgICByZXR1cm4gQG1ha2VCb3VuZEZ1bmN0aW9uKHRhcmdldCwgdGhpc1ZhbHVlLCBib3VuZEFy
Z3MsIGxlbmd0aCwgbmFtZSk7CisgICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0aGlzLCB0
aGlzVmFsdWUsIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGNiMGU3YzhjOWJiYmExNGM1
N2QyMmI0YmEyN2ViZmI5ZDcyOTc3NmEuLjI2YWYwNmVmNDRhZmRiOGMyNzdiNWJkZDcxMWUwNDgx
Y2FhNjYyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgpAQCAtMTExLDkgKzExMSwxMCBAQAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3Rl
ciwKICAgICB9CiAKLW9wIDpjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSwKK29wIDpjcmVhdGVf
YXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAg
IGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICB0YXJnZXQ6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICB9CiAKIG9wIDpjcmVhdGVfdGhpcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDAxNmEwMjdmYTMzYWI3OTQ5NDMxMmE0
YTQ3N2RmYzViMmU3YTAwZDcuLjk0MzIwZTZlNDc5Y2EwY2MzYmZkZWY0MzkyYWViNGZiZjY4MjNh
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcApAQCAtOTIsNyArOTIsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNh
c2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2Fy
Z3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNhc2Ug
b3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5n
dGg6CiAgICAgY2FzZSBvcF9jaGVja190cmFwczoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoK
QEAgLTEwMyw2ICsxMDIsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwo
VmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3Bf
Z2V0X3Njb3BlOgogICAgICAgICByZXR1cm47CiAKKyAgICBVU0VTKE9wQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgdGFyZ2V0KQogICAgIFVTRVMoT3BUb1RoaXMsIHNyY0Rz
dCkKICAgICBVU0VTKE9wQ2hlY2tUZHosIHRhcmdldFZpcnR1YWxSZWdpc3RlcikKICAgICBVU0VT
KE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0
KQogICAgIERFRlMoT3BDcmVhdGVTY29wZWRBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3Jl
YXRlQ2xvbmVkQXJndW1lbnRzLCBkc3QpCi0gICAgREVGUyhPcENyZWF0ZUFyZ3VtZW50c0J1dHRl
cmZseSwgZHN0KQorICAgIERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdU
aGlzLCBkc3QpCiAgICAgREVGUyhPcERlbEJ5SWQsIGRzdCkKICAgICBERUZTKE9wRGVsQnlWYWws
IGRzdCkKICAgICBERUZTKE9wVW5zaWduZWQsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNDI2
MDkzZjExNzY4MGI1MTdkN2NiODY0MTE3YzM0NjAwMDRmYjMzNC4uMjU0MDgzZmI0MTk2MTdiOWZh
NGQ3MGRhYjkyYWJlMTk1NmY4OWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4NzIsOSArMjg3
Miw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5l
cmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHko
UmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogdGFyZ2V0KQogewotICAgIE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OjplbWl0KHRo
aXMsIGRzdCk7CisgICAgT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOjpl
bWl0KHRoaXMsIGRzdCwgdGFyZ2V0KTsKICAgICByZXR1cm4gZHN0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
aW5kZXggZTUxMWRjMjc1NTVkZTViODg0NDdlMzMzZjllMTY2MjVhODU2MjYxYy4uMzZiOGIwOTRk
YjE3YmY1YTc5NmM3NWQyYzQzYjg2MjY2ZWIxMDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzYxLDcg
Kzc2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRl
UHJvbWlzZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCwgYm9vbCBpc0lu
dGVybmFsUHJvbWlzZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVHZW5lcmF0b3Io
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBuZXdUYXJnZXQpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5KFJlZ2lzdGVySUQqIGRzdCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogY291bnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxp
emF0aW9uSWZOZWVkZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3Rvciwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgdm9pZCBlbWl0
VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNr
KGNvbnN0IFZhcmlhYmxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggM2NiZDEyMDk5ZTg1YjBiNDI2MjA4MGE0M2Ez
NWRlODFmMmJkNTdiOS4uZjQyMjNkOTI2YWI2N2YxMGZiNzQ0YTBjMzE3ODNhMjMyNjhhNWNmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMTkzMyw4ICsxOTMzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfbmV3UHJvbWlzZShKU0M6OkJ5dGVjb2RlR2VuZXJhCiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlND
OjpSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUpOwot
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpKTsKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0g
bV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhZGRpdGlvbmFsQ291
bnQgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQp
OworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXMoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYWRkaXRpb25hbENvdW50
LmdldCgpKTsKIH0KIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09O
U1RBTlRfR0VORVJBVE9SUyhuYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNWQyNWZlYTYw
YzliMTZkNGU2ZWYzZDFjYWYwNTYwOTEyZDhlOTYyMy4uZTBmYjc2ZDk2MDI4NTJjY2YwM2U4OTY2
ZjRiMmM2ZjI4MTJkYmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzIzMCw3ICszMjMwLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFy
Z3VtZW50c1N0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXM6CiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbV92bS5pbW11dGFibGVCdXR0ZXJm
bHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlX
aXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSk7CiAgICAgICAg
IGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDQwOGRjMDhjMTQzMDgzZjgxODQ5MjdiMmE4ZTU5NTJkN2FiMDhkZmEuLjQ2
Zjc2MDRjMzJhNzRiZWE0Yjk2NjJkZTdmOGFkZmVmZGY2NDlkODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01OCw2ICs1OCw3IEBA
CiAjaW5jbHVkZSAiSW5CeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5zdGFuY2VPZlN0YXR1cy5o
IgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRl
cmZseS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCkBAIC0yMDEsNyArMjAyLDcg
QEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
LCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5z
ZXJ0Q2hlY2tzKTsKICAgICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRy
dWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdp
c3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJv
b2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBDYWxs
VmFyaWFudCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIElubGluZUNhbGxGcmFt
ZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAg
IGJvb2wgaGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0
b3I+CkBAIC0xOTI3LDcgKzE5MjgsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlv
blJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogYwogCiAgICAg
SW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25L
aW5kKTsKICAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7Ci0gICAgICAgIGlmICho
YW5kbGVJbnRyaW5zaWNDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHQsIGludHJpbnNpYywgcmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBpbnNl
cnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAgICAgICAgaWYgKGhhbmRsZUludHJpbnNpY0Nh
bGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwgY2FsbGVlLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zm
c2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgb3NyRXhpdEluZGV4LCBraW5kLCBwcmVk
aWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKICAgICAgICAgICAgIGVuZFNw
ZWNpYWxDYXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gQ2FsbE9wdGltaXphdGlvblJlc3VsdDo6
SW5saW5lZDsKICAgICAgICAgfQpAQCAtMjMyMiw3ICsyMzIzLDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlTWluTWF4KE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgaW50IHJlZ2lz
dGVyT2Zmc2UKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJl
c3VsdCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2Fs
bFZhcmlhbnQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBWRVJCT1NFX0xPRygiICAgICAg
IFRoZSBpbnRyaW5zaWMgaXMgIiwgaW50cmluc2ljLCAiXG4iKTsKIApAQCAtMzc1Niw2ICszNzU3
LDY4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljCiAjZW5kaWYKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWM6IHsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsVmFyaWFu
dC5mdW5jdGlvbigpOworICAgICAgICAgICAgaWYgKCFmdW5jdGlvbikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rp
b24gPSBqc0R5bmFtaWNDYXN0PEpTQm91bmRGdW5jdGlvbio+KCptX3ZtLCBmdW5jdGlvbik7Cisg
ICAgICAgICAgICBpZiAoIWJvdW5kRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKKworICAgICAgICAgICAgLy8gTWFr
ZSBhIGNhbGwuIFdlIGRvbid0IHRyeSB0byBnZXQgZmFuY3kgd2l0aCB1c2luZyB0aGUgc21hbGxl
c3Qgb3BlcmFuZCBudW1iZXIgYmVjYXVzZQorICAgICAgICAgICAgLy8gdGhlIHN0YWNrIGxheW91
dCBwaGFzZSBzaG91bGQgY29tcHJlc3MgdGhlIHN0YWNrIGFueXdheS4KKyAgICAgICAgICAgIC8v
CisgICAgICAgICAgICAvLyBXZSBkbyBub3Qgb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHN0YWNrIGZv
ciB0aGlzIGNhbGwuIFdlIG5ld2x5IGFsbG9jYXRlIHN0YWNrIHNwYWNlIGFuZCBmaWxsIGl0IHdp
dGggdmFsdWVzLAorICAgICAgICAgICAgLy8gdG8ga2VlcCBPU1IgZXhpdCBjb3JyZWN0IHdoZW4g
d2UgZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHRoaXMgc3RhY2sgY29uc3RydWN0aW9uLgorCisgICAg
ICAgICAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+
Ym91bmRBcmdzKCk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUGFyYW1ldGVycyA9
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgICAgICAgICAgbnVtYmVyT2ZQYXJhbWV0
ZXJzKys7IC8vIFRydWUgcmV0dXJuIFBDLgorICAgICAgICAgICAgbnVtYmVyT2ZQYXJhbWV0ZXJz
ICs9IGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwOworCisgICAgICAgICAgICAv
LyBTdGFydCB3aXRoIGEgcmVnaXN0ZXIgb2Zmc2V0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGxh
c3QgaW4tdXNlIHJlZ2lzdGVyLgorICAgICAgICAgICAgaW50IG5ld1JlZ2lzdGVyT2Zmc2V0ID0g
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5udW1DYWxsZWVMb2NhbHMoKSAtIDEpLm9mZnNldCgpOworICAgICAgICAgICAgbmV3UmVnaXN0
ZXJPZmZzZXQgLT0gbnVtYmVyT2ZQYXJhbWV0ZXJzOworICAgICAgICAgICAgbmV3UmVnaXN0ZXJP
ZmZzZXQgLT0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CisKKyAgICAgICAgICAg
IC8vIEdldCB0aGUgYWxpZ25tZW50IHJpZ2h0LgorICAgICAgICAgICAgbmV3UmVnaXN0ZXJPZmZz
ZXQgPSAtV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCks
IC1uZXdSZWdpc3Rlck9mZnNldCk7CisKKyAgICAgICAgICAgIGVuc3VyZUxvY2FscyhtX2lubGlu
ZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKG5ld1JlZ2lzdGVyT2Zmc2V0
KSkudG9Mb2NhbCgpKTsKKworICAgICAgICAgICAgLy8gSXNzdWUgU2V0TG9jYWxzLiBUaGlzIGhh
cyB0d28gZWZmZWN0czoKKyAgICAgICAgICAgIC8vIDEpIFRoYXQncyBob3cgaGFuZGxlQ2FsbCgp
IHNlZXMgdGhlIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIC8vIDIpIElmIHdlIGlubGluZSB0aGVu
IHRoaXMgZW5zdXJlcyB0aGF0IHRoZSBhcmd1bWVudHMgYXJlIGZsdXNoZWQgc28gdGhhdCBpZiB5
b3UgdXNlCisgICAgICAgICAgICAvLyAgICB0aGUgZHJlYWRlZCBhcmd1bWVudHMgb2JqZWN0IG9u
IHRoZSBjYWxsIHRhcmdldCwgdGhlIHJpZ2h0IHRoaW5ncyBoYXBwZW4uIFdlbGwsIHNvcnQgb2Yg
LQorICAgICAgICAgICAgLy8gICAgc2luY2Ugd2Ugb25seSByZWFsbHkgY2FyZSBhYm91dCAndGhp
cycgaW4gdGhpcyBjYXNlLiBCdXQgd2UncmUgbm90IGdvaW5nIHRvIHRha2UgdGhhdAorICAgICAg
ICAgICAgLy8gICAgc2hvcnRjdXQuCisgICAgICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJndW1l
bnRJbmRleCA9IDA7CisgICAgICAgICAgICBzZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJ
bmNsdWRpbmdUaGlzKGN1cnJlbnRBcmd1bWVudEluZGV4KyssIG5ld1JlZ2lzdGVyT2Zmc2V0KSwg
anNDb25zdGFudChib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSksIEltbWVkaWF0ZU5ha2VkU2V0
KTsKKyAgICAgICAgICAgIGlmIChib3VuZEFyZ3MpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2luZGV4KQor
ICAgICAgICAgICAgICAgICAgICBzZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRp
bmdUaGlzKGN1cnJlbnRBcmd1bWVudEluZGV4KyssIG5ld1JlZ2lzdGVyT2Zmc2V0KSwganNDb25z
dGFudChib3VuZEFyZ3MtPmdldChpbmRleCkpLCBJbW1lZGlhdGVOYWtlZFNldCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IDEp
IHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDE7IGluZGV4IDwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAgIHNldCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoY3VycmVudEFyZ3VtZW50SW5kZXgr
KywgbmV3UmVnaXN0ZXJPZmZzZXQpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNs
dWRpbmdUaGlzKGluZGV4LCByZWdpc3Rlck9mZnNldCkpLCBJbW1lZGlhdGVOYWtlZFNldCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlJ3ZlIHNldCBzb21lIGxvY2FscywgYnV0
IHRoZXkgYXJlIG5vdCB1c2VyLXZpc2libGUgc2luY2UgdGhleSBhcmUgbmV3bHkgYWxsb2NhdGVk
IGZvciB0aGlzIGlubGluZWQgY2FsbC4gSXQncyBzdGlsbCBPSyB0byBleGl0IGZyb20gaGVyZS4K
KyAgICAgICAgICAgIC8vIEpTQm91bmRGdW5jdGlvbidzIHRyYW1wb2xpbmUgZG9lcyBub3QgaGF2
ZSB1c2VyLXZpc2libGUgZWZmZWN0LiBTbyBleGl0aW5nIHRvIHRoZSBwcmUtYm91bmQgZnVuY3Rp
b24gbG9jYXRpb24gaXMgT0suCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAg
ICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgIGhhbmRsZUNhbGwocmVzdWx0
LCBDYWxsLCBraW5kLCBvc3JFeGl0SW5kZXgsIGpzQ29uc3RhbnQoYm91bmRGdW5jdGlvbi0+dGFy
Z2V0RnVuY3Rpb24oKSksIG51bWJlck9mUGFyYW1ldGVycyAtIDEsIG5ld1JlZ2lzdGVyT2Zmc2V0
LCBDYWxsTGlua1N0YXR1cyhDYWxsVmFyaWFudChib3VuZEZ1bmN0aW9uLT50YXJnZXRGdW5jdGlv
bigpKSksIHByZWRpY3Rpb24pOworICAgICAgICAgICAgZGlkU2V0UmVzdWx0ID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtODExMSwxMSArODE3NCwxMSBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpOwogICAgICAgICB9
CiAKLSAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseTogewotICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHk+KCk7CisgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0
ZXJmbHlfZXhjbHVkaW5nX3RoaXM6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhp
cz4oKTsKICAgICAgICAgICAgIG5vdGljZUFyZ3VtZW50c1VzZSgpOwotICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSkpOwot
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpOwor
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIEVkZ2UoZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0KSwgQ2Vs
bFVzZSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0
dGVyZmx5X2V4Y2x1ZGluZ190aGlzKTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZjVlMjJhMTBhNGQxMjY1ZGI1Y2RjNzFiMjMx
ZDA2ZDUxNjE3ZWQ2Yy4uYmY0Zjc5NzNlOTM0MTZkZTg2NmZhYzcxMzc3MDdhODZiMTdlMzNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MjM2LDcgKzIzNiw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRz
OgogICAgIGNhc2Ugb3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHM6Ci0gICAgY2FzZSBvcF9jcmVh
dGVfYXJndW1lbnRzX2J1dHRlcmZseToKKyAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0
dGVyZmx5X2V4Y2x1ZGluZ190aGlzOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgog
ICAgIGNhc2Ugb3BfcHV0X3RvX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggY2YwMWJjZTA1
M2EzZTU3N2RlOTk3YjAzMzM5YjdiMTRjNjY4ODkyMS4uYzI0MGFhMjYxM2YwZDEyMDFlZjQ4ZDhh
MmQyMmQ5MTE1NTkyM2FjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNh
c2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRz
OgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgIGNhc2UgQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5OgorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5n
VGhpczoKICAgICAgICAgcmVhZChTdGFjayk7CiAgICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50
KTsKICAgICAgICAgd3JpdGUoSGVhcE9iamVjdENvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAppbmRleCBjZmMyMjMwMDBhNTMyYjFjM2IzOTgwZTU0YTUwMWEzZDNk
ZmFhYjA5Li5kZDUxZmEzOGM4ODExMGQ5MWI4ZmU1NThmZmUwZDU2N2JmNjE2YTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlRGlyZWN0
QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3Jl
YXRlQ2xvbmVkQXJndW1lbnRzOgotICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5Ogor
ICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICBjYXNl
IENhbGw6CiAgICAgY2FzZSBDYWxsRXZhbDoKICAgICBjYXNlIENhbGxGb3J3YXJkVmFyYXJnczoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDM3NGQ1
NTMwNWRmOGQ4NzUwMzJlMDQ3NzdiYzMyMjE5YTU1MTU4MGEuLmQwNmQ4NjQyZjc3ZWYzYWM0Zjc3
NTE4NTAxOTkwYTUwM2Q3MjgyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcApAQCAtMjg4MCw3ICsyODgwLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6
CiAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNl
IEludmFsaWRhdGlvblBvaW50OgotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eToKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgog
ICAgICAgICAgICAgYnJlYWs7CiAjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBhZjI2
ODI4NmM4MTAwOWQxODI2Y2IxMGJjZjU3YjUxMTBhNGE3MzM5Li43YzQ5ZGFhOTMyNDQ2NDc0N2Uw
NGM2YmY2ZjljNzEzOTkxNzI2NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCkBAIC00NTEsNyArNDUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogICAgIG1hY3JvKENyZWF0ZVNjb3BlZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oQ3JlYXRlQ2xvbmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQ
aGFudG9tQ2xvbmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
Ci0gICAgbWFjcm8oQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCBOb2RlUmVzdWx0SlMpIFwKKyAg
ICBtYWNybyhDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhHZXRGcm9tQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhQdXRUb0FyZ3VtZW50cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEFy
Z3VtZW50LCBOb2RlUmVzdWx0SlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCmluZGV4IDkyMzFmNDdjZTk3ZTgzNzY0ZGEzODAxOTI0OWVmOTcwMzFlYzNh
YmQuLmVlYWI4NjEyZjUwYmVmOTI5NzEzMTFhNDMxMGYzZTk1OTFkNjlhYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDgsNiArNDgsNyBAQAog
I2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJ
bW11dGFibGVCdXR0ZXJmbHkuaCIKQEAgLTIwNTgsMjAgKzIwNTksNDAgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgSlNDZWxsKiwgKEpT
R2xvYmFsT2JqZWMKICAgICAgICAgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGFyZ3VtZW50U3Rh
cnQsIGxlbmd0aCwgY2FsbGVlKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBhcmd1bWVudENv
dW50KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIEpT
Q2VsbCogdGFyZ2V0KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgQVNTRVJUKGFyZ3Vt
ZW50Q291bnQgPiAxKTsKKworICAgIENoZWNrZWRJbnQzMiB0b3RhbENvdW50ID0gYXJndW1lbnRD
b3VudCAtIDE7CisgICAgaW50MzJfdCBhZGRpdGlvbmFsQ291bnQgPSAwOworICAgIEpTSW1tdXRh
YmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBudWxscHRyOworICAgIGlmICh0YXJnZXQtPmluaGVy
aXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKSB7CisgICAgICAgIEpTQm91bmRGdW5jdGlvbiogYm91
bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0YXJnZXQpOworICAgICAgICBi
b3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAgICAgYWRkaXRpb25h
bENvdW50ID0gYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDA7CisgICAgICAgIHRv
dGFsQ291bnQgKz0gYWRkaXRpb25hbENvdW50OworICAgICAgICBpZiAodG90YWxDb3VudC5oYXNP
dmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9Cisg
ICAgfQogCi0gICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxl
QnV0dGVyZmx5Ojp0cnlDcmVhdGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNb
YXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3Vz
KSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpLCBhcmd1bWVudENvdW50KTsKKyAgICBK
U0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6OnRy
eUNyZWF0ZSh2bSwgdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJv
bUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJ
bmRleGluZ1NoYXBlc10uZ2V0KCksIHRvdGFsQ291bnQudW5zYWZlR2V0KCkpOwogICAgIGlmICgh
YnV0dGVyZmx5KSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGZvciAodW5zaWdu
ZWQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Q291bnQ7ICsraW5kZXgpCi0gICAgICAgIGJ1
dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4LCBhcmd1bWVudFN0YXJ0W2luZGV4XS5qc1ZhbHVl
KCkpOworICAgIGlmIChhZGRpdGlvbmFsQ291bnQpIHsKKyAgICAgICAgQVNTRVJUKGJvdW5kQXJn
cyk7CisgICAgICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgYWRkaXRpb25hbENv
dW50OyArK2luZGV4KQorICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgs
IGJvdW5kQXJncy0+Z2V0KGluZGV4KSk7CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IChhcmd1bWVudENvdW50IC0gMSk7ICsraW5kZXgpCisgICAgICAgIGJ1dHRl
cmZseS0+c2V0SW5kZXgodm0sIGluZGV4ICsgYWRkaXRpb25hbENvdW50LCBhcmd1bWVudFN0YXJ0
W2luZGV4ICsgMV0uanNWYWx1ZSgpKTsKICAgICByZXR1cm4gYnV0dGVyZmx5OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDUyY2RiZTgyNjYxNmVi
YzRhOTJkMDU4YjAwMWVjMzhlZmMyYTNkNDguLjc5ZTc3NmZiNDNlNjU1MjdhMTQyZTIzZGM3MzZj
YzAyMDcwNGFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CkBAIC0yMTEsNyArMjExLDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25D
cmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0LCBKU0NlbGwqLCAoVk0KIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBKU0NlbGwqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWlu
dDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIEpTTGV4aWNhbEVudmlyb25tZW50Kikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVu
dHNEdXJpbmdFeGl0LCBKU0NlbGwqLCAoVk0qLCBJbmxpbmVDYWxsRnJhbWUqLCBKU0Z1bmN0aW9u
KiwgdWludDMyX3QgYXJndW1lbnRDb3VudCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBsZW5ndGgsIEpT
RnVuY3Rpb24qIGNhbGxlZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIFJlZ2lz
dGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBhcmd1bWVudENvdW50KSk7CitKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGlu
Z1RoaXMsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0
LCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBKU0NlbGwqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkNyZWF0ZVJlc3QsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIFJl
Z2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwg
dW5zaWduZWQgYXJyYXlTaXplKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0FycmF5QnVmZmVyLCBKU0NlbGwqLCAoVk0qLCBTdHJ1Y3R1cmUqLCBKU0NlbGwqKSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldEFkZCwgSlNDZWxsKiwgKEpTR2xv
YmFsT2JqZWN0KiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgK
aW5kZXggOTgwNTk5YjJlNTRhZjdkMGNhODdhOTljMTY5NjA2NDk3MGEwMWU4NC4uNzA0ZWJlNzEx
NWI4YzdkMzE3YTAyMTkxYzM5MWY5NDdjODEyMmEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKQEAgLTE4NCw3ICsx
ODQsNyBAQCBjbGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgIGNh
c2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3Vt
ZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgICAgIGNhc2Ug
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgorICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50
czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIEdl
dFJlc3RMZW5ndGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGZlNzZkMmI2ZTBmOTZmM2Uy
OGZjM2Q5ODNmYjMzYWMyMzE2ODZiMzEuLjcwZTRhMGMxNmYyODE1ZjE0Zjc3MGZhNjJkOTA0YTMx
MGJjMGVmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCBj
bGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5OiB7CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5n
VGhpczogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjQ2VsbE90aGVyKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCmluZGV4IDA3YTg1ZGIzZDYwYzYwODBhODNlNmRhNDE4NjhiYmY0Yjdj
ZWY2YzcuLjY5YjNiYzJhN2I1ODU2ZDg5OTQwMjk3Mjg2YjVmNzdhYjBkNThhOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01OTcsNyArNTk3
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3Vt
ZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNs
b25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICBj
YXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBQdXRU
b0FyZ3VtZW50czoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9y
RnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IGIyYmY0ZDBiMzI3Y2JhYmY0YmE3MGM2NzgxNmMxMzlhNTFmODkyOTAuLjMz
ZmNjNjVlNzg3MjA1YjM4MGE3OTM2OTFjMDVkMWUzMDdmYzJkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC04NDc1LDggKzg0NzUs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyhO
b2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShOb2RlKiBub2Rl
KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4
Y2x1ZGluZ1RoaXMoTm9kZSogbm9kZSkKIHsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0YXJn
ZXQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyB0YXJnZXRHUFIgPSB0YXJnZXQu
Z3ByKCk7CisKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAt
ODQ4NiwxMiArODQ4OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5KE5vZGUqIG5vZGUpCiAgICAgLy8gV2Ugc2V0IHVwIHRoZSBhcmd1bWVu
dHMgb3Vyc2VsdmVzLCBiZWNhdXNlIHdlIGhhdmUgdGhlIHdob2xlIHJlZ2lzdGVyIGZpbGUgYW5k
IHdlIGNhbgogICAgIC8vIHNldCB0aGVtIHVwIGRpcmVjdGx5IGludG8gdGhlIGFyZ3VtZW50IHJl
Z2lzdGVycy4KIAotICAgIC8vIEFyZ3VtZW50czogMDpKU0dsb2JhbE9iamVjdCosIDE6c3RhcnQs
IDM6bGVuZ3RoCisgICAgLy8gQXJndW1lbnRzOiAwOkpTR2xvYmFsT2JqZWN0KiwgMTpzdGFydCwg
MjpsZW5ndGgsIDM6dGFyZ2V0CisKKyAgICAvLyBEbyB0aGUgdGFyZ2V0R1BSIGZpcnN0LCBzaW5j
ZSBpdCBtaWdodCBhbGlhcyBhbiBhcmd1bWVudCByZWdpc3Rlci4KKyAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50KDMsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZSh0YXJnZXRHUFIsIGRl
c3RHUFIpOyB9KTsKKwogICAgIG1faml0LnNldHVwQXJndW1lbnQoMiwgWyZdIChHUFJSZWcgZGVz
dEdQUikgeyBlbWl0R2V0TGVuZ3RoKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0p
OwogICAgIG1faml0LnNldHVwQXJndW1lbnQoMSwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBlbWl0
R2V0QXJndW1lbnRTdGFydChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBkZXN0
R1BSKTsgfSk7CiAKLSAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUFyZ3Vt
ZW50c0J1dHRlcmZseSwgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIHJlc3VsdEdQUik7CiAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApp
bmRleCA5NzE3NTIyOGY2MmRhNzM1MDAyMTBlZmQyY2VjY2E5NTgyYjY4MDJkLi42NmE0MTkwOWNj
NjA2OWRiNDUxNzc3YjI5YjE3OTc0NzUwMGI4ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDExLDcgKzE0MTEsNyBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnQoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHkoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVJl
c3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNwcmVhZChOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlTmV3QXJyYXkoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMzQyNDBlNTRlODU3ZjU4YWQ0NzZhNmFm
M2JlYTMyY2Q3YzIxNmQ2OC4uNjJkMGY3NTRjMDBlYTE4NTBjMjI3MTI2ZThlMTA1N2Q2MDU1ZDk4
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC0zOTUwLDggKzM5NTAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5OiB7Ci0gICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHkobm9kZSk7CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOiB7CisgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDM4ZWU2YjRhNmVm
OTA5NzQzNWFiOGUwOTUyOTFkMGI2ZTc3NDEzMDUuLjk1ZTdmNWU3MzgzNTE3NjFlZDYyNTJmNzkz
YjNkOTA2OWY1NzFmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDkzMSw4ICs0OTMxLDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBj
YXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTogewotICAgICAgICBjb21waWxlQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5KG5vZGUpOworICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
RXhjbHVkaW5nVGhpczogeworICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
RXhjbHVkaW5nVGhpcyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCmluZGV4IGI5MDY2NWVjY2U1MmM1N2Y0NGI3MGQ0NjdjNGE0ZTVhNWYzNzAyZTAu
LmFlZjhhOWE4OTYwMDdmODc4MTIzNDcyNjEwYmMwYjc4NmE0YmY0OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCkBAIC0zNTcsNyArMzU3LDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1
bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAg
ICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgICAgICAgICAgY2FzZSBDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHk6CisgICAgICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRl
cmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAg
ICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3QXN5
bmNHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IDQwZjExMTkyNzNiZGJlMWE1
Yjk1MjE1ODg1ZjkyNzQ0MGZjOTExMDcuLjA0ZjA1M2FhMmJjOGYwOGQyNGFlNjI4MjAzYTE4YzZj
OTZlN2ZjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiREZHUGhh
c2UuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJNYXRoQ29tbW9u
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBl
LmgiCkBAIC05MjcsNyArOTI4LDggQEAgY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IG51
bGxwdHI7CiAgICAgICAgICAgICBFZGdlIGNhbGxlZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAwKTsKICAgICAgICAgICAgIENhbGxWYXJpYW50IGNhbGxWYXJpYW50OwotICAgICAgICAg
ICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50
PEpTRnVuY3Rpb24qPih2bSgpKSkgeworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KHZtKCkpOworICAgICAg
ICAgICAgaWYgKGZ1bmN0aW9uKSB7CiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGZ1bmN0
aW9uLT5leGVjdXRhYmxlKCk7CiAgICAgICAgICAgICAgICAgY2FsbFZhcmlhbnQgPSBDYWxsVmFy
aWFudChmdW5jdGlvbik7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbGxlZS0+aXNGdW5jdGlv
bkFsbG9jYXRpb24oKSkgewpAQCAtOTQzLDcgKzk0NSw0NiBAQCBjbGFzcyBTdHJlbmd0aFJlZHVj
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzMzkKICAgICAgICAgICAgIGlmIChleGVjdXRh
YmxlLT5pbnRyaW5zaWMoKSA9PSBXYXNtRnVuY3Rpb25JbnRyaW5zaWMpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlu
dHJpbnNpYygpID09IEJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2ljICYmIGZ1bmN0aW9uICYmICht
X25vZGUtPm9wKCkgPT0gQ2FsbCB8fCBtX25vZGUtPm9wKCkgPT0gVGFpbENhbGwpKSB7CisgICAg
ICAgICAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91
bmRGdW5jdGlvbio+KGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICBpZiAoSlNGdW5jdGlvbiog
dGFyZ2V0RnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSgpLCBib3VuZEZ1
bmN0aW9uLT50YXJnZXRGdW5jdGlvbigpKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvKiB0
YXJnZXRFeGVjdXRhYmxlID0gdGFyZ2V0RnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rp
b24tPmJvdW5kQXJncygpOworICAgICAgICAgICAgICAgICAgICBpZiAoKChib3VuZEFyZ3MgPyBi
b3VuZEFyZ3MtPmxlbmd0aCgpIDogMCkgKyBtX25vZGUtPm51bUNoaWxkcmVuKCkpIDw9IE9wdGlv
bnM6Om1heGltdW1EaXJlY3RDYWxsU3RhY2tTaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRHluYW1p
Y0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odm0oKSwgdGFyZ2V0RXhlY3V0YWJsZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSBtX3BhcmFtZXRl
clNsb3RzIGJlZm9yZSB3ZSBnZXQgdG8gdGhlIGJhY2tlbmQsIGJ1dCB3ZSBkb24ndAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHdhbnQgdG8gZG8gdG9vIG11Y2ggb2YgdGhpcy4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1BbGxvY2F0ZWRBcmdzID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGZ1bmN0aW9uRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSkg
KyAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BbGxvY2F0ZWRBcmdzIDw9
IE9wdGlvbnM6Om1heGltdW1EaXJlY3RDYWxsU3RhY2tTaXplKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9wYXJhbWV0ZXJTbG90cyA9IHN0ZDo6bWF4KG1fZ3Jh
cGgubV9wYXJhbWV0ZXJTbG90cywgR3JhcGg6OnBhcmFtZXRlclNsb3RzRm9yQXJnQ291bnQobnVt
QWxsb2NhdGVkQXJncykpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbi5hcHBlbmQobV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2RlSW5kZXgsIG1f
bm9kZS0+b3JpZ2luLCB0YXJnZXRGdW5jdGlvbikpOyAvLyBDYWxsZWUuCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50KG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwgYm91bmRGdW5jdGlv
bi0+Ym91bmRUaGlzKCkpKTsgLy8gfHRoaXN8CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3Mo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib3VuZEFyZ3MpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBib3VuZEFy
Z3MtPmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0
YW50KG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwgYm91bmRBcmdzLT5nZXQoaW5kZXgpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEZpcnN0IG9uZSBpcyB8Y2FsbGVlfCwgc2Vjb25kIG9uZSBpcyB8dGhpc3wuCisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMjsgaW5kZXggPCBtX25vZGUtPm51
bUNoaWxkcmVuKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2dyYXBoLmNoaWxkKG1fbm9kZSwgaW5kZXgpKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZHJlbiA9IEFkamFjZW5jeUxp
c3QoQWRqYWNlbmN5TGlzdDo6VmFyaWFibGUsIGZpcnN0Q2hpbGQsIG1fZ3JhcGgubV92YXJBcmdD
aGlsZHJlbi5zaXplKCkgLSBmaXJzdENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV9wYXJhbWV0ZXJTbG90cyA9IHN0ZDo6bWF4KG1fZ3JhcGgubV9wYXJhbWV0ZXJTbG90
cywgR3JhcGg6OnBhcmFtZXRlclNsb3RzRm9yQXJnQ291bnQobV9ub2RlLT5udW1DaGlsZHJlbigp
IC0gMSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fcGxhbi5yZWNvcmRl
ZFN0YXR1c2VzKCkuYWRkQ2FsbExpbmtTdGF0dXMobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsIENh
bGxMaW5rU3RhdHVzKENhbGxWYXJpYW50KHRhcmdldEV4ZWN1dGFibGUpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0RpcmVjdENhbGwobV9ncmFwaC5mcmVlemUo
dGFyZ2V0RXhlY3V0YWJsZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAo
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KHZtKCksIGV4ZWN1dGFibGUpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKG1fbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25z
dHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCAzZGYwNDRhOGZmMWI1ODUyYjVlYWYzYzA0ZmE5NjA4ZGNm
ZTA5ODJmLi40MzljMGQ4NjcyMDdlZmQzZDcxNDVmYmFkMTZiNjEyNWE0N2QwNDUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNTEsNyAr
MTUxLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1
bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzOgogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czoKICAgICBjYXNlIFB1dFRvQXJn
dW1lbnRzOgogICAgIGNhc2UgR2V0QXJndW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNjIxMGI5NjAxYjYwYjhjMzE1OWU4MjU1ZGQw
MjliMzE3MDJjNjI2ZS4uNTIxMWM4MzBmMGEyZWUzNmZhMTU0MjVlMWNjODQ1MTk3YjRmMzFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
MTEwMyw4ICsxMTAzLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDcmVh
dGVDbG9uZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHk6Ci0gICAgICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KCk7
CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKKyAg
ICAgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgICAg
ICAgICBjb21waWxlT2JqZWN0Q3JlYXRlKCk7CkBAIC02ODQ4LDEwICs2ODQ4LDEwIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKLSAg
ICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoKQorICAgIHZvaWQgY29tcGls
ZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMoKQogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwg
b3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBnZXRBcmd1bWVudHNTdGFydCgpLCBnZXRBcmd1bWVudHNMZW5ndGgoKS52YWx1ZSk7Cisg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkNyZWF0ZUFyZ3Vt
ZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGdl
dEFyZ3VtZW50c1N0YXJ0KCksIGdldEFyZ3VtZW50c0xlbmd0aCgpLnZhbHVlLCBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpKTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
aW5kZXggODkwNDE2OGRjYzZjZmE5NjIwZWU3ZmJlNzE0ZjI3ZmRhZWQyY2VmNC4uZjMxOWVlYmQ4
Y2RiOTAzZTA0MzhkNjY4NDQyMDBmY2I1YmUxYzFmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklUQ29kZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0FycmF5SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRl
cmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC0zOTIsNyArMzkz
LDcgQEAgY2xhc3MgR2V0U3RhY2tUcmFjZUZ1bmN0b3IgewogICAgICAgICAgICAgfSBlbHNlIGlm
ICghIXZpc2l0b3ItPmNvZGVCbG9jaygpICYmICF2aXNpdG9yLT5jb2RlQmxvY2soKS0+dW5saW5r
ZWRDb2RlQmxvY2soKS0+aXNCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgICAgIG1f
cmVzdWx0cy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgIFN0YWNrRnJhbWUobV92bSwgbV9v
d25lciwgdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCksIHZpc2l0b3ItPmNvZGVCbG9jaygpLCB2
aXNpdG9yLT5ieXRlY29kZUluZGV4KCkpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCF2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKS0+aW5oZXJpdHM8SlNC
b3VuZEZ1bmN0aW9uPihtX3ZtKSkgewogICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQo
CiAgICAgICAgICAgICAgICAgICAgIFN0YWNrRnJhbWUobV92bSwgbV9vd25lciwgdmlzaXRvci0+
Y2FsbGVlKCkuYXNDZWxsKCkpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCA2NmFkODRiMGQ2MjBlMTYxNDA5ODAzNmUyYTQyZmQ0YmFlMDgxM2VhLi43NTM4
ZDVjYTU0MTc4ODkyOGY1YTFlODg4NGQ2NDNkYWU1MjgyZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfZGlyZWN0X2FyZ3VtZW50cykK
ICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpCiAgICAgICAg
IERFRklORV9TTE9XX09QKGNyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKQotICAgICAgICBERUZJTkVf
U0xPV19PUChjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKKyAgICAgICAgREVGSU5FX1NMT1df
T1AoY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpCiAgICAgICAgIERF
RklORV9TTE9XX09QKGNyZWF0ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVf
cHJvbWlzZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBmYzM5OTE0YTFkNTQyNDU2
MmU3OTE5ZjUxZWNkYjE1MzM4NjJmMDQ1Li41YjZjNjkxY2MzNTFkY2ZhNDZhNTJiNDllMzI5Nzcz
ZTM0YzMwYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rp
b24uaCIKQEAgLTE0NTEsNiArMTQ1Miw4IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmly
dHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCisgICAgQVNTRVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsK
KwogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCA9IGNhbGxMaW5rSW5mby0+c3BlY2lh
bGl6YXRpb25LaW5kKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIApAQCAtMTQ2NCwyOSArMTQ2Nyw0MSBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5U
eXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
QwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBoYW5k
bGVIb3N0Q2FsbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsZWVBc1ZhbHVlLCBjYWxs
TGlua0luZm8pKTsKICAgICB9Ci0gICAgCi0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKLSAgICBKU1Njb3BlKiBzY29w
ZSA9IGZ1bmN0aW9uLT5zY29wZVVuY2hlY2tlZCgpOwotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlID0gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWV4ZWN1
dGFibGUtPmhhc0pJVENvZGVGb3Ioa2luZCkpKSB7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
ZXhlY3V0YWJsZSk7CiAKLSAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVj
dXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0KSB7Ci0gICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24p
KTsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCi0gICAgICAgICAgICAgICAgdm0u
Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7Ci0gICAgICAgIH0K
KyAgICBhdXRvIG1hdGVyaWFsaXplQ29kZUJsb2NrSWZOZWNlc3NhcnkgPSBbJl0oSlNGdW5jdGlv
biogZnVuY3Rpb24sIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKSAtPiB2b2lkKiB7CisgICAg
ICAgIGlmIChVTkxJS0VMWSghZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvcihraW5kKSkpIHsKKyAg
ICAgICAgICAgIEpTU2NvcGUqIHNjb3BlID0gZnVuY3Rpb24tPnNjb3BlVW5jaGVja2VkKCk7Cisg
ICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCi0gICAgICAgIENvZGVC
bG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBjYWxsZWVGcmFtZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7
Ci0gICAgICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5k
LCAqY29kZUJsb2NrU2xvdCk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5l
eGNlcHRpb24oKSA9PSBlcnJvcik7Ci0gICAgICAgIGlmIChVTkxJS0VMWShlcnJvcikpIHsKLSAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCi0gICAgICAgICAgICAgICAgdm0uZ2V0Q1RJ
U3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisgICAgICAgICAgICBpZiAo
IWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9
PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKKyAgICAgICAgICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1
Y3RvckVycm9yKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBjYWxs
ZWVGcmFtZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7CisgICAgICAgICAgICBFeGNlcHRpb24qIGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOworICAg
ICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9y
KTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShlcnJvcikpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfTsK
KyAgICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gZnVu
Y3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICBhdXRvIGZhaWx1cmUgPSBtYXRlcmlhbGl6ZUNvZGVC
bG9ja0lmTmVjZXNzYXJ5KGZ1bmN0aW9uLCBleGVjdXRhYmxlKTsKKyAgICBpZiAoVU5MSUtFTFko
ZmFpbHVyZSkpCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZmFpbHVyZSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisKKyAgICAvLyBDYWxsIElDIGxpbmtzIHRo
aXMgY2FsbHNpdGUgdG8gd3JhcHBlZCBmdW5jdGlvbiBkaXJlY3RseS4gV2UgbmVlZCB0byBlbnN1
cmUgdGhhdCBkaXJlY3RseSBsaW5rZWQgZnVuY3Rpb24gaXMgbWF0ZXJpYWxpemVkIGhlcmUuCisg
ICAgaWYgKGZ1bmN0aW9uLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBqc0Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4oZnVuY3Rpb24pLT50YXJnZXRGdW5jdGlvbigpLT5pbmhlcml0czxK
U0Z1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgYXV0byogdGFyZ2V0RnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihmdW5jdGlvbiktPnRhcmdldEZ1
bmN0aW9uKCkpOworICAgICAgICBhdXRvIGZhaWx1cmUgPSBtYXRlcmlhbGl6ZUNvZGVCbG9ja0lm
TmVjZXNzYXJ5KHRhcmdldEZ1bmN0aW9uLCB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpKTsK
KyAgICAgICAgaWYgKFVOTElLRUxZKGZhaWx1cmUpKQorICAgICAgICAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdChmYWlsdXJlLCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsK
ICAgICB9CisKICAgICAvLyBGSVhNRTogU3VwcG9ydCB3YXNtIElDLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzMzkKICAgICByZXR1cm4gZW5jb2Rl
UmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoCkBAIC0xNDk2LDYgKzE1MTEsMTAgQEAg
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSog
Y2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvKSkKIHsKKyAgICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9mIHZpcnR1YWxGb3JX
aXRoRnVuY3Rpb24vbGlua1BvbHltb3JwaGljQ2FsbCwgd2Ugc3Ryb25nbHkgYXNzdW1lIHRoYXQg
d2UgbmV2ZXIgZG8gR0MuCisgICAgLy8gR0MgamV0dGlzb25zIENvZGVCbG9ja3MsIGNoYW5nZXMg
Q2FsbExpbmtJbmZvIGV0Yy4gYW5kIGJyZWFrcyBhc3N1bXB0aW9uIGRvbmUgYmVmb3JlIGFuZCBh
ZnRlciB0aGlzIGNhbGwuCisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxlKGds
b2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNp
YWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVu
Y3Rpb25DZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0
aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVl
QXNGdW5jdGlvbkNlbGwpOwpAQCAtMTUwNyw2ICsxNTI2LDEwIEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsLCBTbG93UGF0aFJldHVyblR5cGUs
IChDYWxsCiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WaXJ0dWFsQ2FsbCwg
U2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIC8v
IER1cmluZyBleGVjdXRpb24gb2YgdmlydHVhbEZvcldpdGhGdW5jdGlvbi9saW5rUG9seW1vcnBo
aWNDYWxsLCB3ZSBzdHJvbmdseSBhc3N1bWUgdGhhdCB3ZSBuZXZlciBkbyBHQy4KKyAgICAvLyBH
QyBqZXR0aXNvbnMgQ29kZUJsb2NrcywgY2hhbmdlcyBDYWxsTGlua0luZm8gZXRjLiBhbmQgYnJl
YWtzIGFzc3VtcHRpb24gZG9uZSBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY2FsbC4KKyAgICBEZWZl
ckdDRm9yQVdoaWxlIGRlZmVyR0NGb3JBV2hpbGUoZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApOwor
CiAgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbElnbm9yZWQ7CiAgICAgcmV0dXJuIHZp
cnR1YWxGb3JXaXRoRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgY2FsbExpbmtJ
bmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbElnbm9yZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKaW5kZXggOGE5NmFiZTg1ZWRlZmJhMTU1MTA5Mjc0NjdkNmEzOTk5ZTEz
NTRiZS4uZGU0MGFmNGQ0Y2EwNmUyYzI0NGYwY2RmODdmZGViNzhhOGI4NmExNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHkuaCIKICNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5TW9kdWxlLmgiCkBAIC0xMjIzLDYgKzEyMjQsMTEgQEAgdm9pZCBsaW5rRm9yKAogewog
ICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLnN0dWIoKSk7CiAKKyAgICBpZiAoY2FsbGVlLT5pbmhl
cml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBjYWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25L
aW5kKCkgPT0gQ29kZUZvckNhbGwgJiYgY2FsbExpbmtJbmZvLmFsbG93U3R1YnMoKSkgeworICAg
ICAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZvLCBsaW5rUG9seW1vcnBoaWNDYWxsVGh1
bmtHZW5lcmF0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ2FsbEZyYW1lKiBj
YWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICAvLyBPdXIgY2FsbGVy
IG11c3QgaGF2ZSBhIGNlbGwgZm9yIGEgY2FsbGVlLiBXaGVuIGNhbGxpbmcKICAgICAvLyB0aGlz
IGZyb20gV2FzbSwgd2UgZW5zdXJlIHRoZSBjYWxsZWUgaXMgYSBjZWxsLgpAQCAtMTM0MCwxNiAr
MTM0NiwxMDEgQEAgc3RydWN0IENhbGxUb0NvZGVQdHIgewogfTsKIH0gLy8gYW5ub255bW91cyBu
YW1lc3BhY2UKIAorc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmxpbmVkQm91bmRGdW5jdGlvbkNhbGwo
Vk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisK
KyAgICAvLyBTZXQgdXAgb3VyIGNhbGwgZnJhbWUuCisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworCisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJv
dW5kQXJncyA9IGZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICB1bnNpZ25lZCBjYWxsU2l0ZUFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpOworICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2Fs
bFNpdGVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIChib3VuZEFyZ3MgPyBib3VuZEFyZ3Mt
Pmxlbmd0aCgpIDogMCk7CisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IDA7CisgICAgdW5z
aWduZWQgbnVtRml4dXBDb3VudCA9IDA7CisKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlv
biA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpOworICAg
IEV4ZWN1dGFibGVCYXNlKiB0YXJnZXRFeGVjdXRhYmxlID0gdGFyZ2V0RnVuY3Rpb24tPmV4ZWN1
dGFibGUoKTsKKyAgICBpZiAodGFyZ2V0RXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgewor
ICAgIH0gZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogdGFyZ2V0Q29kZUJsb2NrID0ganNDYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRhcmdldEV4ZWN1dGFibGUpLT5jb2RlQmxvY2tGb3JDYWxs
KCk7CisgICAgICAgIG51bVBhcmFtZXRlcnMgPSB0YXJnZXRDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKTsKKyAgICAgICAgaWYgKG51bVBhcmFtZXRlcnMgPiBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykKKyAgICAgICAgICAgIG51bUZpeHVwQ291bnQgPSBudW1QYXJhbWV0ZXJzIC0gYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgfQorICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzQWZ0ZXJGaXh1cCA9IHN0ZDo6bWF4PHVuc2lnbmVkPihhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgbnVtUGFyYW1ldGVycyk7CisKKyAgICAvLyBUaGUgZm9ybXVsYSBmb3Ig
dGhlIG51bWJlciBvZiBzdGFjayBieXRlcyBuZWVkZWQgZ2l2ZW4gc29tZSBudW1iZXIgb2YgcGFy
YW1ldGVycyAoaW5jbHVkaW5nCisgICAgLy8gdGhpcykgaXM6CisgICAgLy8KKyAgICAvLyAgICAg
c3RhY2tBbGlnbigobnVtUGFyYW1zICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSkgKiBzaXplb2YoUmVn
aXN0ZXIpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKQorICAgIC8vCisgICAgLy8gUHJvYmFi
bHkgd2Ugd2FudCB0byB3cml0ZSB0aGlzIGFzOgorICAgIC8vCisgICAgLy8gICAgIHN0YWNrQWxp
Z24oKG51bVBhcmFtcyArIChDYWxsRnJhbWVIZWFkZXJTaXplIC0gQ2FsbGVyRnJhbWVBbmRQQ1Np
emUpKSAqIHNpemVvZihSZWdpc3RlcikpCisgICAgLy8KKyAgICAvLyBUaGF0J3MgcmVhbGx5IGFs
bCB0aGVyZSBpcyB0byB0aGlzLiBXZSBoYXZlIGFsbCB0aGUgcmVnaXN0ZXJzIHdlIG5lZWQgdG8g
ZG8gaXQuCisKKyAgICB1bnNpZ25lZCBleHRyYVN0YWNrTmVlZGVkID0gMDsKKyAgICBpZiAodW5z
aWduZWQgc3RhY2tNaXNhbGlnbm1lbnQgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgJSBzdGFj
a0FsaWdubWVudEJ5dGVzKCkpCisgICAgICAgIGV4dHJhU3RhY2tOZWVkZWQgPSBzdGFja0FsaWdu
bWVudEJ5dGVzKCkgLSBzdGFja01pc2FsaWdubWVudDsKKworICAgIHVuc2lnbmVkIHN0YWNrU2l6
ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAo
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBDYWxsZXJGcmFtZUFuZFBDOjpzaXpl
SW5SZWdpc3RlcnMpICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNBZnRlckZpeHVwKSArIGV4
dHJhU3RhY2tOZWVkZWQ7CisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigtKHN0YWNrU2l6ZSAqIHNpemVvZihSZWdpc3RlcikpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1Bv
aW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOworICAgIGF1dG8gc3RhY2tPdmVyZmxvdyA9
IGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3Modm0uYWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSksIEdQUkluZm86OnJlZ1QyKTsK
KworICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVQYXls
b2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworCisg
ICAgdW5zaWduZWQgaW5kZXhJbkFyZ3VtZW50cyA9IDA7CisgICAgaml0LnN0b3JlVHJ1c3RlZFZh
bHVlKGZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNs
b3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisgICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2lu
ZGV4KQorICAgICAgICAgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKGJvdW5kQXJncy0+Z2V0KGlu
ZGV4KSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysr
KSk7CisgICAgfQorCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1ZVJlZ3M6Ondp
dGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZvOjpyZWdUMik7CisgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IC8qIGNhbGxzaXRlJ3MgfHRoaXN8IGlzIG5vdCBpbnRlcmVz
dGluZyAqLyAxOyBpbmRleCA8IGNhbGxTaXRlQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsr
aW5kZXgpIHsKKyAgICAgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGluZGV4KSksIHZhbHVlUmVn
cyk7CisgICAgICAgIGppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxs
ZWVBcmd1bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisgICAgfQorCisgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtRml4dXBDb3VudDsgKytpbmRleCkKKyAgICAg
ICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6Y2Fs
bGVlQXJndW1lbnRTbG90KGluZGV4SW5Bcmd1bWVudHMrKykpOworCisgICAgaml0LnN0b3JlVHJ1
c3RlZFZhbHVlKHRhcmdldEZ1bmN0aW9uLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChD
YWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKKyAgICBhdXRvIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxs
KEpTRW50cnlQdHJUYWcpOworICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZ1bmN0aW9uQ2FsbCwgRnVuY3Rp
b25QdHI8SlNFbnRyeVB0clRhZz4odGFyZ2V0RXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZv
ckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKSkpOworICAgIH0p
OworCisgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgaml0LnJldCgpOworCisg
ICAgLy8gVGhyb3cgU3RhY2sgT3ZlcmZsb3cgZXhjZXB0aW9uCisgICAgc3RhY2tPdmVyZmxvdy5s
aW5rKCZqaXQpOworICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZl
c0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZnVuY3Rpb24tPnNjb3BlKCkpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9y
RnJvbVRodW5rKT4oR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5j
dGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJv
bVRodW5rKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5v
bkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRs
ZXIodm0pOworfQorCitzdHJ1Y3QgSW5saW5lZENhbGxlZSB7CisgICAgc2l6ZV90IGNhc2VJbmRl
eDsKKyAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGVudHJ5cG9pbnQ7Cit9OworCiB2b2lkIGxpbmtQ
b2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDYWxsVmFyaWFudCBuZXdWYXJp
YW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mby5hbGxvd1N0dWJzKCkpOwog
CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0KLSAgICAvLyBEdXJpbmcgZXhlY3V0
aW9uIG9mIGxpbmtQb2x5bW9ycGhpY0NhbGwsIHdlIHN0cm9uZ2x5IGFzc3VtZSB0aGF0IHdlIG5l
dmVyIGRvIEdDLgotICAgIC8vIEdDIGpldHRpc29ucyBDb2RlQmxvY2tzLCBjaGFuZ2VzIENhbGxM
aW5rSW5mbyBldGMuIGFuZCBicmVha3MgYXNzdW1wdGlvbiBkb25lIGJlZm9yZSBhbmQgYWZ0ZXIg
dGhpcyBjYWxsLgotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQ0ZvckFXaGlsZSh2bS5oZWFw
KTsKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwogICAgIAogICAgIGlmICghbmV3
VmFyaWFudCkgewogICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBjYWxsTGlu
a0luZm8pOwpAQCAtMTM5Miw2ICsxNDgzLDExIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAg
ICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+IGNhbGxDYXNlczsKICAgICBWZWN0
b3I8aW50NjRfdD4gY2FzZVZhbHVlczsKKworICAgIGF1dG8gaXNMaW5rYWJsZUJvdW5kRnVuY3Rp
b24gPSBbJl0oQ2FsbFZhcmlhbnQmIHZhcmlhbnQpIHsKKyAgICAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSB2YXJpYW50LmZ1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAmJiBm
dW5jdGlvbi0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkgJiYganNDYXN0PEpTQm91bmRG
dW5jdGlvbio+KGZ1bmN0aW9uKS0+dGFyZ2V0RnVuY3Rpb24oKS0+aW5oZXJpdHM8SlNGdW5jdGlv
bj4odm0pICYmICFjYWxsTGlua0luZm8uaXNWYXJhcmdzKCk7CisgICAgfTsKICAgICAKICAgICAv
LyBGaWd1cmUgb3V0IHdoYXQgb3VyIGNhc2VzIGFyZS4KICAgICBmb3IgKENhbGxWYXJpYW50IHZh
cmlhbnQgOiBsaXN0KSB7CkBAIC0xNDA1LDYgKzE1MDEsMTIgQEAgdm9pZCBsaW5rUG9seW1vcnBo
aWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBDYWwKICAgICAgICAgICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBjYWxs
TGlua0luZm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIGlmIChpc0xpbmthYmxlQm91bmRGdW5jdGlvbih2YXJpYW50KSkgeworICAgICAg
ICAgICAgLy8gV2UgbGluayB0aGUgY2FsbCB0byB0aGUgdGFyZ2V0IGZ1bmN0aW9uLCBzbyB3ZSBu
ZWVkIHRvIHJldHJpZXZlIENvZGVCbG9jayBmcm9tIHRoZSB0YXJnZXQgZnVuY3Rpb24uCisgICAg
ICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
anNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHZhcmlhbnQuZnVuY3Rpb24oKSktPnRhcmdldEZ1bmN0
aW9uKCkpOworICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIHRhcmdldEV4ZWN1dGFibGUgPSB0
YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICAgICAgaWYgKCF0YXJnZXRFeGVj
dXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICAgICAgICAgIGNvZGVCbG9jayA9IGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0YXJnZXRFeGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9y
Q2FsbCgpOwogICAgICAgICB9CiAKICAgICAgICAgaW50NjRfdCBuZXdDYXNlVmFsdWUgPSAwOwpA
QCAtMTUyMyw2ICsxNjI1LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgaGFz
RXhlY3V0YWJsZS5saW5rKCZzdHViSml0KTsKICAgICB9CiAKKyAgICBWZWN0b3I8SW5saW5lZENh
bGxlZT4gaW5saW5lZENhbGxlZXM7CiAgICAgQmluYXJ5U3dpdGNoIGJpbmFyeVN3aXRjaChjb21w
YXJpc29uVmFsdWVHUFIsIGNhc2VWYWx1ZXMsIEJpbmFyeVN3aXRjaDo6SW50UHRyKTsKICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAgICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZh
bmNlKHN0dWJKaXQpKSB7CkBAIC0xNTM0LDcgKzE2MzcsMTQgQEAgdm9pZCBsaW5rUG9seW1vcnBo
aWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBDYWwKICAgICAgICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CiAgICAgICAgICAgICBB
U1NFUlQodmFyaWFudC5leGVjdXRhYmxlKCktPmhhc0pJVENvZGVGb3JDYWxsKCkpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBjb2RlUHRyID0ganNUb1dhc21JQ0NvZGVQdHIodm0sIGNhbGxM
aW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSwgdmFyaWFudC5mdW5jdGlvbigpKTsKKyAgICAg
ICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHZhcmlhbnQuZnVuY3Rpb24oKSkgewor
ICAgICAgICAgICAgICAgIGlmIChpc0xpbmthYmxlQm91bmRGdW5jdGlvbih2YXJpYW50KSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBFbWl0IGlubGluZWQgSlNCb3VuZEZ1bmN0aW9uIGNhbGwg
aWYgSlNCb3VuZEZ1bmN0aW9uJ3MgdGFyZ2V0IGZ1bmN0aW9uIGlzIEpTRnVuY3Rpb24sIGFuZCBp
dCBpcyBub3QgY2FsbF92YXJhcmdzCisgICAgICAgICAgICAgICAgICAgIGlubGluZWRDYWxsZWVz
LmFwcGVuZChJbmxpbmVkQ2FsbGVlIHsgY2FzZUluZGV4LCBDQ2FsbEhlbHBlcnM6OkxhYmVsKCkg
fSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNvZGVQdHIg
PSBqc1RvV2FzbUlDQ29kZVB0cih2bSwgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgp
LCBmdW5jdGlvbik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICghY29kZVB0cikK
ICAgICAgICAgICAgICAgICBjb2RlUHRyID0gdmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRl
ZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RSZXF1aXJlZCk7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xNTU4LDYgKzE2NjgsMjEgQEAgdm9pZCBsaW5rUG9seW1v
cnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBDYWwKICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jb2RlUHRyID0gY29kZVB0cjsKICAg
ICAgICAgZG9uZS5hcHBlbmQoc3R1YkppdC5qdW1wKCkpOwogICAgIH0KKworICAgIGZvciAoYXV0
byYgaW5saW5lZCA6IGlubGluZWRDYWxsZWVzKSB7CisgICAgICAgIHNpemVfdCBjYXNlSW5kZXgg
PSBpbmxpbmVkLmNhc2VJbmRleDsKKyAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxD
YXNlc1tjYXNlSW5kZXhdLnZhcmlhbnQoKTsKKyAgICAgICAgaW5saW5lZC5lbnRyeXBvaW50ID0g
c3R1YkppdC5sYWJlbCgpOworCisgICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKSk7
CisgICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwo
KSk7CisgICAgICAgIEFTU0VSVCh2YXJpYW50LmZ1bmN0aW9uKCkpOworICAgICAgICBBU1NFUlQo
dmFyaWFudC5mdW5jdGlvbigpLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSk7CisgICAg
ICAgIEFTU0VSVChqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKS0+
dGFyZ2V0RnVuY3Rpb24oKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKTsKKyAgICAgICAgQVNT
RVJUKCFjYWxsTGlua0luZm8uaXNWYXJhcmdzKCkpOworCisgICAgICAgIGdlbmVyYXRlSW5saW5l
ZEJvdW5kRnVuY3Rpb25DYWxsKHZtLCBzdHViSml0LCBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4o
dmFyaWFudC5mdW5jdGlvbigpKSwgY2FsbEZyYW1lKTsKKyAgICB9CiAgICAgCiAgICAgc2xvd1Bh
dGgubGluaygmc3R1YkppdCk7CiAgICAgYmluYXJ5U3dpdGNoLmZhbGxUaHJvdWdoKCkubGluaygm
c3R1YkppdCk7CkBAIC0xNTkwLDYgKzE3MTUsOSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAog
ICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBjYWxsTGlua0luZm8pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiBpbmxpbmVkIDogaW5s
aW5lZENhbGxlZXMpCisgICAgICAgIGNhbGxzW2lubGluZWQuY2FzZUluZGV4XS5jb2RlUHRyID0g
cGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihpbmxpbmVkLmVudHJ5cG9pbnQp
OwogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxDYXNlcy5zaXplKCkgPT0gY2FsbHMuc2l6
ZSgpKTsKICAgICBmb3IgKENhbGxUb0NvZGVQdHIgY2FsbFRvQ29kZVB0ciA6IGNhbGxzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggNTFm
MDNiOWMxZjU5MTkwZjlkOTk4NGFmY2JiMTViOTBiNWExN2NlNy4uZjgwNjUyOTIxZjE2OTU4N2Zm
NmUwNDdhNjkzOTUwY2FmODk0MTgzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMTE4OSw3ICsxMTg5LDYgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0p
CiAgICAgYXV0byBub0FyZ3MgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8s
IEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMiwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgaml0LmFkZDMyKEdQUkluZm86OnJlZ1QyLCBHUFJJ
bmZvOjpyZWdUMSk7Ci0gICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEp
LCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgbm9BcmdzLmxpbmsoJmppdCk7CiAgICAgaml0LmFkZDMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0
ZXJzIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzKSwgR1BSSW5mbzo6cmVnVDEs
IEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQubHNoaWZ0MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMyksIEdQUkluZm86OnJlZ1QyKTsKQEAgLTEyNDgsNyArMTI0Nyw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3Io
Vk0mIHZtKQogCiAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBsb29wQm91bmQgPSBqaXQubGFiZWwo
KTsKICAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86
OnJlZ1QxKTsKLSAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUklu
Zm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBKU0lt
bXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSksIHZhbHVlUmVncyk7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkJh
c2VJbmRleChHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6VGlt
ZXNFaWdodCwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgdmFsdWVSZWdz
KTsKICAgICBqaXQuc3RvcmVWYWx1ZSh2YWx1ZVJlZ3MsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJn
dW1lbnRTbG90KDEpLmluZGV4ZWRCeShHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1l
c0VpZ2h0KSk7CiAgICAgaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQ
UkluZm86OnJlZ1QxKS5saW5rVG8obG9vcEJvdW5kLCAmaml0KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGQwOWQw
YTkzMGFjMjQ0MjUyOTM5MjBiY2ZkNzllN2ZkNTE3YTM4ZTMuLjE0M2MxNDg4NGM4ZTE2NTc2NzI1
NmRjOGZiOGQwODg4Nzg1ODA3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5ODEsNyArMTk4MSw3IEBAIG1hY3Jv
IHNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKIGVuZAogCiBzbG93UGF0aE9wKGNyZWF0ZV9jbG9uZWRf
YXJndW1lbnRzKQotc2xvd1BhdGhPcChjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKK3Nsb3dQ
YXRoT3AoY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpCiBzbG93UGF0
aE9wKGNyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKQogc2xvd1BhdGhPcChjcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudCkKIHNsb3dQYXRoT3AoY3JlYXRlX3Jlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBhZTI0YzFhYTgwNTU0
Y2Q5ZmEyODA0NjhlNTk1YjJkMWY2OWZjYzdiLi5iZTlmOTM2MzA1ZTA1NGJlYzkyNGQ0YjczZTA2
MzdhYmU3YmIyYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJdGVyYXRvck9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0Fz
eW5jR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVk
ZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKQEAgLTIwNiwxNiArMjA3LDM2IEBAIEpTQ19ERUZJTkVf
Q09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpCiAgICAg
UkVUVVJOKENsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aE1hY2hpbmVGcmFtZShnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgQXJndW1lbnRzTW9kZTo6Q2xvbmVkKSk7CiB9CiAKLUpTQ19ERUZJTkVf
Q09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpCitK
U0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHNfYnV0
dGVyZmx5X2V4Y2x1ZGluZ190aGlzKQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseT4oKTsKKyAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcz4oKTsK
KyAgICBKU0NlbGwqIHRhcmdldCA9IEdFVChieXRlY29kZS5tX3RhcmdldCkuanNWYWx1ZSgpLmFz
Q2VsbCgpOwogICAgIGludDMyX3QgYXJndW1lbnRDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpOwotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJs
ZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVz
W2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91
cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgYXJndW1lbnRDb3VudCk7CisgICAg
QVNTRVJUKGFyZ3VtZW50Q291bnQgPiAxKTsKKworICAgIENoZWNrZWRJbnQzMiB0b3RhbENvdW50
ID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAgaW50MzJfdCBhZGRpdGlvbmFsQ291bnQgPSAwOwor
ICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBudWxscHRyOworICAgIGlmICh0
YXJnZXQtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKSB7CisgICAgICAgIEpTQm91bmRG
dW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0YXJnZXQp
OworICAgICAgICBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAg
ICAgYWRkaXRpb25hbENvdW50ID0gYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDA7
CisgICAgICAgIHRvdGFsQ291bnQgKz0gYWRkaXRpb25hbENvdW50OworICAgICAgICBpZiAodG90
YWxDb3VudC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICBUSFJPVyhjcmVhdGVPdXRPZk1l
bW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgIH0KKworICAgIEpTSW1tdXRhYmxlQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5p
bW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENv
cHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5n
ZXQoKSwgdG90YWxDb3VudC51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFidXR0ZXJmbHkpCiAgICAg
ICAgIFRIUk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgZm9y
IChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENvdW50OyArK2luZGV4KQotICAg
ICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudChpbmRleCkpOworICAgIGlmIChhZGRpdGlvbmFsQ291bnQpIHsKKyAgICAgICAgQVNT
RVJUKGJvdW5kQXJncyk7CisgICAgICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwg
YWRkaXRpb25hbENvdW50OyArK2luZGV4KQorICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRl
eCh2bSwgaW5kZXgsIGJvdW5kQXJncy0+Z2V0KGluZGV4KSk7CisgICAgfQorICAgIGZvciAoaW50
MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgKGFyZ3VtZW50Q291bnQgLSAxKTsgKytpbmRleCkKKyAg
ICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXggKyBhZGRpdGlvbmFsQ291bnQsIGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaW5kZXggKyAxKSk7CiAgICAgUkVUVVJOKGJ1dHRl
cmZseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKaW5kZXggYzc2YjE2MTBmOTk3YTQ4MmM0MGNlNzdlN2MyOGE2NjNjYmUzOGQyYS4u
YjYxZWY0MWZkZDExM2MwNmZmMGQyMTdlMWNhM2I3MTM5MmRiNTFiMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTIxMCw3ICsyMTAs
NyBAQCBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJp
dHlDaGVjayk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVf
ZGlyZWN0X2FyZ3VtZW50cyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0
aF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cyk7Ci1KU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSk7CitKU0NfREVD
TEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZs
eV9leGNsdWRpbmdfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0
aF9jcmVhdGVfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9l
bnRlcik7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90b190aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3Bw
CmluZGV4IGRkZThmMDlhNTk3YTg5MTNmMzk4NDJiZmY0MmNhMTEwNGVhYTIxNTIuLmQ0Zjc4ZjQ3
MDI3YTJhOGEwODY5MWVmMzJmZTA5YjNhZDUyMTViNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtNDEsOCArNDEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
ICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhl
IGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBi
b3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3Vu
ZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtNzAsOCArNjksNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBpZiAo
Ym91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9u
ZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBib3VuZEFyZ3Mt
Pmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFy
Z3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdl
dChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKTsgKytpKQpAQCAtOTUsOCArOTMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QsIChKU0dsb2JhbE9iamVjdCog
Z2xvYgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdz
KSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhp
c3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgp
OyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0
aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAg
ICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKTsgKytpKQpAQCAtMTIzLDggKzEyMCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihi
b3VuZEZ1bmN0aW9uQ29uc3RydWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYgKGJvdW5kQXJncykgewotICAg
ICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgfHRoaXN8LgotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytp
KQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXQoaSkpOwogICAgIH0KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsr
aSkKQEAgLTIzNCw4ICsyMzAsNyBAQCBKU0FycmF5KiBKU0JvdW5kRnVuY3Rpb246OmJvdW5kQXJn
c0NvcHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0FycmF5KiByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KHRoaXMtPmdsb2JhbE9iamVjdCgpLCBudWxscHRyKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBpZiAobV9ib3VuZEFy
Z3MpIHsKLSAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIGJv
dW5kIHx0aGlzfC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jv
dW5kQXJncy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGdsb2Jh
bE9iamVjdCwgbV9ib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDM0MTg0NGIyZDJiMTIyNTZk
N2IzNmMyMDNjMjE1OWY4ZmM0NWIyMmEuLjI3OThjMjFjNTZkNzA5ZGYyZWMyZWU0ZGYwODM3MmEz
MjVjYTFkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTMwMCwxMCArMzAwLDIwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihtYWtlQm91bmRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIEpTVmFsdWUgYm91bmRUaGlzID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgxKTsKICAgICBKU1ZhbHVlIGJvdW5kQXJncyA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMik7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IGJvdW5k
QXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KGJvdW5kQXJncykg
OiBudWxscHRyOwogICAgIGRvdWJsZSBsZW5ndGggPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDMpLmFzTnVtYmVyKCk7CiAgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBhc1N0cmluZyhj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFyZ3MuaXNDZWxsKCkgPyBqc0Nhc3Q8
SlNJbW11dGFibGVCdXR0ZXJmbHkqPihib3VuZEFyZ3MpIDogbnVsbHB0ciwgbGVuZ3RoLCBuYW1l
U3RyaW5nKSkpOworICAgIC8vIFVud3JhcCBKU0JvdW5kRnVuY3Rpb24gYnkgY29uZmlndXJpbmcg
YnV0dGVyZmx5IGFuZCB0YXJnZXQuIFRoZSBsYXJnZXIgQnV0dGVyZmx5IGlzIGFscmVhZHkgYWxs
b2NhdGVkIGZvciB0aGF0IHB1cnBvc2UuCisgICAgaWYgKHRhcmdldC0+aW5oZXJpdHM8SlNCb3Vu
ZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9u
ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAgICAgIGJvdW5kVGhpcyA9
IGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpOworICAgICAgICB0YXJnZXQgPSBib3VuZEZ1bmN0
aW9uLT50YXJnZXRGdW5jdGlvbigpOworICAgICAgICBpZiAoIWJ1dHRlcmZseSAmJiBib3VuZEZ1
bmN0aW9uLT5ib3VuZEFyZ3MoKSkKKyAgICAgICAgICAgIGJ1dHRlcmZseSA9IGJvdW5kRnVuY3Rp
b24tPmJvdW5kQXJncygpOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHRhcmdldCwgYm91bmRUaGlzLCBidXR0ZXJmbHksIGxlbmd0aCwgbmFtZVN0cmluZykpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3BlcnR5LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5Y2M0M2YyNWQ1
Y2YzNzhmOTFlMTBhNzk3NTY4ZDZkYTk4YzNmNDFjLi40MDBmNDE3ZmZlMWQxNmZmOGIyZWY4N2Nk
NGE2ZGZjNTQyYjllNmU3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA0LTMwICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gT3B0aW1pemUgYm91bmQgZnVu
Y3Rpb24gY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNTEzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLWlubGluaW5nLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodCk6CisgICAgICAgICogc3Ry
ZXNzL2JvdW5kLWZ1bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHQxKToKKyAgICAgICAgKHQy
KToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1kby1ub3QtbWlzcy1hbHJlYWR5LWJv
dW5kLWFyZ3MuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6
CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3ctbW9yZS5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0aHJvd2FibGUpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9u
LWJpbmQtZG91YmxlLXdyYXAtdGhyb3cuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAodGhyb3dhYmxlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoY2F0Y2gpOgor
ICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHRocm93YWJsZSk6CisgICAgICAgIChpbm5lcik6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKGNhdGNoKToKKwogMjAyMS0wNC0yMiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEJhc2VsaW5lIHNob3VsZCBo
YXZlIGZhc3QgcGF0aCBmb3Igc3dpdGNoX2ltbQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Ym91bmQtZnVuY3Rpb24taW5saW5pbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlv
bi1pbmxpbmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzUwNWIxZmU3MjIzOWU2YmNmZDcyMDliNTMwMzBi
ODBkYzFjYjJmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rp
b24taW5saW5pbmcuanMKQEAgLTAsMCArMSwxNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
YSwgYiwgYykgeworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK3ZhciBib3VuZCA9IHRlc3Qu
YmluZCgwLCAxKTsKKworZnVuY3Rpb24gdCgpIHsKKyAgICByZXR1cm4gYm91bmQoMiwgMywgNCk7
Cit9Citub0lubGluZSh0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hv
dWxkQmUodCgpLCA2KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9u
LXN0cmVuZ3RoLXJlZHVjdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0
cmVuZ3RoLXJlZHVjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzM3ODZkMmViZjlhNTlkODEzZDNjYjI1
NTQyYjAxNjE2ZjNjODdmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQt
ZnVuY3Rpb24tc3RyZW5ndGgtcmVkdWN0aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
CitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpIHsKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQorbm9J
bmxpbmUodGVzdCk7CisKK3ZhciBib3VuZCA9IHRlc3QuYmluZCgwLCAxKTsKK25vSW5saW5lKGJv
dW5kKTsKKworZnVuY3Rpb24gdDEoKSB7CisgICAgcmV0dXJuIGJvdW5kKDIsIDMsIDQpOworfQor
bm9JbmxpbmUodDEpOworCitmdW5jdGlvbiB0MigpIHsKKyAgICByZXR1cm4gYm91bmQoJ2hlbGxv
Jyk7Cit9Citub0lubGluZSh0Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsK
KyAgICBzaG91bGRCZSh0MSgpLCA2KTsKKyAgICBzaG91bGRCZSh0MigpLCAiMWhlbGxvdW5kZWZp
bmVkIik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5v
dC1taXNzLWFscmVhZHktYm91bmQtYXJncy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJp
bmQtZG8tbm90LW1pc3MtYWxyZWFkeS1ib3VuZC1hcmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyNTc4ZjBk
NDU0YWRlZTVkNTFlYjkyODhmMzMwZmFiMThmN2ZiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5vdC1taXNzLWFscmVhZHktYm91bmQtYXJncy5q
cwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQorewor
ICAgIHJldHVybiBhICsgYiArIGM7Cit9Cit2YXIgYm91bmQxID0gdGVzdC5iaW5kKHVuZGVmaW5l
ZCwgMCwgMSwgMik7Cit2YXIgYm91bmQyID0gYm91bmQxLmJpbmQodW5kZWZpbmVkKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShib3VuZDIoKSwgMyk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93
LW1vcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93
LW1vcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk2YWI0MTIwMzlkNGJjYTE0NDFmYWNkNjEwZjBjOTU5M2Vj
MWRiMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91
YmxlLXdyYXAtdGhyb3ctbW9yZS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGZs
YWcgPSBmYWxzZTsKK2Z1bmN0aW9uIHRocm93YWJsZSgpCit7CisgICAgaWYgKGZsYWcpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigpOworfQorbm9JbmxpbmUodGhyb3dhYmxlKTsKKworZnVuY3Rp
b24gdGVzdChhLCBiKQoreworICAgIHRocm93YWJsZSgpOworICAgIHJldHVybiBhICsgYjsKK30K
KwordmFyIGJvdW5kID0gdGVzdC5iaW5kKHVuZGVmaW5lZCwgMSwgMik7Citmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDsgKytpKQorICAgIHZhciBib3VuZCA9IGJvdW5kLmJpbmQodW5kZWZpbmVkKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShib3VuZCgpLCAz
KTsKK2ZsYWcgPSB0cnVlOwordmFyIGVycm9yID0gbnVsbDsKK3RyeSB7CisgICAgYm91bmQoKTsK
K30gY2F0Y2ggKGUpIHsKKyAgICBlcnJvciA9IGU7Cit9CitzaG91bGRCZShlcnJvciAhPT0gbnVs
bCwgdHJ1ZSk7CitzaG91bGRCZShlcnJvci5zdGFjay50cmltKCkuc3BsaXQoJ1xuJykubGVuZ3Ro
LCAzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdy
YXAtdGhyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRo
cm93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU3NTVkYjRjOTQyZjA5ZGU0MjcyMTc1NDZiYTQ0ODhjMDMyMGE2
MmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJs
ZS13cmFwLXRocm93LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZh
bHNlOworZnVuY3Rpb24gdGhyb3dhYmxlKCkKK3sKKyAgICBpZiAoZmxhZykKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCk7Cit9Citub0lubGluZSh0aHJvd2FibGUpOworCitmdW5jdGlvbiB0ZXN0
KGEsIGIpCit7CisgICAgdGhyb3dhYmxlKCk7CisgICAgcmV0dXJuIGEgKyBiOworfQordmFyIGJv
dW5kMSA9IHRlc3QuYmluZCh1bmRlZmluZWQsIDEpOwordmFyIGJvdW5kMiA9IGJvdW5kMS5iaW5k
KHVuZGVmaW5lZCwgMik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hv
dWxkQmUoYm91bmQyKCksIDMpOworZmxhZyA9IHRydWU7Cit2YXIgZXJyb3IgPSBudWxsOwordHJ5
IHsKKyAgICBib3VuZDIoKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBlcnJvciA9IGU7Cit9CitzaG91
bGRCZShlcnJvciAhPT0gbnVsbCwgdHJ1ZSk7CitzaG91bGRCZShlcnJvci5zdGFjay50cmltKCku
c3BsaXQoJ1xuJykubGVuZ3RoLCAzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtdGhyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE1M2Y2ZmU5OTk1NTk3ZmNkZDA5OWZkMjhhYWEwNWZkMDY2ZWIzNTcKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzCkBA
IC0wLDAgKzEsMzYgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gdGhy
b3dhYmxlKCkKK3sKKyAgICBpZiAoZmxhZykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJleHBl
Y3RlZCIpOworfQorbm9JbmxpbmUodGhyb3dhYmxlKTsKKworZnVuY3Rpb24gaW5uZXIoKQorewor
ICAgIHRocm93YWJsZSgpOworfQordmFyIGJvdW5kID0gaW5uZXIuYmluZCgxLCAyLCAzKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgYm91bmQoKTsKK30KK25vSW5saW5lKHRlc3QpOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHRlc3QoKTsKKwordmFyIGxlbmd0aCA9
IDA7Cit0cnkgeworICAgIGZsYWcgPSB0cnVlOworICAgIHRlc3QoKTsKK30gY2F0Y2ggKGVycm9y
KSB7CisgICAgbGVuZ3RoID0gZXJyb3Iuc3RhY2sudHJpbSgpLnNwbGl0KCdcbicpLmxlbmd0aDsK
K30KK3Nob3VsZEJlKGxlbmd0aCwgNCk7Cg==
</data>
<flag name="commit-queue"
          id="448110"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427491</attachid>
            <date>2021-05-01 00:31:36 -0700</date>
            <delta_ts>2021-05-01 00:40:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210501003136.patch</filename>
            <type>text/plain</type>
            <size>78522</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDkyNDhkYTZiYWNhOWM0NjZkMDQ4MTdmMjJhYmZiMjY1ZDZlNmE4Li43MGIwZDUwNzM0ZDk2MDc5
NDAwYjY4ZDMwZjkwOTgyZmQ4OGQzZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAyMS0wNS0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1bmN0aW9uIGNhbGxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG9wdGlt
aXplcyBGdW5jdGlvbiNiaW5kLgorCisgICAgICAgIDEuIEZ1bmN0aW9uI2JpbmQgYm91bmRBcmdz
IGRvIG5vdCBpbmNsdWRlIHx0aGlzfCwgd2hpY2ggaXMgZHVwbGljYXRlZCBpbiBib3VuZFRoaXMg
ZmllbGQuCisgICAgICAgIDIuIEZ1bmN0aW9uI2JpbmQgdW53cmFwcyBmdW5jdGlvbiB3aGVuIGJp
bmRpbmcgdGhlIGJvdW5kIGZ1bmN0aW9uLiBXZSBrZWVwIGRlcHRoIG9mIGJvdW5kIDEuCisgICAg
ICAgIDMuIENhbGxJQyBub3cgaW5saW5lcyBib3VuZCBmdW5jdGlvbiBpZiBpdCBpcyBub3QgYSBj
bG9zdXJlIGNhbGwuCisgICAgICAgIDQuIERGRyAvIEZUTCBhdHRlbXB0IHRvIGlubGluZSB3cmFw
cGVkIGZ1bmN0aW9uIGlmIGl0IGZpZ3VyZWQgb3V0IHRoYXQgYm91bmQgZnVuY3Rpb24gaXMgY2Fs
bGVkLgorICAgICAgICA1LiBERkcgLyBGVEwgYXR0ZW1wdCB0byBzcHJlYWQgYm91bmQgYXJndW1l
bnRzIGV2ZW4gaWYgd2UgZGVjaWRlZCBub3QgdG8gaW5saW5lIGEgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBidWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKGJpbmQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2Nh
bENsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
QWRhcHRvcjo6cmVhZFRvcCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9u
UGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0
ZWQuCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpHZXRTdGFja1RyYWNlRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6Omdl
bmVyYXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHlt
b3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAg
IChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisKIDIwMjEtMDQtMzAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHNtYWxsIEpJVCBwb29sIHRlc3RzIHBhc3Mgb24gQVMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwpp
bmRleCBhZjI5YWZkODM1NmNhZjliN2U5OGY0YjY2NzkxYTQzYTU3NDQ1OWFhLi42YjI1Mzk5MDEw
Nzc0NWZiZTlhMTcxY2JjMmYyZjI4ZDAwZjY3MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCkBAIC02MSw4ICs2MSw3IEBA
IGZ1bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZh
ciB0YXJnZXQgPSB0aGlzOwotICAgIGlmICghQGlzQ2FsbGFibGUodGFyZ2V0KSkKKyAgICBpZiAo
IUBpc0NhbGxhYmxlKHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBpcyBu
b3QgYSBmdW5jdGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQiKTsKIAogICAgIHZh
ciBhcmd1bWVudENvdW50ID0gQGFyZ3VtZW50Q291bnQoKTsKQEAgLTcwLDEyICs2OSwxMiBAQCBm
dW5jdGlvbiBiaW5kKHRoaXNWYWx1ZSkKICAgICB2YXIgbnVtQm91bmRBcmdzID0gMDsKICAgICBp
ZiAoYXJndW1lbnRDb3VudCA+IDEpIHsKICAgICAgICAgbnVtQm91bmRBcmdzID0gYXJndW1lbnRD
b3VudCAtIDE7Ci0gICAgICAgIGJvdW5kQXJncyA9IEBjcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHko
KTsKKyAgICAgICAgYm91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSh0aGlzKTsK
ICAgICB9CiAKICAgICB2YXIgbGVuZ3RoID0gMDsKLSAgICBpZiAoQGhhc093bkxlbmd0aFByb3Bl
cnR5KHRhcmdldCkpIHsKLSAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0gdGFyZ2V0Lmxlbmd0aDsK
KyAgICBpZiAoQGhhc093bkxlbmd0aFByb3BlcnR5KHRoaXMpKSB7CisgICAgICAgIHZhciBsZW5n
dGhWYWx1ZSA9IHRoaXMubGVuZ3RoOwogICAgICAgICBpZiAodHlwZW9mIGxlbmd0aFZhbHVlID09
PSAibnVtYmVyIikgewogICAgICAgICAgICAgbGVuZ3RoVmFsdWUgPSBAdG9JbnRlZ2VyT3JJbmZp
bml0eShsZW5ndGhWYWx1ZSk7CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBjYXJl
IGFib3V0IHBvc2l0aXZlIGxlbmd0aFZhbHVlcywgaG93ZXZlciwgdGhpcyBjb21wYXJpc2lvbgpA
QCAtODUsOSArODQsOSBAQCBmdW5jdGlvbiBiaW5kKHRoaXNWYWx1ZSkKICAgICAgICAgfQogICAg
IH0KIAotICAgIHZhciBuYW1lID0gdGFyZ2V0Lm5hbWU7CisgICAgdmFyIG5hbWUgPSB0aGlzLm5h
bWU7CiAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAic3RyaW5nIikKICAgICAgICAgbmFtZSA9ICIi
OwogCi0gICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0YXJnZXQsIHRoaXNWYWx1ZSwgYm91
bmRBcmdzLCBsZW5ndGgsIG5hbWUpOworICAgIHJldHVybiBAbWFrZUJvdW5kRnVuY3Rpb24odGhp
cywgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjYjBlN2M4YzliYmJh
MTRjNTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhLi4yNmFmMDZlZjQ0YWZkYjhjMjc3YjViZGQ3MTFl
MDQ4MWNhYTY2MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKQEAgLTExMSw5ICsxMTEsMTAgQEAKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgfQogCi1vcCA6Y3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHksCitvcCA6Y3Jl
YXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMsCiAgICAgYXJnczogewogICAg
ICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgdGFyZ2V0OiBWaXJ0dWFsUmVnaXN0
ZXIsCiAgICAgfQogCiBvcCA6Y3JlYXRlX3RoaXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCAwMTZhMDI3ZmEzM2FiNzk0OTQz
MTJhNGE0NzdkZmM1YjJlN2EwMGQ3Li45NDMyMGU2ZTQ3OWNhMGNjM2JmZGVmNDM5MmFlYjRmYmY2
ODIzYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAKQEAgLTkyLDcgKzkyLDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAg
ICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVj
dF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czoKLSAgICBj
YXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3Rf
bGVuZ3RoOgogICAgIGNhc2Ugb3BfY2hlY2tfdHJhcHM6CiAgICAgY2FzZSBvcF9nZXRfYXJndW1l
bnQ6CkBAIC0xMDMsNiArMTAyLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJ
bXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBjYXNl
IG9wX2dldF9zY29wZToKICAgICAgICAgcmV0dXJuOwogCisgICAgVVNFUyhPcENyZWF0ZUFyZ3Vt
ZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIHRhcmdldCkKICAgICBVU0VTKE9wVG9UaGlzLCBz
cmNEc3QpCiAgICAgVVNFUyhPcENoZWNrVGR6LCB0YXJnZXRWaXJ0dWFsUmVnaXN0ZXIpCiAgICAg
VVNFUyhPcElkZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKQEAgLTU1MSw3ICs1NTEsNyBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BDcmVhdGVEaXJlY3RBcmd1bWVudHMs
IGRzdCkKICAgICBERUZTKE9wQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBkc3QpCiAgICAgREVGUyhP
cENyZWF0ZUNsb25lZEFyZ3VtZW50cywgZHN0KQotICAgIERFRlMoT3BDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHksIGRzdCkKKyAgICBERUZTKE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpcywgZHN0KQogICAgIERFRlMoT3BEZWxCeUlkLCBkc3QpCiAgICAgREVGUyhPcERlbEJ5
VmFsLCBkc3QpCiAgICAgREVGUyhPcFVuc2lnbmVkLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDU4ZTUwZGEwOTIxYjIwOWY5ZWJlZmYyYWJkZjNiMzNlZmQ1NWJkOGIuLjAxMzFjZjI4OWZhYWI1
ZDA3ZGU1YWQ1ZDViZWYxMzQ4MTI5ZDI0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yODczLDkg
KzI4NzMsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFzeW5j
R2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZQogICAgIHJldHVybiBkc3Q7CiB9CiAK
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHRhcmdldCkKIHsKLSAgICBPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTo6ZW1p
dCh0aGlzLCBkc3QpOworICAgIE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhp
czo6ZW1pdCh0aGlzLCBkc3QsIHRhcmdldCk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IGU1MTFkYzI3NTU1ZGU1Yjg4NDQ3ZTMzM2Y5ZTE2NjI1YTg1NjI2MWMuLjM2Yjhi
MDk0ZGIxN2JmNWE3OTZjNzVkMmM0M2I4NjI2NmViMTA2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc2
MSw3ICs3NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENy
ZWF0ZVByb21pc2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wg
aXNJbnRlcm5hbFByb21pc2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJh
dG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogbmV3VGFyZ2V0KTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseShSZWdpc3RlcklEKiBkc3QpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGNvdW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlRmllbGRJbml0
aWFsaXphdGlvbklmTmVlZGVkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY29uc3RydWN0
b3IsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIHZvaWQg
ZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAgIGJvb2wgbmVlZHNURFpD
aGVjayhjb25zdCBWYXJpYWJsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDNjYmQxMjA5OWU4NWIwYjQyNjIwODBh
NDNhMzVkZTgxZjJiZDU3YjkuLmY0MjIzZDkyNmFiNjdmMTBmYjc0NGEwYzMxNzgzYTIzMjY4YTVj
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTE5MzMsOCArMTkzMywxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX25ld1Byb21pc2UoSlNDOjpCeXRlY29kZUdlbmVy
YQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2Ny
ZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IEpTQzo6UmVnaXN0ZXJJRCogZHN0KQogewotICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
KTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYWRkaXRpb25h
bENvdW50ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9u
ZXh0KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlF
eGNsdWRpbmdUaGlzKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGFkZGl0aW9uYWxD
b3VudC5nZXQoKSk7CiB9CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lD
X0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGZhOWQ5
ZmEwYmJmYjA2ZGI2ZDYyMDEyNzVjZmM2NjM0MTEwOWI5OTYuLjI2YjM1MzhiMjY0NGE4ZjQ0OTJi
YTYxMmU4ZDQwMjU2YTVkMTI5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMyMzAsNyArMzIz
MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldEZvck5vZGUobm9kZSwg
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5jbG9u
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlF
eGNsdWRpbmdUaGlzOgogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG1fdm0uaW1tdXRhYmxlQnV0
dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFy
cmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uZ2V0KCkpOwogICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCBmN2VlNDZiNDZhYWQzMGEyN2JmNmIzNmVhMjQ3MjI5YjViY2EzZDRk
Li44ZjE1ODhjZGU5NDBjOTk5YmUyYTJiYWVmYTc5N2QyMWI0YzI4YTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTgsNiArNTgs
NyBAQAogI2luY2x1ZGUgIkluQnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkluc3RhbmNlT2ZTdGF0
dXMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVC
dXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgpAQCAtMjAxLDcgKzIw
Miw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lkIGlubGluZUNhbGwoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6
S2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVy
biB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAg
ICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwg
Q2FsbFZhcmlhbnQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
ICAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgpAQCAtMTkyNyw3ICsxOTI4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6
YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKIAog
ICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0
aW9uS2luZCk7CiAgICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICBp
ZiAoaGFuZGxlSW50cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBpbnRyaW5zaWMs
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwg
aW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5z
aWNDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHQsIGNhbGxlZSwgaW50cmluc2ljLCByZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG9zckV4aXRJbmRleCwga2luZCwg
cHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CiAgICAgICAgICAgICBl
bmRTcGVjaWFsQ2FzZSgpOwogICAgICAgICAgICAgcmV0dXJuIENhbGxPcHRpbWl6YXRpb25SZXN1
bHQ6OklubGluZWQ7CiAgICAgICAgIH0KQEAgLTIzMjIsNyArMjMyMyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCBy
ZWdpc3Rlck9mZnNlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFu
ZCByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50
IGNhbGxWYXJpYW50LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgs
IElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAg
ICAgICBUaGUgaW50cmluc2ljIGlzICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTM3NTYsNiAr
Mzc1Nyw2NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUq
IGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYwogI2VuZGlmCiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2ljOiB7CisgICAgICAgICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxWYXJpYW50LmZ1bmN0aW9uKCk7CisgICAgICAgICAg
ICBpZiAoIWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNCb3Vu
ZEZ1bmN0aW9uKj4oKm1fdm0sIGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGlmICghYm91bmRGdW5j
dGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGluc2Vy
dENoZWNrcygpOworCisgICAgICAgICAgICAvLyBNYWtlIGEgY2FsbC4gV2UgZG9uJ3QgdHJ5IHRv
IGdldCBmYW5jeSB3aXRoIHVzaW5nIHRoZSBzbWFsbGVzdCBvcGVyYW5kIG51bWJlciBiZWNhdXNl
CisgICAgICAgICAgICAvLyB0aGUgc3RhY2sgbGF5b3V0IHBoYXNlIHNob3VsZCBjb21wcmVzcyB0
aGUgc3RhY2sgYW55d2F5LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFdlIGRvIG5v
dCBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgc3RhY2sgZm9yIHRoaXMgY2FsbC4gV2UgbmV3bHkgYWxs
b2NhdGUgc3RhY2sgc3BhY2UgYW5kIGZpbGwgaXQgd2l0aCB2YWx1ZXMKKyAgICAgICAgICAgIC8v
IHRvIGtlZXAgT1NSIGV4aXQgY29ycmVjdCB3aGVuIHdlIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiB0
aGlzIHN0YWNrIGNvbnN0cnVjdGlvbi4gV2UgZXhpdCB0byB0aGUgY2FsbGVyIHNpZGUKKyAgICAg
ICAgICAgIC8vIHdoZW4gd2UgZmFpbGVkIHRvIGNvbnN0cnVjdCB0aGlzIGZyYW1lLiBBbmQgdGhp
cyBpcyB0b3RhbGx5IE9LIHNpbmNlIHdlIGFyZSBub3QgY2xvYmJlcmluZyB2YWx1ZXMuCisKKyAg
ICAgICAgICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9u
LT5ib3VuZEFyZ3MoKTsKKworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbWV0ZXJz
ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgICAgICAgICBudW1iZXJPZlBhcmFt
ZXRlcnMrKzsgLy8gVHJ1ZSByZXR1cm4gUEMuCisgICAgICAgICAgICBudW1iZXJPZlBhcmFtZXRl
cnMgKz0gYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDA7CisKKyAgICAgICAgICAg
IC8vIFN0YXJ0IHdpdGggYSByZWdpc3RlciBvZmZzZXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUg
bGFzdCBpbi11c2UgcmVnaXN0ZXIuCisgICAgICAgICAgICBpbnQgbmV3UmVnaXN0ZXJPZmZzZXQg
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPm51bUNhbGxlZUxvY2FscygpIC0gMSkub2Zmc2V0KCk7CisgICAgICAgICAgICBuZXdSZWdp
c3Rlck9mZnNldCAtPSBudW1iZXJPZlBhcmFtZXRlcnM7CisgICAgICAgICAgICBuZXdSZWdpc3Rl
ck9mZnNldCAtPSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKKworICAgICAgICAg
ICAgLy8gR2V0IHRoZSBhbGlnbm1lbnQgcmlnaHQuCisgICAgICAgICAgICBuZXdSZWdpc3Rlck9m
ZnNldCA9IC1XVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgLW5ld1JlZ2lzdGVyT2Zmc2V0KTsKKworICAgICAgICAgICAgZW5zdXJlTG9jYWxzKG1faW5s
aW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIobmV3UmVnaXN0ZXJPZmZz
ZXQpKS50b0xvY2FsKCkpOworCisgICAgICAgICAgICAvLyBJc3N1ZSBTZXRMb2NhbHMuIFRoaXMg
aGFzIHR3byBlZmZlY3RzOgorICAgICAgICAgICAgLy8gMSkgVGhhdCdzIGhvdyBoYW5kbGVDYWxs
KCkgc2VlcyB0aGUgYXJndW1lbnRzLgorICAgICAgICAgICAgLy8gMikgSWYgd2UgaW5saW5lIHRo
ZW4gdGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFyZ3VtZW50cyBhcmUgZmx1c2hlZCBzbyB0aGF0IGlm
IHlvdSB1c2UKKyAgICAgICAgICAgIC8vICAgIHRoZSBkcmVhZGVkIGFyZ3VtZW50cyBvYmplY3Qg
b24gdGhlIGNhbGwgdGFyZ2V0LCB0aGUgcmlnaHQgdGhpbmdzIGhhcHBlbi4gV2VsbCwgc29ydCBv
ZiAtCisgICAgICAgICAgICAvLyAgICBzaW5jZSB3ZSBvbmx5IHJlYWxseSBjYXJlIGFib3V0ICd0
aGlzJyBpbiB0aGlzIGNhc2UuIEJ1dCB3ZSdyZSBub3QgZ29pbmcgdG8gdGFrZSB0aGF0CisgICAg
ICAgICAgICAvLyAgICBzaG9ydGN1dC4KKyAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmd1
bWVudEluZGV4ID0gMDsKKyAgICAgICAgICAgIHNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dEluY2x1ZGluZ1RoaXMoY3VycmVudEFyZ3VtZW50SW5kZXgrKywgbmV3UmVnaXN0ZXJPZmZzZXQp
LCBqc0NvbnN0YW50KGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpKSwgSW1tZWRpYXRlTmFrZWRT
ZXQpOworICAgICAgICAgICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgp
CisgICAgICAgICAgICAgICAgICAgIHNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoY3VycmVudEFyZ3VtZW50SW5kZXgrKywgbmV3UmVnaXN0ZXJPZmZzZXQpLCBqc0Nv
bnN0YW50KGJvdW5kQXJncy0+Z2V0KGluZGV4KSksIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4g
MSkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4ID0gMTsgaW5kZXggPCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgc2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRl
eCsrLCBuZXdSZWdpc3Rlck9mZnNldCksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0KSksIEltbWVkaWF0ZU5ha2VkU2V0KTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UndmUgc2V0IHNvbWUgbG9jYWxzLCBi
dXQgdGhleSBhcmUgbm90IHVzZXItdmlzaWJsZSBzaW5jZSB0aGV5IGFyZSBuZXdseSBhbGxvY2F0
ZWQgZm9yIHRoaXMgaW5saW5lZCBjYWxsLiBJdCdzIHN0aWxsIE9LIHRvIGV4aXQgZnJvbSBoZXJl
LgorICAgICAgICAgICAgLy8gSlNCb3VuZEZ1bmN0aW9uJ3MgdHJhbXBvbGluZSBkb2VzIG5vdCBo
YXZlIHVzZXItdmlzaWJsZSBlZmZlY3QuIFNvIGV4aXRpbmcgdG8gdGhlIHByZS1ib3VuZCBmdW5j
dGlvbiBsb2NhdGlvbiBpcyBPSy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgaGFuZGxlQ2FsbChyZXN1
bHQsIENhbGwsIGtpbmQsIG9zckV4aXRJbmRleCwganNDb25zdGFudChib3VuZEZ1bmN0aW9uLT50
YXJnZXRGdW5jdGlvbigpKSwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgbmV3UmVnaXN0ZXJPZmZz
ZXQsIENhbGxMaW5rU3RhdHVzKENhbGxWYXJpYW50KGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0
aW9uKCkpKSwgcHJlZGljdGlvbik7CisgICAgICAgICAgICBkaWRTZXRSZXN1bHQgPSB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC04MTEyLDExICs4MTc0LDEx
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cyk7CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5OiB7Ci0gICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseT4oKTsKKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzX2J1
dHRlcmZseV9leGNsdWRpbmdfdGhpczogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdU
aGlzPigpOwogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7Ci0gICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KSk7
Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSk7
CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgRWRnZShnZXQoYnl0ZWNvZGUubV90YXJnZXQpLCBD
ZWxsVXNlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2FyZ3VtZW50c19i
dXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmNWUyMmExMGE0ZDEyNjVkYjVjZGM3MWIy
MzFkMDZkNTE2MTdlZDZjLi5iZjRmNzk3M2U5MzQxNmRlODY2ZmFjNzEzNzcwN2E4NmIxN2UzM2U0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yMzYsNyArMjM2LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2Ny
ZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVu
dHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czoKLSAgICBjYXNlIG9wX2Ny
ZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5OgorICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19i
dXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXM6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6
CiAgICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBjZjAxYmNl
MDUzYTNlNTc3ZGU5OTdiMDMzMzliN2IxNGM2Njg4OTIxLi5jMjQwYWEyNjEzZjBkMTIwMWVmNDhk
OGEyZDIyZDkxMTU1OTIzYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAg
Y2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVu
dHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOgogICAgICAgICByZWFkKFN0YWNrKTsKICAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291
bnQpOwogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGNmYzIyMzAwMGE1MzJiMWMzYjM5ODBlNTRhNTAxYTNk
M2RmYWFiMDkuLmRkNTFmYTM4Yzg4MTEwZDkxYjhmZTU1OGZmZTBkNTY3YmY2MTZhNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBi
b29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVEaXJl
Y3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBD
cmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6
CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgIGNh
c2UgQ2FsbDoKICAgICBjYXNlIENhbGxFdmFsOgogICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdz
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMzc0
ZDU1MzA1ZGY4ZDg3NTAzMmUwNDc3N2JjMzIyMTlhNTUxNTgwYS4uZDA2ZDg2NDJmNzdlZjNhYzRm
Nzc1MTg1MDE5OTBhNTAzZDcyODJhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCkBAIC0yODgwLDcgKzI4ODAsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czoKICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNh
c2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5OgorICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
CiAgICAgICAgICAgICBicmVhazsKICNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogICAgICAg
ICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGFm
MjY4Mjg2YzgxMDA5ZDE4MjZjYjEwYmNmNTdiNTExMGE0YTczMzkuLjdjNDlkYWE5MzI0NDY0NzQ3
ZTA0YzZiZjZmOWM3MTM5OTE3MjY2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKQEAgLTQ1MSw3ICs0NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBtYWNybyhDcmVhdGVDbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3Jv
KFBoYW50b21DbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKLSAgICBtYWNybyhDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIE5vZGVSZXN1bHRKUykgXAor
ICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKEdldEZyb21Bcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFB1dFRvQXJndW1lbnRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0
QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggZWNjOGRjODUwNTEwOWNiMzU1NDkwYzkxZmE2OTZkNmFkYTc1
YjI3OS4uMjY5NGI5MTU5MDUxZDBhMWU2OTdiYmNjYjVlOTAzZjU4MWE3MGJhMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0ltbXV0YWJsZUJ1dHRlcmZseS5oIgpAQCAtMjA1OSwyMCArMjA2MCw0MCBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzLCBKU0NlbGwqLCAo
SlNHbG9iYWxPYmplYwogICAgICAgICBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgYXJndW1lbnRT
dGFydCwgbGVuZ3RoLCBjYWxsZWUpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3VtZW50
Q291bnQpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCwg
SlNDZWxsKiB0YXJnZXQpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBBU1NFUlQoYXJn
dW1lbnRDb3VudCA+IDEpOworCisgICAgQ2hlY2tlZEludDMyIHRvdGFsQ291bnQgPSBhcmd1bWVu
dENvdW50IC0gMTsKKyAgICBpbnQzMl90IGFkZGl0aW9uYWxDb3VudCA9IDA7CisgICAgSlNJbW11
dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IG51bGxwdHI7CisgICAgaWYgKHRhcmdldC0+aW5o
ZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBi
b3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAgICAg
IGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAgICBhZGRpdGlv
bmFsQ291bnQgPSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsKKyAgICAgICAg
dG90YWxDb3VudCArPSBhZGRpdGlvbmFsQ291bnQ7CisgICAgICAgIGlmICh0b3RhbENvdW50Lmhh
c092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KyAgICB9CiAKLSAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5ID0gSlNJbW11dGFi
bGVCdXR0ZXJmbHk6OnRyeUNyZWF0ZSh2bSwgdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJl
c1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3Vv
dXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uZ2V0KCksIGFyZ3VtZW50Q291bnQpOworICAg
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6
dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhG
cm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJP
ZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgdG90YWxDb3VudC51bnNhZmVHZXQoKSk7CiAgICAgaWYg
KCFidXR0ZXJmbHkpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgYXJndW1lbnRDb3VudDsgKytpbmRleCkKLSAgICAgICAg
YnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgsIGFyZ3VtZW50U3RhcnRbaW5kZXhdLmpzVmFs
dWUoKSk7CisgICAgaWYgKGFkZGl0aW9uYWxDb3VudCkgeworICAgICAgICBBU1NFUlQoYm91bmRB
cmdzKTsKKyAgICAgICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBhZGRpdGlvbmFs
Q291bnQ7ICsraW5kZXgpCisgICAgICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRl
eCwgYm91bmRBcmdzLT5nZXQoaW5kZXgpKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgKGFyZ3VtZW50Q291bnQgLSAxKTsgKytpbmRleCkKKyAgICAgICAgYnV0
dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXggKyBhZGRpdGlvbmFsQ291bnQsIGFyZ3VtZW50U3Rh
cnRbaW5kZXggKyAxXS5qc1ZhbHVlKCkpOwogICAgIHJldHVybiBidXR0ZXJmbHk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTJjZGJlODI2NjE2
ZWJjNGE5MmQwNThiMDAxZWMzOGVmYzJhM2Q0OC4uNzllNzc2ZmI0M2U2NTUyN2ExNDJlMjNkYzcz
NmNjMDIwNzA0YWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKQEAgLTIxMSw3ICsyMTEsNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQsIEpTQ2VsbCosIChWTQogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVTY29wZWRBcmd1bWVudHMsIEpTQ2VsbCos
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1
aW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3Vt
ZW50c0R1cmluZ0V4aXQsIEpTQ2VsbCosIChWTSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rp
b24qLCB1aW50MzJfdCBhcmd1bWVudENvdW50KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwg
SlNGdW5jdGlvbiogY2FsbGVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgUmVn
aXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQpKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpcywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3Rh
cnQsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIEpTQ2VsbCopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlUmVzdCwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
UmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lw
LCB1bnNpZ25lZCBhcnJheVNpemUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QXJyYXlCdWZmZXIsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSosIEpTQ2VsbCopKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0QWRkLCBKU0NlbGwqLCAoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUu
aAppbmRleCA5ODA1OTliMmU1NGFmN2QwY2E4N2E5OWMxNjk2MDY0OTcwYTAxZTg0Li43MDRlYmU3
MTE1YjhjN2QzMTdhMDIxOTFjMzkxZjk0N2M4MTIyYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMTg0LDcg
KzE4NCw3IEBAIGNsYXNzIFByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAg
Y2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJn
dW1lbnRzOgogICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICAgICAgY2Fz
ZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1l
bnRzOgogICAgICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2Ug
R2V0UmVzdExlbmd0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggZmU3NmQyYjZlMGY5NmYz
ZTI4ZmMzZDk4M2ZiMzNhYzIzMTY4NmIzMS4uNzBlNGEwYzE2ZjI4MTVmMTRmNzcwZmE2MmQ5MDRh
MzEwYmMwZWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTExODksNyArMTE4OSw3IEBA
IGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHk6IHsKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMDdhODVkYjNkNjBjNjA4MGE4M2U2ZGE0MTg2OGJiZjRi
N2NlZjZjNy4uNjliM2JjMmE3YjU4NTZkODk5NDAyOTcyODZiNWY3N2FiMGQ1OGE4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTU5Nyw3ICs1
OTcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgotICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgorICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdHZW5lcmF0
b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggZTljZDQzOTBlNDYxYmIzZTQyNTA1MzI5MTVhNTNhYWQ0NjgzZTg3ZS4u
ZTUyY2FkNmVlN2I0NGQ0Y2FkYzBiYzI0NGE0MzIxNjE3MjZmOTc5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTg0NzUsOCArODQ3
NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
KE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KE5vZGUqIG5v
ZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
RXhjbHVkaW5nVGhpcyhOb2RlKiBub2RlKQogeworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRh
cmdldCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHRhcmdldEdQUiA9IHRhcmdl
dC5ncHIoKTsKKwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBA
IC04NDg2LDEyICs4NDg5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHkoTm9kZSogbm9kZSkKICAgICAvLyBXZSBzZXQgdXAgdGhlIGFyZ3Vt
ZW50cyBvdXJzZWx2ZXMsIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgd2hvbGUgcmVnaXN0ZXIgZmlsZSBh
bmQgd2UgY2FuCiAgICAgLy8gc2V0IHRoZW0gdXAgZGlyZWN0bHkgaW50byB0aGUgYXJndW1lbnQg
cmVnaXN0ZXJzLgogCi0gICAgLy8gQXJndW1lbnRzOiAwOkpTR2xvYmFsT2JqZWN0KiwgMTpzdGFy
dCwgMzpsZW5ndGgKKyAgICAvLyBBcmd1bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0
LCAyOmxlbmd0aCwgMzp0YXJnZXQKKworICAgIC8vIERvIHRoZSB0YXJnZXRHUFIgZmlyc3QsIHNp
bmNlIGl0IG1pZ2h0IGFsaWFzIGFuIGFyZ3VtZW50IHJlZ2lzdGVyLgorICAgIG1faml0LnNldHVw
QXJndW1lbnQoMywgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKHRhcmdldEdQUiwg
ZGVzdEdQUik7IH0pOworCiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJlZyBk
ZXN0R1BSKSB7IGVtaXRHZXRMZW5ndGgobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsg
fSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVt
aXRHZXRBcmd1bWVudFN0YXJ0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOwog
ICAgIG1faml0LnNldHVwQXJndW1lbnQoMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGRl
c3RHUFIpOyB9KTsKIAotICAgIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5LCByZXN1bHRHUFIpOworICAgIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgcmVzdWx0R1BSKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IDk3MTc1MjI4ZjYyZGE3MzUwMDIxMGVmZDJjZWNjYTk1ODJiNjgwMmQuLjY2YTQxOTA5
Y2M2MDY5ZGI0NTE3NzdiMjliMTc5NzQ3NTAwYjhkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE0MTEsNyArMTQxMSw3IEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlQ3JlYXRlU2NvcGVkQXJndW1lbnRzKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUNyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseShOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRl
UmVzdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU3ByZWFkKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOZXdBcnJheShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAzNDI0MGU1NGU4NTdmNThhZDQ3NmE2
YWYzYmVhMzJjZDdjMjE2ZDY4Li42MmQwZjc1NGMwMGVhMTg1MGMyMjcxMjZlOGUxMDU3ZDYwNTVk
OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKQEAgLTM5NTAsOCArMzk1MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6IHsKLSAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseShub2RlKTsKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXM6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXMobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMzhlZTZiNGE2
ZWY5MDk3NDM1YWI4ZTA5NTI5MWQwYjZlNzc0MTMwNS4uOTVlN2Y1ZTczODM1MTc2MWVkNjI1MmY3
OTNiM2Q5MDY5ZjU3MWZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00OTMxLDggKzQ5MzEsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OiB7Ci0gICAgICAgIGNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHkobm9kZSk7CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzOiB7CisgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggYjkwNjY1ZWNjZTUyYzU3ZjQ0YjcwZDQ2N2M0YTRlNWE1ZjM3MDJl
MC4uYWVmOGE5YTg5NjAwN2Y4NzgxMjM0NzI2MTBiYzBiNzg2YTRiZjQ5OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAg
ICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgICAgICAgICBjYXNlIENyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAg
ICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdB
c3luY0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXggNDBmMTExOTI3M2JkYmUx
YTViOTUyMTU4ODVmOTI3NDQwZmM5MTEwNy4uYjQ5YzcyNDA5NWI3NDFjYTJjMmM4YTliMDA1ODZj
M2E4NjMxMDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
REZHR3JhcGguaCIKICNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQ
aGFzZS5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk1hdGhDb21t
b24uaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5
cGUuaCIKQEAgLTkyNyw3ICs5MjgsOCBAQCBjbGFzcyBTdHJlbmd0aFJlZHVjdGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0g
bnVsbHB0cjsKICAgICAgICAgICAgIEVkZ2UgY2FsbGVlID0gbV9ncmFwaC52YXJBcmdDaGlsZCht
X25vZGUsIDApOwogICAgICAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbFZhcmlhbnQ7Ci0gICAgICAg
ICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3Rh
bnQ8SlNGdW5jdGlvbio+KHZtKCkpKSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4odm0oKSk7CisgICAg
ICAgICAgICBpZiAoZnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gZnVu
Y3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgICAgICBjYWxsVmFyaWFudCA9IENhbGxW
YXJpYW50KGZ1bmN0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FsbGVlLT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKSB7CkBAIC05NDMsNyArOTQ1LDQ4IEBAIGNsYXNzIFN0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAgICAgICAgICAgaWYgKGV4ZWN1
dGFibGUtPmludHJpbnNpYygpID09IFdhc21GdW5jdGlvbkludHJpbnNpYykKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgICAgICAvLyBXZSBnYXZlIHVwIGlu
bGluaW5nIGEgd3JhcHBlZCBmdW5jdGlvbiwgYnV0IHN0aWxsLCB3ZSBjYW4gaW5saW5lIGJvdW5k
IGZ1bmN0aW9uJ3Mgd3JhcHBlciBieSBleHRyYWN0aW5nIGl0LgorICAgICAgICAgICAgLy8gVGhp
cyBhbHNvIHdpcGVzIGJvdW5kLWZ1bmN0aW9uIHRodW5rIGNhbGwgd2hpY2ggaXMgc3Vib3B0aW1h
bCBjb21wYXJlZCB0byBkaXJlY3RseSBjYWxsaW5nIGEgd3JhcHBlZCBmdW5jdGlvbiBoZXJlLgor
ICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmludHJpbnNpYygpID09IEJvdW5kRnVuY3Rpb25D
YWxsSW50cmluc2ljICYmIGZ1bmN0aW9uICYmIChtX25vZGUtPm9wKCkgPT0gQ2FsbCB8fCBtX25v
ZGUtPm9wKCkgPT0gVGFpbENhbGwgfHwgbV9ub2RlLT5vcCgpID09IFRhaWxDYWxsSW5saW5lZENh
bGxlcikpIHsKKyAgICAgICAgICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24g
PSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZnVuY3Rpb24pOworICAgICAgICAgICAgICAgIGlm
IChKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KHZtKCksIGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8qIHRhcmdldEV4ZWN1dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJs
ZSgpOworICAgICAgICAgICAgICAgICAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdz
ID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgo
KGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwKSArIG1fbm9kZS0+bnVtQ2hpbGRy
ZW4oKSkgPD0gT3B0aW9uczo6bWF4aW11bURpcmVjdENhbGxTdGFja1NpemUoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih2bSgpLCB0YXJnZXRFeGVj
dXRhYmxlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXBk
YXRlIG1fcGFyYW1ldGVyU2xvdHMgYmVmb3JlIHdlIGdldCB0byB0aGUgYmFja2VuZCwgYnV0IHdl
IGRvbid0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FudCB0byBkbyB0b28gbXVj
aCBvZiB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUFsbG9j
YXRlZEFyZ3MgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJh
bWV0ZXJDb3VudCgpKSArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bUFs
bG9jYXRlZEFyZ3MgPD0gT3B0aW9uczo6bWF4aW11bURpcmVjdENhbGxTdGFja1NpemUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0g
c3RkOjptYXgobV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzLCBHcmFwaDo6cGFyYW1ldGVyU2xvdHNG
b3JBcmdDb3VudChudW1BbGxvY2F0ZWRBcmdzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBo
Lm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudCht
X25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIHRhcmdldEZ1bmN0aW9uKSk7IC8vIENhbGxlZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQo
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2lu
LCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSkpOyAvLyB8dGhpc3wKKworICAgICAgICAgICAg
ICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rp
b24tPmJvdW5kQXJncygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvdW5kQXJncykg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBib3VuZEFyZ3Mt
PmdldChpbmRleCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRmlyc3Qgb25lIGlzIHxjYWxsZWV8LCBzZWNvbmQgb25lIGlzIHx0aGlz
fC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAyOyBpbmRl
eCA8IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKG1fZ3JhcGguY2hpbGQobV9u
b2RlLCBpbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkcmVu
ID0gQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpWYXJpYWJsZSwgZmlyc3RDaGlsZCwgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gc3RkOjptYXgobV9ncmFwaC5t
X3BhcmFtZXRlclNsb3RzLCBHcmFwaDo6cGFyYW1ldGVyU2xvdHNGb3JBcmdDb3VudChtX25vZGUt
Pm51bUNoaWxkcmVuKCkgLSAxKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRDYWxsTGlua1N0YXR1cyhtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYywgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQodGFyZ2V0RXhlY3V0YWJsZSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvRGlyZWN0Q2FsbCht
X2dyYXBoLmZyZWV6ZSh0YXJnZXRFeGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIGlmIChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpz
RHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odm0oKSwgZXhlY3V0YWJsZSkpIHsKICAg
ICAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IENvbnN0cnVjdCAmJiBmdW5jdGlvbkV4
ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3QpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDNkZjA0NGE4ZmYxYjU4NTJiNWVh
ZjNjMDRmYTk2MDhkY2ZlMDk4MmYuLjQzOWMwZDg2NzIwN2VmZDNkNzE0NWZiYWQxNmI2MTI1YTQ3
ZDA0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENy
ZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAg
ICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAg
IGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBHZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyMDc4NjkxYjEwNGFm
ZjYyMDQxYjEzMzY1ZjgxZDhhM2QxYmQxZTcxLi5lZTU1MDEzYTNmODc5ZTAzOGRhYTNhODkxMjg4
NGY5NzBlMjY0Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC0xMTAzLDggKzExMDMsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNvbXBpbGVDcmVh
dGVDbG9uZWRBcmd1bWVudHMoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENy
ZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKLSAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHkoKTsKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzOgorICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4
Y2x1ZGluZ1RoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9iamVjdENy
ZWF0ZToKICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RDcmVhdGUoKTsKQEAgLTY4NDgsMTAgKzY4
NDgsMTAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpCisg
ICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcygpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKEludDY0LCBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGdldEFyZ3VtZW50c1N0YXJ0KCksIGdldEFyZ3VtZW50c0xlbmd0
aCgpLnZhbHVlKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFs
dWUsIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSkpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAppbmRleCBhZWUzNzQ0YjUyZTVlNDUyNjFlMjJmYWM2OTBkYmUwNGFlMmM1
NDI2Li43YzBlYmJjZjBmOGE1MjRlMjQ4OTA2NDM1NWMzMjU2NDkwMDE4ZWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJK
SVRDb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
SW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
QEAgLTM5Myw3ICszOTQsNyBAQCBjbGFzcyBHZXRTdGFja1RyYWNlRnVuY3RvciB7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCEhdmlzaXRvci0+Y29kZUJsb2NrKCkgJiYgIXZpc2l0b3ItPmNvZGVC
bG9jaygpLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0J1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgU3RhY2tG
cmFtZShtX3ZtLCBtX293bmVyLCB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKSwgdmlzaXRvci0+
Y29kZUJsb2NrKCksIHZpc2l0b3ItPmJ5dGVjb2RlSW5kZXgoKSkpOwotICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgp
LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KG1fdm0pKSB7CiAgICAgICAgICAgICAgICAgbV9y
ZXN1bHRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgU3RhY2tGcmFtZShtX3ZtLCBtX293
bmVyLCB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKSkpOwogICAgICAgICAgICAgfQpAQCAtNDIz
LDYgKzQyNCwxMSBAQCB2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3du
ZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZQogICAgIHNpemVfdCBmcmFtZXND
b3VudCA9IDA7CiAgICAgc2l6ZV90IG1heEZyYW1lc0NvdW50TmVlZGVkID0gbWF4U3RhY2tTaXpl
ICsgZnJhbWVzVG9Ta2lwOwogICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCB2bSwg
WyZdIChTdGFja1Zpc2l0b3ImKSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7CisgICAgICAgIGlm
ICh2aXNpdG9yLT5jYWxsZWUoKS5pc0NlbGwoKSkgeworICAgICAgICAgICAgaWYgKHZpc2l0b3It
PmNhbGxlZSgpLmFzQ2VsbCgpLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KG1fdm0pKQorICAg
ICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICB9CisK
ICAgICAgICAgaWYgKCsrZnJhbWVzQ291bnQgPCBtYXhGcmFtZXNDb3VudE5lZWRlZCkKICAgICAg
ICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpEb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDc2ZDFhNTE3
ZDljODhkMjA5NzAyNWY4NDQ1ZjY5YzllZDYzY2ZkM2YuLmNjNmRlNGZjZWM1ZTkzZjk5Mzc5MWZi
ZDZjYWY3NzliZGVhOTFiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMxNiw3
ICszMTYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERF
RklORV9TTE9XX09QKGNyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfU0xP
V19PUChjcmVhdGVfc2NvcGVkX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3Jl
YXRlX2Nsb25lZF9hcmd1bWVudHMpCi0gICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9hcmd1
bWVudHNfYnV0dGVyZmx5KQorICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfYXJndW1lbnRz
X2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRl
X3Jlc3QpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9wcm9taXNlKQogICAgICAgICBE
RUZJTkVfU0xPV19PUChuZXdfcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IGZjMzk5MTRhMWQ1NDI0NTYyZTc5MTlmNTFlY2RiMTUzMzg2
MmYwNDUuLjViNmM2OTFjYzM1MWRjZmE0NmE1MmI0OWUzMjk3NzNlMzRjMzBhYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDksNiArNDksNyBA
QAogI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlND
UHRyVGFnLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMTQ1MSw2ICsx
NDUyLDggQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCiAgICAgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kID0gY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCkBAIC0xNDY0
LDI5ICsxNDY3LDQxIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhG
dW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgICAgIH0KICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGhhbmRsZUhvc3RDYWxsKGdsb2JhbE9i
amVjdCwgY2FsbGVlRnJhbWUsIGNhbGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5mbykpOwogICAgIH0K
LSAgICAKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOwotICAgIEpTU2NvcGUqIHNjb3BlID0gZnVuY3Rpb24tPnNjb3Bl
VW5jaGVja2VkKCk7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+
ZXhlY3V0YWJsZSgpOwotICAgIGlmIChVTkxJS0VMWSghZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZv
cihraW5kKSkpIHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAotICAg
ICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFi
aWxpdHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKLSAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNv
bnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbikpOwotICAgICAgICAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCgKLSAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhj
ZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJU
YWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKLSAgICAgICAgfQorICAgIGF1dG8gbWF0ZXJpYWxp
emVDb2RlQmxvY2tJZk5lY2Vzc2FyeSA9IFsmXShKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgRXhlY3V0
YWJsZUJhc2UqIGV4ZWN1dGFibGUpIC0+IHZvaWQqIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFl
eGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgeworICAgICAgICAgICAgSlNTY29wZSog
c2NvcGUgPSBmdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKKyAgICAgICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKLSAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xv
dCA9IGNhbGxlZUZyYW1lLT5hZGRyZXNzT2ZDb2RlQmxvY2soKTsKLSAgICAgICAgRXhjZXB0aW9u
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlv
bkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsK
LSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9y
KTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkgewotICAgICAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdCgKLSAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9u
RnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZv
aWQqPihLZWVwVGhlRnJhbWUpKTsKKyAgICAgICAgICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdCkgeworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvbikpOworICAgICAgICAgICAgICAgIHJldHVybiB2bS5nZXRDVElTdHViKHRo
cm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50
cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGNhbGxlZUZyYW1lLT5hZGRyZXNzT2ZD
b2RlQmxvY2soKTsKKyAgICAgICAgICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1
dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rp
b24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CisgICAgICAgICAgICBFWENFUFRJT05f
QVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOworICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGVycm9yKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2bS5nZXRDVElTdHVi
KHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpT
RW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9OworICAgIAorICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7
CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgp
OworICAgIGF1dG8gZmFpbHVyZSA9IG1hdGVyaWFsaXplQ29kZUJsb2NrSWZOZWNlc3NhcnkoZnVu
Y3Rpb24sIGV4ZWN1dGFibGUpOworICAgIGlmIChVTkxJS0VMWShmYWlsdXJlKSkKKyAgICAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdChmYWlsdXJlLCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVw
VGhlRnJhbWUpKTsKKworICAgIC8vIENhbGwgSUMgbGlua3MgdGhpcyBjYWxsc2l0ZSB0byB3cmFw
cGVkIGZ1bmN0aW9uIGRpcmVjdGx5LiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGRpcmVjdGx5IGxp
bmtlZCBmdW5jdGlvbiBpcyBtYXRlcmlhbGl6ZWQgaGVyZS4KKyAgICBpZiAoZnVuY3Rpb24tPmlu
aGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pICYmIGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihm
dW5jdGlvbiktPnRhcmdldEZ1bmN0aW9uKCktPmluaGVyaXRzPEpTRnVuY3Rpb24+KHZtKSkgewor
ICAgICAgICBhdXRvKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oanNDYXN0
PEpTQm91bmRGdW5jdGlvbio+KGZ1bmN0aW9uKS0+dGFyZ2V0RnVuY3Rpb24oKSk7CisgICAgICAg
IGF1dG8gZmFpbHVyZSA9IG1hdGVyaWFsaXplQ29kZUJsb2NrSWZOZWNlc3NhcnkodGFyZ2V0RnVu
Y3Rpb24sIHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCkpOworICAgICAgICBpZiAoVU5MSUtF
TFkoZmFpbHVyZSkpCisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGZhaWx1cmUsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgIH0KKwogICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IHdhc20gSUMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMDMzOQogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJsZS0+
ZW50cnlwb2ludEZvcigKQEAgLTE0OTYsNiArMTUxMSwxMCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1
cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQwogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGlj
Q2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogewor
ICAgIC8vIER1cmluZyBleGVjdXRpb24gb2YgdmlydHVhbEZvcldpdGhGdW5jdGlvbi9saW5rUG9s
eW1vcnBoaWNDYWxsLCB3ZSBzdHJvbmdseSBhc3N1bWUgdGhhdCB3ZSBuZXZlciBkbyBHQy4KKyAg
ICAvLyBHQyBqZXR0aXNvbnMgQ29kZUJsb2NrcywgY2hhbmdlcyBDYWxsTGlua0luZm8gZXRjLiBh
bmQgYnJlYWtzIGFzc3VtcHRpb24gZG9uZSBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY2FsbC4KKyAg
ICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0NGb3JBV2hpbGUoZ2xvYmFsT2JqZWN0LT52bSgpLmhl
YXApOworCiAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCkgPT0g
Q29kZUZvckNhbGwpOwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGw7CiAgICAgU2xv
d1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0LCBjYWxsZWVGcmFtZSwgY2FsbExpbmtJbmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CkBA
IC0xNTA3LDYgKzE1MjYsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxp
bmtQb2x5bW9ycGhpY0NhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGwKIAogSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZpcnR1YWxDYWxsLCBTbG93UGF0aFJldHVyblR5cGUs
IChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykpCiB7CisgICAgLy8gRHVyaW5nIGV4ZWN1dGlvbiBv
ZiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uL2xpbmtQb2x5bW9ycGhpY0NhbGwsIHdlIHN0cm9uZ2x5
IGFzc3VtZSB0aGF0IHdlIG5ldmVyIGRvIEdDLgorICAgIC8vIEdDIGpldHRpc29ucyBDb2RlQmxv
Y2tzLCBjaGFuZ2VzIENhbGxMaW5rSW5mbyBldGMuIGFuZCBicmVha3MgYXNzdW1wdGlvbiBkb25l
IGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjYWxsLgorICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJH
Q0ZvckFXaGlsZShnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKICAgICBKU0NlbGwqIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsSWdub3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldpdGhGdW5jdGlv
bihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxlZUFzRnVuY3Rp
b25DZWxsSWdub3JlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRl
eCA4YTk2YWJlODVlZGVmYmExNTUxMDkyNzQ2N2Q2YTM5OTllMTM1NGJlLi5kZTQwYWY0ZDRjYTA2
ZTJjMjQ0ZjBjZGY4N2ZkZWI3OGE4Yjg2YTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
SVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQm91bmRG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKQEAg
LTEyMjMsNiArMTIyNCwxMSBAQCB2b2lkIGxpbmtGb3IoCiB7CiAgICAgQVNTRVJUKCFjYWxsTGlu
a0luZm8uc3R1YigpKTsKIAorICAgIGlmIChjYWxsZWUtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlv
bj4odm0pICYmIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSA9PSBDb2RlRm9yQ2Fs
bCAmJiBjYWxsTGlua0luZm8uYWxsb3dTdHVicygpKSB7CisgICAgICAgIGxpbmtTbG93Rm9yKHZt
LCBjYWxsTGlua0luZm8sIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZy
YW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIC8vIE91ciBjYWxsZXIgbXVzdCBoYXZlIGEgY2VsbCBm
b3IgYSBjYWxsZWUuIFdoZW4gY2FsbGluZwogICAgIC8vIHRoaXMgZnJvbSBXYXNtLCB3ZSBlbnN1
cmUgdGhlIGNhbGxlZSBpcyBhIGNlbGwuCkBAIC0xMzQwLDE2ICsxMzQ2LDEwMSBAQCBzdHJ1Y3Qg
Q2FsbFRvQ29kZVB0ciB7CiB9OwogfSAvLyBhbm5vbnltb3VzIG5hbWVzcGFjZQogCitzdGF0aWMg
dm9pZCBnZW5lcmF0ZUlubGluZWRCb3VuZEZ1bmN0aW9uQ2FsbChWTSYgdm0sIENDYWxsSGVscGVy
cyYgaml0LCBKU0JvdW5kRnVuY3Rpb24qIGZ1bmN0aW9uLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKworICAgIC8vIFNldCB1cCBvdXIg
Y2FsbCBmcmFtZS4KKyAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSk7CisgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEND
YWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7CisKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gZnVuY3Rpb24t
PmJvdW5kQXJncygpOworICAgIHVuc2lnbmVkIGNhbGxTaXRlQXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisgICAgdW5z
aWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsU2l0ZUFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgKGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwKTsKKyAg
ICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0gMDsKKyAgICB1bnNpZ25lZCBudW1GaXh1cENvdW50
ID0gMDsKKworICAgIEpTRnVuY3Rpb24qIHRhcmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rp
b24qPihmdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIHRh
cmdldEV4ZWN1dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgIGlmICh0
YXJnZXRFeGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQ29kZUJsb2NrKiB0YXJnZXRDb2RlQmxvY2sgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4odGFyZ2V0RXhlY3V0YWJsZSktPmNvZGVCbG9ja0ZvckNhbGwoKTsKKyAgICAgICAgbnVtUGFy
YW1ldGVycyA9IHRhcmdldENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOworICAgICAgICBpZiAo
bnVtUGFyYW1ldGVycyA+IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorICAgICAgICAgICAg
bnVtRml4dXBDb3VudCA9IG51bVBhcmFtZXRlcnMgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czsKKyAgICB9CisgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNBZnRlckZp
eHVwID0gc3RkOjptYXg8dW5zaWduZWQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBudW1Q
YXJhbWV0ZXJzKTsKKworICAgIC8vIFRoZSBmb3JtdWxhIGZvciB0aGUgbnVtYmVyIG9mIHN0YWNr
IGJ5dGVzIG5lZWRlZCBnaXZlbiBzb21lIG51bWJlciBvZiBwYXJhbWV0ZXJzIChpbmNsdWRpbmcK
KyAgICAvLyB0aGlzKSBpczoKKyAgICAvLworICAgIC8vICAgICBzdGFja0FsaWduKChudW1QYXJh
bXMgKyBDYWxsRnJhbWVIZWFkZXJTaXplKSAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykpCisgICAgLy8KKyAgICAvLyBQcm9iYWJseSB3ZSB3YW50IHRvIHdyaXRl
IHRoaXMgYXM6CisgICAgLy8KKyAgICAvLyAgICAgc3RhY2tBbGlnbigobnVtUGFyYW1zICsgKENh
bGxGcmFtZUhlYWRlclNpemUgLSBDYWxsZXJGcmFtZUFuZFBDU2l6ZSkpICogc2l6ZW9mKFJlZ2lz
dGVyKSkKKyAgICAvLworICAgIC8vIFRoYXQncyByZWFsbHkgYWxsIHRoZXJlIGlzIHRvIHRoaXMu
IFdlIGhhdmUgYWxsIHRoZSByZWdpc3RlcnMgd2UgbmVlZCB0byBkbyBpdC4KKworICAgIHVuc2ln
bmVkIGV4dHJhU3RhY2tOZWVkZWQgPSAwOworICAgIGlmICh1bnNpZ25lZCBzdGFja01pc2FsaWdu
bWVudCA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSkK
KyAgICAgICAgZXh0cmFTdGFja05lZWRlZCA9IHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSAtIHN0YWNr
TWlzYWxpZ25tZW50OworCisgICAgdW5zaWduZWQgc3RhY2tTaXplID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIChDYWxsRnJhbWU6OmhlYWRlclNp
emVJblJlZ2lzdGVycyAtIENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVycykgKyBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc0FmdGVyRml4dXApICsgZXh0cmFTdGFja05lZWRlZDsKKyAg
ICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0oc3RhY2tTaXplICogc2l6
ZW9mKFJlZ2lzdGVyKSkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJ
bmZvOjpyZWdUMik7CisgICAgYXV0byBzdGFja092ZXJmbG93ID0gaml0LmJyYW5jaFB0cihDQ2Fs
bEhlbHBlcnM6OkFib3ZlLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyh2bS5hZGRyZXNz
T2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6cmVnVDIpOworCisgICAgaml0Lm1vdmUoR1BS
SW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGpp
dC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisKKyAgICB1bnNpZ25lZCBpbmRleElu
QXJndW1lbnRzID0gMDsKKyAgICBqaXQuc3RvcmVUcnVzdGVkVmFsdWUoZnVuY3Rpb24tPmJvdW5k
VGhpcygpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdChpbmRleEluQXJndW1lbnRz
KyspKTsKKyAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICBq
aXQuc3RvcmVUcnVzdGVkVmFsdWUoYm91bmRBcmdzLT5nZXQoaW5kZXgpLCBDQ2FsbEhlbHBlcnM6
OmNhbGxlZUFyZ3VtZW50U2xvdChpbmRleEluQXJndW1lbnRzKyspKTsKKyAgICB9CisKKyAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJlZ3Mo
R1BSSW5mbzo6cmVnVDQsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gLyogY2FsbHNpdGUncyB8dGhpc3wgaXMgbm90IGludGVyZXN0aW5nICovIDE7IGluZGV4IDwg
Y2FsbFNpdGVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkgeworICAgICAgICBq
aXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudEluY2x1ZGluZ1RoaXMoaW5kZXgpKSwgdmFsdWVSZWdzKTsKKyAgICAgICAgaml0LnN0
b3JlVmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdChpbmRl
eEluQXJndW1lbnRzKyspKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBudW1GaXh1cENvdW50OyArK2luZGV4KQorICAgICAgICBqaXQuc3RvcmVUcnVzdGVk
VmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoaW5k
ZXhJbkFyZ3VtZW50cysrKSk7CisKKyAgICBqaXQuc3RvcmVUcnVzdGVkVmFsdWUodGFyZ2V0RnVu
Y3Rpb24sIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSkpOworICAgIGF1dG8gZnVuY3Rpb25DYWxsID0gaml0LmNhbGwoSlNFbnRyeVB0clRhZyk7Cisg
ICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFn
Pih0YXJnZXRFeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9y
Q2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpKSk7CisgICAgfSk7CisKKyAgICBqaXQuZW1pdEZ1
bmN0aW9uRXBpbG9ndWUoKTsKKyAgICBqaXQucmV0KCk7CisKKyAgICAvLyBUaHJvdyBTdGFjayBP
dmVyZmxvdyBleGNlcHRpb24KKyAgICBzdGFja092ZXJmbG93LmxpbmsoJmppdCk7CisgICAgaml0
LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5
RnJhbWUpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihmdW5jdGlv
bi0+c2NvcGUoKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspPihHUFJJbmZv
OjpyZWdUMyk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9u
UHRyVGFnKTsKKyAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7Cit9CisKK3N0cnVj
dCBJbmxpbmVkQ2FsbGVlIHsKKyAgICBzaXplX3QgY2FzZUluZGV4OworICAgIENDYWxsSGVscGVy
czo6TGFiZWwgZW50cnlwb2ludDsKK307CisKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbExpbmtJ
bmZvJiBjYWxsTGlua0luZm8sIENhbGxWYXJpYW50IG5ld1ZhcmlhbnQpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoY2FsbExpbmtJbmZvLmFsbG93U3R1YnMoKSk7CiAKICAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKLQotICAgIC8vIER1cmluZyBleGVjdXRpb24gb2YgbGlua1BvbHltb3Jw
aGljQ2FsbCwgd2Ugc3Ryb25nbHkgYXNzdW1lIHRoYXQgd2UgbmV2ZXIgZG8gR0MuCi0gICAgLy8g
R0MgamV0dGlzb25zIENvZGVCbG9ja3MsIGNoYW5nZXMgQ2FsbExpbmtJbmZvIGV0Yy4gYW5kIGJy
ZWFrcyBhc3N1bXB0aW9uIGRvbmUgYmVmb3JlIGFuZCBhZnRlciB0aGlzIGNhbGwuCi0gICAgRGVm
ZXJHQ0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxlKHZtLmhlYXApOworICAgIEFTU0VSVCh2bS5o
ZWFwLmlzRGVmZXJyZWQoKSk7CiAgICAgCiAgICAgaWYgKCFuZXdWYXJpYW50KSB7CiAgICAgICAg
IGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5mbyk7CkBAIC0xMzkyLDYg
KzE0ODMsMTEgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAKICAgICBWZWN0b3I8UG9s
eW1vcnBoaWNDYWxsQ2FzZT4gY2FsbENhc2VzOwogICAgIFZlY3RvcjxpbnQ2NF90PiBjYXNlVmFs
dWVzOworCisgICAgYXV0byBpc0xpbmthYmxlQm91bmRGdW5jdGlvbiA9IFsmXShDYWxsVmFyaWFu
dCYgdmFyaWFudCkgeworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHZhcmlhbnQuZnVu
Y3Rpb24oKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICYmIGZ1bmN0aW9uLT5pbmhlcml0czxK
U0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZnVuY3Rpb24p
LT50YXJnZXRGdW5jdGlvbigpLT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkgJiYgIWNhbGxMaW5r
SW5mby5pc1ZhcmFyZ3MoKTsKKyAgICB9OwogICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBv
dXIgY2FzZXMgYXJlLgogICAgIGZvciAoQ2FsbFZhcmlhbnQgdmFyaWFudCA6IGxpc3QpIHsKQEAg
LTE0MDUsNiArMTUwMSwxMiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICAgICAg
ICAgIGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGlzTGlu
a2FibGVCb3VuZEZ1bmN0aW9uKHZhcmlhbnQpKSB7CisgICAgICAgICAgICAvLyBXZSBsaW5rIHRo
ZSBjYWxsIHRvIHRoZSB0YXJnZXQgZnVuY3Rpb24sIHNvIHdlIG5lZWQgdG8gcmV0cmlldmUgQ29k
ZUJsb2NrIGZyb20gdGhlIHRhcmdldCBmdW5jdGlvbi4KKyAgICAgICAgICAgIEpTRnVuY3Rpb24q
IHRhcmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihqc0Nhc3Q8SlNCb3VuZEZ1bmN0
aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKS0+dGFyZ2V0RnVuY3Rpb24oKSk7CisgICAgICAgICAg
ICBFeGVjdXRhYmxlQmFzZSogdGFyZ2V0RXhlY3V0YWJsZSA9IHRhcmdldEZ1bmN0aW9uLT5leGVj
dXRhYmxlKCk7CisgICAgICAgICAgICBpZiAoIXRhcmdldEV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0
aW9uKCkpCisgICAgICAgICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KHRhcmdldEV4ZWN1dGFibGUpLT5jb2RlQmxvY2tGb3JDYWxsKCk7CiAgICAgICAgIH0K
IAogICAgICAgICBpbnQ2NF90IG5ld0Nhc2VWYWx1ZSA9IDA7CkBAIC0xNTIzLDYgKzE2MjUsNyBA
QCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBoYXNFeGVjdXRhYmxlLmxpbmsoJnN0
dWJKaXQpOwogICAgIH0KIAorICAgIFZlY3RvcjxJbmxpbmVkQ2FsbGVlPiBpbmxpbmVkQ2FsbGVl
czsKICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKGNvbXBhcmlzb25WYWx1ZUdQUiwgY2Fz
ZVZhbHVlcywgQmluYXJ5U3dpdGNoOjpJbnRQdHIpOwogICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QgZG9uZTsKICAgICB3aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsKQEAg
LTE1MzQsNyArMTYzNywxNCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBpZiAo
dmFyaWFudC5leGVjdXRhYmxlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1
dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGNvZGVQdHIgPSBqc1RvV2FzbUlDQ29kZVB0cih2bSwgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0
aW9uS2luZCgpLCB2YXJpYW50LmZ1bmN0aW9uKCkpOworICAgICAgICAgICAgaWYgKEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gdmFyaWFudC5mdW5jdGlvbigpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGlzTGlua2FibGVCb3VuZEZ1bmN0aW9uKHZhcmlhbnQpKSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIEVtaXQgaW5saW5lZCBKU0JvdW5kRnVuY3Rpb24gY2FsbCBpZiBKU0JvdW5kRnVuY3Rpb24n
cyB0YXJnZXQgZnVuY3Rpb24gaXMgSlNGdW5jdGlvbiwgYW5kIGl0IGlzIG5vdCBjYWxsX3ZhcmFy
Z3MKKyAgICAgICAgICAgICAgICAgICAgaW5saW5lZENhbGxlZXMuYXBwZW5kKElubGluZWRDYWxs
ZWUgeyBjYXNlSW5kZXgsIENDYWxsSGVscGVyczo6TGFiZWwoKSB9KTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ciA9IGpzVG9XYXNtSUNDb2RlUHRy
KHZtLCBjYWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCksIGZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCFjb2RlUHRyKQogICAgICAgICAgICAgICAgIGNv
ZGVQdHIgPSB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+
YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKTsKICAgICAgICAgfSBlbHNlIHsK
QEAgLTE1NTgsNiArMTY2OCwyMSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBj
YWxsc1tjYXNlSW5kZXhdLmNvZGVQdHIgPSBjb2RlUHRyOwogICAgICAgICBkb25lLmFwcGVuZChz
dHViSml0Lmp1bXAoKSk7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBpbmxpbmVkIDogaW5saW5l
ZENhbGxlZXMpIHsKKyAgICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGlubGluZWQuY2FzZUluZGV4
OworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nhc2VJbmRleF0udmFy
aWFudCgpOworICAgICAgICBpbmxpbmVkLmVudHJ5cG9pbnQgPSBzdHViSml0LmxhYmVsKCk7CisK
KyAgICAgICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgQVNTRVJUKHZh
cmlhbnQuZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKTsKKyAgICAgICAgQVNTRVJU
KHZhcmlhbnQuZnVuY3Rpb24oKSk7CisgICAgICAgIEFTU0VSVCh2YXJpYW50LmZ1bmN0aW9uKCkt
PmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKTsKKyAgICAgICAgQVNTRVJUKGpzQ2FzdDxK
U0JvdW5kRnVuY3Rpb24qPih2YXJpYW50LmZ1bmN0aW9uKCkpLT50YXJnZXRGdW5jdGlvbigpLT5p
bmhlcml0czxKU0Z1bmN0aW9uPih2bSkpOworICAgICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5p
c1ZhcmFyZ3MoKSk7CisKKyAgICAgICAgZ2VuZXJhdGVJbmxpbmVkQm91bmRGdW5jdGlvbkNhbGwo
dm0sIHN0dWJKaXQsIGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih2YXJpYW50LmZ1bmN0aW9uKCkp
LCBjYWxsRnJhbWUpOworICAgIH0KICAgICAKICAgICBzbG93UGF0aC5saW5rKCZzdHViSml0KTsK
ICAgICBiaW5hcnlTd2l0Y2guZmFsbFRocm91Z2goKS5saW5rKCZzdHViSml0KTsKQEAgLTE1OTAs
NiArMTcxNSw5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAgICAgICAgIGxpbmtWaXJ0dWFs
Rm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlubGluZWQgOiBpbmxpbmVkQ2FsbGVlcykKKyAgICAg
ICAgY2FsbHNbaW5saW5lZC5jYXNlSW5kZXhdLmNvZGVQdHIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlv
bk9mPEpTRW50cnlQdHJUYWc+KGlubGluZWQuZW50cnlwb2ludCk7CiAgICAgCiAgICAgUkVMRUFT
RV9BU1NFUlQoY2FsbENhc2VzLnNpemUoKSA9PSBjYWxscy5zaXplKCkpOwogICAgIGZvciAoQ2Fs
bFRvQ29kZVB0ciBjYWxsVG9Db2RlUHRyIDogY2FsbHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA1MWYwM2I5YzFmNTkxOTBmOWQ5OTg0
YWZjYmIxNWI5MGI1YTE3Y2U3Li5mODA2NTI5MjFmMTY5NTg3ZmY2ZTA0N2E2OTM5NTBjYWY4OTQx
ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CkBAIC0xMTg5LDcgKzExODksNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2bSkKICAgICBhdXRvIG5vQXJncyA9
IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDIpOwog
ICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBKU0lt
bXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSksIEdQUkluZm86OnJlZ1Qy
KTsKICAgICBqaXQuYWRkMzIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QxKTsKLSAgICBq
aXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsK
ICAgICBub0FyZ3MubGluaygmaml0KTsKICAgICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBDYWxsZXJGcmFtZUFu
ZFBDOjpzaXplSW5SZWdpc3RlcnMpLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwog
ICAgIGppdC5sc2hpZnQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigzKSwgR1BSSW5mbzo6
cmVnVDIpOwpAQCAtMTI0OCw3ICsxMjQ3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiAKICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIGxvb3BCb3VuZCA9IGppdC5sYWJlbCgpOwogICAgIGppdC5zdWIzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIGppdC5s
b2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86
OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojpv
ZmZzZXRPZkRhdGEoKSArIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwgdmFsdWVSZWdz
KTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJl
Z1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBKU0ltbXV0YWJs
ZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkpLCB2YWx1ZVJlZ3MpOwogICAgIGppdC5zdG9yZVZh
bHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoMSkuaW5kZXhl
ZEJ5KEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQpKTsKICAgICBqaXQu
YnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDEpLmxpbmtU
byhsb29wQm91bmQsICZqaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDA5ZDBhOTMwYWMyNDQyNTI5MzkyMGJj
ZmQ3OWU3ZmQ1MTdhMzhlMy4uMTQzYzE0ODg0YzhlMTY1NzY3MjU2ZGM4ZmI4ZDA4ODg3ODU4MDcw
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgbWFjcm8gc2xvd1BhdGhPcChvcGNvZGVO
YW1lKQogZW5kCiAKIHNsb3dQYXRoT3AoY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpCi1zbG93UGF0
aE9wKGNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5KQorc2xvd1BhdGhPcChjcmVhdGVfYXJndW1l
bnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcykKIHNsb3dQYXRoT3AoY3JlYXRlX2RpcmVjdF9h
cmd1bWVudHMpCiBzbG93UGF0aE9wKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogc2xvd1Bh
dGhPcChjcmVhdGVfcmVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDgyZjNlY2IwODYzYjNkYWEwNTc0ZDVkOGQ4NDlkMjlk
MzAyOWU5YTUuLjcxYTcxN2QxY2I0ZjI0ZDMyOTYyMjllNjJkZmRmZWY2MDYyY2E2ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKKyNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlz
ZS5oIgpAQCAtMjA2LDE2ICsyMDcsMzYgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKICAgICBSRVRVUk4oQ2xvbmVkQXJndW1l
bnRzOjpjcmVhdGVXaXRoTWFjaGluZUZyYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBBcmd1
bWVudHNNb2RlOjpDbG9uZWQpKTsKIH0KIAotSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKK0pTQ19ERUZJTkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3Ro
aXMpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzPigpOworICAgIEpTQ2VsbCogdGFyZ2V0
ID0gR0VUKGJ5dGVjb2RlLm1fdGFyZ2V0KS5qc1ZhbHVlKCkuYXNDZWxsKCk7CiAgICAgaW50MzJf
dCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7Ci0gICAgSlNJbW11
dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVh
dGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRl
eGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhp
bmdTaGFwZXNdLmdldCgpLCBhcmd1bWVudENvdW50KTsKKyAgICBBU1NFUlQoYXJndW1lbnRDb3Vu
dCA+IDEpOworCisgICAgQ2hlY2tlZEludDMyIHRvdGFsQ291bnQgPSBhcmd1bWVudENvdW50IC0g
MTsKKyAgICBpbnQzMl90IGFkZGl0aW9uYWxDb3VudCA9IDA7CisgICAgSlNJbW11dGFibGVCdXR0
ZXJmbHkqIGJvdW5kQXJncyA9IG51bGxwdHI7CisgICAgaWYgKHRhcmdldC0+aW5oZXJpdHM8SlNC
b3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0
aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAgICAgIGJvdW5kQXJn
cyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAgICBhZGRpdGlvbmFsQ291bnQg
PSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsKKyAgICAgICAgdG90YWxDb3Vu
dCArPSBhZGRpdGlvbmFsQ291bnQ7CisgICAgICAgIGlmICh0b3RhbENvdW50Lmhhc092ZXJmbG93
ZWQoKSkKKyAgICAgICAgICAgIFRIUk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgfQorCisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpT
SW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVhdGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0
cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhD
b250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpLCB0b3RhbENvdW50LnVu
c2FmZUdldCgpKTsKICAgICBpZiAoIWJ1dHRlcmZseSkKICAgICAgICAgVEhST1coY3JlYXRlT3V0
T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKLSAgICBmb3IgKGludDMyX3QgaW5kZXggPSAw
OyBpbmRleCA8IGFyZ3VtZW50Q291bnQ7ICsraW5kZXgpCi0gICAgICAgIGJ1dHRlcmZseS0+c2V0
SW5kZXgodm0sIGluZGV4LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGluZGV4KSk7Cisg
ICAgaWYgKGFkZGl0aW9uYWxDb3VudCkgeworICAgICAgICBBU1NFUlQoYm91bmRBcmdzKTsKKyAg
ICAgICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBhZGRpdGlvbmFsQ291bnQ7ICsr
aW5kZXgpCisgICAgICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgYm91bmRB
cmdzLT5nZXQoaW5kZXgpKTsKKyAgICB9CisgICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5k
ZXggPCAoYXJndW1lbnRDb3VudCAtIDEpOyArK2luZGV4KQorICAgICAgICBidXR0ZXJmbHktPnNl
dEluZGV4KHZtLCBpbmRleCArIGFkZGl0aW9uYWxDb3VudCwgY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudChpbmRleCArIDEpKTsKICAgICBSRVRVUk4oYnV0dGVyZmx5KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA4NGUy
ZGE1ZjdhYjY4YTYyNjI0ODVjYjhjYzQzZjgwNTcxNDhjNDcxLi45ODg4NTE2OTBmMjA3YWUwOWNk
YTg5OTQzNzE3MDRhNmNlN2RlMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjEwLDcgKzIxMCw3IEBAIEpTQ19ERUNMQVJFX0NP
TU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKIEpTQ19ERUNM
QVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKTsK
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9zY29wZWRfYXJn
dW1lbnRzKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9j
bG9uZWRfYXJndW1lbnRzKTsKLUpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRo
X2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5KTsKK0pTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BB
VEgoc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzKTsK
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV90aGlzKTsKIEpT
Q19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudGVyKTsKIEpTQ19ERUNMQVJF
X0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3RvX3RoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXggZGRlOGYwOWE1OTdh
ODkxM2YzOTg0MmJmZjQyY2ExMTA0ZWFhMjE1Mi4uZDRmNzhmNDcwMjdhMmE4YTA4NjkxZWYzMmZl
MDliM2FkNTIxNWI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCkBAIC00MSw4ICs0MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3Mp
IHsKLSAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlz
fC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7
ICsraSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3Ro
KCk7ICsraSkKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAg
ICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpCkBAIC03MCw4ICs2OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihib3Vu
ZEZ1bmN0aW9uQ2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGCiAKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3MpIHsKLSAgICAg
ICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4KLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkK
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAgICB9CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kp
CkBAIC05NSw4ICs5Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNvbnN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3MpIHsKLSAgICAgICAgLy8gU3Rh
cnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAgICB9CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCkBAIC0xMjMs
OCArMTIwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25Db25zdHJ1
Y3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRo
IDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdz
LmFwcGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtMjM0LDggKzIzMCw3
IEBAIEpTQXJyYXkqIEpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkodGhpcy0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogICAgIGlmIChtX2JvdW5kQXJncykgewotICAgICAgICAvLyBT
dGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgYm91bmQgfHRoaXN8LgotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9ib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYm91bmRBcmdzLT5sZW5ndGgoKTsg
KytpKSB7CiAgICAgICAgICAgICByZXN1bHQtPnB1c2goZ2xvYmFsT2JqZWN0LCBtX2JvdW5kQXJn
cy0+Z2V0KGkpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMGE2MTY3MTNlNmRjNmNkNWVhNzk4ZWVjNDZkMWE1NDZjN2Fl
MzJhOC4uZTc4YzRiYWQyZmYxNDUwMThkNGExMjVkMzcyYmU3ZGZmODQzMjhmYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzAw
LDEwICszMDAsMjAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1ha2VCb3VuZEZ1bmN0aW9u
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEYKICAgICBKU09iamVjdCogdGFy
Z2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgSlNW
YWx1ZSBib3VuZFRoaXMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIEpT
VmFsdWUgYm91bmRBcmdzID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKKyAgICBK
U0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5ID0gYm91bmRBcmdzLmlzQ2VsbCgpID8ganND
YXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oYm91bmRBcmdzKSA6IG51bGxwdHI7CiAgICAgZG91
YmxlIGxlbmd0aCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMykuYXNOdW1iZXIoKTsK
ICAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGFzU3RyaW5nKGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoNCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBi
b3VuZFRoaXMsIGJvdW5kQXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZs
eSo+KGJvdW5kQXJncykgOiBudWxscHRyLCBsZW5ndGgsIG5hbWVTdHJpbmcpKSk7CisgICAgLy8g
VW53cmFwIEpTQm91bmRGdW5jdGlvbiBieSBjb25maWd1cmluZyBidXR0ZXJmbHkgYW5kIHRhcmdl
dC4gVGhlIGxhcmdlciBCdXR0ZXJmbHkgaXMgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIHRoYXQgcHVy
cG9zZS4KKyAgICBpZiAodGFyZ2V0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgewor
ICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1
bmN0aW9uKj4odGFyZ2V0KTsKKyAgICAgICAgYm91bmRUaGlzID0gYm91bmRGdW5jdGlvbi0+Ym91
bmRUaGlzKCk7CisgICAgICAgIHRhcmdldCA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9u
KCk7CisgICAgICAgIGlmICghYnV0dGVyZmx5ICYmIGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygp
KQorICAgICAgICAgICAgYnV0dGVyZmx5ID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7Cisg
ICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNC
b3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBib3VuZFRoaXMs
IGJ1dHRlcmZseSwgbGVuZ3RoLCBuYW1lU3RyaW5nKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oaGFzT3duTGVuZ3RoUHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlMDU4MWQ0NmJmNjA0YmI3OTVhZDNhNjIxNTA5
ZTQ1OWU3YmVhODAuLmZjMDhhMDM4ZDkxZmIwYTdhMjFkYjdmODNjYmM4M2UyNjhkYzdhNWUgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDggQEAKKzIwMjEtMDUtMDEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlvbiBjYWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYm91bmQt
ZnVuY3Rpb24taW5saW5pbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgICh0KToKKyAgICAgICAgKiBzdHJlc3MvYm91bmQtZnVuY3Rpb24t
c3RyZW5ndGgtcmVkdWN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAodDEpOgorICAgICAgICAodDIpOgorICAgICAgICAqIHN0cmVz
cy9mdW5jdGlvbi1iaW5kLWNhbGxlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChpbmxpbmVkKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5j
dGlvbi1iaW5kLWRvLW5vdC1taXNzLWFscmVhZHktYm91bmQtYXJncy5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rp
b24tYmluZC1kb3VibGUtd3JhcC10aHJvdy1tb3JlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHRocm93YWJsZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGNh
dGNoKToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0aHJvd2FibGUpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9u
LWJpbmQtaW5saW5lZC1vc3ItZXhpdC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChtYXlFeGl0KToKKyAgICAgICAgKGlubGluZWQpOgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGhyb3cuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAodGhyb3dhYmxlKToKKyAgICAgICAgKGlubmVyKToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAoY2F0Y2gpOgorCiAyMDIxLTA0LTI4ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZXhjZXB0aW9uIGFzc2VydGlvbnMgaW4g
bGlnaHQgb2YgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvYm91bmQtZnVuY3Rpb24taW5saW5pbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1m
dW5jdGlvbi1pbmxpbmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzUwNWIxZmU3MjIzOWU2YmNmZDcyMDli
NTMwMzBiODBkYzFjYjJmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQt
ZnVuY3Rpb24taW5saW5pbmcuanMKQEAgLTAsMCArMSwxNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QoYSwgYiwgYykgeworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK3ZhciBib3VuZCA9
IHRlc3QuYmluZCgwLCAxKTsKKworZnVuY3Rpb24gdCgpIHsKKyAgICByZXR1cm4gYm91bmQoMiwg
MywgNCk7Cit9Citub0lubGluZSh0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisg
ICAgc2hvdWxkQmUodCgpLCA2KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1
bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0
aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzM3ODZkMmViZjlhNTlkODEz
ZDNjYjI1NTQyYjAxNjE2ZjNjODdmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
Ym91bmQtZnVuY3Rpb24tc3RyZW5ndGgtcmVkdWN0aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpIHsKKyAgICByZXR1cm4gYSArIGIgKyBjOwor
fQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBib3VuZCA9IHRlc3QuYmluZCgwLCAxKTsKK25vSW5s
aW5lKGJvdW5kKTsKKworZnVuY3Rpb24gdDEoKSB7CisgICAgcmV0dXJuIGJvdW5kKDIsIDMsIDQp
OworfQorbm9JbmxpbmUodDEpOworCitmdW5jdGlvbiB0MigpIHsKKyAgICByZXR1cm4gYm91bmQo
J2hlbGxvJyk7Cit9Citub0lubGluZSh0Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyAr
K2kpIHsKKyAgICBzaG91bGRCZSh0MSgpLCA2KTsKKyAgICBzaG91bGRCZSh0MigpLCAiMWhlbGxv
dW5kZWZpbmVkIik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5k
LWNhbGxlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtY2FsbGVyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYzOGU5ZmUyMzQwMGI5NTZlMzAwZDNiYTFiYTZhZjcwY2ViZGUzMTAKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGxlci5qcwpAQCAtMCww
ICsxLDIwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gaW5saW5lZChhLCBiLCBjKQoreworICAgIHNo
b3VsZEJlKGlubGluZWQuY2FsbGVyLCB0ZXN0KTsKK30KKwordmFyIGJvdW5kID0gaW5saW5lZC5i
aW5kKHVuZGVmaW5lZCwgMykuYmluZCh1bmRlZmluZWQsIDEsIDIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZXR1cm4gYm91bmQoKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG8tbm90LW1pc3MtYWxyZWFkeS1ib3VuZC1hcmdzLmpzIGIv
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kby1ub3QtbWlzcy1hbHJlYWR5LWJvdW5kLWFy
Z3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzI1NzhmMGQ0NTRhZGVlNWQ1MWViOTI4OGYzMzBmYWIxOGY3ZmIx
MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG8tbm90
LW1pc3MtYWxyZWFkeS1ib3VuZC1hcmdzLmpzCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KK3ZhciBi
b3VuZDEgPSB0ZXN0LmJpbmQodW5kZWZpbmVkLCAwLCAxLCAyKTsKK3ZhciBib3VuZDIgPSBib3Vu
ZDEuYmluZCh1bmRlZmluZWQpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAg
IHNob3VsZEJlKGJvdW5kMigpLCAzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3ctbW9yZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3ctbW9yZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTZhYjQxMjAz
OWQ0YmNhMTQ0MWZhY2Q2MTBmMGM5NTkzZWMxZGIwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy1tb3JlLmpzCkBAIC0wLDAg
KzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gdGhyb3dhYmxl
KCkKK3sKKyAgICBpZiAoZmxhZykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9Citub0lu
bGluZSh0aHJvd2FibGUpOworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7CisgICAgdGhyb3dhYmxl
KCk7CisgICAgcmV0dXJuIGEgKyBiOworfQorCit2YXIgYm91bmQgPSB0ZXN0LmJpbmQodW5kZWZp
bmVkLCAxLCAyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgdmFyIGJvdW5k
ID0gYm91bmQuYmluZCh1bmRlZmluZWQpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytp
KQorICAgIHNob3VsZEJlKGJvdW5kKCksIDMpOworZmxhZyA9IHRydWU7Cit2YXIgZXJyb3IgPSBu
dWxsOwordHJ5IHsKKyAgICBib3VuZCgpOworfSBjYXRjaCAoZSkgeworICAgIGVycm9yID0gZTsK
K30KK3Nob3VsZEJlKGVycm9yICE9PSBudWxsLCB0cnVlKTsKK3Nob3VsZEJlKGVycm9yLnN0YWNr
LnRyaW0oKS5zcGxpdCgnXG4nKS5sZW5ndGgsIDMpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1
bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc1NWRiNGM5NDJm
MDlkZTQyNzIxNzU0NmJhNDQ4OGMwMzIwYTYyYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3cuanMKQEAgLTAsMCArMSwzMiBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7CitmdW5jdGlvbiB0aHJvd2FibGUoKQorewor
ICAgIGlmIChmbGFnKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KK25vSW5saW5lKHRo
cm93YWJsZSk7CisKK2Z1bmN0aW9uIHRlc3QoYSwgYikKK3sKKyAgICB0aHJvd2FibGUoKTsKKyAg
ICByZXR1cm4gYSArIGI7Cit9Cit2YXIgYm91bmQxID0gdGVzdC5iaW5kKHVuZGVmaW5lZCwgMSk7
Cit2YXIgYm91bmQyID0gYm91bmQxLmJpbmQodW5kZWZpbmVkLCAyKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShib3VuZDIoKSwgMyk7CitmbGFnID0gdHJ1
ZTsKK3ZhciBlcnJvciA9IG51bGw7Cit0cnkgeworICAgIGJvdW5kMigpOworfSBjYXRjaCAoZSkg
eworICAgIGVycm9yID0gZTsKK30KK3Nob3VsZEJlKGVycm9yICE9PSBudWxsLCB0cnVlKTsKK3No
b3VsZEJlKGVycm9yLnN0YWNrLnRyaW0oKS5zcGxpdCgnXG4nKS5sZW5ndGgsIDMpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9zci1leGl0LmpzIGIv
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9zci1leGl0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE4YWNhNTBhMTVkYjczYTA1ZDViOWNhMzM2NDA3OGI2ZTkzZWQ0NGUKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWlubGluZWQtb3NyLWV4aXQuanMK
QEAgLTAsMCArMSwzMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7CitmdW5jdGlvbiBt
YXlFeGl0KCkKK3sKKyAgICBpZiAoZmxhZykgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAg
IHJldHVybiAyNDsKKyAgICB9CisgICAgcmV0dXJuIDQyOworfQorCitmdW5jdGlvbiBpbmxpbmVk
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYyArIG1heUV4aXQoKTsKK30KKwordmFy
IGJvdW5kID0gaW5saW5lZC5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMyk7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJldHVybiBib3VuZCgpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdCgpLCA0OCk7CitmbGFn
ID0gdHJ1ZTsKK3Nob3VsZEJlKHRlc3QoKSwgMzApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZnVuY3Rpb24tYmluZC10aHJvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQt
dGhyb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTUzZjZmZTk5OTU1OTdmY2RkMDk5ZmQyOGFhYTA1ZmQwNjZl
YjM1NwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGhy
b3cuanMKQEAgLTAsMCArMSwzNiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7CitmdW5j
dGlvbiB0aHJvd2FibGUoKQoreworICAgIGlmIChmbGFnKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoImV4cGVjdGVkIik7Cit9Citub0lubGluZSh0aHJvd2FibGUpOworCitmdW5jdGlvbiBpbm5l
cigpCit7CisgICAgdGhyb3dhYmxlKCk7Cit9Cit2YXIgYm91bmQgPSBpbm5lci5iaW5kKDEsIDIs
IDMpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBib3VuZCgpOworfQorbm9JbmxpbmUodGVz
dCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgdGVzdCgpOworCit2YXIg
bGVuZ3RoID0gMDsKK3RyeSB7CisgICAgZmxhZyA9IHRydWU7CisgICAgdGVzdCgpOworfSBjYXRj
aCAoZXJyb3IpIHsKKyAgICBsZW5ndGggPSBlcnJvci5zdGFjay50cmltKCkuc3BsaXQoJ1xuJyku
bGVuZ3RoOworfQorc2hvdWxkQmUobGVuZ3RoLCA0KTsK
</data>
<flag name="commit-queue"
          id="448109"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427492</attachid>
            <date>2021-05-01 00:40:03 -0700</date>
            <delta_ts>2021-05-01 01:45:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210501004003.patch</filename>
            <type>text/plain</type>
            <size>78607</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDkyNDhkYTZiYWNhOWM0NjZkMDQ4MTdmMjJhYmZiMjY1ZDZlNmE4Li43MGIwZDUwNzM0ZDk2MDc5
NDAwYjY4ZDMwZjkwOTgyZmQ4OGQzZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAyMS0wNS0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1bmN0aW9uIGNhbGxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG9wdGlt
aXplcyBGdW5jdGlvbiNiaW5kLgorCisgICAgICAgIDEuIEZ1bmN0aW9uI2JpbmQgYm91bmRBcmdz
IGRvIG5vdCBpbmNsdWRlIHx0aGlzfCwgd2hpY2ggaXMgZHVwbGljYXRlZCBpbiBib3VuZFRoaXMg
ZmllbGQuCisgICAgICAgIDIuIEZ1bmN0aW9uI2JpbmQgdW53cmFwcyBmdW5jdGlvbiB3aGVuIGJp
bmRpbmcgdGhlIGJvdW5kIGZ1bmN0aW9uLiBXZSBrZWVwIGRlcHRoIG9mIGJvdW5kIDEuCisgICAg
ICAgIDMuIENhbGxJQyBub3cgaW5saW5lcyBib3VuZCBmdW5jdGlvbiBpZiBpdCBpcyBub3QgYSBj
bG9zdXJlIGNhbGwuCisgICAgICAgIDQuIERGRyAvIEZUTCBhdHRlbXB0IHRvIGlubGluZSB3cmFw
cGVkIGZ1bmN0aW9uIGlmIGl0IGZpZ3VyZWQgb3V0IHRoYXQgYm91bmQgZnVuY3Rpb24gaXMgY2Fs
bGVkLgorICAgICAgICA1LiBERkcgLyBGVEwgYXR0ZW1wdCB0byBzcHJlYWQgYm91bmQgYXJndW1l
bnRzIGV2ZW4gaWYgd2UgZGVjaWRlZCBub3QgdG8gaW5saW5lIGEgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBidWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKGJpbmQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2Nh
bENsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
QWRhcHRvcjo6cmVhZFRvcCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9u
UGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0
ZWQuCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpHZXRTdGFja1RyYWNlRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6Omdl
bmVyYXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHlt
b3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAg
IChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisKIDIwMjEtMDQtMzAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHNtYWxsIEpJVCBwb29sIHRlc3RzIHBhc3Mgb24gQVMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwpp
bmRleCBhZjI5YWZkODM1NmNhZjliN2U5OGY0YjY2NzkxYTQzYTU3NDQ1OWFhLi42YjI1Mzk5MDEw
Nzc0NWZiZTlhMTcxY2JjMmYyZjI4ZDAwZjY3MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCkBAIC02MSw4ICs2MSw3IEBA
IGZ1bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZh
ciB0YXJnZXQgPSB0aGlzOwotICAgIGlmICghQGlzQ2FsbGFibGUodGFyZ2V0KSkKKyAgICBpZiAo
IUBpc0NhbGxhYmxlKHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBpcyBu
b3QgYSBmdW5jdGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQiKTsKIAogICAgIHZh
ciBhcmd1bWVudENvdW50ID0gQGFyZ3VtZW50Q291bnQoKTsKQEAgLTcwLDEyICs2OSwxMiBAQCBm
dW5jdGlvbiBiaW5kKHRoaXNWYWx1ZSkKICAgICB2YXIgbnVtQm91bmRBcmdzID0gMDsKICAgICBp
ZiAoYXJndW1lbnRDb3VudCA+IDEpIHsKICAgICAgICAgbnVtQm91bmRBcmdzID0gYXJndW1lbnRD
b3VudCAtIDE7Ci0gICAgICAgIGJvdW5kQXJncyA9IEBjcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHko
KTsKKyAgICAgICAgYm91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSh0aGlzKTsK
ICAgICB9CiAKICAgICB2YXIgbGVuZ3RoID0gMDsKLSAgICBpZiAoQGhhc093bkxlbmd0aFByb3Bl
cnR5KHRhcmdldCkpIHsKLSAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0gdGFyZ2V0Lmxlbmd0aDsK
KyAgICBpZiAoQGhhc093bkxlbmd0aFByb3BlcnR5KHRoaXMpKSB7CisgICAgICAgIHZhciBsZW5n
dGhWYWx1ZSA9IHRoaXMubGVuZ3RoOwogICAgICAgICBpZiAodHlwZW9mIGxlbmd0aFZhbHVlID09
PSAibnVtYmVyIikgewogICAgICAgICAgICAgbGVuZ3RoVmFsdWUgPSBAdG9JbnRlZ2VyT3JJbmZp
bml0eShsZW5ndGhWYWx1ZSk7CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBjYXJl
IGFib3V0IHBvc2l0aXZlIGxlbmd0aFZhbHVlcywgaG93ZXZlciwgdGhpcyBjb21wYXJpc2lvbgpA
QCAtODUsOSArODQsOSBAQCBmdW5jdGlvbiBiaW5kKHRoaXNWYWx1ZSkKICAgICAgICAgfQogICAg
IH0KIAotICAgIHZhciBuYW1lID0gdGFyZ2V0Lm5hbWU7CisgICAgdmFyIG5hbWUgPSB0aGlzLm5h
bWU7CiAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAic3RyaW5nIikKICAgICAgICAgbmFtZSA9ICIi
OwogCi0gICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0YXJnZXQsIHRoaXNWYWx1ZSwgYm91
bmRBcmdzLCBsZW5ndGgsIG5hbWUpOworICAgIHJldHVybiBAbWFrZUJvdW5kRnVuY3Rpb24odGhp
cywgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjYjBlN2M4YzliYmJh
MTRjNTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhLi4yNmFmMDZlZjQ0YWZkYjhjMjc3YjViZGQ3MTFl
MDQ4MWNhYTY2MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKQEAgLTExMSw5ICsxMTEsMTAgQEAKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgfQogCi1vcCA6Y3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHksCitvcCA6Y3Jl
YXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMsCiAgICAgYXJnczogewogICAg
ICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgdGFyZ2V0OiBWaXJ0dWFsUmVnaXN0
ZXIsCiAgICAgfQogCiBvcCA6Y3JlYXRlX3RoaXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCAwMTZhMDI3ZmEzM2FiNzk0OTQz
MTJhNGE0NzdkZmM1YjJlN2EwMGQ3Li45NDMyMGU2ZTQ3OWNhMGNjM2JmZGVmNDM5MmFlYjRmYmY2
ODIzYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAKQEAgLTkyLDcgKzkyLDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAg
ICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNhc2Ugb3BfY3JlYXRlX2RpcmVj
dF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czoKLSAgICBj
YXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3Rf
bGVuZ3RoOgogICAgIGNhc2Ugb3BfY2hlY2tfdHJhcHM6CiAgICAgY2FzZSBvcF9nZXRfYXJndW1l
bnQ6CkBAIC0xMDMsNiArMTAyLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJ
bXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBjYXNl
IG9wX2dldF9zY29wZToKICAgICAgICAgcmV0dXJuOwogCisgICAgVVNFUyhPcENyZWF0ZUFyZ3Vt
ZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIHRhcmdldCkKICAgICBVU0VTKE9wVG9UaGlzLCBz
cmNEc3QpCiAgICAgVVNFUyhPcENoZWNrVGR6LCB0YXJnZXRWaXJ0dWFsUmVnaXN0ZXIpCiAgICAg
VVNFUyhPcElkZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKQEAgLTU1MSw3ICs1NTEsNyBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BDcmVhdGVEaXJlY3RBcmd1bWVudHMs
IGRzdCkKICAgICBERUZTKE9wQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBkc3QpCiAgICAgREVGUyhP
cENyZWF0ZUNsb25lZEFyZ3VtZW50cywgZHN0KQotICAgIERFRlMoT3BDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHksIGRzdCkKKyAgICBERUZTKE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpcywgZHN0KQogICAgIERFRlMoT3BEZWxCeUlkLCBkc3QpCiAgICAgREVGUyhPcERlbEJ5
VmFsLCBkc3QpCiAgICAgREVGUyhPcFVuc2lnbmVkLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDU4ZTUwZGEwOTIxYjIwOWY5ZWJlZmYyYWJkZjNiMzNlZmQ1NWJkOGIuLjAxMzFjZjI4OWZhYWI1
ZDA3ZGU1YWQ1ZDViZWYxMzQ4MTI5ZDI0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yODczLDkg
KzI4NzMsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFzeW5j
R2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZQogICAgIHJldHVybiBkc3Q7CiB9CiAK
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHRhcmdldCkKIHsKLSAgICBPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTo6ZW1p
dCh0aGlzLCBkc3QpOworICAgIE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhp
czo6ZW1pdCh0aGlzLCBkc3QsIHRhcmdldCk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IGU1MTFkYzI3NTU1ZGU1Yjg4NDQ3ZTMzM2Y5ZTE2NjI1YTg1NjI2MWMuLjM2Yjhi
MDk0ZGIxN2JmNWE3OTZjNzVkMmM0M2I4NjI2NmViMTA2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc2
MSw3ICs3NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENy
ZWF0ZVByb21pc2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wg
aXNJbnRlcm5hbFByb21pc2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJh
dG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogbmV3VGFyZ2V0KTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseShSZWdpc3RlcklEKiBkc3QpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGNvdW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlRmllbGRJbml0
aWFsaXphdGlvbklmTmVlZGVkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY29uc3RydWN0
b3IsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIHZvaWQg
ZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAgIGJvb2wgbmVlZHNURFpD
aGVjayhjb25zdCBWYXJpYWJsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDNjYmQxMjA5OWU4NWIwYjQyNjIwODBh
NDNhMzVkZTgxZjJiZDU3YjkuLmY0MjIzZDkyNmFiNjdmMTBmYjc0NGEwYzMxNzgzYTIzMjY4YTVj
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTE5MzMsOCArMTkzMywxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX25ld1Byb21pc2UoSlNDOjpCeXRlY29kZUdlbmVy
YQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2Ny
ZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IEpTQzo6UmVnaXN0ZXJJRCogZHN0KQogewotICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
KTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYWRkaXRpb25h
bENvdW50ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9u
ZXh0KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlF
eGNsdWRpbmdUaGlzKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGFkZGl0aW9uYWxD
b3VudC5nZXQoKSk7CiB9CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lD
X0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGZhOWQ5
ZmEwYmJmYjA2ZGI2ZDYyMDEyNzVjZmM2NjM0MTEwOWI5OTYuLjI2YjM1MzhiMjY0NGE4ZjQ0OTJi
YTYxMmU4ZDQwMjU2YTVkMTI5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMyMzAsNyArMzIz
MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldEZvck5vZGUobm9kZSwg
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5jbG9u
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlF
eGNsdWRpbmdUaGlzOgogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG1fdm0uaW1tdXRhYmxlQnV0
dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFy
cmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uZ2V0KCkpOwogICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCBmN2VlNDZiNDZhYWQzMGEyN2JmNmIzNmVhMjQ3MjI5YjViY2EzZDRk
Li44ZjE1ODhjZGU5NDBjOTk5YmUyYTJiYWVmYTc5N2QyMWI0YzI4YTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTgsNiArNTgs
NyBAQAogI2luY2x1ZGUgIkluQnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkluc3RhbmNlT2ZTdGF0
dXMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVC
dXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgpAQCAtMjAxLDcgKzIw
Miw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lkIGlubGluZUNhbGwoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6
S2luZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVy
biB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAg
ICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwg
Q2FsbFZhcmlhbnQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
ICAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgpAQCAtMTkyNyw3ICsxOTI4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6
YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKIAog
ICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0
aW9uS2luZCk7CiAgICAgaWYgKGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICBp
ZiAoaGFuZGxlSW50cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBpbnRyaW5zaWMs
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwg
aW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CisgICAgICAgIGlmIChoYW5kbGVJbnRyaW5z
aWNDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHQsIGNhbGxlZSwgaW50cmluc2ljLCByZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG9zckV4aXRJbmRleCwga2luZCwg
cHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CiAgICAgICAgICAgICBl
bmRTcGVjaWFsQ2FzZSgpOwogICAgICAgICAgICAgcmV0dXJuIENhbGxPcHRpbWl6YXRpb25SZXN1
bHQ6OklubGluZWQ7CiAgICAgICAgIH0KQEAgLTIzMjIsNyArMjMyMyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCBy
ZWdpc3Rlck9mZnNlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFu
ZCByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50
IGNhbGxWYXJpYW50LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgs
IElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAg
ICAgICBUaGUgaW50cmluc2ljIGlzICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTM3NTYsNiAr
Mzc1Nyw2NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUq
IGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYwogI2VuZGlmCiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2ljOiB7CisgICAgICAgICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxWYXJpYW50LmZ1bmN0aW9uKCk7CisgICAgICAgICAg
ICBpZiAoIWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNCb3Vu
ZEZ1bmN0aW9uKj4oKm1fdm0sIGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGlmICghYm91bmRGdW5j
dGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGluc2Vy
dENoZWNrcygpOworCisgICAgICAgICAgICAvLyBNYWtlIGEgY2FsbC4gV2UgZG9uJ3QgdHJ5IHRv
IGdldCBmYW5jeSB3aXRoIHVzaW5nIHRoZSBzbWFsbGVzdCBvcGVyYW5kIG51bWJlciBiZWNhdXNl
CisgICAgICAgICAgICAvLyB0aGUgc3RhY2sgbGF5b3V0IHBoYXNlIHNob3VsZCBjb21wcmVzcyB0
aGUgc3RhY2sgYW55d2F5LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFdlIGRvIG5v
dCBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgc3RhY2sgZm9yIHRoaXMgY2FsbC4gV2UgbmV3bHkgYWxs
b2NhdGUgc3RhY2sgc3BhY2UgYW5kIGZpbGwgaXQgd2l0aCB2YWx1ZXMKKyAgICAgICAgICAgIC8v
IHRvIGtlZXAgT1NSIGV4aXQgY29ycmVjdCB3aGVuIHdlIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiB0
aGlzIHN0YWNrIGNvbnN0cnVjdGlvbi4gV2UgZXhpdCB0byB0aGUgY2FsbGVyIHNpZGUKKyAgICAg
ICAgICAgIC8vIHdoZW4gd2UgZmFpbGVkIHRvIGNvbnN0cnVjdCB0aGlzIGZyYW1lLiBBbmQgdGhp
cyBpcyB0b3RhbGx5IE9LIHNpbmNlIHdlIGFyZSBub3QgY2xvYmJlcmluZyB2YWx1ZXMuCisKKyAg
ICAgICAgICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9u
LT5ib3VuZEFyZ3MoKTsKKworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbWV0ZXJz
ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgICAgICAgICBudW1iZXJPZlBhcmFt
ZXRlcnMrKzsgLy8gVHJ1ZSByZXR1cm4gUEMuCisgICAgICAgICAgICBudW1iZXJPZlBhcmFtZXRl
cnMgKz0gYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDA7CisKKyAgICAgICAgICAg
IC8vIFN0YXJ0IHdpdGggYSByZWdpc3RlciBvZmZzZXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUg
bGFzdCBpbi11c2UgcmVnaXN0ZXIuCisgICAgICAgICAgICBpbnQgbmV3UmVnaXN0ZXJPZmZzZXQg
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPm51bUNhbGxlZUxvY2FscygpIC0gMSkub2Zmc2V0KCk7CisgICAgICAgICAgICBuZXdSZWdp
c3Rlck9mZnNldCAtPSBudW1iZXJPZlBhcmFtZXRlcnM7CisgICAgICAgICAgICBuZXdSZWdpc3Rl
ck9mZnNldCAtPSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKKworICAgICAgICAg
ICAgLy8gR2V0IHRoZSBhbGlnbm1lbnQgcmlnaHQuCisgICAgICAgICAgICBuZXdSZWdpc3Rlck9m
ZnNldCA9IC1XVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgLW5ld1JlZ2lzdGVyT2Zmc2V0KTsKKworICAgICAgICAgICAgZW5zdXJlTG9jYWxzKG1faW5s
aW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIobmV3UmVnaXN0ZXJPZmZz
ZXQpKS50b0xvY2FsKCkpOworCisgICAgICAgICAgICAvLyBJc3N1ZSBTZXRMb2NhbHMuIFRoaXMg
aGFzIHR3byBlZmZlY3RzOgorICAgICAgICAgICAgLy8gMSkgVGhhdCdzIGhvdyBoYW5kbGVDYWxs
KCkgc2VlcyB0aGUgYXJndW1lbnRzLgorICAgICAgICAgICAgLy8gMikgSWYgd2UgaW5saW5lIHRo
ZW4gdGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFyZ3VtZW50cyBhcmUgZmx1c2hlZCBzbyB0aGF0IGlm
IHlvdSB1c2UKKyAgICAgICAgICAgIC8vICAgIHRoZSBkcmVhZGVkIGFyZ3VtZW50cyBvYmplY3Qg
b24gdGhlIGNhbGwgdGFyZ2V0LCB0aGUgcmlnaHQgdGhpbmdzIGhhcHBlbi4gV2VsbCwgc29ydCBv
ZiAtCisgICAgICAgICAgICAvLyAgICBzaW5jZSB3ZSBvbmx5IHJlYWxseSBjYXJlIGFib3V0ICd0
aGlzJyBpbiB0aGlzIGNhc2UuIEJ1dCB3ZSdyZSBub3QgZ29pbmcgdG8gdGFrZSB0aGF0CisgICAg
ICAgICAgICAvLyAgICBzaG9ydGN1dC4KKyAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmd1
bWVudEluZGV4ID0gMDsKKyAgICAgICAgICAgIHNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dEluY2x1ZGluZ1RoaXMoY3VycmVudEFyZ3VtZW50SW5kZXgrKywgbmV3UmVnaXN0ZXJPZmZzZXQp
LCBqc0NvbnN0YW50KGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpKSwgSW1tZWRpYXRlTmFrZWRT
ZXQpOworICAgICAgICAgICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgp
CisgICAgICAgICAgICAgICAgICAgIHNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoY3VycmVudEFyZ3VtZW50SW5kZXgrKywgbmV3UmVnaXN0ZXJPZmZzZXQpLCBqc0Nv
bnN0YW50KGJvdW5kQXJncy0+Z2V0KGluZGV4KSksIEltbWVkaWF0ZU5ha2VkU2V0KTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4g
MSkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4ID0gMTsgaW5kZXggPCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgc2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRl
eCsrLCBuZXdSZWdpc3Rlck9mZnNldCksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0KSksIEltbWVkaWF0ZU5ha2VkU2V0KTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UndmUgc2V0IHNvbWUgbG9jYWxzLCBi
dXQgdGhleSBhcmUgbm90IHVzZXItdmlzaWJsZSBzaW5jZSB0aGV5IGFyZSBuZXdseSBhbGxvY2F0
ZWQgZm9yIHRoaXMgaW5saW5lZCBjYWxsLiBJdCdzIHN0aWxsIE9LIHRvIGV4aXQgZnJvbSBoZXJl
LgorICAgICAgICAgICAgLy8gSlNCb3VuZEZ1bmN0aW9uJ3MgdHJhbXBvbGluZSBkb2VzIG5vdCBo
YXZlIHVzZXItdmlzaWJsZSBlZmZlY3QuIFNvIGV4aXRpbmcgdG8gdGhlIHByZS1ib3VuZCBmdW5j
dGlvbiBsb2NhdGlvbiBpcyBPSy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgaGFuZGxlQ2FsbChyZXN1
bHQsIENhbGwsIGtpbmQsIG9zckV4aXRJbmRleCwganNDb25zdGFudChib3VuZEZ1bmN0aW9uLT50
YXJnZXRGdW5jdGlvbigpKSwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgbmV3UmVnaXN0ZXJPZmZz
ZXQsIENhbGxMaW5rU3RhdHVzKENhbGxWYXJpYW50KGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0
aW9uKCkpKSwgcHJlZGljdGlvbik7CisgICAgICAgICAgICBkaWRTZXRSZXN1bHQgPSB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC04MTEyLDExICs4MTc0LDEx
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cyk7CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5OiB7Ci0gICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseT4oKTsKKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzX2J1
dHRlcmZseV9leGNsdWRpbmdfdGhpczogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdU
aGlzPigpOwogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7Ci0gICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KSk7
Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSk7
CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgRWRnZShnZXQoYnl0ZWNvZGUubV90YXJnZXQpLCBD
ZWxsVXNlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2FyZ3VtZW50c19i
dXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmNWUyMmExMGE0ZDEyNjVkYjVjZGM3MWIy
MzFkMDZkNTE2MTdlZDZjLi5iZjRmNzk3M2U5MzQxNmRlODY2ZmFjNzEzNzcwN2E4NmIxN2UzM2U0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yMzYsNyArMjM2LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2Ny
ZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVu
dHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czoKLSAgICBjYXNlIG9wX2Ny
ZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5OgorICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19i
dXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXM6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6
CiAgICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBjZjAxYmNl
MDUzYTNlNTc3ZGU5OTdiMDMzMzliN2IxNGM2Njg4OTIxLi5jMjQwYWEyNjEzZjBkMTIwMWVmNDhk
OGEyZDIyZDkxMTU1OTIzYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAg
Y2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVu
dHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOgogICAgICAgICByZWFkKFN0YWNrKTsKICAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291
bnQpOwogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGNmYzIyMzAwMGE1MzJiMWMzYjM5ODBlNTRhNTAxYTNk
M2RmYWFiMDkuLmRkNTFmYTM4Yzg4MTEwZDkxYjhmZTU1OGZmZTBkNTY3YmY2MTZhNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBi
b29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVEaXJl
Y3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBD
cmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6
CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgIGNh
c2UgQ2FsbDoKICAgICBjYXNlIENhbGxFdmFsOgogICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdz
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMzc0
ZDU1MzA1ZGY4ZDg3NTAzMmUwNDc3N2JjMzIyMTlhNTUxNTgwYS4uZDA2ZDg2NDJmNzdlZjNhYzRm
Nzc1MTg1MDE5OTBhNTAzZDcyODJhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCkBAIC0yODgwLDcgKzI4ODAsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czoKICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNh
c2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5OgorICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
CiAgICAgICAgICAgICBicmVhazsKICNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogICAgICAg
ICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGFm
MjY4Mjg2YzgxMDA5ZDE4MjZjYjEwYmNmNTdiNTExMGE0YTczMzkuLjdjNDlkYWE5MzI0NDY0NzQ3
ZTA0YzZiZjZmOWM3MTM5OTE3MjY2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKQEAgLTQ1MSw3ICs0NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBtYWNybyhDcmVhdGVDbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3Jv
KFBoYW50b21DbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKLSAgICBtYWNybyhDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIE5vZGVSZXN1bHRKUykgXAor
ICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKEdldEZyb21Bcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFB1dFRvQXJndW1lbnRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0
QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggZWNjOGRjODUwNTEwOWNiMzU1NDkwYzkxZmE2OTZkNmFkYTc1
YjI3OS4uMjY5NGI5MTU5MDUxZDBhMWU2OTdiYmNjYjVlOTAzZjU4MWE3MGJhMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0ltbXV0YWJsZUJ1dHRlcmZseS5oIgpAQCAtMjA1OSwyMCArMjA2MCw0MCBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzLCBKU0NlbGwqLCAo
SlNHbG9iYWxPYmplYwogICAgICAgICBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgYXJndW1lbnRT
dGFydCwgbGVuZ3RoLCBjYWxsZWUpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3VtZW50
Q291bnQpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCwg
SlNDZWxsKiB0YXJnZXQpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBBU1NFUlQoYXJn
dW1lbnRDb3VudCA+IDEpOworCisgICAgQ2hlY2tlZEludDMyIHRvdGFsQ291bnQgPSBhcmd1bWVu
dENvdW50IC0gMTsKKyAgICBpbnQzMl90IGFkZGl0aW9uYWxDb3VudCA9IDA7CisgICAgSlNJbW11
dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IG51bGxwdHI7CisgICAgaWYgKHRhcmdldC0+aW5o
ZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBi
b3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAgICAg
IGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAgICBhZGRpdGlv
bmFsQ291bnQgPSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsKKyAgICAgICAg
dG90YWxDb3VudCArPSBhZGRpdGlvbmFsQ291bnQ7CisgICAgICAgIGlmICh0b3RhbENvdW50Lmhh
c092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KyAgICB9CiAKLSAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5ID0gSlNJbW11dGFi
bGVCdXR0ZXJmbHk6OnRyeUNyZWF0ZSh2bSwgdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJl
c1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3Vv
dXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uZ2V0KCksIGFyZ3VtZW50Q291bnQpOworICAg
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6
dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhG
cm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJP
ZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgdG90YWxDb3VudC51bnNhZmVHZXQoKSk7CiAgICAgaWYg
KCFidXR0ZXJmbHkpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgYXJndW1lbnRDb3VudDsgKytpbmRleCkKLSAgICAgICAg
YnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgsIGFyZ3VtZW50U3RhcnRbaW5kZXhdLmpzVmFs
dWUoKSk7CisgICAgaWYgKGFkZGl0aW9uYWxDb3VudCkgeworICAgICAgICBBU1NFUlQoYm91bmRB
cmdzKTsKKyAgICAgICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBhZGRpdGlvbmFs
Q291bnQ7ICsraW5kZXgpCisgICAgICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRl
eCwgYm91bmRBcmdzLT5nZXQoaW5kZXgpKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgKGFyZ3VtZW50Q291bnQgLSAxKTsgKytpbmRleCkKKyAgICAgICAgYnV0
dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXggKyBhZGRpdGlvbmFsQ291bnQsIGFyZ3VtZW50U3Rh
cnRbaW5kZXggKyAxXS5qc1ZhbHVlKCkpOwogICAgIHJldHVybiBidXR0ZXJmbHk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTJjZGJlODI2NjE2
ZWJjNGE5MmQwNThiMDAxZWMzOGVmYzJhM2Q0OC4uNzllNzc2ZmI0M2U2NTUyN2ExNDJlMjNkYzcz
NmNjMDIwNzA0YWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKQEAgLTIxMSw3ICsyMTEsNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQsIEpTQ2VsbCosIChWTQogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVTY29wZWRBcmd1bWVudHMsIEpTQ2VsbCos
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1
aW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3Vt
ZW50c0R1cmluZ0V4aXQsIEpTQ2VsbCosIChWTSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rp
b24qLCB1aW50MzJfdCBhcmd1bWVudENvdW50KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwg
SlNGdW5jdGlvbiogY2FsbGVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgUmVn
aXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQpKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpcywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3Rh
cnQsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIEpTQ2VsbCopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlUmVzdCwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
UmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lw
LCB1bnNpZ25lZCBhcnJheVNpemUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QXJyYXlCdWZmZXIsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSosIEpTQ2VsbCopKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0QWRkLCBKU0NlbGwqLCAoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUu
aAppbmRleCA5ODA1OTliMmU1NGFmN2QwY2E4N2E5OWMxNjk2MDY0OTcwYTAxZTg0Li43MDRlYmU3
MTE1YjhjN2QzMTdhMDIxOTFjMzkxZjk0N2M4MTIyYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMTg0LDcg
KzE4NCw3IEBAIGNsYXNzIFByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAg
Y2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJn
dW1lbnRzOgogICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICAgICAgY2Fz
ZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1l
bnRzOgogICAgICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2Ug
R2V0UmVzdExlbmd0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggZmU3NmQyYjZlMGY5NmYz
ZTI4ZmMzZDk4M2ZiMzNhYzIzMTY4NmIzMS4uNzBlNGEwYzE2ZjI4MTVmMTRmNzcwZmE2MmQ5MDRh
MzEwYmMwZWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTExODksNyArMTE4OSw3IEBA
IGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHk6IHsKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMDdhODVkYjNkNjBjNjA4MGE4M2U2ZGE0MTg2OGJiZjRi
N2NlZjZjNy4uNjliM2JjMmE3YjU4NTZkODk5NDAyOTcyODZiNWY3N2FiMGQ1OGE4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTU5Nyw3ICs1
OTcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgotICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgorICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdHZW5lcmF0
b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggZTljZDQzOTBlNDYxYmIzZTQyNTA1MzI5MTVhNTNhYWQ0NjgzZTg3ZS4u
ZTUyY2FkNmVlN2I0NGQ0Y2FkYzBiYzI0NGE0MzIxNjE3MjZmOTc5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTg0NzUsOCArODQ3
NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
KE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KE5vZGUqIG5v
ZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
RXhjbHVkaW5nVGhpcyhOb2RlKiBub2RlKQogeworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRh
cmdldCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHRhcmdldEdQUiA9IHRhcmdl
dC5ncHIoKTsKKwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBA
IC04NDg2LDEyICs4NDg5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHkoTm9kZSogbm9kZSkKICAgICAvLyBXZSBzZXQgdXAgdGhlIGFyZ3Vt
ZW50cyBvdXJzZWx2ZXMsIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgd2hvbGUgcmVnaXN0ZXIgZmlsZSBh
bmQgd2UgY2FuCiAgICAgLy8gc2V0IHRoZW0gdXAgZGlyZWN0bHkgaW50byB0aGUgYXJndW1lbnQg
cmVnaXN0ZXJzLgogCi0gICAgLy8gQXJndW1lbnRzOiAwOkpTR2xvYmFsT2JqZWN0KiwgMTpzdGFy
dCwgMzpsZW5ndGgKKyAgICAvLyBBcmd1bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0
LCAyOmxlbmd0aCwgMzp0YXJnZXQKKworICAgIC8vIERvIHRoZSB0YXJnZXRHUFIgZmlyc3QsIHNp
bmNlIGl0IG1pZ2h0IGFsaWFzIGFuIGFyZ3VtZW50IHJlZ2lzdGVyLgorICAgIG1faml0LnNldHVw
QXJndW1lbnQoMywgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKHRhcmdldEdQUiwg
ZGVzdEdQUik7IH0pOworCiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJlZyBk
ZXN0R1BSKSB7IGVtaXRHZXRMZW5ndGgobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsg
fSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVt
aXRHZXRBcmd1bWVudFN0YXJ0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOwog
ICAgIG1faml0LnNldHVwQXJndW1lbnQoMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGRl
c3RHUFIpOyB9KTsKIAotICAgIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5LCByZXN1bHRHUFIpOworICAgIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgcmVzdWx0R1BSKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IDk3MTc1MjI4ZjYyZGE3MzUwMDIxMGVmZDJjZWNjYTk1ODJiNjgwMmQuLjY2YTQxOTA5
Y2M2MDY5ZGI0NTE3NzdiMjliMTc5NzQ3NTAwYjhkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE0MTEsNyArMTQxMSw3IEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlQ3JlYXRlU2NvcGVkQXJndW1lbnRzKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUNyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseShOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRl
UmVzdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU3ByZWFkKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOZXdBcnJheShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAzNDI0MGU1NGU4NTdmNThhZDQ3NmE2
YWYzYmVhMzJjZDdjMjE2ZDY4Li42MmQwZjc1NGMwMGVhMTg1MGMyMjcxMjZlOGUxMDU3ZDYwNTVk
OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKQEAgLTM5NTAsOCArMzk1MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6IHsKLSAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseShub2RlKTsKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXM6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXMobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMzhlZTZiNGE2
ZWY5MDk3NDM1YWI4ZTA5NTI5MWQwYjZlNzc0MTMwNS4uOTVlN2Y1ZTczODM1MTc2MWVkNjI1MmY3
OTNiM2Q5MDY5ZjU3MWZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00OTMxLDggKzQ5MzEsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OiB7Ci0gICAgICAgIGNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHkobm9kZSk7CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzOiB7CisgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggYjkwNjY1ZWNjZTUyYzU3ZjQ0YjcwZDQ2N2M0YTRlNWE1ZjM3MDJl
MC4uYWVmOGE5YTg5NjAwN2Y4NzgxMjM0NzI2MTBiYzBiNzg2YTRiZjQ5OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAg
ICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgICAgICAgICBjYXNlIENyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAg
ICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdB
c3luY0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXggNDBmMTExOTI3M2JkYmUx
YTViOTUyMTU4ODVmOTI3NDQwZmM5MTEwNy4uYjQ5YzcyNDA5NWI3NDFjYTJjMmM4YTliMDA1ODZj
M2E4NjMxMDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
REZHR3JhcGguaCIKICNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQ
aGFzZS5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk1hdGhDb21t
b24uaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5
cGUuaCIKQEAgLTkyNyw3ICs5MjgsOCBAQCBjbGFzcyBTdHJlbmd0aFJlZHVjdGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0g
bnVsbHB0cjsKICAgICAgICAgICAgIEVkZ2UgY2FsbGVlID0gbV9ncmFwaC52YXJBcmdDaGlsZCht
X25vZGUsIDApOwogICAgICAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbFZhcmlhbnQ7Ci0gICAgICAg
ICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3Rh
bnQ8SlNGdW5jdGlvbio+KHZtKCkpKSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4odm0oKSk7CisgICAg
ICAgICAgICBpZiAoZnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gZnVu
Y3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICAgICAgICAgICAgICBjYWxsVmFyaWFudCA9IENhbGxW
YXJpYW50KGZ1bmN0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FsbGVlLT5pc0Z1bmN0
aW9uQWxsb2NhdGlvbigpKSB7CkBAIC05NDMsNyArOTQ1LDQ4IEBAIGNsYXNzIFN0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAgICAgICAgICAgaWYgKGV4ZWN1
dGFibGUtPmludHJpbnNpYygpID09IFdhc21GdW5jdGlvbkludHJpbnNpYykKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgICAgICAvLyBXZSBnYXZlIHVwIGlu
bGluaW5nIGEgd3JhcHBlZCBmdW5jdGlvbiwgYnV0IHN0aWxsLCB3ZSBjYW4gaW5saW5lIGJvdW5k
IGZ1bmN0aW9uJ3Mgd3JhcHBlciBieSBleHRyYWN0aW5nIGl0LgorICAgICAgICAgICAgLy8gVGhp
cyBhbHNvIHdpcGVzIGJvdW5kLWZ1bmN0aW9uIHRodW5rIGNhbGwgd2hpY2ggaXMgc3Vib3B0aW1h
bCBjb21wYXJlZCB0byBkaXJlY3RseSBjYWxsaW5nIGEgd3JhcHBlZCBmdW5jdGlvbiBoZXJlLgor
ICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmludHJpbnNpYygpID09IEJvdW5kRnVuY3Rpb25D
YWxsSW50cmluc2ljICYmIGZ1bmN0aW9uICYmIChtX25vZGUtPm9wKCkgPT0gQ2FsbCB8fCBtX25v
ZGUtPm9wKCkgPT0gVGFpbENhbGwgfHwgbV9ub2RlLT5vcCgpID09IFRhaWxDYWxsSW5saW5lZENh
bGxlcikpIHsKKyAgICAgICAgICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24g
PSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZnVuY3Rpb24pOworICAgICAgICAgICAgICAgIGlm
IChKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KHZtKCksIGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8qIHRhcmdldEV4ZWN1dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJs
ZSgpOworICAgICAgICAgICAgICAgICAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdz
ID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgo
KGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwKSArIG1fbm9kZS0+bnVtQ2hpbGRy
ZW4oKSkgPD0gT3B0aW9uczo6bWF4aW11bURpcmVjdENhbGxTdGFja1NpemUoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih2bSgpLCB0YXJnZXRFeGVj
dXRhYmxlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXBk
YXRlIG1fcGFyYW1ldGVyU2xvdHMgYmVmb3JlIHdlIGdldCB0byB0aGUgYmFja2VuZCwgYnV0IHdl
IGRvbid0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2FudCB0byBkbyB0b28gbXVj
aCBvZiB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUFsbG9j
YXRlZEFyZ3MgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJh
bWV0ZXJDb3VudCgpKSArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bUFs
bG9jYXRlZEFyZ3MgPD0gT3B0aW9uczo6bWF4aW11bURpcmVjdENhbGxTdGFja1NpemUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0g
c3RkOjptYXgobV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzLCBHcmFwaDo6cGFyYW1ldGVyU2xvdHNG
b3JBcmdDb3VudChudW1BbGxvY2F0ZWRBcmdzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBo
Lm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudCht
X25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIHRhcmdldEZ1bmN0aW9uKSk7IC8vIENhbGxlZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQo
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2lu
LCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKSkpOyAvLyB8dGhpc3wKKworICAgICAgICAgICAg
ICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rp
b24tPmJvdW5kQXJncygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvdW5kQXJncykg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBib3VuZEFyZ3Mt
PmdldChpbmRleCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRmlyc3Qgb25lIGlzIHxjYWxsZWV8LCBzZWNvbmQgb25lIGlzIHx0aGlz
fC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAyOyBpbmRl
eCA8IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKG1fZ3JhcGguY2hpbGQobV9u
b2RlLCBpbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkcmVu
ID0gQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpWYXJpYWJsZSwgZmlyc3RDaGlsZCwgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gc3RkOjptYXgobV9ncmFwaC5t
X3BhcmFtZXRlclNsb3RzLCBHcmFwaDo6cGFyYW1ldGVyU2xvdHNGb3JBcmdDb3VudChtX25vZGUt
Pm51bUNoaWxkcmVuKCkgLSAxKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRDYWxsTGlua1N0YXR1cyhtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYywgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQodGFyZ2V0RXhlY3V0YWJsZSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvRGlyZWN0Q2FsbCht
X2dyYXBoLmZyZWV6ZSh0YXJnZXRFeGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIGlmIChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpz
RHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odm0oKSwgZXhlY3V0YWJsZSkpIHsKICAg
ICAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IENvbnN0cnVjdCAmJiBmdW5jdGlvbkV4
ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3QpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDNkZjA0NGE4ZmYxYjU4NTJiNWVh
ZjNjMDRmYTk2MDhkY2ZlMDk4MmYuLjQzOWMwZDg2NzIwN2VmZDNkNzE0NWZiYWQxNmI2MTI1YTQ3
ZDA0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENy
ZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAg
ICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAg
IGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBHZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyMDc4NjkxYjEwNGFm
ZjYyMDQxYjEzMzY1ZjgxZDhhM2QxYmQxZTcxLi5lZTU1MDEzYTNmODc5ZTAzOGRhYTNhODkxMjg4
NGY5NzBlMjY0Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC0xMTAzLDggKzExMDMsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNvbXBpbGVDcmVh
dGVDbG9uZWRBcmd1bWVudHMoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENy
ZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKLSAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHkoKTsKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzOgorICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4
Y2x1ZGluZ1RoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9iamVjdENy
ZWF0ZToKICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RDcmVhdGUoKTsKQEAgLTY4NDgsMTAgKzY4
NDgsMTAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpCisg
ICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcygpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKEludDY0LCBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGdldEFyZ3VtZW50c1N0YXJ0KCksIGdldEFyZ3VtZW50c0xlbmd0
aCgpLnZhbHVlKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFs
dWUsIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSkpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAppbmRleCBhZWUzNzQ0YjUyZTVlNDUyNjFlMjJmYWM2OTBkYmUwNGFlMmM1
NDI2Li4xZDk1OGVjMjE0YmRiYWQ4MGI3ZWM1YmU4MDczNmJhMzY1YTlmYmVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJK
SVRDb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
SW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
QEAgLTM5Myw3ICszOTQsNyBAQCBjbGFzcyBHZXRTdGFja1RyYWNlRnVuY3RvciB7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCEhdmlzaXRvci0+Y29kZUJsb2NrKCkgJiYgIXZpc2l0b3ItPmNvZGVC
bG9jaygpLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0J1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgU3RhY2tG
cmFtZShtX3ZtLCBtX293bmVyLCB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKSwgdmlzaXRvci0+
Y29kZUJsb2NrKCksIHZpc2l0b3ItPmJ5dGVjb2RlSW5kZXgoKSkpOwotICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgp
LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KG1fdm0pKSB7CiAgICAgICAgICAgICAgICAgbV9y
ZXN1bHRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgU3RhY2tGcmFtZShtX3ZtLCBtX293
bmVyLCB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKSkpOwogICAgICAgICAgICAgfQpAQCAtNDIy
LDcgKzQyMywxMiBAQCB2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3du
ZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZQogCiAgICAgc2l6ZV90IGZyYW1l
c0NvdW50ID0gMDsKICAgICBzaXplX3QgbWF4RnJhbWVzQ291bnROZWVkZWQgPSBtYXhTdGFja1Np
emUgKyBmcmFtZXNUb1NraXA7Ci0gICAgU3RhY2tWaXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsIHZt
LCBbJl0gKFN0YWNrVmlzaXRvciYpIC0+IFN0YWNrVmlzaXRvcjo6U3RhdHVzIHsKKyAgICBTdGFj
a1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0sIFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9y
KSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7CisgICAgICAgIGlmICh2aXNpdG9yLT5jYWxsZWUo
KS5pc0NlbGwoKSkgeworICAgICAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgp
LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KG1fdm0pKQorICAgICAgICAgICAgICAgIHJldHVy
biBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgaWYgKCsrZnJh
bWVzQ291bnQgPCBtYXhGcmFtZXNDb3VudE5lZWRlZCkKICAgICAgICAgICAgIHJldHVybiBTdGFj
a1Zpc2l0b3I6OkNvbnRpbnVlOwogICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDc2ZDFhNTE3ZDljODhkMjA5NzAyNWY4NDQ1
ZjY5YzllZDYzY2ZkM2YuLmNjNmRlNGZjZWM1ZTkzZjk5Mzc5MWZiZDZjYWY3NzliZGVhOTFiNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0
ZV9kaXJlY3RfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfc2NvcGVk
X2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2Nsb25lZF9hcmd1bWVu
dHMpCi0gICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5KQor
ICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRp
bmdfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX3Jlc3QpCiAgICAgICAgIERF
RklORV9TTE9XX09QKGNyZWF0ZV9wcm9taXNlKQogICAgICAgICBERUZJTkVfU0xPV19PUChuZXdf
cHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IGZjMzk5MTRhMWQ1NDI0NTYyZTc5MTlmNTFlY2RiMTUzMzg2MmYwNDUuLjI1NWI2NDc4Y2Yw
MDNhOTA2NTc2ZTQ5MWI4OTEzN2YzMjEwZDJlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkpTQXN5
bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJK
U0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5jbHVk
ZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMTQ1MSw2ICsxNDUyLDggQEAgaW5saW5lIFNs
b3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBBU1NFUlQodm0u
aGVhcC5pc0RlZmVycmVkKCkpOworCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0g
Y2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCkBAIC0xNDY0LDI5ICsxNDY3LDQwIEBAIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIGhhbmRsZUhvc3RDYWxsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUs
IGNhbGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5mbykpOwogICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwp
OwotICAgIEpTU2NvcGUqIHNjb3BlID0gZnVuY3Rpb24tPnNjb3BlVW5jaGVja2VkKCk7Ci0gICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOwotICAg
IGlmIChVTkxJS0VMWSghZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvcihraW5kKSkpIHsKLSAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAotICAgICAgICBpZiAoIWlzQ2FsbChr
aW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAgIHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgK
LSAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhl
RnJhbWUpKTsKLSAgICAgICAgfQorICAgIGF1dG8gbWF0ZXJpYWxpemVDb2RlQmxvY2tJZk5lY2Vz
c2FyeSA9IFsmXShKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUpIC0+IHZvaWQqIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFleGVjdXRhYmxlLT5oYXNKSVRD
b2RlRm9yKGtpbmQpKSkgeworICAgICAgICAgICAgSlNTY29wZSogc2NvcGUgPSBmdW5jdGlvbi0+
c2NvcGVVbmNoZWNrZWQoKTsKKyAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSk7CiAKLSAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGNhbGxlZUZyYW1lLT5h
ZGRyZXNzT2ZDb2RlQmxvY2soKTsKLSAgICAgICAgRXhjZXB0aW9uKiBlcnJvciA9IGZ1bmN0aW9u
RXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBm
dW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKLSAgICAgICAgRVhDRVBUSU9O
X0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yKTsKLSAgICAgICAgaWYgKFVO
TElLRUxZKGVycm9yKSkgewotICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKLSAgICAg
ICAgICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUp
KTsKKyAgICAgICAgICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkg
eworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbikpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNh
bGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29kZUJsb2NrKiog
Y29kZUJsb2NrU2xvdCA9IGNhbGxlZUZyYW1lLT5hZGRyZXNzT2ZDb2RlQmxvY2soKTsKKyAgICAg
ICAgICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JF
eGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAq
Y29kZUJsb2NrU2xvdCk7CisgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkgPT0gZXJyb3IpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21D
YWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1
dGFibGVBZGRyZXNzKCk7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0g
ZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICBhdXRvIGZhaWx1cmUgPSBtYXRlcmlhbGl6ZUNv
ZGVCbG9ja0lmTmVjZXNzYXJ5KGZ1bmN0aW9uLCBleGVjdXRhYmxlKTsKKyAgICBpZiAoVU5MSUtF
TFkoZmFpbHVyZSkpCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZmFpbHVyZSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisKKyAgICAvLyBDYWxsIElDIGxpbmtz
IHRoaXMgY2FsbHNpdGUgdG8gd3JhcHBlZCBmdW5jdGlvbiBkaXJlY3RseS4gV2UgbmVlZCB0byBl
bnN1cmUgdGhhdCBkaXJlY3RseSBsaW5rZWQgZnVuY3Rpb24gaXMgbWF0ZXJpYWxpemVkIGhlcmUu
CisgICAgaWYgKGZ1bmN0aW9uLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBqc0Nh
c3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZnVuY3Rpb24pLT50YXJnZXRGdW5jdGlvbigpLT5pbmhlcml0
czxKU0Z1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgYXV0byogdGFyZ2V0RnVuY3Rpb24gPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihmdW5jdGlvbiktPnRhcmdl
dEZ1bmN0aW9uKCkpOworICAgICAgICBhdXRvIGZhaWx1cmUgPSBtYXRlcmlhbGl6ZUNvZGVCbG9j
a0lmTmVjZXNzYXJ5KHRhcmdldEZ1bmN0aW9uLCB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgp
KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGZhaWx1cmUpKQorICAgICAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdChmYWlsdXJlLCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUp
KTsKICAgICB9CisKICAgICAvLyBGSVhNRTogU3VwcG9ydCB3YXNtIElDLgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzMzkKICAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoCkBAIC0xNDk2LDYgKzE1MTAsMTAg
QEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFt
ZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvKSkKIHsKKyAgICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9mIHZpcnR1YWxG
b3JXaXRoRnVuY3Rpb24vbGlua1BvbHltb3JwaGljQ2FsbCwgd2Ugc3Ryb25nbHkgYXNzdW1lIHRo
YXQgd2UgbmV2ZXIgZG8gR0MuCisgICAgLy8gR0MgamV0dGlzb25zIENvZGVCbG9ja3MsIGNoYW5n
ZXMgQ2FsbExpbmtJbmZvIGV0Yy4gYW5kIGJyZWFrcyBhc3N1bXB0aW9uIGRvbmUgYmVmb3JlIGFu
ZCBhZnRlciB0aGlzIGNhbGwuCisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxl
KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNw
ZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsKICAgICBKU0NlbGwqIGNhbGxlZUFz
RnVuY3Rpb25DZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSB2aXJ0dWFsRm9y
V2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOwpAQCAtMTUwNyw2ICsxNTI1LDEwIEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsLCBTbG93UGF0aFJldHVyblR5
cGUsIChDYWxsCiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WaXJ0dWFsQ2Fs
bCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAg
IC8vIER1cmluZyBleGVjdXRpb24gb2YgdmlydHVhbEZvcldpdGhGdW5jdGlvbi9saW5rUG9seW1v
cnBoaWNDYWxsLCB3ZSBzdHJvbmdseSBhc3N1bWUgdGhhdCB3ZSBuZXZlciBkbyBHQy4KKyAgICAv
LyBHQyBqZXR0aXNvbnMgQ29kZUJsb2NrcywgY2hhbmdlcyBDYWxsTGlua0luZm8gZXRjLiBhbmQg
YnJlYWtzIGFzc3VtcHRpb24gZG9uZSBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY2FsbC4KKyAgICBE
ZWZlckdDRm9yQVdoaWxlIGRlZmVyR0NGb3JBV2hpbGUoZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
OworCiAgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbElnbm9yZWQ7CiAgICAgcmV0dXJu
IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgY2FsbExp
bmtJbmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbElnbm9yZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOGE5NmFiZTg1ZWRlZmJhMTU1MTA5Mjc0NjdkNmEzOTk5
ZTEzNTRiZS4uMDNlMmFmYWQ3Zjg3MmMyN2UxZGY0YWI4YjE3ZDliODZmOTMwMTEwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVk
ZSAiSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVElubGluZXMuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5LmgiCkBAIC0xMjIzLDYgKzEyMjQsMTEgQEAgdm9pZCBsaW5r
Rm9yKAogewogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLnN0dWIoKSk7CiAKKyAgICBpZiAoY2Fs
bGVlLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBjYWxsTGlua0luZm8uc3BlY2lh
bGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwgJiYgY2FsbExpbmtJbmZvLmFsbG93U3R1YnMo
KSkgeworICAgICAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZvLCBsaW5rUG9seW1vcnBo
aWNDYWxsVGh1bmtHZW5lcmF0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ2Fs
bEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICAvLyBP
dXIgY2FsbGVyIG11c3QgaGF2ZSBhIGNlbGwgZm9yIGEgY2FsbGVlLiBXaGVuIGNhbGxpbmcKICAg
ICAvLyB0aGlzIGZyb20gV2FzbSwgd2UgZW5zdXJlIHRoZSBjYWxsZWUgaXMgYSBjZWxsLgpAQCAt
MTM0MCwxNiArMTM0NiwxMDEgQEAgc3RydWN0IENhbGxUb0NvZGVQdHIgewogfTsKIH0gLy8gYW5u
b255bW91cyBuYW1lc3BhY2UKIAorc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmxpbmVkQm91bmRGdW5j
dGlvbkNhbGwoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgSlNCb3VuZEZ1bmN0aW9uKiBmdW5j
dGlvbiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgaml0LmVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7CisKKyAgICAvLyBTZXQgdXAgb3VyIGNhbGwgZnJhbWUuCisgICAgaml0LnN0b3JlUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjphZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworICAgIGppdC5zdG9yZTMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworCisgICAgSlNJbW11dGFibGVCdXR0
ZXJmbHkqIGJvdW5kQXJncyA9IGZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICB1bnNpZ25lZCBj
YWxsU2l0ZUFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpOworICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzID0gY2FsbFNpdGVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIChib3VuZEFyZ3MgPyBi
b3VuZEFyZ3MtPmxlbmd0aCgpIDogMCk7CisgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IDA7
CisgICAgdW5zaWduZWQgbnVtRml4dXBDb3VudCA9IDA7CisKKyAgICBKU0Z1bmN0aW9uKiB0YXJn
ZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9u
KCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiB0YXJnZXRFeGVjdXRhYmxlID0gdGFyZ2V0RnVuY3Rp
b24tPmV4ZWN1dGFibGUoKTsKKyAgICBpZiAodGFyZ2V0RXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rp
b24oKSkgeworICAgIH0gZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogdGFyZ2V0Q29kZUJsb2Nr
ID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRhcmdldEV4ZWN1dGFibGUpLT5jb2RlQmxv
Y2tGb3JDYWxsKCk7CisgICAgICAgIG51bVBhcmFtZXRlcnMgPSB0YXJnZXRDb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKTsKKyAgICAgICAgaWYgKG51bVBhcmFtZXRlcnMgPiBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykKKyAgICAgICAgICAgIG51bUZpeHVwQ291bnQgPSBudW1QYXJhbWV0ZXJz
IC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgfQorICAgIHVuc2lnbmVkIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzQWZ0ZXJGaXh1cCA9IHN0ZDo6bWF4PHVuc2lnbmVkPihhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgbnVtUGFyYW1ldGVycyk7CisKKyAgICAvLyBUaGUgZm9y
bXVsYSBmb3IgdGhlIG51bWJlciBvZiBzdGFjayBieXRlcyBuZWVkZWQgZ2l2ZW4gc29tZSBudW1i
ZXIgb2YgcGFyYW1ldGVycyAoaW5jbHVkaW5nCisgICAgLy8gdGhpcykgaXM6CisgICAgLy8KKyAg
ICAvLyAgICAgc3RhY2tBbGlnbigobnVtUGFyYW1zICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSkgKiBz
aXplb2YoUmVnaXN0ZXIpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKQorICAgIC8vCisgICAg
Ly8gUHJvYmFibHkgd2Ugd2FudCB0byB3cml0ZSB0aGlzIGFzOgorICAgIC8vCisgICAgLy8gICAg
IHN0YWNrQWxpZ24oKG51bVBhcmFtcyArIChDYWxsRnJhbWVIZWFkZXJTaXplIC0gQ2FsbGVyRnJh
bWVBbmRQQ1NpemUpKSAqIHNpemVvZihSZWdpc3RlcikpCisgICAgLy8KKyAgICAvLyBUaGF0J3Mg
cmVhbGx5IGFsbCB0aGVyZSBpcyB0byB0aGlzLiBXZSBoYXZlIGFsbCB0aGUgcmVnaXN0ZXJzIHdl
IG5lZWQgdG8gZG8gaXQuCisKKyAgICB1bnNpZ25lZCBleHRyYVN0YWNrTmVlZGVkID0gMDsKKyAg
ICBpZiAodW5zaWduZWQgc3RhY2tNaXNhbGlnbm1lbnQgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkpCisgICAgICAgIGV4dHJhU3RhY2tOZWVkZWQgPSBz
dGFja0FsaWdubWVudEJ5dGVzKCkgLSBzdGFja01pc2FsaWdubWVudDsKKworICAgIHVuc2lnbmVk
IHN0YWNrU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpLCAoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBDYWxsZXJGcmFtZUFu
ZFBDOjpzaXplSW5SZWdpc3RlcnMpICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNBZnRlckZp
eHVwKSArIGV4dHJhU3RhY2tOZWVkZWQ7CisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigtKHN0YWNrU2l6ZSAqIHNpemVvZihSZWdpc3RlcikpKSwgQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOworICAgIGF1dG8gc3RhY2tP
dmVyZmxvdyA9IGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwgQ0NhbGxIZWxwZXJz
OjpBYnNvbHV0ZUFkZHJlc3Modm0uYWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSksIEdQUkluZm86
OnJlZ1QyKTsKKworICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIENDYWxsSGVscGVyczo6Y2FsbGVl
RnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOworCisgICAgdW5zaWduZWQgaW5kZXhJbkFyZ3VtZW50cyA9IDA7CisgICAgaml0LnN0b3Jl
VHJ1c3RlZFZhbHVlKGZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVB
cmd1bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisgICAgaWYgKGJvdW5kQXJncykgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBib3VuZEFyZ3MtPmxlbmd0
aCgpOyArK2luZGV4KQorICAgICAgICAgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKGJvdW5kQXJn
cy0+Z2V0KGluZGV4KSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoaW5kZXhJbkFy
Z3VtZW50cysrKSk7CisgICAgfQorCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1
ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZvOjpyZWdU
Mik7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IC8qIGNhbGxzaXRlJ3MgfHRoaXN8IGlzIG5v
dCBpbnRlcmVzdGluZyAqLyAxOyBpbmRleCA8IGNhbGxTaXRlQXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7ICsraW5kZXgpIHsKKyAgICAgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGluZGV4KSks
IHZhbHVlUmVncyk7CisgICAgICAgIGppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxw
ZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisgICAgfQorCisg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtRml4dXBDb3VudDsgKytpbmRl
eCkKKyAgICAgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVs
cGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KGluZGV4SW5Bcmd1bWVudHMrKykpOworCisgICAgaml0
LnN0b3JlVHJ1c3RlZFZhbHVlKHRhcmdldEZ1bmN0aW9uLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZy
YW1lU2xvdChDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKKyAgICBhdXRvIGZ1bmN0aW9uQ2FsbCA9
IGppdC5jYWxsKEpTRW50cnlQdHJUYWcpOworICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZ1bmN0aW9uQ2Fs
bCwgRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4odGFyZ2V0RXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKSkp
OworICAgIH0pOworCisgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgaml0LnJl
dCgpOworCisgICAgLy8gVGhyb3cgU3RhY2sgT3ZlcmZsb3cgZXhjZXB0aW9uCisgICAgc3RhY2tP
dmVyZmxvdy5saW5rKCZqaXQpOworICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKKyAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZnVuY3Rpb24tPnNjb3BlKCkpLCBHUFJJbmZvOjpyZWdUMyk7
CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yRnJvbVRodW5rKT4oR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxv
d0Vycm9yRnJvbVRodW5rKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0Lmp1bXBUb0V4Y2Vw
dGlvbkhhbmRsZXIodm0pOworfQorCitzdHJ1Y3QgSW5saW5lZENhbGxlZSB7CisgICAgc2l6ZV90
IGNhc2VJbmRleDsKKyAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGVudHJ5cG9pbnQ7Cit9OworCiB2
b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDYWxsVmFyaWFu
dCBuZXdWYXJpYW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mby5hbGxvd1N0
dWJzKCkpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVy
RnJhbWUoKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0KLSAgICAvLyBEdXJp
bmcgZXhlY3V0aW9uIG9mIGxpbmtQb2x5bW9ycGhpY0NhbGwsIHdlIHN0cm9uZ2x5IGFzc3VtZSB0
aGF0IHdlIG5ldmVyIGRvIEdDLgotICAgIC8vIEdDIGpldHRpc29ucyBDb2RlQmxvY2tzLCBjaGFu
Z2VzIENhbGxMaW5rSW5mbyBldGMuIGFuZCBicmVha3MgYXNzdW1wdGlvbiBkb25lIGJlZm9yZSBh
bmQgYWZ0ZXIgdGhpcyBjYWxsLgotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQ0ZvckFXaGls
ZSh2bS5oZWFwKTsKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwogICAgIAogICAg
IGlmICghbmV3VmFyaWFudCkgewogICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1l
LCBjYWxsTGlua0luZm8pOwpAQCAtMTM5Miw2ICsxNDgzLDExIEBAIHZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgQ2FsCiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+IGNhbGxDYXNlczsK
ICAgICBWZWN0b3I8aW50NjRfdD4gY2FzZVZhbHVlczsKKworICAgIGF1dG8gaXNMaW5rYWJsZUJv
dW5kRnVuY3Rpb24gPSBbJl0oQ2FsbFZhcmlhbnQmIHZhcmlhbnQpIHsKKyAgICAgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSB2YXJpYW50LmZ1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiBmdW5j
dGlvbiAmJiBmdW5jdGlvbi0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkgJiYganNDYXN0
PEpTQm91bmRGdW5jdGlvbio+KGZ1bmN0aW9uKS0+dGFyZ2V0RnVuY3Rpb24oKS0+aW5oZXJpdHM8
SlNGdW5jdGlvbj4odm0pICYmICFjYWxsTGlua0luZm8uaXNWYXJhcmdzKCk7CisgICAgfTsKICAg
ICAKICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgb3VyIGNhc2VzIGFyZS4KICAgICBmb3IgKENhbGxW
YXJpYW50IHZhcmlhbnQgOiBsaXN0KSB7CkBAIC0xNDA1LDYgKzE1MDEsMTIgQEAgdm9pZCBsaW5r
UG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBDYWwKICAgICAgICAgICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZy
YW1lLCBjYWxsTGlua0luZm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIGlmIChpc0xpbmthYmxlQm91bmRGdW5jdGlvbih2YXJpYW50KSkg
eworICAgICAgICAgICAgLy8gV2UgbGluayB0aGUgY2FsbCB0byB0aGUgdGFyZ2V0IGZ1bmN0aW9u
LCBzbyB3ZSBuZWVkIHRvIHJldHJpZXZlIENvZGVCbG9jayBmcm9tIHRoZSB0YXJnZXQgZnVuY3Rp
b24uCisgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oanNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHZhcmlhbnQuZnVuY3Rpb24oKSktPnRh
cmdldEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIHRhcmdldEV4ZWN1
dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICAgICAgaWYgKCF0
YXJnZXRFeGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICAgICAgICAgIGNvZGVC
bG9jayA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0YXJnZXRFeGVjdXRhYmxlKS0+Y29k
ZUJsb2NrRm9yQ2FsbCgpOwogICAgICAgICB9CiAKICAgICAgICAgaW50NjRfdCBuZXdDYXNlVmFs
dWUgPSAwOwpAQCAtMTUyMyw2ICsxNjI1LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAg
ICAgICAgaGFzRXhlY3V0YWJsZS5saW5rKCZzdHViSml0KTsKICAgICB9CiAKKyAgICBWZWN0b3I8
SW5saW5lZENhbGxlZT4gaW5saW5lZENhbGxlZXM7CiAgICAgQmluYXJ5U3dpdGNoIGJpbmFyeVN3
aXRjaChjb21wYXJpc29uVmFsdWVHUFIsIGNhc2VWYWx1ZXMsIEJpbmFyeVN3aXRjaDo6SW50UHRy
KTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAgICAgd2hpbGUgKGJpbmFyeVN3
aXRjaC5hZHZhbmNlKHN0dWJKaXQpKSB7CkBAIC0xNTM0LDcgKzE2MzcsMTQgQEAgdm9pZCBsaW5r
UG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBDYWwKICAgICAgICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQodmFyaWFudC5leGVjdXRhYmxlKCktPmhhc0pJVENvZGVGb3JDYWxsKCkp
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjb2RlUHRyID0ganNUb1dhc21JQ0NvZGVQdHIo
dm0sIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSwgdmFyaWFudC5mdW5jdGlvbigp
KTsKKyAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHZhcmlhbnQuZnVuY3Rp
b24oKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0xpbmthYmxlQm91bmRGdW5jdGlvbih2YXJp
YW50KSkgeworICAgICAgICAgICAgICAgICAgICAvLyBFbWl0IGlubGluZWQgSlNCb3VuZEZ1bmN0
aW9uIGNhbGwgaWYgSlNCb3VuZEZ1bmN0aW9uJ3MgdGFyZ2V0IGZ1bmN0aW9uIGlzIEpTRnVuY3Rp
b24sIGFuZCBpdCBpcyBub3QgY2FsbF92YXJhcmdzCisgICAgICAgICAgICAgICAgICAgIGlubGlu
ZWRDYWxsZWVzLmFwcGVuZChJbmxpbmVkQ2FsbGVlIHsgY2FzZUluZGV4LCBDQ2FsbEhlbHBlcnM6
OkxhYmVsKCkgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGNvZGVQdHIgPSBqc1RvV2FzbUlDQ29kZVB0cih2bSwgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0
aW9uS2luZCgpLCBmdW5jdGlvbik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICgh
Y29kZVB0cikKICAgICAgICAgICAgICAgICBjb2RlUHRyID0gdmFyaWFudC5leGVjdXRhYmxlKCkt
PmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RS
ZXF1aXJlZCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xNTU4LDYgKzE2NjgsMjEgQEAgdm9pZCBs
aW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jb2RlUHRyID0gY29k
ZVB0cjsKICAgICAgICAgZG9uZS5hcHBlbmQoc3R1YkppdC5qdW1wKCkpOwogICAgIH0KKworICAg
IGZvciAoYXV0byYgaW5saW5lZCA6IGlubGluZWRDYWxsZWVzKSB7CisgICAgICAgIHNpemVfdCBj
YXNlSW5kZXggPSBpbmxpbmVkLmNhc2VJbmRleDsKKyAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFu
dCA9IGNhbGxDYXNlc1tjYXNlSW5kZXhdLnZhcmlhbnQoKTsKKyAgICAgICAgaW5saW5lZC5lbnRy
eXBvaW50ID0gc3R1YkppdC5sYWJlbCgpOworCisgICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1
dGFibGUoKSk7CisgICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29k
ZUZvckNhbGwoKSk7CisgICAgICAgIEFTU0VSVCh2YXJpYW50LmZ1bmN0aW9uKCkpOworICAgICAg
ICBBU1NFUlQodmFyaWFudC5mdW5jdGlvbigpLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZt
KSk7CisgICAgICAgIEFTU0VSVChqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odmFyaWFudC5mdW5j
dGlvbigpKS0+dGFyZ2V0RnVuY3Rpb24oKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKTsKKyAg
ICAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNWYXJhcmdzKCkpOworCisgICAgICAgIGdlbmVy
YXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKHZtLCBzdHViSml0LCBqc0Nhc3Q8SlNCb3VuZEZ1
bmN0aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKSwgY2FsbEZyYW1lKTsKKyAgICB9CiAgICAgCiAg
ICAgc2xvd1BhdGgubGluaygmc3R1YkppdCk7CiAgICAgYmluYXJ5U3dpdGNoLmZhbGxUaHJvdWdo
KCkubGluaygmc3R1YkppdCk7CkBAIC0xNTkwLDYgKzE3MTUsOSBAQCB2b2lkIGxpbmtQb2x5bW9y
cGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENhbAogICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBjYWxsTGlua0lu
Zm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiBpbmxp
bmVkIDogaW5saW5lZENhbGxlZXMpCisgICAgICAgIGNhbGxzW2lubGluZWQuY2FzZUluZGV4XS5j
b2RlUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihpbmxpbmVkLmVu
dHJ5cG9pbnQpOwogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxDYXNlcy5zaXplKCkgPT0g
Y2FsbHMuc2l6ZSgpKTsKICAgICBmb3IgKENhbGxUb0NvZGVQdHIgY2FsbFRvQ29kZVB0ciA6IGNh
bGxzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAK
aW5kZXggNTFmMDNiOWMxZjU5MTkwZjlkOTk4NGFmY2JiMTViOTBiNWExN2NlNy4uZjgwNjUyOTIx
ZjE2OTU4N2ZmNmUwNDdhNjkzOTUwY2FmODk0MTgzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMTE4OSw3ICsxMTg5LDYgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRv
cihWTSYgdm0pCiAgICAgYXV0byBub0FyZ3MgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Olplcm8sIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mUHVi
bGljTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgaml0LmFkZDMyKEdQUkluZm86OnJl
Z1QyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgbm9BcmdzLmxpbmsoJmppdCk7CiAgICAg
aml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6
ZUluUmVnaXN0ZXJzIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzKSwgR1BSSW5m
bzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQubHNoaWZ0MzIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMyksIEdQUkluZm86OnJlZ1QyKTsKQEAgLTEyNDgsNyArMTI0Nyw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxH
ZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBsb29wQm91bmQgPSBq
aXQubGFiZWwoKTsKICAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSks
IEdQUkluZm86OnJlZ1QxKTsKLSAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QmFzZUlu
ZGV4KEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0Vp
Z2h0LCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkgKyBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSksIHZhbHVlUmVncyk7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhl
bHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVs
cGVyczo6VGltZXNFaWdodCwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwg
dmFsdWVSZWdzKTsKICAgICBqaXQuc3RvcmVWYWx1ZSh2YWx1ZVJlZ3MsIENDYWxsSGVscGVyczo6
Y2FsbGVlQXJndW1lbnRTbG90KDEpLmluZGV4ZWRCeShHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxw
ZXJzOjpUaW1lc0VpZ2h0KSk7CiAgICAgaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5v
blplcm8sIEdQUkluZm86OnJlZ1QxKS5saW5rVG8obG9vcEJvdW5kLCAmaml0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmlu
ZGV4IGQwOWQwYTkzMGFjMjQ0MjUyOTM5MjBiY2ZkNzllN2ZkNTE3YTM4ZTMuLjE0M2MxNDg4NGM4
ZTE2NTc2NzI1NmRjOGZiOGQwODg4Nzg1ODA3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5ODEsNyArMTk4MSw3
IEBAIG1hY3JvIHNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKIGVuZAogCiBzbG93UGF0aE9wKGNyZWF0
ZV9jbG9uZWRfYXJndW1lbnRzKQotc2xvd1BhdGhPcChjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZs
eSkKK3Nsb3dQYXRoT3AoY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMp
CiBzbG93UGF0aE9wKGNyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKQogc2xvd1BhdGhPcChjcmVhdGVf
bGV4aWNhbF9lbnZpcm9ubWVudCkKIHNsb3dQYXRoT3AoY3JlYXRlX3Jlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA4MmYz
ZWNiMDg2M2IzZGFhMDU3NGQ1ZDhkODQ5ZDI5ZDMwMjllOWE1Li43MWE3MTdkMWNiNGYyNGQzMjk2
MjI5ZTYyZGZkZmVmNjA2MmNhNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJ
dGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5Lmgi
CiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKQEAgLTIwNiwxNiArMjA3LDM2IEBAIEpT
Q19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVu
dHMpCiAgICAgUkVUVVJOKENsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aE1hY2hpbmVGcmFtZShn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgQXJndW1lbnRzTW9kZTo6Q2xvbmVkKSk7CiB9CiAKLUpT
Q19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0
ZXJmbHkpCitKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9hcmd1
bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzKQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseT4oKTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5n
VGhpcz4oKTsKKyAgICBKU0NlbGwqIHRhcmdldCA9IEdFVChieXRlY29kZS5tX3RhcmdldCkuanNW
YWx1ZSgpLmFzQ2VsbCgpOwogICAgIGludDMyX3QgYXJndW1lbnRDb3VudCA9IGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpOwotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBK
U0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlT
dHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRo
Q29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgYXJndW1lbnRDb3Vu
dCk7CisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnQgPiAxKTsKKworICAgIENoZWNrZWRJbnQzMiB0
b3RhbENvdW50ID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAgaW50MzJfdCBhZGRpdGlvbmFsQ291
bnQgPSAwOworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBudWxscHRyOwor
ICAgIGlmICh0YXJnZXQtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKSB7CisgICAgICAg
IEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24q
Pih0YXJnZXQpOworICAgICAgICBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3Mo
KTsKKyAgICAgICAgYWRkaXRpb25hbENvdW50ID0gYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5n
dGgoKSA6IDA7CisgICAgICAgIHRvdGFsQ291bnQgKz0gYWRkaXRpb25hbENvdW50OworICAgICAg
ICBpZiAodG90YWxDb3VudC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICBUSFJPVyhjcmVh
dGVPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgIH0KKworICAgIEpTSW1tdXRh
YmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRl
KHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhp
bmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5n
U2hhcGVzXS5nZXQoKSwgdG90YWxDb3VudC51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFidXR0ZXJm
bHkpCiAgICAgICAgIFRIUk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7
Ci0gICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENvdW50OyArK2lu
ZGV4KQotICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudChpbmRleCkpOworICAgIGlmIChhZGRpdGlvbmFsQ291bnQpIHsKKyAg
ICAgICAgQVNTRVJUKGJvdW5kQXJncyk7CisgICAgICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7
IGluZGV4IDwgYWRkaXRpb25hbENvdW50OyArK2luZGV4KQorICAgICAgICAgICAgYnV0dGVyZmx5
LT5zZXRJbmRleCh2bSwgaW5kZXgsIGJvdW5kQXJncy0+Z2V0KGluZGV4KSk7CisgICAgfQorICAg
IGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgKGFyZ3VtZW50Q291bnQgLSAxKTsgKytp
bmRleCkKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXggKyBhZGRpdGlvbmFs
Q291bnQsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaW5kZXggKyAxKSk7CiAgICAgUkVU
VVJOKGJ1dHRlcmZseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKaW5kZXggODRlMmRhNWY3YWI2OGE2MjYyNDg1Y2I4Y2M0M2Y4MDU3
MTQ4YzQ3MS4uOTg4ODUxNjkwZjIwN2FlMDljZGE4OTk0MzcxNzA0YTZjZTdkZTAxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTIx
MCw3ICsyMTAsNyBAQCBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jb25z
dHJ1Y3RfYXJpdHlDaGVjayk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0
aF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyk7CiBKU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cyk7Ci1KU0NfREVDTEFS
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSk7
CitKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRz
X2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9lbnRlcik7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90
b190aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwCmluZGV4IGRkZThmMDlhNTk3YTg5MTNmMzk4NDJiZmY0MmNhMTEwNGVhYTIxNTIu
LmQ0Zjc4ZjQ3MDI3YTJhOGEwODY5MWVmMzJmZTA5YjNhZDUyMTViNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtNDEsOCAr
NDEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25D
YWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEg
c2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFw
cGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtNzAsOCArNjksNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
ICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhl
IGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBi
b3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3Vu
ZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtOTUsOCArOTMsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBpZiAo
Ym91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9u
ZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBib3VuZEFyZ3Mt
Pmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFy
Z3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdl
dChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKTsgKytpKQpAQCAtMTIzLDggKzEyMCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihib3VuZEZ1bmN0aW9uQ29uc3RydWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYgKGJvdW5kQXJn
cykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgfHRo
aXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgo
KTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdzLT5sZW5n
dGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXQoaSkpOwog
ICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCk7ICsraSkKQEAgLTIzNCw4ICsyMzAsNyBAQCBKU0FycmF5KiBKU0JvdW5kRnVuY3Rpb246
OmJvdW5kQXJnc0NvcHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0FycmF5
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KHRoaXMtPmdsb2JhbE9iamVjdCgpLCBudWxs
cHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBpZiAo
bV9ib3VuZEFyZ3MpIHsKLSAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qg
b25lIGlzIGJvdW5kIHx0aGlzfC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1f
Ym91bmRBcmdzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAgcmVzdWx0LT5w
dXNoKGdsb2JhbE9iamVjdCwgbV9ib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDBhNjE2NzEz
ZTZkYzZjZDVlYTc5OGVlYzQ2ZDFhNTQ2YzdhZTMyYTguLmU3OGM0YmFkMmZmMTQ1MDE4ZDRhMTI1
ZDM3MmJlN2RmZjg0MzI4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwMCwxMCArMzAwLDIwIEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihtYWtlQm91bmRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIEpTVmFsdWUgYm91bmRUaGlzID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBKU1ZhbHVlIGJvdW5kQXJncyA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMik7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IGJvdW5kQXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KGJv
dW5kQXJncykgOiBudWxscHRyOwogICAgIGRvdWJsZSBsZW5ndGggPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDMpLmFzTnVtYmVyKCk7CiAgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBh
c1N0cmluZyhjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKTsKIAotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFyZ3MuaXNDZWxsKCkg
PyBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihib3VuZEFyZ3MpIDogbnVsbHB0ciwgbGVu
Z3RoLCBuYW1lU3RyaW5nKSkpOworICAgIC8vIFVud3JhcCBKU0JvdW5kRnVuY3Rpb24gYnkgY29u
ZmlndXJpbmcgYnV0dGVyZmx5IGFuZCB0YXJnZXQuIFRoZSBsYXJnZXIgQnV0dGVyZmx5IGlzIGFs
cmVhZHkgYWxsb2NhdGVkIGZvciB0aGF0IHB1cnBvc2UuCisgICAgaWYgKHRhcmdldC0+aW5oZXJp
dHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3Vu
ZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAgICAgIGJv
dW5kVGhpcyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpOworICAgICAgICB0YXJnZXQgPSBi
b3VuZEZ1bmN0aW9uLT50YXJnZXRGdW5jdGlvbigpOworICAgICAgICBpZiAoIWJ1dHRlcmZseSAm
JiBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkKKyAgICAgICAgICAgIGJ1dHRlcmZseSA9IGJv
dW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBidXR0ZXJmbHksIGxlbmd0aCwgbmFtZVN0cmlu
ZykpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3BlcnR5
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBk
ZTA1ODFkNDZiZjYwNGJiNzk1YWQzYTYyMTUwOWU0NTllN2JlYTgwLi5mYzA4YTAzOGQ5MWZiMGE3
YTIxZGI3ZjgzY2JjODNlMjY4ZGM3YTVlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTA1LTAxICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gT3B0aW1pemUg
Ym91bmQgZnVuY3Rpb24gY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTEzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLWlubGluaW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodCk6CisgICAg
ICAgICogc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHQxKToKKyAg
ICAgICAgKHQyKToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1jYWxsZXIuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoaW5saW5lZCk6CisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1kby1ub3QtbWlzcy1hbHJlYWR5
LWJvdW5kLWFyZ3MuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3ctbW9y
ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0aHJvd2FibGUpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3cuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGhyb3dhYmxlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoY2F0Y2gp
OgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLWlubGluZWQtb3NyLWV4aXQuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAobWF5RXhpdCk6CisgICAgICAgIChp
bmxpbmVkKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5k
LXRocm93LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRocm93YWJs
ZSk6CisgICAgICAgIChpbm5lcik6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGNhdGNoKToK
KwogMjAyMS0wNC0yOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGV4Y2VwdGlvbiBhc3NlcnRpb25zIGluIGxpZ2h0IG9mIHRoZSBUZXJtaW5hdGlvbkV4Y2Vw
dGlvbi4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLWlubGluaW5n
LmpzIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24taW5saW5pbmcuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2M1MDViMWZlNzIyMzllNmJjZmQ3MjA5YjUzMDMwYjgwZGMxY2IyZgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLWlubGluaW5nLmpzCkBAIC0wLDAg
KzEsMTcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpIHsKKyAgICByZXR1cm4g
YSArIGIgKyBjOworfQorCit2YXIgYm91bmQgPSB0ZXN0LmJpbmQoMCwgMSk7CisKK2Z1bmN0aW9u
IHQoKSB7CisgICAgcmV0dXJuIGJvdW5kKDIsIDMsIDQpOworfQorbm9JbmxpbmUodCk7Citmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHQoKSwgNik7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdHJlbmd0aC1yZWR1Y3Rpb24uanMg
Yi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdHJlbmd0aC1yZWR1Y3Rpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTMzNzg2ZDJlYmY5YTU5ZDgxM2QzY2IyNTU0MmIwMTYxNmYzYzg3ZgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0cmVuZ3RoLXJlZHVj
dGlvbi5qcwpAQCAtMCwwICsxLDI3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChhLCBiLCBj
KSB7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgYm91
bmQgPSB0ZXN0LmJpbmQoMCwgMSk7Citub0lubGluZShib3VuZCk7CisKK2Z1bmN0aW9uIHQxKCkg
eworICAgIHJldHVybiBib3VuZCgyLCAzLCA0KTsKK30KK25vSW5saW5lKHQxKTsKKworZnVuY3Rp
b24gdDIoKSB7CisgICAgcmV0dXJuIGJvdW5kKCdoZWxsbycpOworfQorbm9JbmxpbmUodDIpOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgc2hvdWxkQmUodDEoKSwgNik7
CisgICAgc2hvdWxkQmUodDIoKSwgIjFoZWxsb3VuZGVmaW5lZCIpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1jYWxsZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9m
dW5jdGlvbi1iaW5kLWNhbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzhlOWZlMjM0MDBiOTU2ZTMwMGQz
YmExYmE2YWY3MGNlYmRlMzEwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVu
Y3Rpb24tYmluZC1jYWxsZXIuanMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9u
IGlubGluZWQoYSwgYiwgYykKK3sKKyAgICBzaG91bGRCZShpbmxpbmVkLmNhbGxlciwgdGVzdCk7
Cit9CisKK3ZhciBib3VuZCA9IGlubGluZWQuYmluZCh1bmRlZmluZWQsIDMpLmJpbmQodW5kZWZp
bmVkLCAxLCAyKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmV0dXJuIGJvdW5kKCk7Cit9
Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0
ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5vdC1t
aXNzLWFscmVhZHktYm91bmQtYXJncy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQt
ZG8tbm90LW1pc3MtYWxyZWFkeS1ib3VuZC1hcmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyNTc4ZjBkNDU0
YWRlZTVkNTFlYjkyODhmMzMwZmFiMThmN2ZiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5vdC1taXNzLWFscmVhZHktYm91bmQtYXJncy5qcwpA
QCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQoreworICAg
IHJldHVybiBhICsgYiArIGM7Cit9Cit2YXIgYm91bmQxID0gdGVzdC5iaW5kKHVuZGVmaW5lZCwg
MCwgMSwgMik7Cit2YXIgYm91bmQyID0gYm91bmQxLmJpbmQodW5kZWZpbmVkKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShib3VuZDIoKSwgMyk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93LW1v
cmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93LW1v
cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTk2YWI0MTIwMzlkNGJjYTE0NDFmYWNkNjEwZjBjOTU5M2VjMWRi
MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91Ymxl
LXdyYXAtdGhyb3ctbW9yZS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGZsYWcg
PSBmYWxzZTsKK2Z1bmN0aW9uIHRocm93YWJsZSgpCit7CisgICAgaWYgKGZsYWcpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigpOworfQorbm9JbmxpbmUodGhyb3dhYmxlKTsKKworZnVuY3Rpb24g
dGVzdChhLCBiKQoreworICAgIHRocm93YWJsZSgpOworICAgIHJldHVybiBhICsgYjsKK30KKwor
dmFyIGJvdW5kID0gdGVzdC5iaW5kKHVuZGVmaW5lZCwgMSwgMik7Citmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDsgKytpKQorICAgIHZhciBib3VuZCA9IGJvdW5kLmJpbmQodW5kZWZpbmVkKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShib3VuZCgpLCAzKTsK
K2ZsYWcgPSB0cnVlOwordmFyIGVycm9yID0gbnVsbDsKK3RyeSB7CisgICAgYm91bmQoKTsKK30g
Y2F0Y2ggKGUpIHsKKyAgICBlcnJvciA9IGU7Cit9CitzaG91bGRCZShlcnJvciAhPT0gbnVsbCwg
dHJ1ZSk7CitzaG91bGRCZShlcnJvci5zdGFjay50cmltKCkuc3BsaXQoJ1xuJykubGVuZ3RoLCAz
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAt
dGhyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU3NTVkYjRjOTQyZjA5ZGU0MjcyMTc1NDZiYTQ0ODhjMDMyMGE2MmIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13
cmFwLXRocm93LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNl
OworZnVuY3Rpb24gdGhyb3dhYmxlKCkKK3sKKyAgICBpZiAoZmxhZykKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCk7Cit9Citub0lubGluZSh0aHJvd2FibGUpOworCitmdW5jdGlvbiB0ZXN0KGEs
IGIpCit7CisgICAgdGhyb3dhYmxlKCk7CisgICAgcmV0dXJuIGEgKyBiOworfQordmFyIGJvdW5k
MSA9IHRlc3QuYmluZCh1bmRlZmluZWQsIDEpOwordmFyIGJvdW5kMiA9IGJvdW5kMS5iaW5kKHVu
ZGVmaW5lZCwgMik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxk
QmUoYm91bmQyKCksIDMpOworZmxhZyA9IHRydWU7Cit2YXIgZXJyb3IgPSBudWxsOwordHJ5IHsK
KyAgICBib3VuZDIoKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBlcnJvciA9IGU7Cit9CitzaG91bGRC
ZShlcnJvciAhPT0gbnVsbCwgdHJ1ZSk7CitzaG91bGRCZShlcnJvci5zdGFjay50cmltKCkuc3Bs
aXQoJ1xuJykubGVuZ3RoLCAzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9u
LWJpbmQtaW5saW5lZC1vc3ItZXhpdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQt
aW5saW5lZC1vc3ItZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGFjYTUwYTE1ZGI3M2EwNWQ1YjljYTMz
NjQwNzhiNmU5M2VkNDRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rp
b24tYmluZC1pbmxpbmVkLW9zci1leGl0LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2
YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gbWF5RXhpdCgpCit7CisgICAgaWYgKGZsYWcpIHsK
KyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICByZXR1cm4gMjQ7CisgICAgfQorICAgIHJldHVy
biA0MjsKK30KKworZnVuY3Rpb24gaW5saW5lZChhLCBiLCBjKQoreworICAgIHJldHVybiBhICsg
YiArIGMgKyBtYXlFeGl0KCk7Cit9CisKK3ZhciBib3VuZCA9IGlubGluZWQuYmluZCh1bmRlZmlu
ZWQsIDEsIDIsIDMpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXR1cm4gYm91bmQoKTsK
K30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAg
IHNob3VsZEJlKHRlc3QoKSwgNDgpOworZmxhZyA9IHRydWU7CitzaG91bGRCZSh0ZXN0KCksIDMw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGhyb3cuanMgYi9K
U1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1M2Y2ZmU5
OTk1NTk3ZmNkZDA5OWZkMjhhYWEwNWZkMDY2ZWIzNTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzCkBAIC0wLDAgKzEsMzYgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gdGhyb3dhYmxlKCkKK3sKKyAgICBpZiAo
ZmxhZykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJleHBlY3RlZCIpOworfQorbm9JbmxpbmUo
dGhyb3dhYmxlKTsKKworZnVuY3Rpb24gaW5uZXIoKQoreworICAgIHRocm93YWJsZSgpOworfQor
dmFyIGJvdW5kID0gaW5uZXIuYmluZCgxLCAyLCAzKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgYm91bmQoKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFl
NjsgKytpKQorICAgIHRlc3QoKTsKKwordmFyIGxlbmd0aCA9IDA7Cit0cnkgeworICAgIGZsYWcg
PSB0cnVlOworICAgIHRlc3QoKTsKK30gY2F0Y2ggKGVycm9yKSB7CisgICAgbGVuZ3RoID0gZXJy
b3Iuc3RhY2sudHJpbSgpLnNwbGl0KCdcbicpLmxlbmd0aDsKK30KK3Nob3VsZEJlKGxlbmd0aCwg
NCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427493</attachid>
            <date>2021-05-01 01:45:07 -0700</date>
            <delta_ts>2021-05-01 03:20:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210501014506.patch</filename>
            <type>text/plain</type>
            <size>84150</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDkyNDhkYTZiYWNhOWM0NjZkMDQ4MTdmMjJhYmZiMjY1ZDZlNmE4Li5lMWI0ODRiNmI3MzM4ZjNk
NmMyMDUzMjEzNGY5YmYzZmIwYjllNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAyMS0wNS0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1bmN0aW9uIGNhbGxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG9wdGlt
aXplcyBGdW5jdGlvbiNiaW5kLgorCisgICAgICAgIDEuIEZ1bmN0aW9uI2JpbmQgYm91bmRBcmdz
IGRvIG5vdCBpbmNsdWRlIHx0aGlzfCwgd2hpY2ggaXMgZHVwbGljYXRlZCBpbiBib3VuZFRoaXMg
ZmllbGQuCisgICAgICAgIDIuIEZ1bmN0aW9uI2JpbmQgdW53cmFwcyBmdW5jdGlvbiB3aGVuIGJp
bmRpbmcgdGhlIGJvdW5kIGZ1bmN0aW9uLiBXZSBrZWVwIGRlcHRoIG9mIGJvdW5kIDEuCisgICAg
ICAgIDMuIENhbGxJQyBub3cgaW5saW5lcyBib3VuZCBmdW5jdGlvbiBpZiBpdCBpcyBub3QgYSBj
bG9zdXJlIGNhbGwuCisgICAgICAgIDQuIERGRyAvIEZUTCBhdHRlbXB0IHRvIGlubGluZSB3cmFw
cGVkIGZ1bmN0aW9uIGlmIGl0IGZpZ3VyZWQgb3V0IHRoYXQgYm91bmQgZnVuY3Rpb24gaXMgY2Fs
bGVkLgorICAgICAgICA1LiBERkcgLyBGVEwgYXR0ZW1wdCB0byBzcHJlYWQgYm91bmQgYXJndW1l
bnRzIGV2ZW4gaWYgd2UgZGVjaWRlZCBub3QgdG8gaW5saW5lIGEgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBidWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKGJpbmQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2Nh
bENsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
QWRhcHRvcjo6cmVhZFRvcCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9u
UGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0
ZWQuCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpHZXRTdGFja1RyYWNlRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6Omdl
bmVyYXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHlt
b3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAg
IChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgICog
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKwogMjAy
MS0wNC0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ug
c21hbGwgSklUIHBvb2wgdGVzdHMgcGFzcyBvbiBBUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4IGFmMjlhZmQ4MzU2Y2Fm
OWI3ZTk4ZjRiNjY3OTFhNDNhNTc0NDU5YWEuLjZiMjUzOTkwMTA3NzQ1ZmJlOWExNzFjYmMyZjJm
MjhkMDBmNjcyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9G
dW5jdGlvblByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTYxLDggKzYxLDcgQEAgZnVuY3Rpb24gYmluZCh0aGlz
VmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHRhcmdldCA9IHRoaXM7Ci0g
ICAgaWYgKCFAaXNDYWxsYWJsZSh0YXJnZXQpKQorICAgIGlmICghQGlzQ2FsbGFibGUodGhpcykp
CiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBhIGZ1bmN0aW9uIGluc2lk
ZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCIpOwogCiAgICAgdmFyIGFyZ3VtZW50Q291bnQgPSBA
YXJndW1lbnRDb3VudCgpOwpAQCAtNzAsMTIgKzY5LDEyIEBAIGZ1bmN0aW9uIGJpbmQodGhpc1Zh
bHVlKQogICAgIHZhciBudW1Cb3VuZEFyZ3MgPSAwOwogICAgIGlmIChhcmd1bWVudENvdW50ID4g
MSkgewogICAgICAgICBudW1Cb3VuZEFyZ3MgPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICAgICAg
Ym91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOworICAgICAgICBib3VuZEFy
Z3MgPSBAY3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KHRoaXMpOwogICAgIH0KIAogICAgIHZhciBs
ZW5ndGggPSAwOwotICAgIGlmIChAaGFzT3duTGVuZ3RoUHJvcGVydHkodGFyZ2V0KSkgewotICAg
ICAgICB2YXIgbGVuZ3RoVmFsdWUgPSB0YXJnZXQubGVuZ3RoOworICAgIGlmIChAaGFzT3duTGVu
Z3RoUHJvcGVydHkodGhpcykpIHsKKyAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0gdGhpcy5sZW5n
dGg7CiAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAg
ICAgICAgICBsZW5ndGhWYWx1ZSA9IEB0b0ludGVnZXJPckluZmluaXR5KGxlbmd0aFZhbHVlKTsK
ICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IGNhcmUgYWJvdXQgcG9zaXRpdmUgbGVu
Z3RoVmFsdWVzLCBob3dldmVyLCB0aGlzIGNvbXBhcmlzaW9uCkBAIC04NSw5ICs4NCw5IEBAIGZ1
bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgdmFyIG5hbWUg
PSB0YXJnZXQubmFtZTsKKyAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICBpZiAodHlwZW9m
IG5hbWUgIT09ICJzdHJpbmciKQogICAgICAgICBuYW1lID0gIiI7CiAKLSAgICByZXR1cm4gQG1h
a2VCb3VuZEZ1bmN0aW9uKHRhcmdldCwgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFt
ZSk7CisgICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0aGlzLCB0aGlzVmFsdWUsIGJvdW5k
QXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGNiMGU3YzhjOWJiYmExNGM1N2QyMmI0YmEyN2ViZmI5
ZDcyOTc3NmEuLjI2YWYwNmVmNDRhZmRiOGMyNzdiNWJkZDcxMWUwNDgxY2FhNjYyMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTEx
LDkgKzExMSwxMCBAQAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKLW9w
IDpjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSwKK29wIDpjcmVhdGVfYXJndW1lbnRzX2J1dHRl
cmZseV9leGNsdWRpbmdfdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICB0YXJnZXQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKIG9wIDpj
cmVhdGVfdGhpcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCmluZGV4IDAxNmEwMjdmYTMzYWI3OTQ5NDMxMmE0YTQ3N2RmYzViMmU3YTAw
ZDcuLjk0MzIwZTZlNDc5Y2EwY2MzYmZkZWY0MzkyYWViNGZiZjY4MjNhM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtOTIs
NyArOTIsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJl
Z2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfcHJvZmlsZV9j
b250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBj
YXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3Vt
ZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBv
cF9jaGVja190cmFwczoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKQEAgLTEwMyw2ICsxMDIs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVy
IHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgogICAg
ICAgICByZXR1cm47CiAKKyAgICBVU0VTKE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpcywgdGFyZ2V0KQogICAgIFVTRVMoT3BUb1RoaXMsIHNyY0RzdCkKICAgICBVU0VTKE9w
Q2hlY2tUZHosIHRhcmdldFZpcnR1YWxSZWdpc3RlcikKICAgICBVU0VTKE9wSWRlbnRpdHlXaXRo
UHJvZmlsZSwgc3JjRHN0KQpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1CiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BD
cmVhdGVTY29wZWRBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzLCBkc3QpCi0gICAgREVGUyhPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgZHN0KQorICAg
IERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBkc3QpCiAgICAg
REVGUyhPcERlbEJ5SWQsIGRzdCkKICAgICBERUZTKE9wRGVsQnlWYWwsIGRzdCkKICAgICBERUZT
KE9wVW5zaWduZWQsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNThlNTBkYTA5MjFiMjA5Zjll
YmVmZjJhYmRmM2IzM2VmZDU1YmQ4Yi4uMDEzMWNmMjg5ZmFhYjVkMDdkZTVhZDVkNWJlZjEzNDgx
MjlkMjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4NzMsOSArMjg3Myw5IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoUmVnaXN0ZXJJRCogZHN0
KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdGFyZ2V0KQog
ewotICAgIE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OjplbWl0KHRoaXMsIGRzdCk7CisgICAg
T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOjplbWl0KHRoaXMsIGRzdCwg
dGFyZ2V0KTsKICAgICByZXR1cm4gZHN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTUxMWRjMjc1
NTVkZTViODg0NDdlMzMzZjllMTY2MjVhODU2MjYxYy4uMzZiOGIwOTRkYjE3YmY1YTc5NmM3NWQy
YzQzYjg2MjY2ZWIxMDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzYxLDcgKzc2MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlUHJvbWlzZShSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCwgYm9vbCBpc0ludGVybmFsUHJvbWlzZSk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRl
QXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpOwot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KFJlZ2lzdGVy
SUQqIGRzdCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY291bnQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZOZWVkZWQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3RvciwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0
ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggM2NiZDEyMDk5ZTg1YjBiNDI2MjA4MGE0M2EzNWRlODFmMmJkNTdiOS4u
ZjQyMjNkOTI2YWI2N2YxMGZiNzQ0YTBjMzE3ODNhMjMyNjhhNWNmNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTkz
Myw4ICsxOTMzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfbmV3UHJvbWlzZShKU0M6OkJ5dGVjb2RlR2VuZXJhCiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBk
c3QpCiB7Ci0gICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUpOwotICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpKTsKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhZGRpdGlvbmFsQ291bnQgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMoZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYWRkaXRpb25hbENvdW50LmdldCgpKTsKIH0KIAog
I2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9S
UyhuYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZmE5ZDlmYTBiYmZiMDZkYjZkNjIwMTI3
NWNmYzY2MzQxMTA5Yjk5Ni4uMjZiMzUzOGIyNjQ0YThmNDQ5MmJhNjEyZThkNDAyNTZhNWQxMjlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzIzMCw3ICszMjMwLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVy
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAg
ICAgIHNldEZvck5vZGUobm9kZSwgbV92bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2Fy
cmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykg
LSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGY3
ZWU0NmI0NmFhZDMwYTI3YmY2YjM2ZWEyNDcyMjliNWJjYTNkNGQuLjBiOTIwNWNiMDYxOTFmNGQ0
MGQ5Yzc5YWZjNTNmYTE4N2U1MTk2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5C
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5zdGFuY2VPZlN0YXR1cy5oIgogI2luY2x1ZGUgIkpT
QXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1
ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCkBAIC0yMDEsNyArMjAyLDcgQEAgY2xhc3MgQnl0ZUNv
ZGVQYXJzZXIgewogICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3Bl
cmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBj
b250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAg
ICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2Vl
ZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBj
YWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgSW50cmlu
c2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Qnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlRE9N
SklUQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CkBAIC0xODg2LDEw
ICsxODg3LDEyIEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAgVkVSQk9TRV9MT0coIiAg
ICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKIAogICAgIGJvb2wgZGlkSW5z
ZXJ0Q2hlY2tzID0gZmFsc2U7Ci0gICAgYXV0byBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZyA9
IFsmXSAoKSB7CisgICAgYm9vbCBkaWRCb3VuZEZ1bmN0aW9uSW5saW5pbmcgPSBmYWxzZTsKKyAg
ICBhdXRvIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nID0gWyZdIChib29sIGJvdW5kRnVuY3Rp
b25JbmxpbmluZyA9IGZhbHNlKSB7CiAgICAgICAgIGlmIChuZWVkc1RvQ2hlY2tDYWxsZWUpCiAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBjYWxsVGFyZ2V0Tm9kZSwgdGhp
c0FyZ3VtZW50KTsKICAgICAgICAgZGlkSW5zZXJ0Q2hlY2tzID0gdHJ1ZTsKKyAgICAgICAgZGlk
Qm91bmRGdW5jdGlvbklubGluaW5nID0gYm91bmRGdW5jdGlvbklubGluaW5nOwogICAgIH07CiAK
ICAgICBpZiAoa2luZCA9PSBJbmxpbmVDYWxsRnJhbWU6OlRhaWxDYWxsICYmIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgY2FsbGVlLCByZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGluc2VydENoZWNrc1dpdGhB
Y2NvdW50aW5nKSkgewpAQCAtMTkwNSw4ICsxOTA4LDExIEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2Rl
KiBjCiAKICAgICBhdXRvIGVuZFNwZWNpYWxDYXNlID0gWyZdICgpIHsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKLSAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBj
YWxsVGFyZ2V0Tm9kZSk7Ci0gICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zm
c2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgIC8vIEJvdW5kIGZ1bmN0
aW9uJ3Mgc2xvdHMgb2YgdGhlbSBhcmUgbm90IGltcG9ydGFudC4gVGhleSBhcmUgZGVhZCBhdCBP
U1IgZXhpdC4KKyAgICAgICAgaWYgKCFkaWRCb3VuZEZ1bmN0aW9uSW5saW5pbmcpIHsKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAg
ZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKTsKKyAgICAgICAgfQogICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAg
aWYgKGNvbnRpbnVhdGlvbkJsb2NrKSB7CiAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IG9z
ckV4aXRJbmRleDsKQEAgLTE5MjcsNyArMTkzMyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBj
CiAKICAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFs
aXphdGlvbktpbmQpOwogICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAgICAg
ICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwgaW50cmlu
c2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rp
b24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgeworICAgICAgICBpZiAoaGFuZGxlSW50
cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBjYWxsZWUsIGludHJpbnNpYywgcmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5kZXgsIGtp
bmQsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewogICAgICAgICAg
ICAgZW5kU3BlY2lhbENhc2UoKTsKICAgICAgICAgICAgIHJldHVybiBDYWxsT3B0aW1pemF0aW9u
UmVzdWx0OjpJbmxpbmVkOwogICAgICAgICB9CkBAIC0yMzIyLDcgKzIzMjgsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBp
bnQgcmVnaXN0ZXJPZmZzZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9w
ZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFy
aWFudCBjYWxsVmFyaWFudCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdElu
ZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9H
KCIgICAgICAgVGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMsICJcbiIpOwogCkBAIC0zNzU2
LDYgKzM3NjIsNjcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICNlbmRpZgogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBCb3VuZEZ1bmN0aW9uQ2FsbEludHJpbnNpYzogeworICAgICAgICAg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsVmFyaWFudC5mdW5jdGlvbigpOworICAgICAg
ICAgICAgaWYgKCFmdW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpT
Qm91bmRGdW5jdGlvbio+KCptX3ZtLCBmdW5jdGlvbik7CisgICAgICAgICAgICBpZiAoIWJvdW5k
RnVuY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBp
bnNlcnRDaGVja3ModHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIE1ha2UgYSBjYWxsLiBXZSBkb24n
dCB0cnkgdG8gZ2V0IGZhbmN5IHdpdGggdXNpbmcgdGhlIHNtYWxsZXN0IG9wZXJhbmQgbnVtYmVy
IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBzdGFjayBsYXlvdXQgcGhhc2Ugc2hvdWxkIGNv
bXByZXNzIHRoZSBzdGFjayBhbnl3YXkuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
V2UgZG8gbm90IG92ZXJyaWRlIHRoZSBleGlzdGluZyBzdGFjayBmb3IgdGhpcyBjYWxsLiBXZSBu
ZXdseSBhbGxvY2F0ZSBzdGFjayBzcGFjZSBhbmQgZmlsbCBpdCB3aXRoIHZhbHVlcworICAgICAg
ICAgICAgLy8gdG8ga2VlcCBPU1IgZXhpdCBjb3JyZWN0IHdoZW4gd2UgZXhpdCBpbiB0aGUgbWlk
ZGxlIG9mIHRoaXMgc3RhY2sgY29uc3RydWN0aW9uLiBXZSBleGl0IHRvIHRoZSBjYWxsZXIgc2lk
ZQorICAgICAgICAgICAgLy8gd2hlbiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoaXMgZnJhbWUu
IEFuZCB0aGlzIGlzIHRvdGFsbHkgT0sgc2luY2Ugd2UgYXJlIG5vdCBjbG9iYmVyaW5nIHZhbHVl
cy4KKworICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5k
RnVuY3Rpb24tPmJvdW5kQXJncygpOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlBh
cmFtZXRlcnMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICAgICAgICAgIG51bWJl
ck9mUGFyYW1ldGVycysrOyAvLyBUcnVlIHJldHVybiBQQy4KKyAgICAgICAgICAgIG51bWJlck9m
UGFyYW1ldGVycyArPSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsKKworICAg
ICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJlc3BvbmRz
IHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KKyAgICAgICAgICAgIGludCBuZXdSZWdpc3Rl
ck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkgLSAxKS5vZmZzZXQoKTsKKyAgICAgICAgICAg
IG5ld1JlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKKyAgICAgICAgICAgIG5l
d1JlZ2lzdGVyT2Zmc2V0IC09IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworCisg
ICAgICAgICAgICAvLyBHZXQgdGhlIGFsaWdubWVudCByaWdodC4KKyAgICAgICAgICAgIG5ld1Jl
Z2lzdGVyT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpLCAtbmV3UmVnaXN0ZXJPZmZzZXQpOworCisgICAgICAgICAgICBlbnN1cmVMb2Nh
bHMobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihuZXdSZWdp
c3Rlck9mZnNldCkpLnRvTG9jYWwoKSk7CisKKyAgICAgICAgICAgIC8vIElzc3VlIFNldExvY2Fs
cy4gVGhpcyBoYXMgdHdvIGVmZmVjdHM6CisgICAgICAgICAgICAvLyAxKSBUaGF0J3MgaG93IGhh
bmRsZUNhbGwoKSBzZWVzIHRoZSBhcmd1bWVudHMuCisgICAgICAgICAgICAvLyAyKSBJZiB3ZSBp
bmxpbmUgdGhlbiB0aGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJndW1lbnRzIGFyZSBmbHVzaGVkIHNv
IHRoYXQgaWYgeW91IHVzZQorICAgICAgICAgICAgLy8gICAgdGhlIGRyZWFkZWQgYXJndW1lbnRz
IG9iamVjdCBvbiB0aGUgY2FsbCB0YXJnZXQsIHRoZSByaWdodCB0aGluZ3MgaGFwcGVuLiBXZWxs
LCBzb3J0IG9mIC0KKyAgICAgICAgICAgIC8vICAgIHNpbmNlIHdlIG9ubHkgcmVhbGx5IGNhcmUg
YWJvdXQgJ3RoaXMnIGluIHRoaXMgY2FzZS4gQnV0IHdlJ3JlIG5vdCBnb2luZyB0byB0YWtlIHRo
YXQKKyAgICAgICAgICAgIC8vICAgIHNob3J0Y3V0LgorICAgICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEFyZ3VtZW50SW5kZXggPSAwOworICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRleCsrLCBuZXdSZWdpc3Rl
ck9mZnNldCksIGpzQ29uc3RhbnQoYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCkpLCBJbW1lZGlh
dGVOYWtlZFNldCk7CisgICAgICAgICAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYm91bmRBcmdzLT5sZW5ndGgoKTsg
KytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRleCsrLCBuZXdSZWdpc3Rlck9mZnNl
dCksIGpzQ29uc3RhbnQoYm91bmRBcmdzLT5nZXQoaW5kZXgpKSwgSW1tZWRpYXRlTmFrZWRTZXQp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPiAxKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXggPSAxOyBpbmRleCA8
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAg
ICBzZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGN1cnJlbnRBcmd1
bWVudEluZGV4KyssIG5ld1JlZ2lzdGVyT2Zmc2V0KSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50SW5jbHVkaW5nVGhpcyhpbmRleCwgcmVnaXN0ZXJPZmZzZXQpKSwgSW1tZWRpYXRlTmFr
ZWRTZXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSd2ZSBzZXQgc29tZSBs
b2NhbHMsIGJ1dCB0aGV5IGFyZSBub3QgdXNlci12aXNpYmxlIHNpbmNlIHRoZXkgYXJlIG5ld2x5
IGFsbG9jYXRlZCBmb3IgdGhpcyBpbmxpbmVkIGNhbGwuIEl0J3Mgc3RpbGwgT0sgdG8gZXhpdCBm
cm9tIGhlcmUuCisgICAgICAgICAgICAvLyBKU0JvdW5kRnVuY3Rpb24ncyB0cmFtcG9saW5lIGRv
ZXMgbm90IGhhdmUgdXNlci12aXNpYmxlIGVmZmVjdC4gU28gZXhpdGluZyB0byB0aGUgcHJlLWJv
dW5kIGZ1bmN0aW9uIGxvY2F0aW9uIGlzIE9LLgorICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVl
OworICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICBoYW5kbGVD
YWxsKHJlc3VsdCwgQ2FsbCwga2luZCwgb3NyRXhpdEluZGV4LCBqc0NvbnN0YW50KGJvdW5kRnVu
Y3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCBuZXdSZWdp
c3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQoYm91bmRGdW5jdGlvbi0+dGFy
Z2V0RnVuY3Rpb24oKSkpLCBwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGRpZFNldFJlc3VsdCA9
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTgxMTIsMTEg
KzgxNzksMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6
IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1
bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4
Y2x1ZGluZ1RoaXM+KCk7CiAgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHkpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0
dGVyZmx5KTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBFZGdlKGdldChieXRlY29kZS5tX3Rh
cmdldCksIENlbGxVc2UpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJn
dW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY1ZTIyYTEwYTRkMTI2NWRi
NWNkYzcxYjIzMWQwNmQ1MTYxN2VkNmMuLmJmNGY3OTczZTkzNDE2ZGU4NjZmYWM3MTM3NzA3YTg2
YjE3ZTMzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNh
c2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVk
X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNh
c2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6CisgICAgY2FzZSBvcF9jcmVhdGVfYXJn
dW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpczoKICAgICBjYXNlIG9wX2dldF9mcm9tX2Fy
Z3VtZW50czoKICAgICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRf
YXJndW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4
IGNmMDFiY2UwNTNhM2U1NzdkZTk5N2IwMzMzOWI3YjE0YzY2ODg5MjEuLmMyNDBhYTI2MTNmMGQx
MjAxZWY0OGQ4YTJkMjJkOTExNTU5MjNhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3Bl
ZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENy
ZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eUV4Y2x1ZGluZ1RoaXM6CiAgICAgICAgIHJlYWQoU3RhY2spOwogICAgICAgICByZWFkKEhlYXBP
YmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggY2ZjMjIzMDAwYTUzMmIxYzNiMzk4MGU1
NGE1MDFhM2QzZGZhYWIwOS4uZGQ1MWZhMzhjODgxMTBkOTFiOGZlNTU4ZmZlMGQ1NjdiZjYxNmE2
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjY4LDcgKzI2
OCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENy
ZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAg
ICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ2FsbEV2YWw6CiAgICAgY2FzZSBDYWxsRm9yd2Fy
ZFZhcmFyZ3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApp
bmRleCAzNzRkNTUzMDVkZjhkODc1MDMyZTA0Nzc3YmMzMjIxOWE1NTE1ODBhLi5kMDZkODY0MmY3
N2VmM2FjNGY3NzUxODUwMTk5MGE1MDNkNzI4MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI4ODAsNyArMjg4MCw3IEBAIGNsYXNzIEZpeHVw
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAg
ICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHk6CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpczoKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
aW5kZXggYWYyNjgyODZjODEwMDlkMTgyNmNiMTBiY2Y1N2I1MTEwYTRhNzMzOS4uN2M0OWRhYTkz
MjQ0NjQ3NDdlMDRjNmJmNmY5YzcxMzk5MTcyNjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaApAQCAtNDUxLDcgKzQ1MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVTY29wZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRK
UykgXAogICAgIG1hY3JvKENyZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAotICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgTm9kZVJlc3Vs
dEpTKSBcCisgICAgbWFjcm8oQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oUHV0VG9Bcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhHZXRBcmd1bWVudCwgTm9kZVJlc3VsdEpTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlY2M4ZGM4NTA1MTA5Y2IzNTU0OTBjOTFmYTY5
NmQ2YWRhNzViMjc5Li45ZDE5ZTM1MmY4YmFkMjg0ODdiNjZjY2E5YWRjY2RiNzQ1YjAzYzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5j
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCkBAIC0yMDU5LDIwICsyMDYwLDQyIEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMsIEpT
Q2VsbCosIChKU0dsb2JhbE9iamVjCiAgICAgICAgIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBh
cmd1bWVudFN0YXJ0LCBsZW5ndGgsIGNhbGxlZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIEpTQ2VsbCosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3Qg
YXJndW1lbnRDb3VudCkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBhcmd1bWVu
dENvdW50LCBKU0NlbGwqIHRhcmdldCkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
ICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEFT
U0VSVChhcmd1bWVudENvdW50ID4gMSk7CisKKyAgICBDaGVja2VkSW50MzIgdG90YWxDb3VudCA9
IGFyZ3VtZW50Q291bnQgLSAxOworICAgIGludDMyX3QgYWRkaXRpb25hbENvdW50ID0gMDsKKyAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gbnVsbHB0cjsKKyAgICBpZiAodGFy
Z2V0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgeworICAgICAgICBKU0JvdW5kRnVu
Y3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGFyZ2V0KTsK
KyAgICAgICAgaWYgKGJvdW5kRnVuY3Rpb24tPmNhbkNsb25lQm91bmRBcmdzKCkpIHsKKyAgICAg
ICAgICAgIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAgICAg
ICAgYWRkaXRpb25hbENvdW50ID0gYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDA7
CisgICAgICAgICAgICB0b3RhbENvdW50ICs9IGFkZGl0aW9uYWxDb3VudDsKKyAgICAgICAgICAg
IGlmICh0b3RhbENvdW50Lmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5
Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9t
SW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZklu
ZGV4aW5nU2hhcGVzXS5nZXQoKSwgYXJndW1lbnRDb3VudCk7CisgICAgSlNJbW11dGFibGVCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVhdGUodm0sIHZt
LmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUo
Q29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNd
LmdldCgpLCB0b3RhbENvdW50LnVuc2FmZUdldCgpKTsKICAgICBpZiAoIWJ1dHRlcmZseSkgewog
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBhcmd1bWVudENvdW50OyArK2luZGV4KQotICAgICAgICBidXR0ZXJmbHktPnNldElu
ZGV4KHZtLCBpbmRleCwgYXJndW1lbnRTdGFydFtpbmRleF0uanNWYWx1ZSgpKTsKKyAgICBpZiAo
YWRkaXRpb25hbENvdW50KSB7CisgICAgICAgIEFTU0VSVChib3VuZEFyZ3MpOworICAgICAgICBm
b3IgKGludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IGFkZGl0aW9uYWxDb3VudDsgKytpbmRleCkK
KyAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4LCBib3VuZEFyZ3MtPmdl
dChpbmRleCkpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCAo
YXJndW1lbnRDb3VudCAtIDEpOyArK2luZGV4KQorICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4
KHZtLCBpbmRleCArIGFkZGl0aW9uYWxDb3VudCwgYXJndW1lbnRTdGFydFtpbmRleCArIDFdLmpz
VmFsdWUoKSk7CiAgICAgcmV0dXJuIGJ1dHRlcmZseTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA1MmNkYmU4MjY2MTZlYmM0YTkyZDA1OGIwMDFl
YzM4ZWZjMmEzZDQ4Li43OWU3NzZmYjQzZTY1NTI3YTE0MmUyM2RjNzM2Y2MwMjA3MDRhYzEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjExLDcgKzIx
MSw3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzRHVyaW5nRXhpdCwgSlNDZWxsKiwgKFZNCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwg
SlNGdW5jdGlvbiogY2FsbGVlLCBKU0xleGljYWxFbnZpcm9ubWVudCopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCwg
SlNDZWxsKiwgKFZNKiwgSW5saW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIHVpbnQzMl90IGFy
Z3VtZW50Q291bnQpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBS
ZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxs
ZWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRT
dGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBKU0NlbGwq
LCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJn
dW1lbnRDb3VudCwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25DcmVhdGVSZXN0LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1l
bnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5
U2l6ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKiwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25TZXRBZGQsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDk4MDU5OWIy
ZTU0YWY3ZDBjYTg3YTk5YzE2OTYwNjQ5NzBhMDFlODQuLjcwNGViZTcxMTViOGM3ZDMxN2EwMjE5
MWMzOTFmOTQ3YzgxMjJhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3Mg
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAg
IGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseToKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNh
c2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZTc2ZDJiNmUwZjk2ZjNlMjhmYzNkOTgzZmIzM2Fj
MjMxNjg2YjMxLi43MGU0YTBjMTZmMjgxNWYxNGY3NzBmYTYyZDkwNGEzMTBiYzBlZjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgY2xhc3MgUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTogeworICAg
ICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6IHsKICAgICAg
ICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAppbmRleCAwN2E4NWRiM2Q2MGM2MDgwYTgzZTZkYTQxODY4YmJmNGI3Y2VmNmM3Li42OWIzYmMy
YTdiNTg1NmQ4OTk0MDI5NzI4NmI1Zjc3YWIwZDU4YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTk3LDcgKzU5Nyw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2Fz
ZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6
Ci0gICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBl
OWNkNDM5MGU0NjFiYjNlNDI1MDUzMjkxNWE1M2FhZDQ2ODNlODdlLi5lNTJjYWQ2ZWU3YjQ0ZDRj
YWRjMGJjMjQ0YTQzMjE2MTcyNmY5NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtODQ3NSw4ICs4NDc1LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSogbm9kZSkKICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKE5v
ZGUqIG5vZGUpCiB7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGFyZ2V0KHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgdGFyZ2V0R1BSID0gdGFyZ2V0LmdwcigpOworCiAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTg0ODYsMTIgKzg0ODks
MTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eShOb2RlKiBub2RlKQogICAgIC8vIFdlIHNldCB1cCB0aGUgYXJndW1lbnRzIG91cnNlbHZlcywg
YmVjYXVzZSB3ZSBoYXZlIHRoZSB3aG9sZSByZWdpc3RlciBmaWxlIGFuZCB3ZSBjYW4KICAgICAv
LyBzZXQgdGhlbSB1cCBkaXJlY3RseSBpbnRvIHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCiAKLSAg
ICAvLyBBcmd1bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0LCAzOmxlbmd0aAorICAg
IC8vIEFyZ3VtZW50czogMDpKU0dsb2JhbE9iamVjdCosIDE6c3RhcnQsIDI6bGVuZ3RoLCAzOnRh
cmdldAorCisgICAgLy8gRG8gdGhlIHRhcmdldEdQUiBmaXJzdCwgc2luY2UgaXQgbWlnaHQgYWxp
YXMgYW4gYXJndW1lbnQgcmVnaXN0ZXIuCisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgzLCBbJl0g
KEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUodGFyZ2V0R1BSLCBkZXN0R1BSKTsgfSk7CisK
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDIsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdl
dExlbmd0aChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50KDEsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdldEFyZ3VtZW50U3Rh
cnQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgZGVzdEdQUik7IH0pOwogCi0g
ICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHks
IHJlc3VsdEdQUik7CisgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCByZXN1bHRHUFIpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggOTcxNzUyMjhm
NjJkYTczNTAwMjEwZWZkMmNlY2NhOTU4MmI2ODAyZC4uNjZhNDE5MDljYzYwNjlkYjQ1MTc3N2Iy
OWIxNzk3NDc1MDBiOGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaApAQCAtMTQxMSw3ICsxNDExLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQg
ewogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVD
cmVhdGVTY29wZWRBcmd1bWVudHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZUNsb25l
ZEFyZ3VtZW50cyhOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVSZXN0KE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVTcHJlYWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5KE5v
ZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IDM0MjQwZTU0ZTg1N2Y1OGFkNDc2YTZhZjNiZWEzMmNkN2MyMTZk
NjguLjYyZDBmNzU0YzAwZWExODUwYzIyNzEyNmU4ZTEwNTdkNjA1NWQ5ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMzk1MCw4ICszOTUwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseTogewotICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KG5vZGUp
OworICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczogeworICAg
ICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAzOGVlNmI0YTZlZjkwOTc0MzVhYjhlMDk1
MjkxZDBiNmU3NzQxMzA1Li45NWU3ZjVlNzM4MzUxNzYxZWQ2MjUyZjc5M2IzZDkwNjlmNTcxZmM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTQ5MzEsOCArNDkzMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHk6IHsKLSAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eShub2RlKTsKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRl
eCBiOTA2NjVlY2NlNTJjNTdmNDRiNzBkNDY3YzRhNGU1YTVmMzcwMmUwLi5hZWY4YTlhODk2MDA3
Zjg3ODEyMzQ3MjYxMGJjMGI3ODZhNGJmNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAt
MzU3LDcgKzM1Nyw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAg
ICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0
ZUNsb25lZEFyZ3VtZW50czoKLSAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5OgorICAgICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdU
aGlzOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCA0MGYxMTE5MjczYmRiZTFhNWI5NTIxNTg4NWY5Mjc0
NDBmYzkxMTA3Li5iNDljNzI0MDk1Yjc0MWNhMmMyYzhhOWIwMDU4NmMzYTg2MzEwOTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUg
IlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgpAQCAtOTI3LDcg
KzkyOCw4IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAg
ICAgICAgRWRnZSBjYWxsZWUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CiAgICAg
ICAgICAgICBDYWxsVmFyaWFudCBjYWxsVmFyaWFudDsKLSAgICAgICAgICAgIGlmIChKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4o
dm0oKSkpIHsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5h
bWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPih2bSgpKTsKKyAgICAgICAgICAgIGlmIChmdW5j
dGlvbikgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0YWJs
ZSgpOwogICAgICAgICAgICAgICAgIGNhbGxWYXJpYW50ID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24p
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYWxsZWUtPmlzRnVuY3Rpb25BbGxvY2F0aW9uKCkp
IHsKQEAgLTk0Myw3ICs5NDUsNDggQEAgY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwMzM5CiAgICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aW50cmluc2lj
KCkgPT0gV2FzbUZ1bmN0aW9uSW50cmluc2ljKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCisKKyAgICAgICAgICAgIC8vIFdlIGdhdmUgdXAgaW5saW5pbmcgYSB3cmFwcGVk
IGZ1bmN0aW9uLCBidXQgc3RpbGwsIHdlIGNhbiBpbmxpbmUgYm91bmQgZnVuY3Rpb24ncyB3cmFw
cGVyIGJ5IGV4dHJhY3RpbmcgaXQuCisgICAgICAgICAgICAvLyBUaGlzIGFsc28gd2lwZXMgYm91
bmQtZnVuY3Rpb24gdGh1bmsgY2FsbCB3aGljaCBpcyBzdWJvcHRpbWFsIGNvbXBhcmVkIHRvIGRp
cmVjdGx5IGNhbGxpbmcgYSB3cmFwcGVkIGZ1bmN0aW9uIGhlcmUuCisgICAgICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+aW50cmluc2ljKCkgPT0gQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMgJiYg
ZnVuY3Rpb24gJiYgKG1fbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG1fbm9kZS0+b3AoKSA9PSBUYWls
Q2FsbCB8fCBtX25vZGUtPm9wKCkgPT0gVGFpbENhbGxJbmxpbmVkQ2FsbGVyKSkgeworICAgICAg
ICAgICAgICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5k
RnVuY3Rpb24qPihmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIHRh
cmdldEZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0oKSwgYm91bmRGdW5j
dGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogdGFy
Z2V0RXhlY3V0YWJsZSA9IHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgICAg
ICAgICAgICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9u
LT5ib3VuZEFyZ3MoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCgoYm91bmRBcmdzID8gYm91
bmRBcmdzLT5sZW5ndGgoKSA6IDApICsgbV9ub2RlLT5udW1DaGlsZHJlbigpKSA8PSBPcHRpb25z
OjptYXhpbXVtRGlyZWN0Q2FsbFN0YWNrU2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5bmFtaWND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHZtKCksIHRhcmdldEV4ZWN1dGFibGUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgbV9wYXJhbWV0ZXJT
bG90cyBiZWZvcmUgd2UgZ2V0IHRvIHRoZSBiYWNrZW5kLCBidXQgd2UgZG9uJ3QKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB3YW50IHRvIGRvIHRvbyBtdWNoIG9mIHRoaXMuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQWxsb2NhdGVkQXJncyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihmdW5jdGlvbkV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsg
MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtQWxsb2NhdGVkQXJncyA8PSBP
cHRpb25zOjptYXhpbXVtRGlyZWN0Q2FsbFN0YWNrU2l6ZSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBzdGQ6Om1heChtX2dyYXBo
Lm1fcGFyYW1ldGVyU2xvdHMsIEdyYXBoOjpwYXJhbWV0ZXJTbG90c0ZvckFyZ0NvdW50KG51bUFs
bG9jYXRlZEFyZ3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uYXBwZW5kKG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KG1fbm9kZUluZGV4LCBtX25v
ZGUtPm9yaWdpbiwgdGFyZ2V0RnVuY3Rpb24pKTsgLy8gQ2FsbGVlLgorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlvblNldC5p
bnNlcnRDb25zdGFudChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGJvdW5kRnVuY3Rpb24t
PmJvdW5kVGhpcygpKSk7IC8vIHx0aGlzfAorCisgICAgICAgICAgICAgICAgICAgICAgICBKU0lt
bXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFu
dChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGJvdW5kQXJncy0+Z2V0KGluZGV4KSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBG
aXJzdCBvbmUgaXMgfGNhbGxlZXwsIHNlY29uZCBvbmUgaXMgfHRoaXN8LgorICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDI7IGluZGV4IDwgbV9ub2RlLT5udW1D
aGlsZHJlbigpOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ncmFwaC5jaGlsZChtX25vZGUsIGluZGV4KSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0
KEFkamFjZW5jeUxpc3Q6OlZhcmlhYmxlLCBmaXJzdENoaWxkLCBtX2dyYXBoLm1fdmFyQXJnQ2hp
bGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBzdGQ6Om1heChtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMs
IEdyYXBoOjpwYXJhbWV0ZXJTbG90c0ZvckFyZ0NvdW50KG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAt
IDEpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcygpLmFkZENhbGxMaW5rU3RhdHVzKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBDYWxs
TGlua1N0YXR1cyhDYWxsVmFyaWFudCh0YXJnZXRFeGVjdXRhYmxlKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9EaXJlY3RDYWxsKG1fZ3JhcGguZnJlZXplKHRh
cmdldEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPih2bSgpLCBleGVjdXRhYmxlKSkgewogICAgICAgICAgICAgICAgIGlm
IChtX25vZGUtPm9wKCkgPT0gQ29uc3RydWN0ICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3Ry
dWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggM2RmMDQ0YThmZjFiNTg1MmI1ZWFmM2MwNGZhOTYwOGRjZmUw
OTgyZi4uNDM5YzBkODY3MjA3ZWZkM2Q3MTQ1ZmJhZDE2YjYxMjVhNDdkMDQ1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTUxLDcgKzE1
MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1l
bnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgIGNhc2UgQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5OgorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpczoKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3Vt
ZW50czoKICAgICBjYXNlIEdldEFyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIwNzg2OTFiMTA0YWZmNjIwNDFiMTMzNjVmODFk
OGEzZDFiZDFlNzEuLmVlNTUwMTNhM2Y4NzllMDM4ZGFhM2E4OTEyODg0Zjk3MGUyNjRjYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEx
MDMsOCArMTEwMyw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50
cygpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5OgotICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOwor
ICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CisgICAg
ICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcygpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgICAgICAg
ICAgY29tcGlsZU9iamVjdENyZWF0ZSgpOwpAQCAtNjg0OCwxMCArNjg0OCwxMCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCi0gICAg
dm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KCkKKyAgICB2b2lkIGNvbXBpbGVD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKCkKICAgICB7CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9w
ZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUpOworICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25DcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBnZXRB
cmd1bWVudHNTdGFydCgpLCBnZXRBcmd1bWVudHNMZW5ndGgoKS52YWx1ZSwgbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IGFlZTM3NDRiNTJlNWU0NTI2MWUyMmZhYzY5MGRiZTA0YWUyYzU0MjYuLjFkOTU4ZWMyMTRi
ZGJhZDgwYjdlYzViZTgwNzM2YmEzNjVhOWZiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVENvZGVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJm
bHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMzkzLDcgKzM5NCw3
IEBAIGNsYXNzIEdldFN0YWNrVHJhY2VGdW5jdG9yIHsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
ISF2aXNpdG9yLT5jb2RlQmxvY2soKSAmJiAhdmlzaXRvci0+Y29kZUJsb2NrKCktPnVubGlua2Vk
Q29kZUJsb2NrKCktPmlzQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBtX3Jl
c3VsdHMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICBTdGFja0ZyYW1lKG1fdm0sIG1fb3du
ZXIsIHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpLCB2aXNpdG9yLT5jb2RlQmxvY2soKSwgdmlz
aXRvci0+Ynl0ZWNvZGVJbmRleCgpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgfSBlbHNlIGlmICghdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCktPmluaGVyaXRzPEpTQm91
bmRGdW5jdGlvbj4obV92bSkpIHsKICAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKAog
ICAgICAgICAgICAgICAgICAgICBTdGFja0ZyYW1lKG1fdm0sIG1fb3duZXIsIHZpc2l0b3ItPmNh
bGxlZSgpLmFzQ2VsbCgpKSk7CiAgICAgICAgICAgICB9CkBAIC00MjIsNyArNDIzLDEyIEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoSlNDZWxsKiBvd25lciwgVmVjdG9yPFN0YWNr
RnJhbWU+JiByZXN1bHRzLCBzaXplCiAKICAgICBzaXplX3QgZnJhbWVzQ291bnQgPSAwOwogICAg
IHNpemVfdCBtYXhGcmFtZXNDb3VudE5lZWRlZCA9IG1heFN0YWNrU2l6ZSArIGZyYW1lc1RvU2tp
cDsKLSAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0sIFsmXSAoU3RhY2tWaXNp
dG9yJikgLT4gU3RhY2tWaXNpdG9yOjpTdGF0dXMgeworICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQo
Y2FsbEZyYW1lLCB2bSwgWyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIC0+IFN0YWNrVmlzaXRv
cjo6U3RhdHVzIHsKKyAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgpKSB7Cisg
ICAgICAgICAgICBpZiAodmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCktPmluaGVyaXRzPEpTQm91
bmRGdW5jdGlvbj4obV92bSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
Q29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoKytmcmFtZXNDb3VudCA8IG1heEZy
YW1lc0NvdW50TmVlZGVkKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGlu
dWU7CiAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKaW5kZXggNzZkMWE1MTdkOWM4OGQyMDk3MDI1Zjg0NDVmNjljOWVkNjNjZmQzZi4u
Y2M2ZGU0ZmNlYzVlOTNmOTkzNzkxZmJkNmNhZjc3OWJkZWE5MWI0NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2RpcmVjdF9hcmd1bWVu
dHMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9zY29wZWRfYXJndW1lbnRzKQogICAg
ICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKLSAgICAgICAgREVG
SU5FX1NMT1dfT1AoY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpCisgICAgICAgIERFRklORV9T
TE9XX09QKGNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzKQogICAgICAg
ICBERUZJTkVfU0xPV19PUChjcmVhdGVfcmVzdCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3Jl
YXRlX3Byb21pc2UpCiAgICAgICAgIERFRklORV9TTE9XX09QKG5ld19wcm9taXNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZmMzOTkxNGExZDU0
MjQ1NjJlNzkxOWY1MWVjZGIxNTMzODYyZjA0NS4uMjU1YjY0NzhjZjAwM2E5MDY1NzZlNDkxYjg5
MTM3ZjMyMTBkMmU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCkBAIC0xNDUxLDYgKzE0NTIsOCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQo
KSk7CisKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjYWxsTGlua0luZm8tPnNw
ZWNpYWxpemF0aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKQEAgLTE0NjQsMjkgKzE0NjcsNDAgQEAgaW5saW5lIFNsb3dQYXRoUmV0
dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEMKICAgICAgICAgfQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
aGFuZGxlSG9zdENhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgY2FsbGVlQXNWYWx1ZSwg
Y2FsbExpbmtJbmZvKSk7CiAgICAgfQotICAgIAotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
anNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7Ci0gICAgSlNTY29wZSog
c2NvcGUgPSBmdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKLSAgICBFeGVjdXRhYmxlQmFzZSog
ZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7Ci0gICAgaWYgKFVOTElLRUxZKCFl
eGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgewotICAgICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGV4ZWN1dGFibGUpOwogCi0gICAgICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9u
RXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5v
dENvbnN0cnVjdCkgewotICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAotICAgICAgICAgICAgICAg
IHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwotICAgICAg
ICB9CisgICAgYXV0byBtYXRlcmlhbGl6ZUNvZGVCbG9ja0lmTmVjZXNzYXJ5ID0gWyZdKEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkgLT4gdm9pZCogewor
ICAgICAgICBpZiAoVU5MSUtFTFkoIWV4ZWN1dGFibGUtPmhhc0pJVENvZGVGb3Ioa2luZCkpKSB7
CisgICAgICAgICAgICBKU1Njb3BlKiBzY29wZSA9IGZ1bmN0aW9uLT5zY29wZVVuY2hlY2tlZCgp
OworICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAotICAgICAgICBD
b2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gY2FsbGVlRnJhbWUtPmFkZHJlc3NPZkNvZGVCbG9j
aygpOwotICAgICAgICBFeGNlcHRpb24qIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwg
a2luZCwgKmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2Nv
cGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOwotICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKSB7
Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAotICAgICAgICAgICAgICAgIHZtLmdl
dENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOworICAgICAgICAgICAg
aWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5
KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KSB7CisgICAgICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29u
c3RydWN0b3JFcnJvcihnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0g
Y2FsbGVlRnJhbWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOworICAgICAgICAgICAgRXhjZXB0aW9u
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlv
bkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsK
KyAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBl
cnJvcik7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQorICAgICAgICAgICAgICAg
IHJldHVybiB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9OworICAgIAorICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9u
Q2VsbCk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0
YWJsZSgpOworICAgIGF1dG8gZmFpbHVyZSA9IG1hdGVyaWFsaXplQ29kZUJsb2NrSWZOZWNlc3Nh
cnkoZnVuY3Rpb24sIGV4ZWN1dGFibGUpOworICAgIGlmIChVTkxJS0VMWShmYWlsdXJlKSkKKyAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChmYWlsdXJlLCByZWludGVycHJldF9jYXN0PHZvaWQq
PihLZWVwVGhlRnJhbWUpKTsKKworICAgIC8vIENhbGwgSUMgbGlua3MgdGhpcyBjYWxsc2l0ZSB0
byB3cmFwcGVkIGZ1bmN0aW9uIGRpcmVjdGx5LiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGRpcmVj
dGx5IGxpbmtlZCBmdW5jdGlvbiBpcyBtYXRlcmlhbGl6ZWQgaGVyZS4KKyAgICBpZiAoZnVuY3Rp
b24tPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pICYmIGpzQ2FzdDxKU0JvdW5kRnVuY3Rp
b24qPihmdW5jdGlvbiktPnRhcmdldEZ1bmN0aW9uKCktPmluaGVyaXRzPEpTRnVuY3Rpb24+KHZt
KSkgeworICAgICAgICBhdXRvKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
anNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGZ1bmN0aW9uKS0+dGFyZ2V0RnVuY3Rpb24oKSk7Cisg
ICAgICAgIGF1dG8gZmFpbHVyZSA9IG1hdGVyaWFsaXplQ29kZUJsb2NrSWZOZWNlc3NhcnkodGFy
Z2V0RnVuY3Rpb24sIHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCkpOworICAgICAgICBpZiAo
VU5MSUtFTFkoZmFpbHVyZSkpCisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGZhaWx1
cmUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgIH0KKwogICAg
IC8vIEZJWE1FOiBTdXBwb3J0IHdhc20gSUMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0
YWJsZS0+ZW50cnlwb2ludEZvcigKQEAgLTE0OTYsNiArMTUxMCwxMCBAQCBpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQwogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHlt
b3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8p
KQogeworICAgIC8vIER1cmluZyBleGVjdXRpb24gb2YgdmlydHVhbEZvcldpdGhGdW5jdGlvbi9s
aW5rUG9seW1vcnBoaWNDYWxsLCB3ZSBzdHJvbmdseSBhc3N1bWUgdGhhdCB3ZSBuZXZlciBkbyBH
Qy4KKyAgICAvLyBHQyBqZXR0aXNvbnMgQ29kZUJsb2NrcywgY2hhbmdlcyBDYWxsTGlua0luZm8g
ZXRjLiBhbmQgYnJlYWtzIGFzc3VtcHRpb24gZG9uZSBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY2Fs
bC4KKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0NGb3JBV2hpbGUoZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApOworCiAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5k
KCkgPT0gQ29kZUZvckNhbGwpOwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGw7CiAg
ICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZ2xv
YmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgY2FsbExpbmtJbmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2Vs
bCk7CkBAIC0xNTA3LDYgKzE1MjUsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGwKIAogSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZpcnR1YWxDYWxsLCBTbG93UGF0aFJldHVy
blR5cGUsIChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykpCiB7CisgICAgLy8gRHVyaW5nIGV4ZWN1
dGlvbiBvZiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uL2xpbmtQb2x5bW9ycGhpY0NhbGwsIHdlIHN0
cm9uZ2x5IGFzc3VtZSB0aGF0IHdlIG5ldmVyIGRvIEdDLgorICAgIC8vIEdDIGpldHRpc29ucyBD
b2RlQmxvY2tzLCBjaGFuZ2VzIENhbGxMaW5rSW5mbyBldGMuIGFuZCBicmVha3MgYXNzdW1wdGlv
biBkb25lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjYWxsLgorICAgIERlZmVyR0NGb3JBV2hpbGUg
ZGVmZXJHQ0ZvckFXaGlsZShnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKICAgICBKU0NlbGwq
IGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldpdGhG
dW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxlZUFz
RnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAppbmRleCA4YTk2YWJlODVlZGVmYmExNTUxMDkyNzQ2N2Q2YTM5OTllMTM1NGJlLi4wM2UyYWZh
ZDdmODcyYzI3ZTFkZjRhYjhiMTdkOWI4NmY5MzAxMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHkuaCIKQEAgLTEyMjMsNiArMTIyNCwxMSBAQCB2b2lkIGxpbmtGb3IoCiB7CiAgICAgQVNT
RVJUKCFjYWxsTGlua0luZm8uc3R1YigpKTsKIAorICAgIGlmIChjYWxsZWUtPmluaGVyaXRzPEpT
Qm91bmRGdW5jdGlvbj4odm0pICYmIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSA9
PSBDb2RlRm9yQ2FsbCAmJiBjYWxsTGlua0luZm8uYWxsb3dTdHVicygpKSB7CisgICAgICAgIGxp
bmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVy
YXRvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIC8vIE91ciBjYWxsZXIgbXVzdCBo
YXZlIGEgY2VsbCBmb3IgYSBjYWxsZWUuIFdoZW4gY2FsbGluZwogICAgIC8vIHRoaXMgZnJvbSBX
YXNtLCB3ZSBlbnN1cmUgdGhlIGNhbGxlZSBpcyBhIGNlbGwuCkBAIC0xMzQwLDE2ICsxMzQ2LDEw
MSBAQCBzdHJ1Y3QgQ2FsbFRvQ29kZVB0ciB7CiB9OwogfSAvLyBhbm5vbnltb3VzIG5hbWVzcGFj
ZQogCitzdGF0aWMgdm9pZCBnZW5lcmF0ZUlubGluZWRCb3VuZEZ1bmN0aW9uQ2FsbChWTSYgdm0s
IENDYWxsSGVscGVycyYgaml0LCBKU0JvdW5kRnVuY3Rpb24qIGZ1bmN0aW9uLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3sKKyAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKworICAgIC8v
IFNldCB1cCBvdXIgY2FsbCBmcmFtZS4KKyAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSk7CisgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMCksIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CisKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdz
ID0gZnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgIHVuc2lnbmVkIGNhbGxTaXRlQXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCk7CisgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsU2l0ZUFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgKGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3Ro
KCkgOiAwKTsKKyAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0gMDsKKyAgICB1bnNpZ25lZCBu
dW1GaXh1cENvdW50ID0gMDsKKworICAgIEpTRnVuY3Rpb24qIHRhcmdldEZ1bmN0aW9uID0ganND
YXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSk7CisgICAgRXhlY3V0
YWJsZUJhc2UqIHRhcmdldEV4ZWN1dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgp
OworICAgIGlmICh0YXJnZXRFeGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiB0YXJnZXRDb2RlQmxvY2sgPSBqc0Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4odGFyZ2V0RXhlY3V0YWJsZSktPmNvZGVCbG9ja0ZvckNhbGwoKTsKKyAg
ICAgICAgbnVtUGFyYW1ldGVycyA9IHRhcmdldENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOwor
ICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA+IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQor
ICAgICAgICAgICAgbnVtRml4dXBDb3VudCA9IG51bVBhcmFtZXRlcnMgLSBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpczsKKyAgICB9CisgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXNBZnRlckZpeHVwID0gc3RkOjptYXg8dW5zaWduZWQ+KGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBudW1QYXJhbWV0ZXJzKTsKKworICAgIC8vIFRoZSBmb3JtdWxhIGZvciB0aGUgbnVt
YmVyIG9mIHN0YWNrIGJ5dGVzIG5lZWRlZCBnaXZlbiBzb21lIG51bWJlciBvZiBwYXJhbWV0ZXJz
IChpbmNsdWRpbmcKKyAgICAvLyB0aGlzKSBpczoKKyAgICAvLworICAgIC8vICAgICBzdGFja0Fs
aWduKChudW1QYXJhbXMgKyBDYWxsRnJhbWVIZWFkZXJTaXplKSAqIHNpemVvZihSZWdpc3Rlcikg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpCisgICAgLy8KKyAgICAvLyBQcm9iYWJseSB3ZSB3
YW50IHRvIHdyaXRlIHRoaXMgYXM6CisgICAgLy8KKyAgICAvLyAgICAgc3RhY2tBbGlnbigobnVt
UGFyYW1zICsgKENhbGxGcmFtZUhlYWRlclNpemUgLSBDYWxsZXJGcmFtZUFuZFBDU2l6ZSkpICog
c2l6ZW9mKFJlZ2lzdGVyKSkKKyAgICAvLworICAgIC8vIFRoYXQncyByZWFsbHkgYWxsIHRoZXJl
IGlzIHRvIHRoaXMuIFdlIGhhdmUgYWxsIHRoZSByZWdpc3RlcnMgd2UgbmVlZCB0byBkbyBpdC4K
KworICAgIHVuc2lnbmVkIGV4dHJhU3RhY2tOZWVkZWQgPSAwOworICAgIGlmICh1bnNpZ25lZCBz
dGFja01pc2FsaWdubWVudCA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAlIHN0YWNrQWxpZ25t
ZW50Qnl0ZXMoKSkKKyAgICAgICAgZXh0cmFTdGFja05lZWRlZCA9IHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSAtIHN0YWNrTWlzYWxpZ25tZW50OworCisgICAgdW5zaWduZWQgc3RhY2tTaXplID0gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIChDYWxsRnJh
bWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lz
dGVycykgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0FmdGVyRml4dXApICsgZXh0cmFTdGFj
a05lZWRlZDsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0oc3Rh
Y2tTaXplICogc2l6ZW9mKFJlZ2lzdGVyKSkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBzdGFja092ZXJmbG93ID0gaml0LmJy
YW5jaFB0cihDQ2FsbEhlbHBlcnM6OkFib3ZlLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyh2bS5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6cmVnVDIpOworCisgICAg
aml0Lm1vdmUoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisKKyAgICB1bnNp
Z25lZCBpbmRleEluQXJndW1lbnRzID0gMDsKKyAgICBqaXQuc3RvcmVUcnVzdGVkVmFsdWUoZnVu
Y3Rpb24tPmJvdW5kVGhpcygpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdChpbmRl
eEluQXJndW1lbnRzKyspKTsKKyAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgpCisg
ICAgICAgICAgICBqaXQuc3RvcmVUcnVzdGVkVmFsdWUoYm91bmRBcmdzLT5nZXQoaW5kZXgpLCBD
Q2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdChpbmRleEluQXJndW1lbnRzKyspKTsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2
YWlsYWJsZVJlZ3MoR1BSSW5mbzo6cmVnVDQsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gLyogY2FsbHNpdGUncyB8dGhpc3wgaXMgbm90IGludGVyZXN0aW5nICov
IDE7IGluZGV4IDwgY2FsbFNpdGVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkg
eworICAgICAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaW5kZXgpKSwgdmFsdWVSZWdzKTsKKyAg
ICAgICAgaml0LnN0b3JlVmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3Vt
ZW50U2xvdChpbmRleEluQXJndW1lbnRzKyspKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBudW1GaXh1cENvdW50OyArK2luZGV4KQorICAgICAgICBqaXQu
c3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1
bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisKKyAgICBqaXQuc3RvcmVUcnVzdGVkVmFs
dWUodGFyZ2V0RnVuY3Rpb24sIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpOworICAgIGF1dG8gZnVuY3Rpb25DYWxsID0gaml0LmNhbGwoSlNFbnRy
eVB0clRhZyk7CisgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBGdW5jdGlvblB0cjxK
U0VudHJ5UHRyVGFnPih0YXJnZXRFeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgp
LT5hZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpKSk7CisgICAgfSk7CisKKyAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICBqaXQucmV0KCk7CisKKyAgICAvLyBU
aHJvdyBTdGFjayBPdmVyZmxvdyBleGNlcHRpb24KKyAgICBzdGFja092ZXJmbG93LmxpbmsoJmpp
dCk7CisgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHZtLnRvcEVudHJ5RnJhbWUpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihmdW5jdGlvbi0+c2NvcGUoKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1
bmspPihHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
KyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7
Cit9CisKK3N0cnVjdCBJbmxpbmVkQ2FsbGVlIHsKKyAgICBzaXplX3QgY2FzZUluZGV4OworICAg
IENDYWxsSGVscGVyczo6TGFiZWwgZW50cnlwb2ludDsKK307CisKIHZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENhbGxWYXJpYW50IG5ld1ZhcmlhbnQpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvLmFsbG93U3R1YnMoKSk7CiAKICAgICBD
YWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLQotICAgIC8vIER1cmluZyBleGVjdXRpb24gb2Yg
bGlua1BvbHltb3JwaGljQ2FsbCwgd2Ugc3Ryb25nbHkgYXNzdW1lIHRoYXQgd2UgbmV2ZXIgZG8g
R0MuCi0gICAgLy8gR0MgamV0dGlzb25zIENvZGVCbG9ja3MsIGNoYW5nZXMgQ2FsbExpbmtJbmZv
IGV0Yy4gYW5kIGJyZWFrcyBhc3N1bXB0aW9uIGRvbmUgYmVmb3JlIGFuZCBhZnRlciB0aGlzIGNh
bGwuCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxlKHZtLmhlYXApOworICAg
IEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7CiAgICAgCiAgICAgaWYgKCFuZXdWYXJpYW50
KSB7CiAgICAgICAgIGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5mbyk7
CkBAIC0xMzkyLDYgKzE0ODMsMTEgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAKICAg
ICBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4gY2FsbENhc2VzOwogICAgIFZlY3RvcjxpbnQ2
NF90PiBjYXNlVmFsdWVzOworCisgICAgYXV0byBpc0xpbmthYmxlQm91bmRGdW5jdGlvbiA9IFsm
XShDYWxsVmFyaWFudCYgdmFyaWFudCkgeworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IHZhcmlhbnQuZnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICYmIGZ1bmN0aW9u
LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZnVuY3Rpb24pLT50YXJnZXRGdW5jdGlvbigpLT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkg
JiYgIWNhbGxMaW5rSW5mby5pc1ZhcmFyZ3MoKTsKKyAgICB9OwogICAgIAogICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hhdCBvdXIgY2FzZXMgYXJlLgogICAgIGZvciAoQ2FsbFZhcmlhbnQgdmFyaWFudCA6
IGxpc3QpIHsKQEAgLTE0MDUsNiArMTUwMSwxMiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAog
ICAgICAgICAgICAgICAgIGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5m
byk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgaWYgKGlzTGlua2FibGVCb3VuZEZ1bmN0aW9uKHZhcmlhbnQpKSB7CisgICAgICAgICAgICAv
LyBXZSBsaW5rIHRoZSBjYWxsIHRvIHRoZSB0YXJnZXQgZnVuY3Rpb24sIHNvIHdlIG5lZWQgdG8g
cmV0cmlldmUgQ29kZUJsb2NrIGZyb20gdGhlIHRhcmdldCBmdW5jdGlvbi4KKyAgICAgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihqc0Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKS0+dGFyZ2V0RnVuY3Rpb24oKSk7
CisgICAgICAgICAgICBFeGVjdXRhYmxlQmFzZSogdGFyZ2V0RXhlY3V0YWJsZSA9IHRhcmdldEZ1
bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgICAgICBpZiAoIXRhcmdldEV4ZWN1dGFibGUt
PmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KHRhcmdldEV4ZWN1dGFibGUpLT5jb2RlQmxvY2tGb3JDYWxsKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBpbnQ2NF90IG5ld0Nhc2VWYWx1ZSA9IDA7CkBAIC0xNTIz
LDYgKzE2MjUsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBoYXNFeGVjdXRh
YmxlLmxpbmsoJnN0dWJKaXQpOwogICAgIH0KIAorICAgIFZlY3RvcjxJbmxpbmVkQ2FsbGVlPiBp
bmxpbmVkQ2FsbGVlczsKICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKGNvbXBhcmlzb25W
YWx1ZUdQUiwgY2FzZVZhbHVlcywgQmluYXJ5U3dpdGNoOjpJbnRQdHIpOwogICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZG9uZTsKICAgICB3aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uoc3R1
YkppdCkpIHsKQEAgLTE1MzQsNyArMTYzNywxNCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAog
ICAgICAgICBpZiAodmFyaWFudC5leGVjdXRhYmxlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCh2
YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNvZGVQdHIgPSBqc1RvV2FzbUlDQ29kZVB0cih2bSwgY2FsbExpbmtJbmZv
LnNwZWNpYWxpemF0aW9uS2luZCgpLCB2YXJpYW50LmZ1bmN0aW9uKCkpOworICAgICAgICAgICAg
aWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdmFyaWFudC5mdW5jdGlvbigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzTGlua2FibGVCb3VuZEZ1bmN0aW9uKHZhcmlhbnQpKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIEVtaXQgaW5saW5lZCBKU0JvdW5kRnVuY3Rpb24gY2FsbCBpZiBKU0Jv
dW5kRnVuY3Rpb24ncyB0YXJnZXQgZnVuY3Rpb24gaXMgSlNGdW5jdGlvbiwgYW5kIGl0IGlzIG5v
dCBjYWxsX3ZhcmFyZ3MKKyAgICAgICAgICAgICAgICAgICAgaW5saW5lZENhbGxlZXMuYXBwZW5k
KElubGluZWRDYWxsZWUgeyBjYXNlSW5kZXgsIENDYWxsSGVscGVyczo6TGFiZWwoKSB9KTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ciA9IGpzVG9X
YXNtSUNDb2RlUHRyKHZtLCBjYWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCksIGZ1bmN0
aW9uKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCFjb2RlUHRyKQogICAgICAg
ICAgICAgICAgIGNvZGVQdHIgPSB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKTsKICAgICAg
ICAgfSBlbHNlIHsKQEAgLTE1NTgsNiArMTY2OCwyMSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0Nh
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENh
bAogICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNvZGVQdHIgPSBjb2RlUHRyOwogICAgICAgICBk
b25lLmFwcGVuZChzdHViSml0Lmp1bXAoKSk7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBpbmxp
bmVkIDogaW5saW5lZENhbGxlZXMpIHsKKyAgICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGlubGlu
ZWQuY2FzZUluZGV4OworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nh
c2VJbmRleF0udmFyaWFudCgpOworICAgICAgICBpbmxpbmVkLmVudHJ5cG9pbnQgPSBzdHViSml0
LmxhYmVsKCk7CisKKyAgICAgICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpKTsKKyAgICAg
ICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKTsKKyAg
ICAgICAgQVNTRVJUKHZhcmlhbnQuZnVuY3Rpb24oKSk7CisgICAgICAgIEFTU0VSVCh2YXJpYW50
LmZ1bmN0aW9uKCktPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKTsKKyAgICAgICAgQVNT
RVJUKGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih2YXJpYW50LmZ1bmN0aW9uKCkpLT50YXJnZXRG
dW5jdGlvbigpLT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpOworICAgICAgICBBU1NFUlQoIWNh
bGxMaW5rSW5mby5pc1ZhcmFyZ3MoKSk7CisKKyAgICAgICAgZ2VuZXJhdGVJbmxpbmVkQm91bmRG
dW5jdGlvbkNhbGwodm0sIHN0dWJKaXQsIGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih2YXJpYW50
LmZ1bmN0aW9uKCkpLCBjYWxsRnJhbWUpOworICAgIH0KICAgICAKICAgICBzbG93UGF0aC5saW5r
KCZzdHViSml0KTsKICAgICBiaW5hcnlTd2l0Y2guZmFsbFRocm91Z2goKS5saW5rKCZzdHViSml0
KTsKQEAgLTE1OTAsNiArMTcxNSw5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAgICAgICAg
IGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlubGluZWQgOiBpbmxpbmVkQ2Fs
bGVlcykKKyAgICAgICAgY2FsbHNbaW5saW5lZC5jYXNlSW5kZXhdLmNvZGVQdHIgPSBwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KGlubGluZWQuZW50cnlwb2ludCk7CiAgICAg
CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbENhc2VzLnNpemUoKSA9PSBjYWxscy5zaXplKCkpOwog
ICAgIGZvciAoQ2FsbFRvQ29kZVB0ciBjYWxsVG9Db2RlUHRyIDogY2FsbHMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA1MWYwM2I5YzFm
NTkxOTBmOWQ5OTg0YWZjYmIxNWI5MGI1YTE3Y2U3Li5mODA2NTI5MjFmMTY5NTg3ZmY2ZTA0N2E2
OTM5NTBjYWY4OTQxODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCkBAIC0xMTg5LDcgKzExODksNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2bSkKICAgICBh
dXRvIG5vQXJncyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5m
bzo6cmVnVDIpOwogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QyLCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSksIEdQ
UkluZm86OnJlZ1QyKTsKICAgICBqaXQuYWRkMzIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJl
Z1QxKTsKLSAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUklu
Zm86OnJlZ1QxKTsKICAgICBub0FyZ3MubGluaygmaml0KTsKICAgICBqaXQuYWRkMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBD
YWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMpLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDIpOwogICAgIGppdC5sc2hpZnQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigz
KSwgR1BSSW5mbzo6cmVnVDIpOwpAQCAtMTI0OCw3ICsxMjQ3LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0p
CiAKICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGxvb3BCb3VuZCA9IGppdC5sYWJlbCgpOwogICAg
IGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEp
OwotICAgIGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIEpTSW1tdXRhYmxl
QnV0dGVyZmx5OjpvZmZzZXRPZkRhdGEoKSArIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
KSwgdmFsdWVSZWdzKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QmFzZUluZGV4
KEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0
LCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkpLCB2YWx1ZVJlZ3MpOwogICAg
IGppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNs
b3QoMSkuaW5kZXhlZEJ5KEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQp
KTsKICAgICBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6
cmVnVDEpLmxpbmtUbyhsb29wQm91bmQsICZqaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDA5ZDBhOTMwYWMy
NDQyNTI5MzkyMGJjZmQ3OWU3ZmQ1MTdhMzhlMy4uMTQzYzE0ODg0YzhlMTY1NzY3MjU2ZGM4ZmI4
ZDA4ODg3ODU4MDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgbWFjcm8gc2xvd1Bh
dGhPcChvcGNvZGVOYW1lKQogZW5kCiAKIHNsb3dQYXRoT3AoY3JlYXRlX2Nsb25lZF9hcmd1bWVu
dHMpCi1zbG93UGF0aE9wKGNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5KQorc2xvd1BhdGhPcChj
cmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcykKIHNsb3dQYXRoT3AoY3Jl
YXRlX2RpcmVjdF9hcmd1bWVudHMpCiBzbG93UGF0aE9wKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KQogc2xvd1BhdGhPcChjcmVhdGVfcmVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDgyZjNlY2IwODYzYjNkYWEwNTc0
ZDVkOGQ4NDlkMjlkMzAyOWU5YTUuLjY3MGE0YTRhNGU1YzVlNDI1YmVhOTg3OTBmZWU2MDU0YjU0
MzdmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0lu
dGVybmFsUHJvbWlzZS5oIgpAQCAtMjA2LDE2ICsyMDcsMzggQEAgSlNDX0RFRklORV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKICAgICBSRVRVUk4o
Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRoTWFjaGluZUZyYW1lKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBBcmd1bWVudHNNb2RlOjpDbG9uZWQpKTsKIH0KIAotSlNDX0RFRklORV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKK0pTQ19ERUZJ
TkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlf
ZXhjbHVkaW5nX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzPigpOworICAgIEpT
Q2VsbCogdGFyZ2V0ID0gR0VUKGJ5dGVjb2RlLm1fdGFyZ2V0KS5qc1ZhbHVlKCkuYXNDZWxsKCk7
CiAgICAgaW50MzJfdCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7
Ci0gICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVy
Zmx5Ojp0cnlDcmVhdGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJ
bmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51
bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpLCBhcmd1bWVudENvdW50KTsKKyAgICBBU1NFUlQo
YXJndW1lbnRDb3VudCA+IDEpOworCisgICAgQ2hlY2tlZEludDMyIHRvdGFsQ291bnQgPSBhcmd1
bWVudENvdW50IC0gMTsKKyAgICBpbnQzMl90IGFkZGl0aW9uYWxDb3VudCA9IDA7CisgICAgSlNJ
bW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IG51bGxwdHI7CisgICAgaWYgKHRhcmdldC0+
aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAg
ICAgIGlmIChib3VuZEZ1bmN0aW9uLT5jYW5DbG9uZUJvdW5kQXJncygpKSB7CisgICAgICAgICAg
ICBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAgICAgICAgIGFk
ZGl0aW9uYWxDb3VudCA9IGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwOworICAg
ICAgICAgICAgdG90YWxDb3VudCArPSBhZGRpdGlvbmFsQ291bnQ7CisgICAgICAgICAgICBpZiAo
dG90YWxDb3VudC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICAgICAgVEhST1coY3JlYXRl
T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6
dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhG
cm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJP
ZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgdG90YWxDb3VudC51bnNhZmVHZXQoKSk7CiAgICAgaWYg
KCFidXR0ZXJmbHkpCiAgICAgICAgIFRIUk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFs
T2JqZWN0KSk7Ci0gICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENv
dW50OyArK2luZGV4KQotICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpbmRleCkpOworICAgIGlmIChhZGRpdGlvbmFsQ291
bnQpIHsKKyAgICAgICAgQVNTRVJUKGJvdW5kQXJncyk7CisgICAgICAgIGZvciAoaW50MzJfdCBp
bmRleCA9IDA7IGluZGV4IDwgYWRkaXRpb25hbENvdW50OyArK2luZGV4KQorICAgICAgICAgICAg
YnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgsIGJvdW5kQXJncy0+Z2V0KGluZGV4KSk7Cisg
ICAgfQorICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgKGFyZ3VtZW50Q291bnQg
LSAxKTsgKytpbmRleCkKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXggKyBh
ZGRpdGlvbmFsQ291bnQsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaW5kZXggKyAxKSk7
CiAgICAgUkVUVVJOKGJ1dHRlcmZseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggODRlMmRhNWY3YWI2OGE2MjYyNDg1Y2I4
Y2M0M2Y4MDU3MTQ4YzQ3MS4uOTg4ODUxNjkwZjIwN2FlMDljZGE4OTk0MzcxNzA0YTZjZTdkZTAx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKQEAgLTIxMCw3ICsyMTAsNyBAQCBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3df
cGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyk7CiBKU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyk7CiBKU0NfREVDTEFS
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cyk7Ci1K
U0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1
dHRlcmZseSk7CitKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xP
V19QQVRIKHNsb3dfcGF0aF9lbnRlcik7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF90b190aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IGRkZThmMDlhNTk3YTg5MTNmMzk4NDJiZmY0MmNhMTEw
NGVhYTIxNTIuLmQ0Zjc4ZjQ3MDI3YTJhOGEwODY5MWVmMzJmZTA5YjNhZDUyMTViNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApA
QCAtNDEsOCArNDEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9Bcmdz
RnVuY3Rpb25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0
cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAg
ICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtNzAsOCAr
NjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNhbGwsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEg
c2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFw
cGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtOTUsOCArOTMsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3Qs
IChKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
ICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhl
IGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBi
b3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3Vu
ZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtMTIzLDggKzEyMCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihib3VuZEZ1bmN0aW9uQ29uc3RydWN0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYg
KGJvdW5kQXJncykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBv
bmUgaXMgfHRoaXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRB
cmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5n
ZXQoaSkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCk7ICsraSkKQEAgLTIzNCw4ICsyMzAsNyBAQCBKU0FycmF5KiBKU0JvdW5k
RnVuY3Rpb246OmJvdW5kQXJnc0NvcHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KHRoaXMtPmdsb2JhbE9iamVj
dCgpLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
ICAgICBpZiAobV9ib3VuZEFyZ3MpIHsKLSAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0
aGUgZmlyc3Qgb25lIGlzIGJvdW5kIHx0aGlzfC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8IG1fYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAg
cmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgbV9ib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAppbmRleCA0
YTkwYjAyMmRkMzBmNjQwNjczMWIwZjFkYTkyOTZhMjc3YzVjNjg3Li4xN2FhODRjZmZlMTU3Y2Jh
ODZjZjkyZDhhY2M1OWY2NzY5Y2FkMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJm
bHkuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQyLDYgKzQzLDggQEAgY2xhc3MgSlNCb3Vu
ZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyAmIH5JbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOwogICAgIHN0YXRpY19hc3NlcnQoU3RydWN0dXJlRmxh
Z3MgJiBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsICIiKTsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbWF4TnVtYmVyT2ZDbG9uaW5nQm91bmRBcmd1bWVudHMgPSA2NDsKKwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKQEAgLTUyLDkgKzU1LDE2
IEBAIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAg
ICAKICAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CiAKKyAgICAvLyBJZiBib3VuZEFyZ3MnIGxlbmd0aCBpcyB0b28g
bGFyZ2UsIHdlIHNob3VsZCBub3QgY2xvbmUgYm91bmRBcmdzIHdoZW4gd3JhcHBpbmcgdGhlIGJv
dW5kIGZ1bmN0aW9uIGFnYWluLgorICAgIGJvb2wgY2FuQ2xvbmVCb3VuZEFyZ3MoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJvdW5kQXJnc0xlbmd0aCgpIDw9IEpTQm91bmRGdW5jdGlv
bjo6bWF4TnVtYmVyT2ZDbG9uaW5nQm91bmRBcmd1bWVudHM7CisgICAgfQorCiAgICAgSlNPYmpl
Y3QqIHRhcmdldEZ1bmN0aW9uKCkgeyByZXR1cm4gbV90YXJnZXRGdW5jdGlvbi5nZXQoKTsgfQog
ICAgIEpTVmFsdWUgYm91bmRUaGlzKCkgeyByZXR1cm4gbV9ib3VuZFRoaXMuZ2V0KCk7IH0KICAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzKCkgeyByZXR1cm4gbV9ib3VuZEFyZ3Mu
Z2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRoaXMgYXJyYXkgdG8gYmUgbXV0YXRlZCEKKyAgICB1
bnNpZ25lZCBib3VuZEFyZ3NMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQXJncyA/IG1f
Ym91bmRBcmdzLT5sZW5ndGgoKSA6IDA7IH0KICAgICBKU0FycmF5KiBib3VuZEFyZ3NDb3B5KEpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgSlNTdHJpbmcqIG5hbWVNYXlCZU51bGwoKSB7IHJldHVybiBt
X25hbWVNYXlCZU51bGwuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWVTdHJpbmcoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDBhNjE2NzEzZTZkYzZjZDVlYTc5OGVlYzQ2ZDFhNTQ2YzdhZTMyYTguLjE1MmFkODVmMzUx
MWYxN2JhNGJmMTk3MjBiNDRlMzZiMTBmN2ZiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwMCwxMCArMzAwLDIyIEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihtYWtlQm91bmRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEpTVmFsdWUgYm91bmRUaGlzID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBKU1ZhbHVlIGJvdW5kQXJncyA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CisgICAgSlNJbW11dGFibGVCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IGJvdW5kQXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1
dHRlcmZseSo+KGJvdW5kQXJncykgOiBudWxscHRyOwogICAgIGRvdWJsZSBsZW5ndGggPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDMpLmFzTnVtYmVyKCk7CiAgICAgSlNTdHJpbmcqIG5h
bWVTdHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKTsKIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFy
Z3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihib3VuZEFyZ3MpIDog
bnVsbHB0ciwgbGVuZ3RoLCBuYW1lU3RyaW5nKSkpOworICAgIC8vIFVud3JhcCBKU0JvdW5kRnVu
Y3Rpb24gYnkgY29uZmlndXJpbmcgYnV0dGVyZmx5IGFuZCB0YXJnZXQuIFRoZSBsYXJnZXIgQnV0
dGVyZmx5IGlzIGFscmVhZHkgYWxsb2NhdGVkIGZvciB0aGF0IHB1cnBvc2UuCisgICAgaWYgKHRh
cmdldC0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1
bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7
CisgICAgICAgIGlmIChib3VuZEZ1bmN0aW9uLT5jYW5DbG9uZUJvdW5kQXJncygpKSB7CisgICAg
ICAgICAgICBib3VuZFRoaXMgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKTsKKyAgICAgICAg
ICAgIHRhcmdldCA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7CisgICAgICAgICAg
ICBpZiAoIWJ1dHRlcmZseSAmJiBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkKKyAgICAgICAg
ICAgICAgICBidXR0ZXJmbHkgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRU
aGlzLCBidXR0ZXJmbHksIGxlbmd0aCwgbmFtZVN0cmluZykpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBkZTA1ODFkNDZiZjYwNGJiNzk1YWQzYTYy
MTUwOWU0NTllN2JlYTgwLi4zMzczYTBjODMwOTUyNjFmMGM0NGVmNThmZWJlNzRmZDkwNWU4MmZm
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUyIEBACisyMDIxLTA1LTAxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gT3B0aW1pemUgYm91bmQgZnVuY3Rpb24gY2FsbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTEzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2Jv
dW5kLWZ1bmN0aW9uLWlubGluaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAodCk6CisgICAgICAgICogc3RyZXNzL2JvdW5kLWZ1bmN0
aW9uLXN0YWNrLW92ZXJmbG93LmpzOgorICAgICAgICAqIHN0cmVzcy9ib3VuZC1mdW5jdGlvbi1z
dHJlbmd0aC1yZWR1Y3Rpb24uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgICh0MSk6CisgICAgICAgICh0Mik6CisgICAgICAgICogc3RyZXNz
L2Z1bmN0aW9uLWJpbmQtY2FsbGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKGlubGluZWQpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtZG8tbm90LW1pc3MtYWxyZWFkeS1ib3VuZC1hcmdzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlv
bi1iaW5kLWRvdWJsZS13cmFwLXRocm93LW1vcmUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAodGhyb3dhYmxlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoY2F0
Y2gpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRocm93YWJsZSk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24t
YmluZC1pbmxpbmVkLW9zci1leGl0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKG1heUV4aXQpOgorICAgICAgICAoaW5saW5lZCk6CisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC10aHJvdy5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgICh0aHJvd2FibGUpOgorICAgICAgICAoaW5uZXIpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL3NhbXBsaW5nLXBy
b2ZpbGVyLWJvdW5kLWZ1bmN0aW9uLW5hbWUuanM6CisgICAgICAgIChwbGF0Zm9ybVN1cHBvcnRz
U2FtcGxpbmdQcm9maWxlcik6CisgICAgICAgICogc3RyZXNzL3N0YWNrLW92ZXJmbG93LWluLWN1
c3RvbS1oYXNJbnN0YW5jZS5qczoKKwogMjAyMS0wNC0yOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IGV4Y2VwdGlvbiBhc3NlcnRpb25zIGluIGxpZ2h0IG9m
IHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Jv
dW5kLWZ1bmN0aW9uLWlubGluaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24t
aW5saW5pbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M1MDViMWZlNzIyMzllNmJjZmQ3MjA5YjUzMDMwYjgw
ZGMxY2IyZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9u
LWlubGluaW5nLmpzCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KGEs
IGIsIGMpIHsKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQorCit2YXIgYm91bmQgPSB0ZXN0LmJp
bmQoMCwgMSk7CisKK2Z1bmN0aW9uIHQoKSB7CisgICAgcmV0dXJuIGJvdW5kKDIsIDMsIDQpOwor
fQorbm9JbmxpbmUodCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3Vs
ZEJlKHQoKSwgNik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1z
dGFjay1vdmVyZmxvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0YWNrLW92
ZXJmbG93LmpzCmluZGV4IGYxODIyZTFlYTY5YjU2NThiYjQ3ZDgwOGMwNmNmNGQ5NzhjYzE3N2Eu
LjgyYWJlMzEwYjFiYzdkYmMwMTAwYTcxYTQwZGQ0ZGZlZDEwYWY5YTUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0YWNrLW92ZXJmbG93LmpzCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0YWNrLW92ZXJmbG93LmpzCkBAIC04LDggKzgsOCBA
QCBmdW5jdGlvbiBmb28oKQogewogfQogCi1mb3IgKHZhciBpID0gMDsgaSA8IDUwMDA7ICsraSkg
ewotICAgIGZvbyA9IGZvby5iaW5kKDEpOworZm9yICh2YXIgaSA9IDA7IGkgPCA2MDAwOyArK2kp
IHsKKyAgICBmb28gPSBmb28uYmluZCh1bmRlZmluZWQsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgs
IDksIDEwLCAxMSk7CiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIm5hbWUiLCB7IHZh
bHVlOiAiYmFyIiwgd3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIHdyaXRhYmxlOiB0
cnVlIH0pOwogfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1z
dHJlbmd0aC1yZWR1Y3Rpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdHJl
bmd0aC1yZWR1Y3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTMzNzg2ZDJlYmY5YTU5ZDgxM2QzY2IyNTU0
MmIwMTYxNmYzYzg3ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1
bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcwpAQCAtMCwwICsxLDI3IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gdGVzdChhLCBiLCBjKSB7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KK25vSW5s
aW5lKHRlc3QpOworCit2YXIgYm91bmQgPSB0ZXN0LmJpbmQoMCwgMSk7Citub0lubGluZShib3Vu
ZCk7CisKK2Z1bmN0aW9uIHQxKCkgeworICAgIHJldHVybiBib3VuZCgyLCAzLCA0KTsKK30KK25v
SW5saW5lKHQxKTsKKworZnVuY3Rpb24gdDIoKSB7CisgICAgcmV0dXJuIGJvdW5kKCdoZWxsbycp
OworfQorbm9JbmxpbmUodDIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7Cisg
ICAgc2hvdWxkQmUodDEoKSwgNik7CisgICAgc2hvdWxkQmUodDIoKSwgIjFoZWxsb3VuZGVmaW5l
ZCIpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1jYWxsZXIu
anMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGxlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MzhlOWZlMjM0MDBiOTU2ZTMwMGQzYmExYmE2YWY3MGNlYmRlMzEwCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1jYWxsZXIuanMKQEAgLTAsMCArMSwyMCBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK2Z1bmN0aW9uIGlubGluZWQoYSwgYiwgYykKK3sKKyAgICBzaG91bGRCZShp
bmxpbmVkLmNhbGxlciwgdGVzdCk7Cit9CisKK3ZhciBib3VuZCA9IGlubGluZWQuYmluZCh1bmRl
ZmluZWQsIDMpLmJpbmQodW5kZWZpbmVkLCAxLCAyKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmV0dXJuIGJvdW5kKCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTQ7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9m
dW5jdGlvbi1iaW5kLWRvLW5vdC1taXNzLWFscmVhZHktYm91bmQtYXJncy5qcyBiL0pTVGVzdHMv
c3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG8tbm90LW1pc3MtYWxyZWFkeS1ib3VuZC1hcmdzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMyNTc4ZjBkNDU0YWRlZTVkNTFlYjkyODhmMzMwZmFiMThmN2ZiMTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5vdC1taXNzLWFs
cmVhZHktYm91bmQtYXJncy5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24g
dGVzdChhLCBiLCBjKQoreworICAgIHJldHVybiBhICsgYiArIGM7Cit9Cit2YXIgYm91bmQxID0g
dGVzdC5iaW5kKHVuZGVmaW5lZCwgMCwgMSwgMik7Cit2YXIgYm91bmQyID0gYm91bmQxLmJpbmQo
dW5kZWZpbmVkKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRC
ZShib3VuZDIoKSwgMyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5k
LWRvdWJsZS13cmFwLXRocm93LW1vcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5k
LWRvdWJsZS13cmFwLXRocm93LW1vcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM4YzJhNzJkMWQ0NmNhNWRl
ZGFjZmExNjYzNDcwMzJiYWFlYTc5ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3ctbW9yZS5qcwpAQCAtMCwwICsxLDM0IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKwordmFyIGZsYWcgPSBmYWxzZTsKK2Z1bmN0aW9uIHRocm93YWJsZSgpCit7Cisg
ICAgaWYgKGZsYWcpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQorbm9JbmxpbmUodGhy
b3dhYmxlKTsKKworZnVuY3Rpb24gdGVzdChhLCBiKQoreworICAgIHRocm93YWJsZSgpOworICAg
IHJldHVybiBhICsgYjsKK30KKwordmFyIGJvdW5kID0gdGVzdC5iaW5kKHVuZGVmaW5lZCwgMSwg
Mik7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIHZhciBib3VuZCA9IGJvdW5k
LmJpbmQodW5kZWZpbmVkKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBz
aG91bGRCZShib3VuZCgpLCAzKTsKK2ZsYWcgPSB0cnVlOwordmFyIGVycm9yID0gbnVsbDsKK3Ry
eSB7CisgICAgYm91bmQoKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBlcnJvciA9IGU7Cit9CitzaG91
bGRCZShlcnJvciAhPT0gbnVsbCwgdHJ1ZSk7CitzaG91bGRCZShlcnJvci5zdGFjay50cmltKCku
c3BsaXQoJ1xuJykubGVuZ3RoLCAyKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1i
aW5kLWRvdWJsZS13cmFwLXRocm93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmZDllOGE1ZWI0NDEzYTI1Y2Vi
YTYxMDMzYTFkYjVmZWZhZTdiZjIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9m
dW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gdGhyb3dhYmxlKCkKK3sKKyAgICBpZiAo
ZmxhZykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9Citub0lubGluZSh0aHJvd2FibGUp
OworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7CisgICAgdGhyb3dhYmxlKCk7CisgICAgcmV0dXJu
IGEgKyBiOworfQordmFyIGJvdW5kMSA9IHRlc3QuYmluZCh1bmRlZmluZWQsIDEpOwordmFyIGJv
dW5kMiA9IGJvdW5kMS5iaW5kKHVuZGVmaW5lZCwgMik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU2OyArK2kpCisgICAgc2hvdWxkQmUoYm91bmQyKCksIDMpOworZmxhZyA9IHRydWU7Cit2YXIg
ZXJyb3IgPSBudWxsOwordHJ5IHsKKyAgICBib3VuZDIoKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBl
cnJvciA9IGU7Cit9CitzaG91bGRCZShlcnJvciAhPT0gbnVsbCwgdHJ1ZSk7CitzaG91bGRCZShl
cnJvci5zdGFjay50cmltKCkuc3BsaXQoJ1xuJykubGVuZ3RoLCAyKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtaW5saW5lZC1vc3ItZXhpdC5qcyBiL0pTVGVzdHMv
c3RyZXNzL2Z1bmN0aW9uLWJpbmQtaW5saW5lZC1vc3ItZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGFj
YTUwYTE1ZGI3M2EwNWQ1YjljYTMzNjQwNzhiNmU5M2VkNDRlCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9zci1leGl0LmpzCkBAIC0wLDAg
KzEsMzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gbWF5RXhpdCgp
Cit7CisgICAgaWYgKGZsYWcpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICByZXR1cm4g
MjQ7CisgICAgfQorICAgIHJldHVybiA0MjsKK30KKworZnVuY3Rpb24gaW5saW5lZChhLCBiLCBj
KQoreworICAgIHJldHVybiBhICsgYiArIGMgKyBtYXlFeGl0KCk7Cit9CisKK3ZhciBib3VuZCA9
IGlubGluZWQuYmluZCh1bmRlZmluZWQsIDEsIDIsIDMpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZXR1cm4gYm91bmQoKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHRlc3QoKSwgNDgpOworZmxhZyA9IHRydWU7
CitzaG91bGRCZSh0ZXN0KCksIDMwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtdGhyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE1M2Y2ZmU5OTk1NTk3ZmNkZDA5OWZkMjhhYWEwNWZkMDY2ZWIzNTcKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzCkBA
IC0wLDAgKzEsMzYgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gdGhy
b3dhYmxlKCkKK3sKKyAgICBpZiAoZmxhZykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJleHBl
Y3RlZCIpOworfQorbm9JbmxpbmUodGhyb3dhYmxlKTsKKworZnVuY3Rpb24gaW5uZXIoKQorewor
ICAgIHRocm93YWJsZSgpOworfQordmFyIGJvdW5kID0gaW5uZXIuYmluZCgxLCAyLCAzKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgYm91bmQoKTsKK30KK25vSW5saW5lKHRlc3QpOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHRlc3QoKTsKKwordmFyIGxlbmd0aCA9
IDA7Cit0cnkgeworICAgIGZsYWcgPSB0cnVlOworICAgIHRlc3QoKTsKK30gY2F0Y2ggKGVycm9y
KSB7CisgICAgbGVuZ3RoID0gZXJyb3Iuc3RhY2sudHJpbSgpLnNwbGl0KCdcbicpLmxlbmd0aDsK
K30KK3Nob3VsZEJlKGxlbmd0aCwgNCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zYW1w
bGluZy1wcm9maWxlci1ib3VuZC1mdW5jdGlvbi1uYW1lLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2Ft
cGxpbmctcHJvZmlsZXItYm91bmQtZnVuY3Rpb24tbmFtZS5qcwppbmRleCBmMzc3NjI5ODk1ODU2
NWQ5MDdjYjM1NjBjNmE3MzM5M2EwN2I2M2ZhLi45MzNhNzQ0NTljMTdhNDlkNmY1Y2I0N2Y2NzMx
ZjQwYTdmNWFlZDE3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxl
ci1ib3VuZC1mdW5jdGlvbi1uYW1lLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NhbXBsaW5nLXBy
b2ZpbGVyLWJvdW5kLWZ1bmN0aW9uLW5hbWUuanMKQEAgLTIzLDYgKzIzLDYgQEAgZnVuY3Rpb24g
YmFyKCkgewogICAgICAgICBib3VuZEJhcigpOwogICAgIH0KIAotICAgIHJ1blRlc3QoYmF6LCBb
ImZvbyIsICJib3VuZCBmb28iLCAiYmF6Il0pOwotICAgIHJ1blRlc3QoYmF6LCBbImJhciIsICJi
b3VuZCBiYXIiLCAiYmF6Il0pOworICAgIHJ1blRlc3QoYmF6LCBbImZvbyIsICJiYXoiXSk7Cisg
ICAgcnVuVGVzdChiYXosIFsiYmFyIiwgImJheiJdKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3N0YWNrLW92ZXJmbG93LWluLWN1c3RvbS1oYXNJbnN0YW5jZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3N0YWNrLW92ZXJmbG93LWluLWN1c3RvbS1oYXNJbnN0YW5jZS5qcwppbmRleCBjMWUy
ZWIwNjQ3MmNmOGUwOTEwOTcxNzUwYWQ3YWEzZWRjZDM3N2VlLi5jOThkMzE2YWQ1MTE2NDM3OTFj
OGE3OTQyNTRmMDE5YzkxNDY4YTMwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9zdGFjay1v
dmVyZmxvdy1pbi1jdXN0b20taGFzSW5zdGFuY2UuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3Rh
Y2stb3ZlcmZsb3ctaW4tY3VzdG9tLWhhc0luc3RhbmNlLmpzCkBAIC00LDcgKzQsNyBAQCBmdW5j
dGlvbiBmKCkge30KIAogdmFyIGZuID0gZjsKIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyAr
K2kpIHsKLSAgICBmbiA9IGZuLmJpbmQoKTsKKyAgICBmbiA9IGZuLmJpbmQodW5kZWZpbmVkLCAw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNik7
CiAKICAgICAvLyBFbnN1cmUgd2UgZG9uJ3QgZmFsbGJhY2sgdG8gQEBoYXNJbnN0YW5jZSBmcm9t
ICVGdW5jdGlvblByb3RvdHlwZSUuCiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBTeW1i
b2wuaGFzSW5zdGFuY2UsIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427494</attachid>
            <date>2021-05-01 03:20:34 -0700</date>
            <delta_ts>2021-05-01 12:03:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210501032033.patch</filename>
            <type>text/plain</type>
            <size>86104</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDkyNDhkYTZiYWNhOWM0NjZkMDQ4MTdmMjJhYmZiMjY1ZDZlNmE4Li5lMWI0ODRiNmI3MzM4ZjNk
NmMyMDUzMjEzNGY5YmYzZmIwYjllNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAyMS0wNS0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1bmN0aW9uIGNhbGxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG9wdGlt
aXplcyBGdW5jdGlvbiNiaW5kLgorCisgICAgICAgIDEuIEZ1bmN0aW9uI2JpbmQgYm91bmRBcmdz
IGRvIG5vdCBpbmNsdWRlIHx0aGlzfCwgd2hpY2ggaXMgZHVwbGljYXRlZCBpbiBib3VuZFRoaXMg
ZmllbGQuCisgICAgICAgIDIuIEZ1bmN0aW9uI2JpbmQgdW53cmFwcyBmdW5jdGlvbiB3aGVuIGJp
bmRpbmcgdGhlIGJvdW5kIGZ1bmN0aW9uLiBXZSBrZWVwIGRlcHRoIG9mIGJvdW5kIDEuCisgICAg
ICAgIDMuIENhbGxJQyBub3cgaW5saW5lcyBib3VuZCBmdW5jdGlvbiBpZiBpdCBpcyBub3QgYSBj
bG9zdXJlIGNhbGwuCisgICAgICAgIDQuIERGRyAvIEZUTCBhdHRlbXB0IHRvIGlubGluZSB3cmFw
cGVkIGZ1bmN0aW9uIGlmIGl0IGZpZ3VyZWQgb3V0IHRoYXQgYm91bmQgZnVuY3Rpb24gaXMgY2Fs
bGVkLgorICAgICAgICA1LiBERkcgLyBGVEwgYXR0ZW1wdCB0byBzcHJlYWQgYm91bmQgYXJndW1l
bnRzIGV2ZW4gaWYgd2UgZGVjaWRlZCBub3QgdG8gaW5saW5lIGEgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBidWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKGJpbmQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2Nh
bENsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
QWRhcHRvcjo6cmVhZFRvcCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9u
UGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0
ZWQuCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpHZXRTdGFja1RyYWNlRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6Omdl
bmVyYXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHlt
b3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAg
IChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgICog
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKwogMjAy
MS0wNC0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ug
c21hbGwgSklUIHBvb2wgdGVzdHMgcGFzcyBvbiBBUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4IGFmMjlhZmQ4MzU2Y2Fm
OWI3ZTk4ZjRiNjY3OTFhNDNhNTc0NDU5YWEuLjZiMjUzOTkwMTA3NzQ1ZmJlOWExNzFjYmMyZjJm
MjhkMDBmNjcyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9G
dW5jdGlvblByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTYxLDggKzYxLDcgQEAgZnVuY3Rpb24gYmluZCh0aGlz
VmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHRhcmdldCA9IHRoaXM7Ci0g
ICAgaWYgKCFAaXNDYWxsYWJsZSh0YXJnZXQpKQorICAgIGlmICghQGlzQ2FsbGFibGUodGhpcykp
CiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBhIGZ1bmN0aW9uIGluc2lk
ZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCIpOwogCiAgICAgdmFyIGFyZ3VtZW50Q291bnQgPSBA
YXJndW1lbnRDb3VudCgpOwpAQCAtNzAsMTIgKzY5LDEyIEBAIGZ1bmN0aW9uIGJpbmQodGhpc1Zh
bHVlKQogICAgIHZhciBudW1Cb3VuZEFyZ3MgPSAwOwogICAgIGlmIChhcmd1bWVudENvdW50ID4g
MSkgewogICAgICAgICBudW1Cb3VuZEFyZ3MgPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICAgICAg
Ym91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOworICAgICAgICBib3VuZEFy
Z3MgPSBAY3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KHRoaXMpOwogICAgIH0KIAogICAgIHZhciBs
ZW5ndGggPSAwOwotICAgIGlmIChAaGFzT3duTGVuZ3RoUHJvcGVydHkodGFyZ2V0KSkgewotICAg
ICAgICB2YXIgbGVuZ3RoVmFsdWUgPSB0YXJnZXQubGVuZ3RoOworICAgIGlmIChAaGFzT3duTGVu
Z3RoUHJvcGVydHkodGhpcykpIHsKKyAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0gdGhpcy5sZW5n
dGg7CiAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAg
ICAgICAgICBsZW5ndGhWYWx1ZSA9IEB0b0ludGVnZXJPckluZmluaXR5KGxlbmd0aFZhbHVlKTsK
ICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IGNhcmUgYWJvdXQgcG9zaXRpdmUgbGVu
Z3RoVmFsdWVzLCBob3dldmVyLCB0aGlzIGNvbXBhcmlzaW9uCkBAIC04NSw5ICs4NCw5IEBAIGZ1
bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgdmFyIG5hbWUg
PSB0YXJnZXQubmFtZTsKKyAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICBpZiAodHlwZW9m
IG5hbWUgIT09ICJzdHJpbmciKQogICAgICAgICBuYW1lID0gIiI7CiAKLSAgICByZXR1cm4gQG1h
a2VCb3VuZEZ1bmN0aW9uKHRhcmdldCwgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFt
ZSk7CisgICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0aGlzLCB0aGlzVmFsdWUsIGJvdW5k
QXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGNiMGU3YzhjOWJiYmExNGM1N2QyMmI0YmEyN2ViZmI5
ZDcyOTc3NmEuLjI2YWYwNmVmNDRhZmRiOGMyNzdiNWJkZDcxMWUwNDgxY2FhNjYyMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTEx
LDkgKzExMSwxMCBAQAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKLW9w
IDpjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSwKK29wIDpjcmVhdGVfYXJndW1lbnRzX2J1dHRl
cmZseV9leGNsdWRpbmdfdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICB0YXJnZXQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKIG9wIDpj
cmVhdGVfdGhpcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCmluZGV4IDAxNmEwMjdmYTMzYWI3OTQ5NDMxMmE0YTQ3N2RmYzViMmU3YTAw
ZDcuLjk0MzIwZTZlNDc5Y2EwY2MzYmZkZWY0MzkyYWViNGZiZjY4MjNhM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtOTIs
NyArOTIsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJl
Z2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfcHJvZmlsZV9j
b250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBj
YXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3Vt
ZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBv
cF9jaGVja190cmFwczoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKQEAgLTEwMyw2ICsxMDIs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVy
IHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgogICAg
ICAgICByZXR1cm47CiAKKyAgICBVU0VTKE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpcywgdGFyZ2V0KQogICAgIFVTRVMoT3BUb1RoaXMsIHNyY0RzdCkKICAgICBVU0VTKE9w
Q2hlY2tUZHosIHRhcmdldFZpcnR1YWxSZWdpc3RlcikKICAgICBVU0VTKE9wSWRlbnRpdHlXaXRo
UHJvZmlsZSwgc3JjRHN0KQpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1CiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BD
cmVhdGVTY29wZWRBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzLCBkc3QpCi0gICAgREVGUyhPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgZHN0KQorICAg
IERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBkc3QpCiAgICAg
REVGUyhPcERlbEJ5SWQsIGRzdCkKICAgICBERUZTKE9wRGVsQnlWYWwsIGRzdCkKICAgICBERUZT
KE9wVW5zaWduZWQsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNThlNTBkYTA5MjFiMjA5Zjll
YmVmZjJhYmRmM2IzM2VmZDU1YmQ4Yi4uMDEzMWNmMjg5ZmFhYjVkMDdkZTVhZDVkNWJlZjEzNDgx
MjlkMjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4NzMsOSArMjg3Myw5IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoUmVnaXN0ZXJJRCogZHN0
KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdGFyZ2V0KQog
ewotICAgIE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OjplbWl0KHRoaXMsIGRzdCk7CisgICAg
T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOjplbWl0KHRoaXMsIGRzdCwg
dGFyZ2V0KTsKICAgICByZXR1cm4gZHN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTUxMWRjMjc1
NTVkZTViODg0NDdlMzMzZjllMTY2MjVhODU2MjYxYy4uMzZiOGIwOTRkYjE3YmY1YTc5NmM3NWQy
YzQzYjg2MjY2ZWIxMDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzYxLDcgKzc2MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlUHJvbWlzZShSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCwgYm9vbCBpc0ludGVybmFsUHJvbWlzZSk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRl
QXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpOwot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KFJlZ2lzdGVy
SUQqIGRzdCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY291bnQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZOZWVkZWQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3RvciwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0
ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggM2NiZDEyMDk5ZTg1YjBiNDI2MjA4MGE0M2EzNWRlODFmMmJkNTdiOS4u
ZjQyMjNkOTI2YWI2N2YxMGZiNzQ0YTBjMzE3ODNhMjMyNjhhNWNmNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTkz
Myw4ICsxOTMzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfbmV3UHJvbWlzZShKU0M6OkJ5dGVjb2RlR2VuZXJhCiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBk
c3QpCiB7Ci0gICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUpOwotICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpKTsKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhZGRpdGlvbmFsQ291bnQgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMoZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYWRkaXRpb25hbENvdW50LmdldCgpKTsKIH0KIAog
I2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9S
UyhuYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZmE5ZDlmYTBiYmZiMDZkYjZkNjIwMTI3
NWNmYzY2MzQxMTA5Yjk5Ni4uMjZiMzUzOGIyNjQ0YThmNDQ5MmJhNjEyZThkNDAyNTZhNWQxMjlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzIzMCw3ICszMjMwLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVy
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAg
ICAgIHNldEZvck5vZGUobm9kZSwgbV92bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2Fy
cmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykg
LSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGY3
ZWU0NmI0NmFhZDMwYTI3YmY2YjM2ZWEyNDcyMjliNWJjYTNkNGQuLjBiOTIwNWNiMDYxOTFmNGQ0
MGQ5Yzc5YWZjNTNmYTE4N2U1MTk2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5C
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5zdGFuY2VPZlN0YXR1cy5oIgogI2luY2x1ZGUgIkpT
QXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1
ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCkBAIC0yMDEsNyArMjAyLDcgQEAgY2xhc3MgQnl0ZUNv
ZGVQYXJzZXIgewogICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3Bl
cmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBj
b250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAg
ICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2Vl
ZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBj
YWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgSW50cmlu
c2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Qnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlRE9N
SklUQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CkBAIC0xODg2LDEw
ICsxODg3LDEyIEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAgVkVSQk9TRV9MT0coIiAg
ICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKIAogICAgIGJvb2wgZGlkSW5z
ZXJ0Q2hlY2tzID0gZmFsc2U7Ci0gICAgYXV0byBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZyA9
IFsmXSAoKSB7CisgICAgYm9vbCBkaWRCb3VuZEZ1bmN0aW9uSW5saW5pbmcgPSBmYWxzZTsKKyAg
ICBhdXRvIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nID0gWyZdIChib29sIGJvdW5kRnVuY3Rp
b25JbmxpbmluZyA9IGZhbHNlKSB7CiAgICAgICAgIGlmIChuZWVkc1RvQ2hlY2tDYWxsZWUpCiAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBjYWxsVGFyZ2V0Tm9kZSwgdGhp
c0FyZ3VtZW50KTsKICAgICAgICAgZGlkSW5zZXJ0Q2hlY2tzID0gdHJ1ZTsKKyAgICAgICAgZGlk
Qm91bmRGdW5jdGlvbklubGluaW5nID0gYm91bmRGdW5jdGlvbklubGluaW5nOwogICAgIH07CiAK
ICAgICBpZiAoa2luZCA9PSBJbmxpbmVDYWxsRnJhbWU6OlRhaWxDYWxsICYmIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgY2FsbGVlLCByZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGluc2VydENoZWNrc1dpdGhB
Y2NvdW50aW5nKSkgewpAQCAtMTkwNSw4ICsxOTA4LDExIEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2Rl
KiBjCiAKICAgICBhdXRvIGVuZFNwZWNpYWxDYXNlID0gWyZdICgpIHsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKLSAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBj
YWxsVGFyZ2V0Tm9kZSk7Ci0gICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zm
c2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgIC8vIEJvdW5kIGZ1bmN0
aW9uJ3Mgc2xvdHMgb2YgdGhlbSBhcmUgbm90IGltcG9ydGFudC4gVGhleSBhcmUgZGVhZCBhdCBP
U1IgZXhpdC4KKyAgICAgICAgaWYgKCFkaWRCb3VuZEZ1bmN0aW9uSW5saW5pbmcpIHsKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAg
ZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKTsKKyAgICAgICAgfQogICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAg
aWYgKGNvbnRpbnVhdGlvbkJsb2NrKSB7CiAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IG9z
ckV4aXRJbmRleDsKQEAgLTE5MjcsNyArMTkzMyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBj
CiAKICAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFs
aXphdGlvbktpbmQpOwogICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAgICAg
ICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwgaW50cmlu
c2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rp
b24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgeworICAgICAgICBpZiAoaGFuZGxlSW50
cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBjYWxsZWUsIGludHJpbnNpYywgcmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5kZXgsIGtp
bmQsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewogICAgICAgICAg
ICAgZW5kU3BlY2lhbENhc2UoKTsKICAgICAgICAgICAgIHJldHVybiBDYWxsT3B0aW1pemF0aW9u
UmVzdWx0OjpJbmxpbmVkOwogICAgICAgICB9CkBAIC0yMzIyLDcgKzIzMjgsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBp
bnQgcmVnaXN0ZXJPZmZzZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9w
ZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFy
aWFudCBjYWxsVmFyaWFudCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdElu
ZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9H
KCIgICAgICAgVGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMsICJcbiIpOwogCkBAIC0zNzU2
LDYgKzM3NjIsNjcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICNlbmRpZgogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBCb3VuZEZ1bmN0aW9uQ2FsbEludHJpbnNpYzogeworICAgICAgICAg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsVmFyaWFudC5mdW5jdGlvbigpOworICAgICAg
ICAgICAgaWYgKCFmdW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpT
Qm91bmRGdW5jdGlvbio+KCptX3ZtLCBmdW5jdGlvbik7CisgICAgICAgICAgICBpZiAoIWJvdW5k
RnVuY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBp
bnNlcnRDaGVja3ModHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIE1ha2UgYSBjYWxsLiBXZSBkb24n
dCB0cnkgdG8gZ2V0IGZhbmN5IHdpdGggdXNpbmcgdGhlIHNtYWxsZXN0IG9wZXJhbmQgbnVtYmVy
IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBzdGFjayBsYXlvdXQgcGhhc2Ugc2hvdWxkIGNv
bXByZXNzIHRoZSBzdGFjayBhbnl3YXkuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
V2UgZG8gbm90IG92ZXJyaWRlIHRoZSBleGlzdGluZyBzdGFjayBmb3IgdGhpcyBjYWxsLiBXZSBu
ZXdseSBhbGxvY2F0ZSBzdGFjayBzcGFjZSBhbmQgZmlsbCBpdCB3aXRoIHZhbHVlcworICAgICAg
ICAgICAgLy8gdG8ga2VlcCBPU1IgZXhpdCBjb3JyZWN0IHdoZW4gd2UgZXhpdCBpbiB0aGUgbWlk
ZGxlIG9mIHRoaXMgc3RhY2sgY29uc3RydWN0aW9uLiBXZSBleGl0IHRvIHRoZSBjYWxsZXIgc2lk
ZQorICAgICAgICAgICAgLy8gd2hlbiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoaXMgZnJhbWUu
IEFuZCB0aGlzIGlzIHRvdGFsbHkgT0sgc2luY2Ugd2UgYXJlIG5vdCBjbG9iYmVyaW5nIHZhbHVl
cy4KKworICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5k
RnVuY3Rpb24tPmJvdW5kQXJncygpOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlBh
cmFtZXRlcnMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICAgICAgICAgIG51bWJl
ck9mUGFyYW1ldGVycysrOyAvLyBUcnVlIHJldHVybiBQQy4KKyAgICAgICAgICAgIG51bWJlck9m
UGFyYW1ldGVycyArPSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsKKworICAg
ICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJlc3BvbmRz
IHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KKyAgICAgICAgICAgIGludCBuZXdSZWdpc3Rl
ck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkgLSAxKS5vZmZzZXQoKTsKKyAgICAgICAgICAg
IG5ld1JlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKKyAgICAgICAgICAgIG5l
d1JlZ2lzdGVyT2Zmc2V0IC09IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworCisg
ICAgICAgICAgICAvLyBHZXQgdGhlIGFsaWdubWVudCByaWdodC4KKyAgICAgICAgICAgIG5ld1Jl
Z2lzdGVyT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpLCAtbmV3UmVnaXN0ZXJPZmZzZXQpOworCisgICAgICAgICAgICBlbnN1cmVMb2Nh
bHMobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihuZXdSZWdp
c3Rlck9mZnNldCkpLnRvTG9jYWwoKSk7CisKKyAgICAgICAgICAgIC8vIElzc3VlIFNldExvY2Fs
cy4gVGhpcyBoYXMgdHdvIGVmZmVjdHM6CisgICAgICAgICAgICAvLyAxKSBUaGF0J3MgaG93IGhh
bmRsZUNhbGwoKSBzZWVzIHRoZSBhcmd1bWVudHMuCisgICAgICAgICAgICAvLyAyKSBJZiB3ZSBp
bmxpbmUgdGhlbiB0aGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJndW1lbnRzIGFyZSBmbHVzaGVkIHNv
IHRoYXQgaWYgeW91IHVzZQorICAgICAgICAgICAgLy8gICAgdGhlIGRyZWFkZWQgYXJndW1lbnRz
IG9iamVjdCBvbiB0aGUgY2FsbCB0YXJnZXQsIHRoZSByaWdodCB0aGluZ3MgaGFwcGVuLiBXZWxs
LCBzb3J0IG9mIC0KKyAgICAgICAgICAgIC8vICAgIHNpbmNlIHdlIG9ubHkgcmVhbGx5IGNhcmUg
YWJvdXQgJ3RoaXMnIGluIHRoaXMgY2FzZS4gQnV0IHdlJ3JlIG5vdCBnb2luZyB0byB0YWtlIHRo
YXQKKyAgICAgICAgICAgIC8vICAgIHNob3J0Y3V0LgorICAgICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEFyZ3VtZW50SW5kZXggPSAwOworICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRleCsrLCBuZXdSZWdpc3Rl
ck9mZnNldCksIGpzQ29uc3RhbnQoYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCkpLCBJbW1lZGlh
dGVOYWtlZFNldCk7CisgICAgICAgICAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYm91bmRBcmdzLT5sZW5ndGgoKTsg
KytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRleCsrLCBuZXdSZWdpc3Rlck9mZnNl
dCksIGpzQ29uc3RhbnQoYm91bmRBcmdzLT5nZXQoaW5kZXgpKSwgSW1tZWRpYXRlTmFrZWRTZXQp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPiAxKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXggPSAxOyBpbmRleCA8
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAg
ICBzZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGN1cnJlbnRBcmd1
bWVudEluZGV4KyssIG5ld1JlZ2lzdGVyT2Zmc2V0KSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50SW5jbHVkaW5nVGhpcyhpbmRleCwgcmVnaXN0ZXJPZmZzZXQpKSwgSW1tZWRpYXRlTmFr
ZWRTZXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSd2ZSBzZXQgc29tZSBs
b2NhbHMsIGJ1dCB0aGV5IGFyZSBub3QgdXNlci12aXNpYmxlIHNpbmNlIHRoZXkgYXJlIG5ld2x5
IGFsbG9jYXRlZCBmb3IgdGhpcyBpbmxpbmVkIGNhbGwuIEl0J3Mgc3RpbGwgT0sgdG8gZXhpdCBm
cm9tIGhlcmUuCisgICAgICAgICAgICAvLyBKU0JvdW5kRnVuY3Rpb24ncyB0cmFtcG9saW5lIGRv
ZXMgbm90IGhhdmUgdXNlci12aXNpYmxlIGVmZmVjdC4gU28gZXhpdGluZyB0byB0aGUgcHJlLWJv
dW5kIGZ1bmN0aW9uIGxvY2F0aW9uIGlzIE9LLgorICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVl
OworICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICBoYW5kbGVD
YWxsKHJlc3VsdCwgQ2FsbCwga2luZCwgb3NyRXhpdEluZGV4LCBqc0NvbnN0YW50KGJvdW5kRnVu
Y3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCBuZXdSZWdp
c3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQoYm91bmRGdW5jdGlvbi0+dGFy
Z2V0RnVuY3Rpb24oKSkpLCBwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGRpZFNldFJlc3VsdCA9
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTgxMTIsMTEg
KzgxNzksMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6
IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1
bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4
Y2x1ZGluZ1RoaXM+KCk7CiAgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHkpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0
dGVyZmx5KTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBFZGdlKGdldChieXRlY29kZS5tX3Rh
cmdldCksIENlbGxVc2UpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJn
dW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY1ZTIyYTEwYTRkMTI2NWRi
NWNkYzcxYjIzMWQwNmQ1MTYxN2VkNmMuLmJmNGY3OTczZTkzNDE2ZGU4NjZmYWM3MTM3NzA3YTg2
YjE3ZTMzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNh
c2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVk
X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNh
c2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6CisgICAgY2FzZSBvcF9jcmVhdGVfYXJn
dW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpczoKICAgICBjYXNlIG9wX2dldF9mcm9tX2Fy
Z3VtZW50czoKICAgICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRf
YXJndW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4
IGNmMDFiY2UwNTNhM2U1NzdkZTk5N2IwMzMzOWI3YjE0YzY2ODg5MjEuLmMyNDBhYTI2MTNmMGQx
MjAxZWY0OGQ4YTJkMjJkOTExNTU5MjNhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3Bl
ZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENy
ZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eUV4Y2x1ZGluZ1RoaXM6CiAgICAgICAgIHJlYWQoU3RhY2spOwogICAgICAgICByZWFkKEhlYXBP
YmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggY2ZjMjIzMDAwYTUzMmIxYzNiMzk4MGU1
NGE1MDFhM2QzZGZhYWIwOS4uZGQ1MWZhMzhjODgxMTBkOTFiOGZlNTU4ZmZlMGQ1NjdiZjYxNmE2
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjY4LDcgKzI2
OCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENy
ZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAg
ICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ2FsbEV2YWw6CiAgICAgY2FzZSBDYWxsRm9yd2Fy
ZFZhcmFyZ3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApp
bmRleCAzNzRkNTUzMDVkZjhkODc1MDMyZTA0Nzc3YmMzMjIxOWE1NTE1ODBhLi5kMDZkODY0MmY3
N2VmM2FjNGY3NzUxODUwMTk5MGE1MDNkNzI4MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI4ODAsNyArMjg4MCw3IEBAIGNsYXNzIEZpeHVw
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAg
ICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHk6CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpczoKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
aW5kZXggYWYyNjgyODZjODEwMDlkMTgyNmNiMTBiY2Y1N2I1MTEwYTRhNzMzOS4uN2M0OWRhYTkz
MjQ0NjQ3NDdlMDRjNmJmNmY5YzcxMzk5MTcyNjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaApAQCAtNDUxLDcgKzQ1MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVTY29wZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRK
UykgXAogICAgIG1hY3JvKENyZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAotICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgTm9kZVJlc3Vs
dEpTKSBcCisgICAgbWFjcm8oQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oUHV0VG9Bcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhHZXRBcmd1bWVudCwgTm9kZVJlc3VsdEpTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlY2M4ZGM4NTA1MTA5Y2IzNTU0OTBjOTFmYTY5
NmQ2YWRhNzViMjc5Li45ZDE5ZTM1MmY4YmFkMjg0ODdiNjZjY2E5YWRjY2RiNzQ1YjAzYzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5j
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCkBAIC0yMDU5LDIwICsyMDYwLDQyIEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMsIEpT
Q2VsbCosIChKU0dsb2JhbE9iamVjCiAgICAgICAgIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBh
cmd1bWVudFN0YXJ0LCBsZW5ndGgsIGNhbGxlZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIEpTQ2VsbCosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3Qg
YXJndW1lbnRDb3VudCkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBhcmd1bWVu
dENvdW50LCBKU0NlbGwqIHRhcmdldCkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
ICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEFT
U0VSVChhcmd1bWVudENvdW50ID4gMSk7CisKKyAgICBDaGVja2VkSW50MzIgdG90YWxDb3VudCA9
IGFyZ3VtZW50Q291bnQgLSAxOworICAgIGludDMyX3QgYWRkaXRpb25hbENvdW50ID0gMDsKKyAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gbnVsbHB0cjsKKyAgICBpZiAodGFy
Z2V0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgeworICAgICAgICBKU0JvdW5kRnVu
Y3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGFyZ2V0KTsK
KyAgICAgICAgaWYgKGJvdW5kRnVuY3Rpb24tPmNhbkNsb25lQm91bmRBcmdzKCkpIHsKKyAgICAg
ICAgICAgIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAgICAg
ICAgYWRkaXRpb25hbENvdW50ID0gYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDA7
CisgICAgICAgICAgICB0b3RhbENvdW50ICs9IGFkZGl0aW9uYWxDb3VudDsKKyAgICAgICAgICAg
IGlmICh0b3RhbENvdW50Lmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5
Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9t
SW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZklu
ZGV4aW5nU2hhcGVzXS5nZXQoKSwgYXJndW1lbnRDb3VudCk7CisgICAgSlNJbW11dGFibGVCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVhdGUodm0sIHZt
LmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUo
Q29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNd
LmdldCgpLCB0b3RhbENvdW50LnVuc2FmZUdldCgpKTsKICAgICBpZiAoIWJ1dHRlcmZseSkgewog
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBhcmd1bWVudENvdW50OyArK2luZGV4KQotICAgICAgICBidXR0ZXJmbHktPnNldElu
ZGV4KHZtLCBpbmRleCwgYXJndW1lbnRTdGFydFtpbmRleF0uanNWYWx1ZSgpKTsKKyAgICBpZiAo
YWRkaXRpb25hbENvdW50KSB7CisgICAgICAgIEFTU0VSVChib3VuZEFyZ3MpOworICAgICAgICBm
b3IgKGludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IGFkZGl0aW9uYWxDb3VudDsgKytpbmRleCkK
KyAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4LCBib3VuZEFyZ3MtPmdl
dChpbmRleCkpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCAo
YXJndW1lbnRDb3VudCAtIDEpOyArK2luZGV4KQorICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4
KHZtLCBpbmRleCArIGFkZGl0aW9uYWxDb3VudCwgYXJndW1lbnRTdGFydFtpbmRleCArIDFdLmpz
VmFsdWUoKSk7CiAgICAgcmV0dXJuIGJ1dHRlcmZseTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA1MmNkYmU4MjY2MTZlYmM0YTkyZDA1OGIwMDFl
YzM4ZWZjMmEzZDQ4Li43OWU3NzZmYjQzZTY1NTI3YTE0MmUyM2RjNzM2Y2MwMjA3MDRhYzEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjExLDcgKzIx
MSw3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzRHVyaW5nRXhpdCwgSlNDZWxsKiwgKFZNCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwg
SlNGdW5jdGlvbiogY2FsbGVlLCBKU0xleGljYWxFbnZpcm9ubWVudCopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCwg
SlNDZWxsKiwgKFZNKiwgSW5saW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIHVpbnQzMl90IGFy
Z3VtZW50Q291bnQpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBS
ZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxs
ZWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRT
dGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBKU0NlbGwq
LCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJn
dW1lbnRDb3VudCwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25DcmVhdGVSZXN0LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1l
bnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5
U2l6ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKiwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25TZXRBZGQsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDk4MDU5OWIy
ZTU0YWY3ZDBjYTg3YTk5YzE2OTYwNjQ5NzBhMDFlODQuLjcwNGViZTcxMTViOGM3ZDMxN2EwMjE5
MWMzOTFmOTQ3YzgxMjJhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3Mg
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAg
IGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseToKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNh
c2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZTc2ZDJiNmUwZjk2ZjNlMjhmYzNkOTgzZmIzM2Fj
MjMxNjg2YjMxLi43MGU0YTBjMTZmMjgxNWYxNGY3NzBmYTYyZDkwNGEzMTBiYzBlZjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgY2xhc3MgUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTogeworICAg
ICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6IHsKICAgICAg
ICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAppbmRleCAwN2E4NWRiM2Q2MGM2MDgwYTgzZTZkYTQxODY4YmJmNGI3Y2VmNmM3Li42OWIzYmMy
YTdiNTg1NmQ4OTk0MDI5NzI4NmI1Zjc3YWIwZDU4YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTk3LDcgKzU5Nyw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2Fz
ZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6
Ci0gICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBl
OWNkNDM5MGU0NjFiYjNlNDI1MDUzMjkxNWE1M2FhZDQ2ODNlODdlLi5lNTJjYWQ2ZWU3YjQ0ZDRj
YWRjMGJjMjQ0YTQzMjE2MTcyNmY5NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtODQ3NSw4ICs4NDc1LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSogbm9kZSkKICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKE5v
ZGUqIG5vZGUpCiB7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGFyZ2V0KHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgdGFyZ2V0R1BSID0gdGFyZ2V0LmdwcigpOworCiAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTg0ODYsMTIgKzg0ODks
MTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eShOb2RlKiBub2RlKQogICAgIC8vIFdlIHNldCB1cCB0aGUgYXJndW1lbnRzIG91cnNlbHZlcywg
YmVjYXVzZSB3ZSBoYXZlIHRoZSB3aG9sZSByZWdpc3RlciBmaWxlIGFuZCB3ZSBjYW4KICAgICAv
LyBzZXQgdGhlbSB1cCBkaXJlY3RseSBpbnRvIHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCiAKLSAg
ICAvLyBBcmd1bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0LCAzOmxlbmd0aAorICAg
IC8vIEFyZ3VtZW50czogMDpKU0dsb2JhbE9iamVjdCosIDE6c3RhcnQsIDI6bGVuZ3RoLCAzOnRh
cmdldAorCisgICAgLy8gRG8gdGhlIHRhcmdldEdQUiBmaXJzdCwgc2luY2UgaXQgbWlnaHQgYWxp
YXMgYW4gYXJndW1lbnQgcmVnaXN0ZXIuCisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgzLCBbJl0g
KEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUodGFyZ2V0R1BSLCBkZXN0R1BSKTsgfSk7CisK
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDIsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdl
dExlbmd0aChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50KDEsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdldEFyZ3VtZW50U3Rh
cnQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgZGVzdEdQUik7IH0pOwogCi0g
ICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHks
IHJlc3VsdEdQUik7CisgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCByZXN1bHRHUFIpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggOTcxNzUyMjhm
NjJkYTczNTAwMjEwZWZkMmNlY2NhOTU4MmI2ODAyZC4uNjZhNDE5MDljYzYwNjlkYjQ1MTc3N2Iy
OWIxNzk3NDc1MDBiOGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaApAQCAtMTQxMSw3ICsxNDExLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQg
ewogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVD
cmVhdGVTY29wZWRBcmd1bWVudHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZUNsb25l
ZEFyZ3VtZW50cyhOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVSZXN0KE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVTcHJlYWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5KE5v
ZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IDM0MjQwZTU0ZTg1N2Y1OGFkNDc2YTZhZjNiZWEzMmNkN2MyMTZk
NjguLjYyZDBmNzU0YzAwZWExODUwYzIyNzEyNmU4ZTEwNTdkNjA1NWQ5ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMzk1MCw4ICszOTUwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseTogewotICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KG5vZGUp
OworICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczogeworICAg
ICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAzOGVlNmI0YTZlZjkwOTc0MzVhYjhlMDk1
MjkxZDBiNmU3NzQxMzA1Li45NWU3ZjVlNzM4MzUxNzYxZWQ2MjUyZjc5M2IzZDkwNjlmNTcxZmM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTQ5MzEsOCArNDkzMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHk6IHsKLSAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eShub2RlKTsKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRl
eCBiOTA2NjVlY2NlNTJjNTdmNDRiNzBkNDY3YzRhNGU1YTVmMzcwMmUwLi5hZWY4YTlhODk2MDA3
Zjg3ODEyMzQ3MjYxMGJjMGI3ODZhNGJmNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAt
MzU3LDcgKzM1Nyw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAg
ICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0
ZUNsb25lZEFyZ3VtZW50czoKLSAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5OgorICAgICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdU
aGlzOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCA0MGYxMTE5MjczYmRiZTFhNWI5NTIxNTg4NWY5Mjc0
NDBmYzkxMTA3Li5iNDljNzI0MDk1Yjc0MWNhMmMyYzhhOWIwMDU4NmMzYTg2MzEwOTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUg
IlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgpAQCAtOTI3LDcg
KzkyOCw4IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAg
ICAgICAgRWRnZSBjYWxsZWUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CiAgICAg
ICAgICAgICBDYWxsVmFyaWFudCBjYWxsVmFyaWFudDsKLSAgICAgICAgICAgIGlmIChKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4o
dm0oKSkpIHsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5h
bWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPih2bSgpKTsKKyAgICAgICAgICAgIGlmIChmdW5j
dGlvbikgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0YWJs
ZSgpOwogICAgICAgICAgICAgICAgIGNhbGxWYXJpYW50ID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24p
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYWxsZWUtPmlzRnVuY3Rpb25BbGxvY2F0aW9uKCkp
IHsKQEAgLTk0Myw3ICs5NDUsNDggQEAgY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwMzM5CiAgICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aW50cmluc2lj
KCkgPT0gV2FzbUZ1bmN0aW9uSW50cmluc2ljKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCisKKyAgICAgICAgICAgIC8vIFdlIGdhdmUgdXAgaW5saW5pbmcgYSB3cmFwcGVk
IGZ1bmN0aW9uLCBidXQgc3RpbGwsIHdlIGNhbiBpbmxpbmUgYm91bmQgZnVuY3Rpb24ncyB3cmFw
cGVyIGJ5IGV4dHJhY3RpbmcgaXQuCisgICAgICAgICAgICAvLyBUaGlzIGFsc28gd2lwZXMgYm91
bmQtZnVuY3Rpb24gdGh1bmsgY2FsbCB3aGljaCBpcyBzdWJvcHRpbWFsIGNvbXBhcmVkIHRvIGRp
cmVjdGx5IGNhbGxpbmcgYSB3cmFwcGVkIGZ1bmN0aW9uIGhlcmUuCisgICAgICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+aW50cmluc2ljKCkgPT0gQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMgJiYg
ZnVuY3Rpb24gJiYgKG1fbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG1fbm9kZS0+b3AoKSA9PSBUYWls
Q2FsbCB8fCBtX25vZGUtPm9wKCkgPT0gVGFpbENhbGxJbmxpbmVkQ2FsbGVyKSkgeworICAgICAg
ICAgICAgICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5k
RnVuY3Rpb24qPihmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIHRh
cmdldEZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0oKSwgYm91bmRGdW5j
dGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogdGFy
Z2V0RXhlY3V0YWJsZSA9IHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgICAg
ICAgICAgICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9u
LT5ib3VuZEFyZ3MoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCgoYm91bmRBcmdzID8gYm91
bmRBcmdzLT5sZW5ndGgoKSA6IDApICsgbV9ub2RlLT5udW1DaGlsZHJlbigpKSA8PSBPcHRpb25z
OjptYXhpbXVtRGlyZWN0Q2FsbFN0YWNrU2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5bmFtaWND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHZtKCksIHRhcmdldEV4ZWN1dGFibGUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgbV9wYXJhbWV0ZXJT
bG90cyBiZWZvcmUgd2UgZ2V0IHRvIHRoZSBiYWNrZW5kLCBidXQgd2UgZG9uJ3QKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB3YW50IHRvIGRvIHRvbyBtdWNoIG9mIHRoaXMuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQWxsb2NhdGVkQXJncyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihmdW5jdGlvbkV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsg
MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtQWxsb2NhdGVkQXJncyA8PSBP
cHRpb25zOjptYXhpbXVtRGlyZWN0Q2FsbFN0YWNrU2l6ZSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBzdGQ6Om1heChtX2dyYXBo
Lm1fcGFyYW1ldGVyU2xvdHMsIEdyYXBoOjpwYXJhbWV0ZXJTbG90c0ZvckFyZ0NvdW50KG51bUFs
bG9jYXRlZEFyZ3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uYXBwZW5kKG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KG1fbm9kZUluZGV4LCBtX25v
ZGUtPm9yaWdpbiwgdGFyZ2V0RnVuY3Rpb24pKTsgLy8gQ2FsbGVlLgorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlvblNldC5p
bnNlcnRDb25zdGFudChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGJvdW5kRnVuY3Rpb24t
PmJvdW5kVGhpcygpKSk7IC8vIHx0aGlzfAorCisgICAgICAgICAgICAgICAgICAgICAgICBKU0lt
bXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFu
dChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGJvdW5kQXJncy0+Z2V0KGluZGV4KSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBG
aXJzdCBvbmUgaXMgfGNhbGxlZXwsIHNlY29uZCBvbmUgaXMgfHRoaXN8LgorICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDI7IGluZGV4IDwgbV9ub2RlLT5udW1D
aGlsZHJlbigpOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ncmFwaC5jaGlsZChtX25vZGUsIGluZGV4KSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0
KEFkamFjZW5jeUxpc3Q6OlZhcmlhYmxlLCBmaXJzdENoaWxkLCBtX2dyYXBoLm1fdmFyQXJnQ2hp
bGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBzdGQ6Om1heChtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMs
IEdyYXBoOjpwYXJhbWV0ZXJTbG90c0ZvckFyZ0NvdW50KG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAt
IDEpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcygpLmFkZENhbGxMaW5rU3RhdHVzKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBDYWxs
TGlua1N0YXR1cyhDYWxsVmFyaWFudCh0YXJnZXRFeGVjdXRhYmxlKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9EaXJlY3RDYWxsKG1fZ3JhcGguZnJlZXplKHRh
cmdldEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPih2bSgpLCBleGVjdXRhYmxlKSkgewogICAgICAgICAgICAgICAgIGlm
IChtX25vZGUtPm9wKCkgPT0gQ29uc3RydWN0ICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3Ry
dWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggM2RmMDQ0YThmZjFiNTg1MmI1ZWFmM2MwNGZhOTYwOGRjZmUw
OTgyZi4uNDM5YzBkODY3MjA3ZWZkM2Q3MTQ1ZmJhZDE2YjYxMjVhNDdkMDQ1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTUxLDcgKzE1
MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1l
bnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgIGNhc2UgQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5OgorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpczoKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3Vt
ZW50czoKICAgICBjYXNlIEdldEFyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIwNzg2OTFiMTA0YWZmNjIwNDFiMTMzNjVmODFk
OGEzZDFiZDFlNzEuLmVlNTUwMTNhM2Y4NzllMDM4ZGFhM2E4OTEyODg0Zjk3MGUyNjRjYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEx
MDMsOCArMTEwMyw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50
cygpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5OgotICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOwor
ICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CisgICAg
ICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcygpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgICAgICAg
ICAgY29tcGlsZU9iamVjdENyZWF0ZSgpOwpAQCAtNjg0OCwxMCArNjg0OCwxMCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCi0gICAg
dm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KCkKKyAgICB2b2lkIGNvbXBpbGVD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKCkKICAgICB7CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9w
ZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUpOworICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25DcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBnZXRB
cmd1bWVudHNTdGFydCgpLCBnZXRBcmd1bWVudHNMZW5ndGgoKS52YWx1ZSwgbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IGFlZTM3NDRiNTJlNWU0NTI2MWUyMmZhYzY5MGRiZTA0YWUyYzU0MjYuLjFkOTU4ZWMyMTRi
ZGJhZDgwYjdlYzViZTgwNzM2YmEzNjVhOWZiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVENvZGVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJm
bHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMzkzLDcgKzM5NCw3
IEBAIGNsYXNzIEdldFN0YWNrVHJhY2VGdW5jdG9yIHsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
ISF2aXNpdG9yLT5jb2RlQmxvY2soKSAmJiAhdmlzaXRvci0+Y29kZUJsb2NrKCktPnVubGlua2Vk
Q29kZUJsb2NrKCktPmlzQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBtX3Jl
c3VsdHMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICBTdGFja0ZyYW1lKG1fdm0sIG1fb3du
ZXIsIHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpLCB2aXNpdG9yLT5jb2RlQmxvY2soKSwgdmlz
aXRvci0+Ynl0ZWNvZGVJbmRleCgpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgfSBlbHNlIGlmICghdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCktPmluaGVyaXRzPEpTQm91
bmRGdW5jdGlvbj4obV92bSkpIHsKICAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKAog
ICAgICAgICAgICAgICAgICAgICBTdGFja0ZyYW1lKG1fdm0sIG1fb3duZXIsIHZpc2l0b3ItPmNh
bGxlZSgpLmFzQ2VsbCgpKSk7CiAgICAgICAgICAgICB9CkBAIC00MjIsNyArNDIzLDEyIEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoSlNDZWxsKiBvd25lciwgVmVjdG9yPFN0YWNr
RnJhbWU+JiByZXN1bHRzLCBzaXplCiAKICAgICBzaXplX3QgZnJhbWVzQ291bnQgPSAwOwogICAg
IHNpemVfdCBtYXhGcmFtZXNDb3VudE5lZWRlZCA9IG1heFN0YWNrU2l6ZSArIGZyYW1lc1RvU2tp
cDsKLSAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0sIFsmXSAoU3RhY2tWaXNp
dG9yJikgLT4gU3RhY2tWaXNpdG9yOjpTdGF0dXMgeworICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQo
Y2FsbEZyYW1lLCB2bSwgWyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIC0+IFN0YWNrVmlzaXRv
cjo6U3RhdHVzIHsKKyAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgpKSB7Cisg
ICAgICAgICAgICBpZiAodmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCktPmluaGVyaXRzPEpTQm91
bmRGdW5jdGlvbj4obV92bSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
Q29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoKytmcmFtZXNDb3VudCA8IG1heEZy
YW1lc0NvdW50TmVlZGVkKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGlu
dWU7CiAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKaW5kZXggNzZkMWE1MTdkOWM4OGQyMDk3MDI1Zjg0NDVmNjljOWVkNjNjZmQzZi4u
Y2M2ZGU0ZmNlYzVlOTNmOTkzNzkxZmJkNmNhZjc3OWJkZWE5MWI0NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2RpcmVjdF9hcmd1bWVu
dHMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9zY29wZWRfYXJndW1lbnRzKQogICAg
ICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKLSAgICAgICAgREVG
SU5FX1NMT1dfT1AoY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpCisgICAgICAgIERFRklORV9T
TE9XX09QKGNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzKQogICAgICAg
ICBERUZJTkVfU0xPV19PUChjcmVhdGVfcmVzdCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3Jl
YXRlX3Byb21pc2UpCiAgICAgICAgIERFRklORV9TTE9XX09QKG5ld19wcm9taXNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZmMzOTkxNGExZDU0
MjQ1NjJlNzkxOWY1MWVjZGIxNTMzODYyZjA0NS4uMjU1YjY0NzhjZjAwM2E5MDY1NzZlNDkxYjg5
MTM3ZjMyMTBkMmU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCkBAIC0xNDUxLDYgKzE0NTIsOCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQo
KSk7CisKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjYWxsTGlua0luZm8tPnNw
ZWNpYWxpemF0aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKQEAgLTE0NjQsMjkgKzE0NjcsNDAgQEAgaW5saW5lIFNsb3dQYXRoUmV0
dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEMKICAgICAgICAgfQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
aGFuZGxlSG9zdENhbGwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgY2FsbGVlQXNWYWx1ZSwg
Y2FsbExpbmtJbmZvKSk7CiAgICAgfQotICAgIAotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
anNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7Ci0gICAgSlNTY29wZSog
c2NvcGUgPSBmdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKLSAgICBFeGVjdXRhYmxlQmFzZSog
ZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7Ci0gICAgaWYgKFVOTElLRUxZKCFl
eGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgewotICAgICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGV4ZWN1dGFibGUpOwogCi0gICAgICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9u
RXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5v
dENvbnN0cnVjdCkgewotICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAotICAgICAgICAgICAgICAg
IHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwotICAgICAg
ICB9CisgICAgYXV0byBtYXRlcmlhbGl6ZUNvZGVCbG9ja0lmTmVjZXNzYXJ5ID0gWyZdKEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkgLT4gdm9pZCogewor
ICAgICAgICBpZiAoVU5MSUtFTFkoIWV4ZWN1dGFibGUtPmhhc0pJVENvZGVGb3Ioa2luZCkpKSB7
CisgICAgICAgICAgICBKU1Njb3BlKiBzY29wZSA9IGZ1bmN0aW9uLT5zY29wZVVuY2hlY2tlZCgp
OworICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAotICAgICAgICBD
b2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gY2FsbGVlRnJhbWUtPmFkZHJlc3NPZkNvZGVCbG9j
aygpOwotICAgICAgICBFeGNlcHRpb24qIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0aW9uLCBzY29wZSwg
a2luZCwgKmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2Nv
cGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOwotICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKSB7
Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAotICAgICAgICAgICAgICAgIHZtLmdl
dENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOworICAgICAgICAgICAg
aWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5
KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KSB7CisgICAgICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29u
c3RydWN0b3JFcnJvcihnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0g
Y2FsbGVlRnJhbWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOworICAgICAgICAgICAgRXhjZXB0aW9u
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlv
bkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsK
KyAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBl
cnJvcik7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQorICAgICAgICAgICAgICAg
IHJldHVybiB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9OworICAgIAorICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9u
Q2VsbCk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0
YWJsZSgpOworICAgIGF1dG8gZmFpbHVyZSA9IG1hdGVyaWFsaXplQ29kZUJsb2NrSWZOZWNlc3Nh
cnkoZnVuY3Rpb24sIGV4ZWN1dGFibGUpOworICAgIGlmIChVTkxJS0VMWShmYWlsdXJlKSkKKyAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChmYWlsdXJlLCByZWludGVycHJldF9jYXN0PHZvaWQq
PihLZWVwVGhlRnJhbWUpKTsKKworICAgIC8vIENhbGwgSUMgbGlua3MgdGhpcyBjYWxsc2l0ZSB0
byB3cmFwcGVkIGZ1bmN0aW9uIGRpcmVjdGx5LiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGRpcmVj
dGx5IGxpbmtlZCBmdW5jdGlvbiBpcyBtYXRlcmlhbGl6ZWQgaGVyZS4KKyAgICBpZiAoZnVuY3Rp
b24tPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pICYmIGpzQ2FzdDxKU0JvdW5kRnVuY3Rp
b24qPihmdW5jdGlvbiktPnRhcmdldEZ1bmN0aW9uKCktPmluaGVyaXRzPEpTRnVuY3Rpb24+KHZt
KSkgeworICAgICAgICBhdXRvKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
anNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGZ1bmN0aW9uKS0+dGFyZ2V0RnVuY3Rpb24oKSk7Cisg
ICAgICAgIGF1dG8gZmFpbHVyZSA9IG1hdGVyaWFsaXplQ29kZUJsb2NrSWZOZWNlc3NhcnkodGFy
Z2V0RnVuY3Rpb24sIHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCkpOworICAgICAgICBpZiAo
VU5MSUtFTFkoZmFpbHVyZSkpCisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGZhaWx1
cmUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgIH0KKwogICAg
IC8vIEZJWE1FOiBTdXBwb3J0IHdhc20gSUMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMDMzOQogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0
YWJsZS0+ZW50cnlwb2ludEZvcigKQEAgLTE0OTYsNiArMTUxMCwxMCBAQCBpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQwogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHlt
b3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8p
KQogeworICAgIC8vIER1cmluZyBleGVjdXRpb24gb2YgdmlydHVhbEZvcldpdGhGdW5jdGlvbi9s
aW5rUG9seW1vcnBoaWNDYWxsLCB3ZSBzdHJvbmdseSBhc3N1bWUgdGhhdCB3ZSBuZXZlciBkbyBH
Qy4KKyAgICAvLyBHQyBqZXR0aXNvbnMgQ29kZUJsb2NrcywgY2hhbmdlcyBDYWxsTGlua0luZm8g
ZXRjLiBhbmQgYnJlYWtzIGFzc3VtcHRpb24gZG9uZSBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY2Fs
bC4KKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0NGb3JBV2hpbGUoZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApOworCiAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5k
KCkgPT0gQ29kZUZvckNhbGwpOwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGw7CiAg
ICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZ2xv
YmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgY2FsbExpbmtJbmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2Vs
bCk7CkBAIC0xNTA3LDYgKzE1MjUsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGwKIAogSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZpcnR1YWxDYWxsLCBTbG93UGF0aFJldHVy
blR5cGUsIChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykpCiB7CisgICAgLy8gRHVyaW5nIGV4ZWN1
dGlvbiBvZiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uL2xpbmtQb2x5bW9ycGhpY0NhbGwsIHdlIHN0
cm9uZ2x5IGFzc3VtZSB0aGF0IHdlIG5ldmVyIGRvIEdDLgorICAgIC8vIEdDIGpldHRpc29ucyBD
b2RlQmxvY2tzLCBjaGFuZ2VzIENhbGxMaW5rSW5mbyBldGMuIGFuZCBicmVha3MgYXNzdW1wdGlv
biBkb25lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjYWxsLgorICAgIERlZmVyR0NGb3JBV2hpbGUg
ZGVmZXJHQ0ZvckFXaGlsZShnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKICAgICBKU0NlbGwq
IGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldpdGhG
dW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxlZUFz
RnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAppbmRleCA4YTk2YWJlODVlZGVmYmExNTUxMDkyNzQ2N2Q2YTM5OTllMTM1NGJlLi4wM2UyYWZh
ZDdmODcyYzI3ZTFkZjRhYjhiMTdkOWI4NmY5MzAxMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHkuaCIKQEAgLTEyMjMsNiArMTIyNCwxMSBAQCB2b2lkIGxpbmtGb3IoCiB7CiAgICAgQVNT
RVJUKCFjYWxsTGlua0luZm8uc3R1YigpKTsKIAorICAgIGlmIChjYWxsZWUtPmluaGVyaXRzPEpT
Qm91bmRGdW5jdGlvbj4odm0pICYmIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSA9
PSBDb2RlRm9yQ2FsbCAmJiBjYWxsTGlua0luZm8uYWxsb3dTdHVicygpKSB7CisgICAgICAgIGxp
bmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVy
YXRvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIC8vIE91ciBjYWxsZXIgbXVzdCBo
YXZlIGEgY2VsbCBmb3IgYSBjYWxsZWUuIFdoZW4gY2FsbGluZwogICAgIC8vIHRoaXMgZnJvbSBX
YXNtLCB3ZSBlbnN1cmUgdGhlIGNhbGxlZSBpcyBhIGNlbGwuCkBAIC0xMzQwLDE2ICsxMzQ2LDEw
MSBAQCBzdHJ1Y3QgQ2FsbFRvQ29kZVB0ciB7CiB9OwogfSAvLyBhbm5vbnltb3VzIG5hbWVzcGFj
ZQogCitzdGF0aWMgdm9pZCBnZW5lcmF0ZUlubGluZWRCb3VuZEZ1bmN0aW9uQ2FsbChWTSYgdm0s
IENDYWxsSGVscGVycyYgaml0LCBKU0JvdW5kRnVuY3Rpb24qIGZ1bmN0aW9uLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3sKKyAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKworICAgIC8v
IFNldCB1cCBvdXIgY2FsbCBmcmFtZS4KKyAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSk7CisgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMCksIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CisKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdz
ID0gZnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgIHVuc2lnbmVkIGNhbGxTaXRlQXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCk7CisgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsU2l0ZUFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgKGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3Ro
KCkgOiAwKTsKKyAgICB1bnNpZ25lZCBudW1QYXJhbWV0ZXJzID0gMDsKKyAgICB1bnNpZ25lZCBu
dW1GaXh1cENvdW50ID0gMDsKKworICAgIEpTRnVuY3Rpb24qIHRhcmdldEZ1bmN0aW9uID0ganND
YXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSk7CisgICAgRXhlY3V0
YWJsZUJhc2UqIHRhcmdldEV4ZWN1dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgp
OworICAgIGlmICh0YXJnZXRFeGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiB0YXJnZXRDb2RlQmxvY2sgPSBqc0Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4odGFyZ2V0RXhlY3V0YWJsZSktPmNvZGVCbG9ja0ZvckNhbGwoKTsKKyAg
ICAgICAgbnVtUGFyYW1ldGVycyA9IHRhcmdldENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOwor
ICAgICAgICBpZiAobnVtUGFyYW1ldGVycyA+IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQor
ICAgICAgICAgICAgbnVtRml4dXBDb3VudCA9IG51bVBhcmFtZXRlcnMgLSBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpczsKKyAgICB9CisgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXNBZnRlckZpeHVwID0gc3RkOjptYXg8dW5zaWduZWQ+KGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBudW1QYXJhbWV0ZXJzKTsKKworICAgIC8vIFRoZSBmb3JtdWxhIGZvciB0aGUgbnVt
YmVyIG9mIHN0YWNrIGJ5dGVzIG5lZWRlZCBnaXZlbiBzb21lIG51bWJlciBvZiBwYXJhbWV0ZXJz
IChpbmNsdWRpbmcKKyAgICAvLyB0aGlzKSBpczoKKyAgICAvLworICAgIC8vICAgICBzdGFja0Fs
aWduKChudW1QYXJhbXMgKyBDYWxsRnJhbWVIZWFkZXJTaXplKSAqIHNpemVvZihSZWdpc3Rlcikg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpCisgICAgLy8KKyAgICAvLyBQcm9iYWJseSB3ZSB3
YW50IHRvIHdyaXRlIHRoaXMgYXM6CisgICAgLy8KKyAgICAvLyAgICAgc3RhY2tBbGlnbigobnVt
UGFyYW1zICsgKENhbGxGcmFtZUhlYWRlclNpemUgLSBDYWxsZXJGcmFtZUFuZFBDU2l6ZSkpICog
c2l6ZW9mKFJlZ2lzdGVyKSkKKyAgICAvLworICAgIC8vIFRoYXQncyByZWFsbHkgYWxsIHRoZXJl
IGlzIHRvIHRoaXMuIFdlIGhhdmUgYWxsIHRoZSByZWdpc3RlcnMgd2UgbmVlZCB0byBkbyBpdC4K
KworICAgIHVuc2lnbmVkIGV4dHJhU3RhY2tOZWVkZWQgPSAwOworICAgIGlmICh1bnNpZ25lZCBz
dGFja01pc2FsaWdubWVudCA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAlIHN0YWNrQWxpZ25t
ZW50Qnl0ZXMoKSkKKyAgICAgICAgZXh0cmFTdGFja05lZWRlZCA9IHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSAtIHN0YWNrTWlzYWxpZ25tZW50OworCisgICAgdW5zaWduZWQgc3RhY2tTaXplID0gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIChDYWxsRnJh
bWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lz
dGVycykgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0FmdGVyRml4dXApICsgZXh0cmFTdGFj
a05lZWRlZDsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0oc3Rh
Y2tTaXplICogc2l6ZW9mKFJlZ2lzdGVyKSkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBzdGFja092ZXJmbG93ID0gaml0LmJy
YW5jaFB0cihDQ2FsbEhlbHBlcnM6OkFib3ZlLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyh2bS5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6cmVnVDIpOworCisgICAg
aml0Lm1vdmUoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisKKyAgICB1bnNp
Z25lZCBpbmRleEluQXJndW1lbnRzID0gMDsKKyAgICBqaXQuc3RvcmVUcnVzdGVkVmFsdWUoZnVu
Y3Rpb24tPmJvdW5kVGhpcygpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdChpbmRl
eEluQXJndW1lbnRzKyspKTsKKyAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgpCisg
ICAgICAgICAgICBqaXQuc3RvcmVUcnVzdGVkVmFsdWUoYm91bmRBcmdzLT5nZXQoaW5kZXgpLCBD
Q2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdChpbmRleEluQXJndW1lbnRzKyspKTsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2
YWlsYWJsZVJlZ3MoR1BSSW5mbzo6cmVnVDQsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gLyogY2FsbHNpdGUncyB8dGhpc3wgaXMgbm90IGludGVyZXN0aW5nICov
IDE7IGluZGV4IDwgY2FsbFNpdGVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkg
eworICAgICAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaW5kZXgpKSwgdmFsdWVSZWdzKTsKKyAg
ICAgICAgaml0LnN0b3JlVmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3Vt
ZW50U2xvdChpbmRleEluQXJndW1lbnRzKyspKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBudW1GaXh1cENvdW50OyArK2luZGV4KQorICAgICAgICBqaXQu
c3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1
bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisKKyAgICBqaXQuc3RvcmVUcnVzdGVkVmFs
dWUodGFyZ2V0RnVuY3Rpb24sIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpOworICAgIGF1dG8gZnVuY3Rpb25DYWxsID0gaml0LmNhbGwoSlNFbnRy
eVB0clRhZyk7CisgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBGdW5jdGlvblB0cjxK
U0VudHJ5UHRyVGFnPih0YXJnZXRFeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgp
LT5hZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpKSk7CisgICAgfSk7CisKKyAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICBqaXQucmV0KCk7CisKKyAgICAvLyBU
aHJvdyBTdGFjayBPdmVyZmxvdyBleGNlcHRpb24KKyAgICBzdGFja092ZXJmbG93LmxpbmsoJmpp
dCk7CisgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHZtLnRvcEVudHJ5RnJhbWUpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihmdW5jdGlvbi0+c2NvcGUoKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1
bmspPihHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
KyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7
Cit9CisKK3N0cnVjdCBJbmxpbmVkQ2FsbGVlIHsKKyAgICBzaXplX3QgY2FzZUluZGV4OworICAg
IENDYWxsSGVscGVyczo6TGFiZWwgZW50cnlwb2ludDsKK307CisKIHZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENhbGxWYXJpYW50IG5ld1ZhcmlhbnQpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvLmFsbG93U3R1YnMoKSk7CiAKICAgICBD
YWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLQotICAgIC8vIER1cmluZyBleGVjdXRpb24gb2Yg
bGlua1BvbHltb3JwaGljQ2FsbCwgd2Ugc3Ryb25nbHkgYXNzdW1lIHRoYXQgd2UgbmV2ZXIgZG8g
R0MuCi0gICAgLy8gR0MgamV0dGlzb25zIENvZGVCbG9ja3MsIGNoYW5nZXMgQ2FsbExpbmtJbmZv
IGV0Yy4gYW5kIGJyZWFrcyBhc3N1bXB0aW9uIGRvbmUgYmVmb3JlIGFuZCBhZnRlciB0aGlzIGNh
bGwuCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxlKHZtLmhlYXApOworICAg
IEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7CiAgICAgCiAgICAgaWYgKCFuZXdWYXJpYW50
KSB7CiAgICAgICAgIGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5mbyk7
CkBAIC0xMzkyLDYgKzE0ODMsMTEgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAKICAg
ICBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4gY2FsbENhc2VzOwogICAgIFZlY3RvcjxpbnQ2
NF90PiBjYXNlVmFsdWVzOworCisgICAgYXV0byBpc0xpbmthYmxlQm91bmRGdW5jdGlvbiA9IFsm
XShDYWxsVmFyaWFudCYgdmFyaWFudCkgeworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IHZhcmlhbnQuZnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICYmIGZ1bmN0aW9u
LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZnVuY3Rpb24pLT50YXJnZXRGdW5jdGlvbigpLT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkg
JiYgIWNhbGxMaW5rSW5mby5pc1ZhcmFyZ3MoKTsKKyAgICB9OwogICAgIAogICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hhdCBvdXIgY2FzZXMgYXJlLgogICAgIGZvciAoQ2FsbFZhcmlhbnQgdmFyaWFudCA6
IGxpc3QpIHsKQEAgLTE0MDUsNiArMTUwMSwxMiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAog
ICAgICAgICAgICAgICAgIGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5m
byk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgaWYgKGlzTGlua2FibGVCb3VuZEZ1bmN0aW9uKHZhcmlhbnQpKSB7CisgICAgICAgICAgICAv
LyBXZSBsaW5rIHRoZSBjYWxsIHRvIHRoZSB0YXJnZXQgZnVuY3Rpb24sIHNvIHdlIG5lZWQgdG8g
cmV0cmlldmUgQ29kZUJsb2NrIGZyb20gdGhlIHRhcmdldCBmdW5jdGlvbi4KKyAgICAgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihqc0Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKS0+dGFyZ2V0RnVuY3Rpb24oKSk7
CisgICAgICAgICAgICBFeGVjdXRhYmxlQmFzZSogdGFyZ2V0RXhlY3V0YWJsZSA9IHRhcmdldEZ1
bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgICAgICBpZiAoIXRhcmdldEV4ZWN1dGFibGUt
PmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KHRhcmdldEV4ZWN1dGFibGUpLT5jb2RlQmxvY2tGb3JDYWxsKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBpbnQ2NF90IG5ld0Nhc2VWYWx1ZSA9IDA7CkBAIC0xNTIz
LDYgKzE2MjUsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBoYXNFeGVjdXRh
YmxlLmxpbmsoJnN0dWJKaXQpOwogICAgIH0KIAorICAgIFZlY3RvcjxJbmxpbmVkQ2FsbGVlPiBp
bmxpbmVkQ2FsbGVlczsKICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKGNvbXBhcmlzb25W
YWx1ZUdQUiwgY2FzZVZhbHVlcywgQmluYXJ5U3dpdGNoOjpJbnRQdHIpOwogICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZG9uZTsKICAgICB3aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uoc3R1
YkppdCkpIHsKQEAgLTE1MzQsNyArMTYzNywxNCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAog
ICAgICAgICBpZiAodmFyaWFudC5leGVjdXRhYmxlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCh2
YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNvZGVQdHIgPSBqc1RvV2FzbUlDQ29kZVB0cih2bSwgY2FsbExpbmtJbmZv
LnNwZWNpYWxpemF0aW9uS2luZCgpLCB2YXJpYW50LmZ1bmN0aW9uKCkpOworICAgICAgICAgICAg
aWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdmFyaWFudC5mdW5jdGlvbigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzTGlua2FibGVCb3VuZEZ1bmN0aW9uKHZhcmlhbnQpKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIEVtaXQgaW5saW5lZCBKU0JvdW5kRnVuY3Rpb24gY2FsbCBpZiBKU0Jv
dW5kRnVuY3Rpb24ncyB0YXJnZXQgZnVuY3Rpb24gaXMgSlNGdW5jdGlvbiwgYW5kIGl0IGlzIG5v
dCBjYWxsX3ZhcmFyZ3MKKyAgICAgICAgICAgICAgICAgICAgaW5saW5lZENhbGxlZXMuYXBwZW5k
KElubGluZWRDYWxsZWUgeyBjYXNlSW5kZXgsIENDYWxsSGVscGVyczo6TGFiZWwoKSB9KTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ciA9IGpzVG9X
YXNtSUNDb2RlUHRyKHZtLCBjYWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCksIGZ1bmN0
aW9uKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCFjb2RlUHRyKQogICAgICAg
ICAgICAgICAgIGNvZGVQdHIgPSB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKTsKICAgICAg
ICAgfSBlbHNlIHsKQEAgLTE1NTgsNiArMTY2OCwyMSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0Nh
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENh
bAogICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNvZGVQdHIgPSBjb2RlUHRyOwogICAgICAgICBk
b25lLmFwcGVuZChzdHViSml0Lmp1bXAoKSk7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBpbmxp
bmVkIDogaW5saW5lZENhbGxlZXMpIHsKKyAgICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGlubGlu
ZWQuY2FzZUluZGV4OworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nh
c2VJbmRleF0udmFyaWFudCgpOworICAgICAgICBpbmxpbmVkLmVudHJ5cG9pbnQgPSBzdHViSml0
LmxhYmVsKCk7CisKKyAgICAgICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpKTsKKyAgICAg
ICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKTsKKyAg
ICAgICAgQVNTRVJUKHZhcmlhbnQuZnVuY3Rpb24oKSk7CisgICAgICAgIEFTU0VSVCh2YXJpYW50
LmZ1bmN0aW9uKCktPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKTsKKyAgICAgICAgQVNT
RVJUKGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih2YXJpYW50LmZ1bmN0aW9uKCkpLT50YXJnZXRG
dW5jdGlvbigpLT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpOworICAgICAgICBBU1NFUlQoIWNh
bGxMaW5rSW5mby5pc1ZhcmFyZ3MoKSk7CisKKyAgICAgICAgZ2VuZXJhdGVJbmxpbmVkQm91bmRG
dW5jdGlvbkNhbGwodm0sIHN0dWJKaXQsIGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih2YXJpYW50
LmZ1bmN0aW9uKCkpLCBjYWxsRnJhbWUpOworICAgIH0KICAgICAKICAgICBzbG93UGF0aC5saW5r
KCZzdHViSml0KTsKICAgICBiaW5hcnlTd2l0Y2guZmFsbFRocm91Z2goKS5saW5rKCZzdHViSml0
KTsKQEAgLTE1OTAsNiArMTcxNSw5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAgICAgICAg
IGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlubGluZWQgOiBpbmxpbmVkQ2Fs
bGVlcykKKyAgICAgICAgY2FsbHNbaW5saW5lZC5jYXNlSW5kZXhdLmNvZGVQdHIgPSBwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KGlubGluZWQuZW50cnlwb2ludCk7CiAgICAg
CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbENhc2VzLnNpemUoKSA9PSBjYWxscy5zaXplKCkpOwog
ICAgIGZvciAoQ2FsbFRvQ29kZVB0ciBjYWxsVG9Db2RlUHRyIDogY2FsbHMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA1MWYwM2I5YzFm
NTkxOTBmOWQ5OTg0YWZjYmIxNWI5MGI1YTE3Y2U3Li5mODA2NTI5MjFmMTY5NTg3ZmY2ZTA0N2E2
OTM5NTBjYWY4OTQxODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCkBAIC0xMTg5LDcgKzExODksNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2bSkKICAgICBh
dXRvIG5vQXJncyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5m
bzo6cmVnVDIpOwogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QyLCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSksIEdQ
UkluZm86OnJlZ1QyKTsKICAgICBqaXQuYWRkMzIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJl
Z1QxKTsKLSAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUklu
Zm86OnJlZ1QxKTsKICAgICBub0FyZ3MubGluaygmaml0KTsKICAgICBqaXQuYWRkMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBD
YWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMpLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDIpOwogICAgIGppdC5sc2hpZnQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigz
KSwgR1BSSW5mbzo6cmVnVDIpOwpAQCAtMTI0OCw3ICsxMjQ3LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0p
CiAKICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGxvb3BCb3VuZCA9IGppdC5sYWJlbCgpOwogICAg
IGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEp
OwotICAgIGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIEpTSW1tdXRhYmxl
QnV0dGVyZmx5OjpvZmZzZXRPZkRhdGEoKSArIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
KSwgdmFsdWVSZWdzKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QmFzZUluZGV4
KEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0
LCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkpLCB2YWx1ZVJlZ3MpOwogICAg
IGppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNs
b3QoMSkuaW5kZXhlZEJ5KEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQp
KTsKICAgICBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6
cmVnVDEpLmxpbmtUbyhsb29wQm91bmQsICZqaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDA5ZDBhOTMwYWMy
NDQyNTI5MzkyMGJjZmQ3OWU3ZmQ1MTdhMzhlMy4uMTQzYzE0ODg0YzhlMTY1NzY3MjU2ZGM4ZmI4
ZDA4ODg3ODU4MDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgbWFjcm8gc2xvd1Bh
dGhPcChvcGNvZGVOYW1lKQogZW5kCiAKIHNsb3dQYXRoT3AoY3JlYXRlX2Nsb25lZF9hcmd1bWVu
dHMpCi1zbG93UGF0aE9wKGNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5KQorc2xvd1BhdGhPcChj
cmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcykKIHNsb3dQYXRoT3AoY3Jl
YXRlX2RpcmVjdF9hcmd1bWVudHMpCiBzbG93UGF0aE9wKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KQogc2xvd1BhdGhPcChjcmVhdGVfcmVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDgyZjNlY2IwODYzYjNkYWEwNTc0
ZDVkOGQ4NDlkMjlkMzAyOWU5YTUuLjY3MGE0YTRhNGU1YzVlNDI1YmVhOTg3OTBmZWU2MDU0YjU0
MzdmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0lu
dGVybmFsUHJvbWlzZS5oIgpAQCAtMjA2LDE2ICsyMDcsMzggQEAgSlNDX0RFRklORV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKICAgICBSRVRVUk4o
Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRoTWFjaGluZUZyYW1lKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBBcmd1bWVudHNNb2RlOjpDbG9uZWQpKTsKIH0KIAotSlNDX0RFRklORV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKK0pTQ19ERUZJ
TkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlf
ZXhjbHVkaW5nX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzPigpOworICAgIEpT
Q2VsbCogdGFyZ2V0ID0gR0VUKGJ5dGVjb2RlLm1fdGFyZ2V0KS5qc1ZhbHVlKCkuYXNDZWxsKCk7
CiAgICAgaW50MzJfdCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7
Ci0gICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVy
Zmx5Ojp0cnlDcmVhdGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJ
bmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51
bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpLCBhcmd1bWVudENvdW50KTsKKyAgICBBU1NFUlQo
YXJndW1lbnRDb3VudCA+IDEpOworCisgICAgQ2hlY2tlZEludDMyIHRvdGFsQ291bnQgPSBhcmd1
bWVudENvdW50IC0gMTsKKyAgICBpbnQzMl90IGFkZGl0aW9uYWxDb3VudCA9IDA7CisgICAgSlNJ
bW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IG51bGxwdHI7CisgICAgaWYgKHRhcmdldC0+
aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAg
ICAgIGlmIChib3VuZEZ1bmN0aW9uLT5jYW5DbG9uZUJvdW5kQXJncygpKSB7CisgICAgICAgICAg
ICBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAgICAgICAgIGFk
ZGl0aW9uYWxDb3VudCA9IGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwOworICAg
ICAgICAgICAgdG90YWxDb3VudCArPSBhZGRpdGlvbmFsQ291bnQ7CisgICAgICAgICAgICBpZiAo
dG90YWxDb3VudC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICAgICAgVEhST1coY3JlYXRl
T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6
dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhG
cm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJP
ZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgdG90YWxDb3VudC51bnNhZmVHZXQoKSk7CiAgICAgaWYg
KCFidXR0ZXJmbHkpCiAgICAgICAgIFRIUk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFs
T2JqZWN0KSk7Ci0gICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENv
dW50OyArK2luZGV4KQotICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpbmRleCkpOworICAgIGlmIChhZGRpdGlvbmFsQ291
bnQpIHsKKyAgICAgICAgQVNTRVJUKGJvdW5kQXJncyk7CisgICAgICAgIGZvciAoaW50MzJfdCBp
bmRleCA9IDA7IGluZGV4IDwgYWRkaXRpb25hbENvdW50OyArK2luZGV4KQorICAgICAgICAgICAg
YnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgsIGJvdW5kQXJncy0+Z2V0KGluZGV4KSk7Cisg
ICAgfQorICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgKGFyZ3VtZW50Q291bnQg
LSAxKTsgKytpbmRleCkKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXggKyBh
ZGRpdGlvbmFsQ291bnQsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaW5kZXggKyAxKSk7
CiAgICAgUkVUVVJOKGJ1dHRlcmZseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggODRlMmRhNWY3YWI2OGE2MjYyNDg1Y2I4
Y2M0M2Y4MDU3MTQ4YzQ3MS4uOTg4ODUxNjkwZjIwN2FlMDljZGE4OTk0MzcxNzA0YTZjZTdkZTAx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKQEAgLTIxMCw3ICsyMTAsNyBAQCBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3df
cGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyk7CiBKU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyk7CiBKU0NfREVDTEFS
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cyk7Ci1K
U0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1
dHRlcmZseSk7CitKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xP
V19QQVRIKHNsb3dfcGF0aF9lbnRlcik7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF90b190aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IGRkZThmMDlhNTk3YTg5MTNmMzk4NDJiZmY0MmNhMTEw
NGVhYTIxNTIuLmQ0Zjc4ZjQ3MDI3YTJhOGEwODY5MWVmMzJmZTA5YjNhZDUyMTViNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApA
QCAtNDEsOCArNDEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9Bcmdz
RnVuY3Rpb25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0
cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAg
ICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtNzAsOCAr
NjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNhbGwsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEg
c2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFw
cGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtOTUsOCArOTMsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3Qs
IChKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
ICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhl
IGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBi
b3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3Vu
ZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtMTIzLDggKzEyMCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihib3VuZEZ1bmN0aW9uQ29uc3RydWN0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYg
KGJvdW5kQXJncykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBv
bmUgaXMgfHRoaXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRB
cmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5n
ZXQoaSkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCk7ICsraSkKQEAgLTIzNCw4ICsyMzAsNyBAQCBKU0FycmF5KiBKU0JvdW5k
RnVuY3Rpb246OmJvdW5kQXJnc0NvcHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KHRoaXMtPmdsb2JhbE9iamVj
dCgpLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
ICAgICBpZiAobV9ib3VuZEFyZ3MpIHsKLSAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0
aGUgZmlyc3Qgb25lIGlzIGJvdW5kIHx0aGlzfC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8IG1fYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAg
cmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgbV9ib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAppbmRleCA0
YTkwYjAyMmRkMzBmNjQwNjczMWIwZjFkYTkyOTZhMjc3YzVjNjg3Li4xN2FhODRjZmZlMTU3Y2Jh
ODZjZjkyZDhhY2M1OWY2NzY5Y2FkMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJm
bHkuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQyLDYgKzQzLDggQEAgY2xhc3MgSlNCb3Vu
ZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyAmIH5JbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOwogICAgIHN0YXRpY19hc3NlcnQoU3RydWN0dXJlRmxh
Z3MgJiBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsICIiKTsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbWF4TnVtYmVyT2ZDbG9uaW5nQm91bmRBcmd1bWVudHMgPSA2NDsKKwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKQEAgLTUyLDkgKzU1LDE2
IEBAIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAg
ICAKICAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CiAKKyAgICAvLyBJZiBib3VuZEFyZ3MnIGxlbmd0aCBpcyB0b28g
bGFyZ2UsIHdlIHNob3VsZCBub3QgY2xvbmUgYm91bmRBcmdzIHdoZW4gd3JhcHBpbmcgdGhlIGJv
dW5kIGZ1bmN0aW9uIGFnYWluLgorICAgIGJvb2wgY2FuQ2xvbmVCb3VuZEFyZ3MoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJvdW5kQXJnc0xlbmd0aCgpIDw9IEpTQm91bmRGdW5jdGlv
bjo6bWF4TnVtYmVyT2ZDbG9uaW5nQm91bmRBcmd1bWVudHM7CisgICAgfQorCiAgICAgSlNPYmpl
Y3QqIHRhcmdldEZ1bmN0aW9uKCkgeyByZXR1cm4gbV90YXJnZXRGdW5jdGlvbi5nZXQoKTsgfQog
ICAgIEpTVmFsdWUgYm91bmRUaGlzKCkgeyByZXR1cm4gbV9ib3VuZFRoaXMuZ2V0KCk7IH0KICAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzKCkgeyByZXR1cm4gbV9ib3VuZEFyZ3Mu
Z2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRoaXMgYXJyYXkgdG8gYmUgbXV0YXRlZCEKKyAgICB1
bnNpZ25lZCBib3VuZEFyZ3NMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQXJncyA/IG1f
Ym91bmRBcmdzLT5sZW5ndGgoKSA6IDA7IH0KICAgICBKU0FycmF5KiBib3VuZEFyZ3NDb3B5KEpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgSlNTdHJpbmcqIG5hbWVNYXlCZU51bGwoKSB7IHJldHVybiBt
X25hbWVNYXlCZU51bGwuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWVTdHJpbmcoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDBhNjE2NzEzZTZkYzZjZDVlYTc5OGVlYzQ2ZDFhNTQ2YzdhZTMyYTguLjE1MmFkODVmMzUx
MWYxN2JhNGJmMTk3MjBiNDRlMzZiMTBmN2ZiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwMCwxMCArMzAwLDIyIEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihtYWtlQm91bmRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEpTVmFsdWUgYm91bmRUaGlzID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBKU1ZhbHVlIGJvdW5kQXJncyA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CisgICAgSlNJbW11dGFibGVCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IGJvdW5kQXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1
dHRlcmZseSo+KGJvdW5kQXJncykgOiBudWxscHRyOwogICAgIGRvdWJsZSBsZW5ndGggPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDMpLmFzTnVtYmVyKCk7CiAgICAgSlNTdHJpbmcqIG5h
bWVTdHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKTsKIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFy
Z3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihib3VuZEFyZ3MpIDog
bnVsbHB0ciwgbGVuZ3RoLCBuYW1lU3RyaW5nKSkpOworICAgIC8vIFVud3JhcCBKU0JvdW5kRnVu
Y3Rpb24gYnkgY29uZmlndXJpbmcgYnV0dGVyZmx5IGFuZCB0YXJnZXQuIFRoZSBsYXJnZXIgQnV0
dGVyZmx5IGlzIGFscmVhZHkgYWxsb2NhdGVkIGZvciB0aGF0IHB1cnBvc2UuCisgICAgaWYgKHRh
cmdldC0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1
bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7
CisgICAgICAgIGlmIChib3VuZEZ1bmN0aW9uLT5jYW5DbG9uZUJvdW5kQXJncygpKSB7CisgICAg
ICAgICAgICBib3VuZFRoaXMgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKTsKKyAgICAgICAg
ICAgIHRhcmdldCA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7CisgICAgICAgICAg
ICBpZiAoIWJ1dHRlcmZseSAmJiBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkKKyAgICAgICAg
ICAgICAgICBidXR0ZXJmbHkgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRU
aGlzLCBidXR0ZXJmbHksIGxlbmd0aCwgbmFtZVN0cmluZykpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk0NzkwYTcyYWJmNjczYWUx
N2E3NDVkYTM2MmExNWIyZmViM2U0NzcuLjBhOWEyYmUwMTY0NjE0ODFlODFmMGYzODRkZWVkZWVi
MDk5Zjc5YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNS0wMSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1
bmN0aW9uIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjUxMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGpzL2RvbS9mdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wNC0zMCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAgaGln
aGxpZ2h0IFVJIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHNlbGVjdGluZyB0ZXh0IGluIGltYWdl
IG92ZXJsYXlzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tYmluZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tYmluZC1leHBlY3RlZC50
eHQKaW5kZXggMmM5ODEwNDU1MjY1YzM4ZTQzZTI4MjZhY2RmODc2NzM1YmFlZGE5Ni4uMzQ4OTM1
NWVjNjUzNjQ0Zjk0MGRmOGY1ZjY3YjAxMTRkMzVhZDE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvanMvZG9tL2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pz
L2RvbS9mdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdHMgRnVu
Y3Rpb24uYmluZC4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIG5ldyAoZGVj
b2RlVVJJLmJpbmQoKSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBu
b3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IChkZWNvZGVVUkkuYmluZCgpKSgpJyku
CitQQVNTIG5ldyAoZGVjb2RlVVJJLmJpbmQoKSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnZGVjb2RlVVJJJyku
CiBQQVNTIChuZXcgKFN0cmluZy5iaW5kKCkpKCdmb28nKSkudG9TdHJpbmcoKSBpcyAnZm9vJwog
UEFTUyByZXN1bHQgaXMgIltvYmplY3QgV2luZG93XSAtPiB4OjEsIHk6MiIKIFBBU1MgcmVzdWx0
IGlzICInYScgLT4geDonYicsIHk6MSIKQEAgLTI1LDcgKzI1LDcgQEAgUEFTUyAicHJvdG90eXBl
IiBpbiBHIGlzIGZhbHNlCiBQQVNTICJwcm90b3R5cGUiIGluIEggaXMgZmFsc2UKIFBBU1MgRnVu
Y3Rpb24uYmluZC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogfHRo
aXN8IGlzIG5vdCBhIGZ1bmN0aW9uIGluc2lkZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC4KIFBB
U1MgYWJjQXQoMSkgaXMgImIiCi1QQVNTIG5ldyBhYmNBdCgxKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGFi
Y0F0KDEpJykuCitQQVNTIG5ldyBhYmNBdCgxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBm
dW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnYWJjQXQnKS4KIFBBU1Mg
Ym91bmRGdW5jdGlvblByb3RvdHlwZUFjY2Vzc2VkIGlzIGZhbHNlCiBQQVNTIEZ1bmN0aW9uLmJp
bmQubGVuZ3RoIGlzIDEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGUwNTgxZDQ2
YmY2MDRiYjc5NWFkM2E2MjE1MDllNDU5ZTdiZWE4MC4uMzM3M2EwYzgzMDk1MjYxZjBjNDRlZjU4
ZmViZTc0ZmQ5MDVlODJmZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNS0wMSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1
bmN0aW9uIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjUxMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0cmVzcy9ib3VuZC1mdW5jdGlvbi1pbmxpbmluZy5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHQpOgorICAgICAgICAqIHN0
cmVzcy9ib3VuZC1mdW5jdGlvbi1zdGFjay1vdmVyZmxvdy5qczoKKyAgICAgICAgKiBzdHJlc3Mv
Ym91bmQtZnVuY3Rpb24tc3RyZW5ndGgtcmVkdWN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodDEpOgorICAgICAgICAodDIpOgor
ICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGxlci5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChpbmxpbmVkKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5vdC1taXNzLWFscmVhZHktYm91bmQtYXJncy5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KiBzdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy1tb3JlLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRocm93YWJsZSk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1kb3Vi
bGUtd3JhcC10aHJvdy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0
aHJvd2FibGUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICog
c3RyZXNzL2Z1bmN0aW9uLWJpbmQtaW5saW5lZC1vc3ItZXhpdC5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChtYXlFeGl0KToKKyAgICAgICAgKGlubGluZWQpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGhyb3cuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGhyb3dhYmxlKToKKyAgICAgICAg
KGlubmVyKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAqIHN0
cmVzcy9zYW1wbGluZy1wcm9maWxlci1ib3VuZC1mdW5jdGlvbi1uYW1lLmpzOgorICAgICAgICAo
cGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIpOgorICAgICAgICAqIHN0cmVzcy9zdGFj
ay1vdmVyZmxvdy1pbi1jdXN0b20taGFzSW5zdGFuY2UuanM6CisKIDIwMjEtMDQtMjggIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBleGNlcHRpb24gYXNzZXJ0
aW9ucyBpbiBsaWdodCBvZiB0aGUgVGVybWluYXRpb25FeGNlcHRpb24uCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1pbmxpbmluZy5qcyBiL0pTVGVzdHMvc3RyZXNz
L2JvdW5kLWZ1bmN0aW9uLWlubGluaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNTA1YjFmZTcyMjM5ZTZi
Y2ZkNzIwOWI1MzAzMGI4MGRjMWNiMmYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9ib3VuZC1mdW5jdGlvbi1pbmxpbmluZy5qcwpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gdGVzdChhLCBiLCBjKSB7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KKwordmFy
IGJvdW5kID0gdGVzdC5iaW5kKDAsIDEpOworCitmdW5jdGlvbiB0KCkgeworICAgIHJldHVybiBi
b3VuZCgyLCAzLCA0KTsKK30KK25vSW5saW5lKHQpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7
ICsraSkKKyAgICBzaG91bGRCZSh0KCksIDYpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Ym91bmQtZnVuY3Rpb24tc3RhY2stb3ZlcmZsb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1m
dW5jdGlvbi1zdGFjay1vdmVyZmxvdy5qcwppbmRleCBmMTgyMmUxZWE2OWI1NjU4YmI0N2Q4MDhj
MDZjZjRkOTc4Y2MxNzdhLi44MmFiZTMxMGIxYmM3ZGJjMDEwMGE3MWE0MGRkNGRmZWQxMGFmOWE1
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdGFjay1vdmVyZmxv
dy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdGFjay1vdmVyZmxvdy5q
cwpAQCAtOCw4ICs4LDggQEAgZnVuY3Rpb24gZm9vKCkKIHsKIH0KIAotZm9yICh2YXIgaSA9IDA7
IGkgPCA1MDAwOyArK2kpIHsKLSAgICBmb28gPSBmb28uYmluZCgxKTsKK2ZvciAodmFyIGkgPSAw
OyBpIDwgNjAwMDsgKytpKSB7CisgICAgZm9vID0gZm9vLmJpbmQodW5kZWZpbmVkLCAxLCAyLCAz
LCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEpOwogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShm
b28sICJuYW1lIiwgeyB2YWx1ZTogImJhciIsIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0
cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Ym91bmQtZnVuY3Rpb24tc3RyZW5ndGgtcmVkdWN0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvYm91
bmQtZnVuY3Rpb24tc3RyZW5ndGgtcmVkdWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMzc4NmQyZWJm
OWE1OWQ4MTNkM2NiMjU1NDJiMDE2MTZmM2M4N2YKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdHJlbmd0aC1yZWR1Y3Rpb24uanMKQEAgLTAsMCArMSwy
NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykgeworICAgIHJldHVybiBhICsg
YiArIGM7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIGJvdW5kID0gdGVzdC5iaW5kKDAsIDEp
Oworbm9JbmxpbmUoYm91bmQpOworCitmdW5jdGlvbiB0MSgpIHsKKyAgICByZXR1cm4gYm91bmQo
MiwgMywgNCk7Cit9Citub0lubGluZSh0MSk7CisKK2Z1bmN0aW9uIHQyKCkgeworICAgIHJldHVy
biBib3VuZCgnaGVsbG8nKTsKK30KK25vSW5saW5lKHQyKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTY7ICsraSkgeworICAgIHNob3VsZEJlKHQxKCksIDYpOworICAgIHNob3VsZEJlKHQyKCks
ICIxaGVsbG91bmRlZmluZWQiKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtY2FsbGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1jYWxsZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjM4ZTlmZTIzNDAwYjk1NmUzMDBkM2JhMWJhNmFmNzBjZWJkZTMxMAot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtY2FsbGVyLmpz
CkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBpbmxpbmVkKGEsIGIsIGMpCit7
CisgICAgc2hvdWxkQmUoaW5saW5lZC5jYWxsZXIsIHRlc3QpOworfQorCit2YXIgYm91bmQgPSBp
bmxpbmVkLmJpbmQodW5kZWZpbmVkLCAzKS5iaW5kKHVuZGVmaW5lZCwgMSwgMik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJldHVybiBib3VuZCgpOworfQorbm9JbmxpbmUodGVzdCk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kby1ub3QtbWlzcy1hbHJlYWR5LWJvdW5kLWFy
Z3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5vdC1taXNzLWFscmVhZHkt
Ym91bmQtYXJncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjU3OGYwZDQ1NGFkZWU1ZDUxZWI5Mjg4ZjMzMGZh
YjE4ZjdmYjEzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmlu
ZC1kby1ub3QtbWlzcy1hbHJlYWR5LWJvdW5kLWFyZ3MuanMKQEAgLTAsMCArMSwxNCBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjOwor
fQordmFyIGJvdW5kMSA9IHRlc3QuYmluZCh1bmRlZmluZWQsIDAsIDEsIDIpOwordmFyIGJvdW5k
MiA9IGJvdW5kMS5iaW5kKHVuZGVmaW5lZCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyAr
K2kpCisgICAgc2hvdWxkQmUoYm91bmQyKCksIDMpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy1tb3JlLmpzIGIvSlNUZXN0cy9zdHJl
c3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy1tb3JlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFj
OGMyYTcyZDFkNDZjYTVkZWRhY2ZhMTY2MzQ3MDMyYmFhZWE3OWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93LW1vcmUuanMK
QEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7CitmdW5jdGlvbiB0
aHJvd2FibGUoKQoreworICAgIGlmIChmbGFnKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsK
K30KK25vSW5saW5lKHRocm93YWJsZSk7CisKK2Z1bmN0aW9uIHRlc3QoYSwgYikKK3sKKyAgICB0
aHJvd2FibGUoKTsKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK3ZhciBib3VuZCA9IHRlc3QuYmlu
ZCh1bmRlZmluZWQsIDEsIDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICB2
YXIgYm91bmQgPSBib3VuZC5iaW5kKHVuZGVmaW5lZCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU2OyArK2kpCisgICAgc2hvdWxkQmUoYm91bmQoKSwgMyk7CitmbGFnID0gdHJ1ZTsKK3ZhciBl
cnJvciA9IG51bGw7Cit0cnkgeworICAgIGJvdW5kKCk7Cit9IGNhdGNoIChlKSB7CisgICAgZXJy
b3IgPSBlOworfQorc2hvdWxkQmUoZXJyb3IgIT09IG51bGwsIHRydWUpOworc2hvdWxkQmUoZXJy
b3Iuc3RhY2sudHJpbSgpLnNwbGl0KCdcbicpLmxlbmd0aCwgMik7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93LmpzIGIvSlNUZXN0cy9z
dHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmQ5
ZThhNWViNDQxM2EyNWNlYmE2MTAzM2ExZGI1ZmVmYWU3YmYyCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy5qcwpAQCAtMCww
ICsxLDMyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsKTsKK30KKwordmFyIGZsYWcgPSBmYWxzZTsKK2Z1bmN0aW9uIHRocm93YWJs
ZSgpCit7CisgICAgaWYgKGZsYWcpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworfQorbm9J
bmxpbmUodGhyb3dhYmxlKTsKKworZnVuY3Rpb24gdGVzdChhLCBiKQoreworICAgIHRocm93YWJs
ZSgpOworICAgIHJldHVybiBhICsgYjsKK30KK3ZhciBib3VuZDEgPSB0ZXN0LmJpbmQodW5kZWZp
bmVkLCAxKTsKK3ZhciBib3VuZDIgPSBib3VuZDEuYmluZCh1bmRlZmluZWQsIDIpOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKGJvdW5kMigpLCAzKTsKK2Zs
YWcgPSB0cnVlOwordmFyIGVycm9yID0gbnVsbDsKK3RyeSB7CisgICAgYm91bmQyKCk7Cit9IGNh
dGNoIChlKSB7CisgICAgZXJyb3IgPSBlOworfQorc2hvdWxkQmUoZXJyb3IgIT09IG51bGwsIHRy
dWUpOworc2hvdWxkQmUoZXJyb3Iuc3RhY2sudHJpbSgpLnNwbGl0KCdcbicpLmxlbmd0aCwgMik7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWlubGluZWQtb3NyLWV4
aXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWlubGluZWQtb3NyLWV4aXQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYThhY2E1MGExNWRiNzNhMDVkNWI5Y2EzMzY0MDc4YjZlOTNlZDQ0ZQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtaW5saW5lZC1vc3It
ZXhpdC5qcwpAQCAtMCwwICsxLDMyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGZsYWcgPSBmYWxzZTsKK2Z1
bmN0aW9uIG1heUV4aXQoKQoreworICAgIGlmIChmbGFnKSB7CisgICAgICAgIE9TUkV4aXQoKTsK
KyAgICAgICAgcmV0dXJuIDI0OworICAgIH0KKyAgICByZXR1cm4gNDI7Cit9CisKK2Z1bmN0aW9u
IGlubGluZWQoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjICsgbWF5RXhpdCgpOwor
fQorCit2YXIgYm91bmQgPSBpbmxpbmVkLmJpbmQodW5kZWZpbmVkLCAxLCAyLCAzKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmV0dXJuIGJvdW5kKCk7Cit9Citub0lubGluZSh0ZXN0KTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCksIDQ4
KTsKK2ZsYWcgPSB0cnVlOworc2hvdWxkQmUodGVzdCgpLCAzMCk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rp
b24tYmluZC10aHJvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTNmNmZlOTk5NTU5N2ZjZGQwOTlmZDI4YWFh
MDVmZDA2NmViMzU3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24t
YmluZC10aHJvdy5qcwpAQCAtMCwwICsxLDM2IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGZsYWcgPSBmYWxz
ZTsKK2Z1bmN0aW9uIHRocm93YWJsZSgpCit7CisgICAgaWYgKGZsYWcpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiZXhwZWN0ZWQiKTsKK30KK25vSW5saW5lKHRocm93YWJsZSk7CisKK2Z1bmN0
aW9uIGlubmVyKCkKK3sKKyAgICB0aHJvd2FibGUoKTsKK30KK3ZhciBib3VuZCA9IGlubmVyLmJp
bmQoMSwgMiwgMyk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGJvdW5kKCk7Cit9Citub0lu
bGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0KCk7
CisKK3ZhciBsZW5ndGggPSAwOwordHJ5IHsKKyAgICBmbGFnID0gdHJ1ZTsKKyAgICB0ZXN0KCk7
Cit9IGNhdGNoIChlcnJvcikgeworICAgIGxlbmd0aCA9IGVycm9yLnN0YWNrLnRyaW0oKS5zcGxp
dCgnXG4nKS5sZW5ndGg7Cit9CitzaG91bGRCZShsZW5ndGgsIDQpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXItYm91bmQtZnVuY3Rpb24tbmFtZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL3NhbXBsaW5nLXByb2ZpbGVyLWJvdW5kLWZ1bmN0aW9uLW5hbWUuanMKaW5k
ZXggZjM3NzYyOTg5NTg1NjVkOTA3Y2IzNTYwYzZhNzMzOTNhMDdiNjNmYS4uOTMzYTc0NDU5YzE3
YTQ5ZDZmNWNiNDdmNjczMWY0MGE3ZjVhZWQxNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
c2FtcGxpbmctcHJvZmlsZXItYm91bmQtZnVuY3Rpb24tbmFtZS5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9zYW1wbGluZy1wcm9maWxlci1ib3VuZC1mdW5jdGlvbi1uYW1lLmpzCkBAIC0yMyw2ICsy
Myw2IEBAIGZ1bmN0aW9uIGJhcigpIHsKICAgICAgICAgYm91bmRCYXIoKTsKICAgICB9CiAKLSAg
ICBydW5UZXN0KGJheiwgWyJmb28iLCAiYm91bmQgZm9vIiwgImJheiJdKTsKLSAgICBydW5UZXN0
KGJheiwgWyJiYXIiLCAiYm91bmQgYmFyIiwgImJheiJdKTsKKyAgICBydW5UZXN0KGJheiwgWyJm
b28iLCAiYmF6Il0pOworICAgIHJ1blRlc3QoYmF6LCBbImJhciIsICJiYXoiXSk7CiB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy1pbi1jdXN0b20taGFzSW5zdGFu
Y2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy1pbi1jdXN0b20taGFzSW5zdGFu
Y2UuanMKaW5kZXggYzFlMmViMDY0NzJjZjhlMDkxMDk3MTc1MGFkN2FhM2VkY2QzNzdlZS4uYzk4
ZDMxNmFkNTExNjQzNzkxYzhhNzk0MjU0ZjAxOWM5MTQ2OGEzMCAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4tY3VzdG9tLWhhc0luc3RhbmNlLmpzCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93LWluLWN1c3RvbS1oYXNJbnN0YW5jZS5qcwpAQCAt
NCw3ICs0LDcgQEAgZnVuY3Rpb24gZigpIHt9CiAKIHZhciBmbiA9IGY7CiBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwMDsgKytpKSB7Ci0gICAgZm4gPSBmbi5iaW5kKCk7CisgICAgZm4gPSBmbi5i
aW5kKHVuZGVmaW5lZCwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwg
MTMsIDE0LCAxNSwgMTYpOwogCiAgICAgLy8gRW5zdXJlIHdlIGRvbid0IGZhbGxiYWNrIHRvIEBA
aGFzSW5zdGFuY2UgZnJvbSAlRnVuY3Rpb25Qcm90b3R5cGUlLgogICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShmbiwgU3ltYm9sLmhhc0luc3RhbmNlLCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427509</attachid>
            <date>2021-05-01 12:03:21 -0700</date>
            <delta_ts>2021-05-01 20:46:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210501120320.patch</filename>
            <type>text/plain</type>
            <size>86033</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDkyNDhkYTZiYWNhOWM0NjZkMDQ4MTdmMjJhYmZiMjY1ZDZlNmE4Li5lMWI0ODRiNmI3MzM4ZjNk
NmMyMDUzMjEzNGY5YmYzZmIwYjllNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAyMS0wNS0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1bmN0aW9uIGNhbGxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG9wdGlt
aXplcyBGdW5jdGlvbiNiaW5kLgorCisgICAgICAgIDEuIEZ1bmN0aW9uI2JpbmQgYm91bmRBcmdz
IGRvIG5vdCBpbmNsdWRlIHx0aGlzfCwgd2hpY2ggaXMgZHVwbGljYXRlZCBpbiBib3VuZFRoaXMg
ZmllbGQuCisgICAgICAgIDIuIEZ1bmN0aW9uI2JpbmQgdW53cmFwcyBmdW5jdGlvbiB3aGVuIGJp
bmRpbmcgdGhlIGJvdW5kIGZ1bmN0aW9uLiBXZSBrZWVwIGRlcHRoIG9mIGJvdW5kIDEuCisgICAg
ICAgIDMuIENhbGxJQyBub3cgaW5saW5lcyBib3VuZCBmdW5jdGlvbiBpZiBpdCBpcyBub3QgYSBj
bG9zdXJlIGNhbGwuCisgICAgICAgIDQuIERGRyAvIEZUTCBhdHRlbXB0IHRvIGlubGluZSB3cmFw
cGVkIGZ1bmN0aW9uIGlmIGl0IGZpZ3VyZWQgb3V0IHRoYXQgYm91bmQgZnVuY3Rpb24gaXMgY2Fs
bGVkLgorICAgICAgICA1LiBERkcgLyBGVEwgYXR0ZW1wdCB0byBzcHJlYWQgYm91bmQgYXJndW1l
bnRzIGV2ZW4gaWYgd2UgZGVjaWRlZCBub3QgdG8gaW5saW5lIGEgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBidWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKGJpbmQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2Nh
bENsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
QWRhcHRvcjo6cmVhZFRvcCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9u
UGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSk6IERlbGV0
ZWQuCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpHZXRTdGFja1RyYWNlRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JXaXRoRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6Omdl
bmVyYXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHlt
b3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAg
IChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgICog
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKwogMjAy
MS0wNC0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ug
c21hbGwgSklUIHBvb2wgdGVzdHMgcGFzcyBvbiBBUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4IGFmMjlhZmQ4MzU2Y2Fm
OWI3ZTk4ZjRiNjY3OTFhNDNhNTc0NDU5YWEuLjZiMjUzOTkwMTA3NzQ1ZmJlOWExNzFjYmMyZjJm
MjhkMDBmNjcyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9G
dW5jdGlvblByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTYxLDggKzYxLDcgQEAgZnVuY3Rpb24gYmluZCh0aGlz
VmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHRhcmdldCA9IHRoaXM7Ci0g
ICAgaWYgKCFAaXNDYWxsYWJsZSh0YXJnZXQpKQorICAgIGlmICghQGlzQ2FsbGFibGUodGhpcykp
CiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBhIGZ1bmN0aW9uIGluc2lk
ZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCIpOwogCiAgICAgdmFyIGFyZ3VtZW50Q291bnQgPSBA
YXJndW1lbnRDb3VudCgpOwpAQCAtNzAsMTIgKzY5LDEyIEBAIGZ1bmN0aW9uIGJpbmQodGhpc1Zh
bHVlKQogICAgIHZhciBudW1Cb3VuZEFyZ3MgPSAwOwogICAgIGlmIChhcmd1bWVudENvdW50ID4g
MSkgewogICAgICAgICBudW1Cb3VuZEFyZ3MgPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICAgICAg
Ym91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOworICAgICAgICBib3VuZEFy
Z3MgPSBAY3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KHRoaXMpOwogICAgIH0KIAogICAgIHZhciBs
ZW5ndGggPSAwOwotICAgIGlmIChAaGFzT3duTGVuZ3RoUHJvcGVydHkodGFyZ2V0KSkgewotICAg
ICAgICB2YXIgbGVuZ3RoVmFsdWUgPSB0YXJnZXQubGVuZ3RoOworICAgIGlmIChAaGFzT3duTGVu
Z3RoUHJvcGVydHkodGhpcykpIHsKKyAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0gdGhpcy5sZW5n
dGg7CiAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAg
ICAgICAgICBsZW5ndGhWYWx1ZSA9IEB0b0ludGVnZXJPckluZmluaXR5KGxlbmd0aFZhbHVlKTsK
ICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IGNhcmUgYWJvdXQgcG9zaXRpdmUgbGVu
Z3RoVmFsdWVzLCBob3dldmVyLCB0aGlzIGNvbXBhcmlzaW9uCkBAIC04NSw5ICs4NCw5IEBAIGZ1
bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgdmFyIG5hbWUg
PSB0YXJnZXQubmFtZTsKKyAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICBpZiAodHlwZW9m
IG5hbWUgIT09ICJzdHJpbmciKQogICAgICAgICBuYW1lID0gIiI7CiAKLSAgICByZXR1cm4gQG1h
a2VCb3VuZEZ1bmN0aW9uKHRhcmdldCwgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFt
ZSk7CisgICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0aGlzLCB0aGlzVmFsdWUsIGJvdW5k
QXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGNiMGU3YzhjOWJiYmExNGM1N2QyMmI0YmEyN2ViZmI5
ZDcyOTc3NmEuLjI2YWYwNmVmNDRhZmRiOGMyNzdiNWJkZDcxMWUwNDgxY2FhNjYyMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTEx
LDkgKzExMSwxMCBAQAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKLW9w
IDpjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSwKK29wIDpjcmVhdGVfYXJndW1lbnRzX2J1dHRl
cmZseV9leGNsdWRpbmdfdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICB0YXJnZXQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKIG9wIDpj
cmVhdGVfdGhpcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCmluZGV4IDAxNmEwMjdmYTMzYWI3OTQ5NDMxMmE0YTQ3N2RmYzViMmU3YTAw
ZDcuLjk0MzIwZTZlNDc5Y2EwY2MzYmZkZWY0MzkyYWViNGZiZjY4MjNhM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtOTIs
NyArOTIsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJl
Z2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfcHJvZmlsZV9j
b250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBj
YXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3Vt
ZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBv
cF9jaGVja190cmFwczoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKQEAgLTEwMyw2ICsxMDIs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVy
IHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgogICAg
ICAgICByZXR1cm47CiAKKyAgICBVU0VTKE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpcywgdGFyZ2V0KQogICAgIFVTRVMoT3BUb1RoaXMsIHNyY0RzdCkKICAgICBVU0VTKE9w
Q2hlY2tUZHosIHRhcmdldFZpcnR1YWxSZWdpc3RlcikKICAgICBVU0VTKE9wSWRlbnRpdHlXaXRo
UHJvZmlsZSwgc3JjRHN0KQpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1CiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BD
cmVhdGVTY29wZWRBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzLCBkc3QpCi0gICAgREVGUyhPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgZHN0KQorICAg
IERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBkc3QpCiAgICAg
REVGUyhPcERlbEJ5SWQsIGRzdCkKICAgICBERUZTKE9wRGVsQnlWYWwsIGRzdCkKICAgICBERUZT
KE9wVW5zaWduZWQsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNThlNTBkYTA5MjFiMjA5Zjll
YmVmZjJhYmRmM2IzM2VmZDU1YmQ4Yi4uMDEzMWNmMjg5ZmFhYjVkMDdkZTVhZDVkNWJlZjEzNDgx
MjlkMjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4NzMsOSArMjg3Myw5IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoUmVnaXN0ZXJJRCogZHN0
KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdGFyZ2V0KQog
ewotICAgIE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OjplbWl0KHRoaXMsIGRzdCk7CisgICAg
T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOjplbWl0KHRoaXMsIGRzdCwg
dGFyZ2V0KTsKICAgICByZXR1cm4gZHN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTUxMWRjMjc1
NTVkZTViODg0NDdlMzMzZjllMTY2MjVhODU2MjYxYy4uMzZiOGIwOTRkYjE3YmY1YTc5NmM3NWQy
YzQzYjg2MjY2ZWIxMDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzYxLDcgKzc2MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlUHJvbWlzZShSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCwgYm9vbCBpc0ludGVybmFsUHJvbWlzZSk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRl
QXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpOwot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KFJlZ2lzdGVy
SUQqIGRzdCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY291bnQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZOZWVkZWQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3RvciwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0
ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggM2NiZDEyMDk5ZTg1YjBiNDI2MjA4MGE0M2EzNWRlODFmMmJkNTdiOS4u
ZjQyMjNkOTI2YWI2N2YxMGZiNzQ0YTBjMzE3ODNhMjMyNjhhNWNmNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTkz
Myw4ICsxOTMzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfbmV3UHJvbWlzZShKU0M6OkJ5dGVjb2RlR2VuZXJhCiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBk
c3QpCiB7Ci0gICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUpOwotICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpKTsKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhZGRpdGlvbmFsQ291bnQgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMoZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYWRkaXRpb25hbENvdW50LmdldCgpKTsKIH0KIAog
I2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9S
UyhuYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZmE5ZDlmYTBiYmZiMDZkYjZkNjIwMTI3
NWNmYzY2MzQxMTA5Yjk5Ni4uMjZiMzUzOGIyNjQ0YThmNDQ5MmJhNjEyZThkNDAyNTZhNWQxMjlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzIzMCw3ICszMjMwLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVy
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAg
ICAgIHNldEZvck5vZGUobm9kZSwgbV92bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2Fy
cmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykg
LSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGY3
ZWU0NmI0NmFhZDMwYTI3YmY2YjM2ZWEyNDcyMjliNWJjYTNkNGQuLjBiOTIwNWNiMDYxOTFmNGQ0
MGQ5Yzc5YWZjNTNmYTE4N2U1MTk2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5C
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5zdGFuY2VPZlN0YXR1cy5oIgogI2luY2x1ZGUgIkpT
QXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1
ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCkBAIC0yMDEsNyArMjAyLDcgQEAgY2xhc3MgQnl0ZUNv
ZGVQYXJzZXIgewogICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3Bl
cmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBCYXNpY0Jsb2NrKiBj
b250aW51YXRpb25CbG9jaywgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAg
ICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2Vl
ZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgotICAgIGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBj
YWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgSW50cmlu
c2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Qnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlRE9N
SklUQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CkBAIC0xODg2LDEw
ICsxODg3LDEyIEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBjCiAgICAgVkVSQk9TRV9MT0coIiAg
ICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKIAogICAgIGJvb2wgZGlkSW5z
ZXJ0Q2hlY2tzID0gZmFsc2U7Ci0gICAgYXV0byBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZyA9
IFsmXSAoKSB7CisgICAgYm9vbCBkaWRCb3VuZEZ1bmN0aW9uSW5saW5pbmcgPSBmYWxzZTsKKyAg
ICBhdXRvIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nID0gWyZdIChib29sIGJvdW5kRnVuY3Rp
b25JbmxpbmluZyA9IGZhbHNlKSB7CiAgICAgICAgIGlmIChuZWVkc1RvQ2hlY2tDYWxsZWUpCiAg
ICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBjYWxsVGFyZ2V0Tm9kZSwgdGhp
c0FyZ3VtZW50KTsKICAgICAgICAgZGlkSW5zZXJ0Q2hlY2tzID0gdHJ1ZTsKKyAgICAgICAgZGlk
Qm91bmRGdW5jdGlvbklubGluaW5nID0gYm91bmRGdW5jdGlvbklubGluaW5nOwogICAgIH07CiAK
ICAgICBpZiAoa2luZCA9PSBJbmxpbmVDYWxsRnJhbWU6OlRhaWxDYWxsICYmIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgY2FsbGVlLCByZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGluc2VydENoZWNrc1dpdGhB
Y2NvdW50aW5nKSkgewpAQCAtMTkwNSw4ICsxOTA4LDExIEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2Rl
KiBjCiAKICAgICBhdXRvIGVuZFNwZWNpYWxDYXNlID0gWyZdICgpIHsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKLSAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBj
YWxsVGFyZ2V0Tm9kZSk7Ci0gICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zm
c2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgIC8vIEJvdW5kIGZ1bmN0
aW9uJ3Mgc2xvdHMgb2YgdGhlbSBhcmUgbm90IGltcG9ydGFudC4gVGhleSBhcmUgZGVhZCBhdCBP
U1IgZXhpdC4KKyAgICAgICAgaWYgKCFkaWRCb3VuZEZ1bmN0aW9uSW5saW5pbmcpIHsKKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAg
ZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKTsKKyAgICAgICAgfQogICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAg
aWYgKGNvbnRpbnVhdGlvbkJsb2NrKSB7CiAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IG9z
ckV4aXRJbmRleDsKQEAgLTE5MjcsNyArMTkzMyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0
aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2RlKiBj
CiAKICAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFs
aXphdGlvbktpbmQpOwogICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAgICAg
ICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwgaW50cmlu
c2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rp
b24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgeworICAgICAgICBpZiAoaGFuZGxlSW50
cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBjYWxsZWUsIGludHJpbnNpYywgcmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5kZXgsIGtp
bmQsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewogICAgICAgICAg
ICAgZW5kU3BlY2lhbENhc2UoKTsKICAgICAgICAgICAgIHJldHVybiBDYWxsT3B0aW1pemF0aW9u
UmVzdWx0OjpJbmxpbmVkOwogICAgICAgICB9CkBAIC0yMzIyLDcgKzIzMjgsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBp
bnQgcmVnaXN0ZXJPZmZzZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgot
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9w
ZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFy
aWFudCBjYWxsVmFyaWFudCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdElu
ZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJPU0VfTE9H
KCIgICAgICAgVGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMsICJcbiIpOwogCkBAIC0zNzU2
LDYgKzM3NjIsNjcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChO
b2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICNlbmRpZgogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBCb3VuZEZ1bmN0aW9uQ2FsbEludHJpbnNpYzogeworICAgICAgICAg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsVmFyaWFudC5mdW5jdGlvbigpOworICAgICAg
ICAgICAgaWYgKCFmdW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpT
Qm91bmRGdW5jdGlvbio+KCptX3ZtLCBmdW5jdGlvbik7CisgICAgICAgICAgICBpZiAoIWJvdW5k
RnVuY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBp
bnNlcnRDaGVja3ModHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIE1ha2UgYSBjYWxsLiBXZSBkb24n
dCB0cnkgdG8gZ2V0IGZhbmN5IHdpdGggdXNpbmcgdGhlIHNtYWxsZXN0IG9wZXJhbmQgbnVtYmVy
IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBzdGFjayBsYXlvdXQgcGhhc2Ugc2hvdWxkIGNv
bXByZXNzIHRoZSBzdGFjayBhbnl3YXkuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
V2UgZG8gbm90IG92ZXJyaWRlIHRoZSBleGlzdGluZyBzdGFjayBmb3IgdGhpcyBjYWxsLiBXZSBu
ZXdseSBhbGxvY2F0ZSBzdGFjayBzcGFjZSBhbmQgZmlsbCBpdCB3aXRoIHZhbHVlcworICAgICAg
ICAgICAgLy8gdG8ga2VlcCBPU1IgZXhpdCBjb3JyZWN0IHdoZW4gd2UgZXhpdCBpbiB0aGUgbWlk
ZGxlIG9mIHRoaXMgc3RhY2sgY29uc3RydWN0aW9uLiBXZSBleGl0IHRvIHRoZSBjYWxsZXIgc2lk
ZQorICAgICAgICAgICAgLy8gd2hlbiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoaXMgZnJhbWUu
IEFuZCB0aGlzIGlzIHRvdGFsbHkgT0sgc2luY2Ugd2UgYXJlIG5vdCBjbG9iYmVyaW5nIHZhbHVl
cy4KKworICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5k
RnVuY3Rpb24tPmJvdW5kQXJncygpOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlBh
cmFtZXRlcnMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICAgICAgICAgIG51bWJl
ck9mUGFyYW1ldGVycysrOyAvLyBUcnVlIHJldHVybiBQQy4KKyAgICAgICAgICAgIG51bWJlck9m
UGFyYW1ldGVycyArPSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsKKworICAg
ICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJlc3BvbmRz
IHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KKyAgICAgICAgICAgIGludCBuZXdSZWdpc3Rl
ck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkgLSAxKS5vZmZzZXQoKTsKKyAgICAgICAgICAg
IG5ld1JlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKKyAgICAgICAgICAgIG5l
d1JlZ2lzdGVyT2Zmc2V0IC09IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOworCisg
ICAgICAgICAgICAvLyBHZXQgdGhlIGFsaWdubWVudCByaWdodC4KKyAgICAgICAgICAgIG5ld1Jl
Z2lzdGVyT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpLCAtbmV3UmVnaXN0ZXJPZmZzZXQpOworCisgICAgICAgICAgICBlbnN1cmVMb2Nh
bHMobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihuZXdSZWdp
c3Rlck9mZnNldCkpLnRvTG9jYWwoKSk7CisKKyAgICAgICAgICAgIC8vIElzc3VlIFNldExvY2Fs
cy4gVGhpcyBoYXMgdHdvIGVmZmVjdHM6CisgICAgICAgICAgICAvLyAxKSBUaGF0J3MgaG93IGhh
bmRsZUNhbGwoKSBzZWVzIHRoZSBhcmd1bWVudHMuCisgICAgICAgICAgICAvLyAyKSBJZiB3ZSBp
bmxpbmUgdGhlbiB0aGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJndW1lbnRzIGFyZSBmbHVzaGVkIHNv
IHRoYXQgaWYgeW91IHVzZQorICAgICAgICAgICAgLy8gICAgdGhlIGRyZWFkZWQgYXJndW1lbnRz
IG9iamVjdCBvbiB0aGUgY2FsbCB0YXJnZXQsIHRoZSByaWdodCB0aGluZ3MgaGFwcGVuLiBXZWxs
LCBzb3J0IG9mIC0KKyAgICAgICAgICAgIC8vICAgIHNpbmNlIHdlIG9ubHkgcmVhbGx5IGNhcmUg
YWJvdXQgJ3RoaXMnIGluIHRoaXMgY2FzZS4gQnV0IHdlJ3JlIG5vdCBnb2luZyB0byB0YWtlIHRo
YXQKKyAgICAgICAgICAgIC8vICAgIHNob3J0Y3V0LgorICAgICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEFyZ3VtZW50SW5kZXggPSAwOworICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRleCsrLCBuZXdSZWdpc3Rl
ck9mZnNldCksIGpzQ29uc3RhbnQoYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCkpLCBJbW1lZGlh
dGVOYWtlZFNldCk7CisgICAgICAgICAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYm91bmRBcmdzLT5sZW5ndGgoKTsg
KytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgc2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRleCsrLCBuZXdSZWdpc3Rlck9mZnNl
dCksIGpzQ29uc3RhbnQoYm91bmRBcmdzLT5nZXQoaW5kZXgpKSwgSW1tZWRpYXRlTmFrZWRTZXQp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPiAxKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXggPSAxOyBpbmRleCA8
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAg
ICBzZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGN1cnJlbnRBcmd1
bWVudEluZGV4KyssIG5ld1JlZ2lzdGVyT2Zmc2V0KSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50SW5jbHVkaW5nVGhpcyhpbmRleCwgcmVnaXN0ZXJPZmZzZXQpKSwgSW1tZWRpYXRlTmFr
ZWRTZXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSd2ZSBzZXQgc29tZSBs
b2NhbHMsIGJ1dCB0aGV5IGFyZSBub3QgdXNlci12aXNpYmxlIHNpbmNlIHRoZXkgYXJlIG5ld2x5
IGFsbG9jYXRlZCBmb3IgdGhpcyBpbmxpbmVkIGNhbGwuIEl0J3Mgc3RpbGwgT0sgdG8gZXhpdCBm
cm9tIGhlcmUuCisgICAgICAgICAgICAvLyBKU0JvdW5kRnVuY3Rpb24ncyB0cmFtcG9saW5lIGRv
ZXMgbm90IGhhdmUgdXNlci12aXNpYmxlIGVmZmVjdC4gU28gZXhpdGluZyB0byB0aGUgcHJlLWJv
dW5kIGZ1bmN0aW9uIGxvY2F0aW9uIGlzIE9LLgorICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVl
OworICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICBoYW5kbGVD
YWxsKHJlc3VsdCwgQ2FsbCwga2luZCwgb3NyRXhpdEluZGV4LCBqc0NvbnN0YW50KGJvdW5kRnVu
Y3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCBuZXdSZWdp
c3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQoYm91bmRGdW5jdGlvbi0+dGFy
Z2V0RnVuY3Rpb24oKSkpLCBwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGRpZFNldFJlc3VsdCA9
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTgxMTIsMTEg
KzgxNzksMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6
IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1
bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4
Y2x1ZGluZ1RoaXM+KCk7CiAgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHkpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0
dGVyZmx5KTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBFZGdlKGdldChieXRlY29kZS5tX3Rh
cmdldCksIENlbGxVc2UpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJn
dW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY1ZTIyYTEwYTRkMTI2NWRi
NWNkYzcxYjIzMWQwNmQ1MTYxN2VkNmMuLmJmNGY3OTczZTkzNDE2ZGU4NjZmYWM3MTM3NzA3YTg2
YjE3ZTMzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNh
c2Ugb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVk
X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNh
c2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6CisgICAgY2FzZSBvcF9jcmVhdGVfYXJn
dW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpczoKICAgICBjYXNlIG9wX2dldF9mcm9tX2Fy
Z3VtZW50czoKICAgICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRf
YXJndW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4
IGNmMDFiY2UwNTNhM2U1NzdkZTk5N2IwMzMzOWI3YjE0YzY2ODg5MjEuLmMyNDBhYTI2MTNmMGQx
MjAxZWY0OGQ4YTJkMjJkOTExNTU5MjNhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3Bl
ZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENy
ZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eUV4Y2x1ZGluZ1RoaXM6CiAgICAgICAgIHJlYWQoU3RhY2spOwogICAgICAgICByZWFkKEhlYXBP
YmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggY2ZjMjIzMDAwYTUzMmIxYzNiMzk4MGU1
NGE1MDFhM2QzZGZhYWIwOS4uZGQ1MWZhMzhjODgxMTBkOTFiOGZlNTU4ZmZlMGQ1NjdiZjYxNmE2
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjY4LDcgKzI2
OCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENy
ZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAg
ICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ2FsbEV2YWw6CiAgICAgY2FzZSBDYWxsRm9yd2Fy
ZFZhcmFyZ3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApp
bmRleCAzNzRkNTUzMDVkZjhkODc1MDMyZTA0Nzc3YmMzMjIxOWE1NTE1ODBhLi5kMDZkODY0MmY3
N2VmM2FjNGY3NzUxODUwMTk5MGE1MDNkNzI4MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI4ODAsNyArMjg4MCw3IEBAIGNsYXNzIEZpeHVw
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAg
ICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHk6CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpczoKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
aW5kZXggYWYyNjgyODZjODEwMDlkMTgyNmNiMTBiY2Y1N2I1MTEwYTRhNzMzOS4uN2M0OWRhYTkz
MjQ0NjQ3NDdlMDRjNmJmNmY5YzcxMzk5MTcyNjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaApAQCAtNDUxLDcgKzQ1MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVTY29wZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRK
UykgXAogICAgIG1hY3JvKENyZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAotICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgTm9kZVJlc3Vs
dEpTKSBcCisgICAgbWFjcm8oQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oUHV0VG9Bcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhHZXRBcmd1bWVudCwgTm9kZVJlc3VsdEpTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlY2M4ZGM4NTA1MTA5Y2IzNTU0OTBjOTFmYTY5
NmQ2YWRhNzViMjc5Li45ZDE5ZTM1MmY4YmFkMjg0ODdiNjZjY2E5YWRjY2RiNzQ1YjAzYzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5j
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCkBAIC0yMDU5LDIwICsyMDYwLDQyIEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMsIEpT
Q2VsbCosIChKU0dsb2JhbE9iamVjCiAgICAgICAgIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBh
cmd1bWVudFN0YXJ0LCBsZW5ndGgsIGNhbGxlZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIEpTQ2VsbCosIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3Qg
YXJndW1lbnRDb3VudCkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBhcmd1bWVu
dENvdW50LCBKU0NlbGwqIHRhcmdldCkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
ICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEFT
U0VSVChhcmd1bWVudENvdW50ID4gMSk7CisKKyAgICBDaGVja2VkSW50MzIgdG90YWxDb3VudCA9
IGFyZ3VtZW50Q291bnQgLSAxOworICAgIGludDMyX3QgYWRkaXRpb25hbENvdW50ID0gMDsKKyAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gbnVsbHB0cjsKKyAgICBpZiAodGFy
Z2V0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgeworICAgICAgICBKU0JvdW5kRnVu
Y3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGFyZ2V0KTsK
KyAgICAgICAgaWYgKGJvdW5kRnVuY3Rpb24tPmNhbkNsb25lQm91bmRBcmdzKCkpIHsKKyAgICAg
ICAgICAgIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAgICAg
ICAgYWRkaXRpb25hbENvdW50ID0gYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDA7
CisgICAgICAgICAgICB0b3RhbENvdW50ICs9IGFkZGl0aW9uYWxDb3VudDsKKyAgICAgICAgICAg
IGlmICh0b3RhbENvdW50Lmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5
Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9t
SW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZklu
ZGV4aW5nU2hhcGVzXS5nZXQoKSwgYXJndW1lbnRDb3VudCk7CisgICAgSlNJbW11dGFibGVCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVhdGUodm0sIHZt
LmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUo
Q29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNd
LmdldCgpLCB0b3RhbENvdW50LnVuc2FmZUdldCgpKTsKICAgICBpZiAoIWJ1dHRlcmZseSkgewog
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBhcmd1bWVudENvdW50OyArK2luZGV4KQotICAgICAgICBidXR0ZXJmbHktPnNldElu
ZGV4KHZtLCBpbmRleCwgYXJndW1lbnRTdGFydFtpbmRleF0uanNWYWx1ZSgpKTsKKyAgICBpZiAo
YWRkaXRpb25hbENvdW50KSB7CisgICAgICAgIEFTU0VSVChib3VuZEFyZ3MpOworICAgICAgICBm
b3IgKGludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IGFkZGl0aW9uYWxDb3VudDsgKytpbmRleCkK
KyAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4LCBib3VuZEFyZ3MtPmdl
dChpbmRleCkpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCAo
YXJndW1lbnRDb3VudCAtIDEpOyArK2luZGV4KQorICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4
KHZtLCBpbmRleCArIGFkZGl0aW9uYWxDb3VudCwgYXJndW1lbnRTdGFydFtpbmRleCArIDFdLmpz
VmFsdWUoKSk7CiAgICAgcmV0dXJuIGJ1dHRlcmZseTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA1MmNkYmU4MjY2MTZlYmM0YTkyZDA1OGIwMDFl
YzM4ZWZjMmEzZDQ4Li43OWU3NzZmYjQzZTY1NTI3YTE0MmUyM2RjNzM2Y2MwMjA3MDRhYzEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjExLDcgKzIx
MSw3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzRHVyaW5nRXhpdCwgSlNDZWxsKiwgKFZNCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwg
SlNGdW5jdGlvbiogY2FsbGVlLCBKU0xleGljYWxFbnZpcm9ubWVudCopKTsKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCwg
SlNDZWxsKiwgKFZNKiwgSW5saW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIHVpbnQzMl90IGFy
Z3VtZW50Q291bnQpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBS
ZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxs
ZWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRT
dGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBKU0NlbGwq
LCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJn
dW1lbnRDb3VudCwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25DcmVhdGVSZXN0LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1l
bnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5
U2l6ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKiwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25TZXRBZGQsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDk4MDU5OWIy
ZTU0YWY3ZDBjYTg3YTk5YzE2OTYwNjQ5NzBhMDFlODQuLjcwNGViZTcxMTViOGM3ZDMxN2EwMjE5
MWMzOTFmOTQ3YzgxMjJhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3Mg
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAg
IGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseToKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNh
c2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZTc2ZDJiNmUwZjk2ZjNlMjhmYzNkOTgzZmIzM2Fj
MjMxNjg2YjMxLi43MGU0YTBjMTZmMjgxNWYxNGY3NzBmYTYyZDkwNGEzMTBiYzBlZjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgY2xhc3MgUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTogeworICAg
ICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6IHsKICAgICAg
ICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAppbmRleCAwN2E4NWRiM2Q2MGM2MDgwYTgzZTZkYTQxODY4YmJmNGI3Y2VmNmM3Li42OWIzYmMy
YTdiNTg1NmQ4OTk0MDI5NzI4NmI1Zjc3YWIwZDU4YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTk3LDcgKzU5Nyw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2Fz
ZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6
Ci0gICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBl
OWNkNDM5MGU0NjFiYjNlNDI1MDUzMjkxNWE1M2FhZDQ2ODNlODdlLi5lNTJjYWQ2ZWU3YjQ0ZDRj
YWRjMGJjMjQ0YTQzMjE2MTcyNmY5NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtODQ3NSw4ICs4NDc1LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSogbm9kZSkKICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKE5v
ZGUqIG5vZGUpCiB7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGFyZ2V0KHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgdGFyZ2V0R1BSID0gdGFyZ2V0LmdwcigpOworCiAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTg0ODYsMTIgKzg0ODks
MTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eShOb2RlKiBub2RlKQogICAgIC8vIFdlIHNldCB1cCB0aGUgYXJndW1lbnRzIG91cnNlbHZlcywg
YmVjYXVzZSB3ZSBoYXZlIHRoZSB3aG9sZSByZWdpc3RlciBmaWxlIGFuZCB3ZSBjYW4KICAgICAv
LyBzZXQgdGhlbSB1cCBkaXJlY3RseSBpbnRvIHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCiAKLSAg
ICAvLyBBcmd1bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0LCAzOmxlbmd0aAorICAg
IC8vIEFyZ3VtZW50czogMDpKU0dsb2JhbE9iamVjdCosIDE6c3RhcnQsIDI6bGVuZ3RoLCAzOnRh
cmdldAorCisgICAgLy8gRG8gdGhlIHRhcmdldEdQUiBmaXJzdCwgc2luY2UgaXQgbWlnaHQgYWxp
YXMgYW4gYXJndW1lbnQgcmVnaXN0ZXIuCisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgzLCBbJl0g
KEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUodGFyZ2V0R1BSLCBkZXN0R1BSKTsgfSk7CisK
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDIsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdl
dExlbmd0aChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50KDEsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdldEFyZ3VtZW50U3Rh
cnQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgZGVzdEdQUik7IH0pOwogCi0g
ICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHks
IHJlc3VsdEdQUik7CisgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCByZXN1bHRHUFIpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggOTcxNzUyMjhm
NjJkYTczNTAwMjEwZWZkMmNlY2NhOTU4MmI2ODAyZC4uNjZhNDE5MDljYzYwNjlkYjQ1MTc3N2Iy
OWIxNzk3NDc1MDBiOGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaApAQCAtMTQxMSw3ICsxNDExLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQg
ewogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVD
cmVhdGVTY29wZWRBcmd1bWVudHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZUNsb25l
ZEFyZ3VtZW50cyhOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVSZXN0KE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVTcHJlYWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5KE5v
ZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IDM0MjQwZTU0ZTg1N2Y1OGFkNDc2YTZhZjNiZWEzMmNkN2MyMTZk
NjguLjYyZDBmNzU0YzAwZWExODUwYzIyNzEyNmU4ZTEwNTdkNjA1NWQ5ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMzk1MCw4ICszOTUwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseTogewotICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KG5vZGUp
OworICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczogeworICAg
ICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAzOGVlNmI0YTZlZjkwOTc0MzVhYjhlMDk1
MjkxZDBiNmU3NzQxMzA1Li45NWU3ZjVlNzM4MzUxNzYxZWQ2MjUyZjc5M2IzZDkwNjlmNTcxZmM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTQ5MzEsOCArNDkzMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHk6IHsKLSAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eShub2RlKTsKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRl
eCBiOTA2NjVlY2NlNTJjNTdmNDRiNzBkNDY3YzRhNGU1YTVmMzcwMmUwLi5hZWY4YTlhODk2MDA3
Zjg3ODEyMzQ3MjYxMGJjMGI3ODZhNGJmNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAt
MzU3LDcgKzM1Nyw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAg
ICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0
ZUNsb25lZEFyZ3VtZW50czoKLSAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5OgorICAgICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdU
aGlzOgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCA0MGYxMTE5MjczYmRiZTFhNWI5NTIxNTg4NWY5Mjc0
NDBmYzkxMTA3Li5iNDljNzI0MDk1Yjc0MWNhMmMyYzhhOWIwMDU4NmMzYTg2MzEwOTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUg
IlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgpAQCAtOTI3LDcg
KzkyOCw4IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAg
ICAgICAgRWRnZSBjYWxsZWUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CiAgICAg
ICAgICAgICBDYWxsVmFyaWFudCBjYWxsVmFyaWFudDsKLSAgICAgICAgICAgIGlmIChKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4o
dm0oKSkpIHsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5h
bWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPih2bSgpKTsKKyAgICAgICAgICAgIGlmIChmdW5j
dGlvbikgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0YWJs
ZSgpOwogICAgICAgICAgICAgICAgIGNhbGxWYXJpYW50ID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24p
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYWxsZWUtPmlzRnVuY3Rpb25BbGxvY2F0aW9uKCkp
IHsKQEAgLTk0Myw3ICs5NDUsNDggQEAgY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwMzM5CiAgICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aW50cmluc2lj
KCkgPT0gV2FzbUZ1bmN0aW9uSW50cmluc2ljKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCisKKyAgICAgICAgICAgIC8vIFdlIGdhdmUgdXAgaW5saW5pbmcgYSB3cmFwcGVk
IGZ1bmN0aW9uLCBidXQgc3RpbGwsIHdlIGNhbiBpbmxpbmUgYm91bmQgZnVuY3Rpb24ncyB3cmFw
cGVyIGJ5IGV4dHJhY3RpbmcgaXQuCisgICAgICAgICAgICAvLyBUaGlzIGFsc28gd2lwZXMgYm91
bmQtZnVuY3Rpb24gdGh1bmsgY2FsbCB3aGljaCBpcyBzdWJvcHRpbWFsIGNvbXBhcmVkIHRvIGRp
cmVjdGx5IGNhbGxpbmcgYSB3cmFwcGVkIGZ1bmN0aW9uIGhlcmUuCisgICAgICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+aW50cmluc2ljKCkgPT0gQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMgJiYg
ZnVuY3Rpb24gJiYgKG1fbm9kZS0+b3AoKSA9PSBDYWxsIHx8IG1fbm9kZS0+b3AoKSA9PSBUYWls
Q2FsbCB8fCBtX25vZGUtPm9wKCkgPT0gVGFpbENhbGxJbmxpbmVkQ2FsbGVyKSkgeworICAgICAg
ICAgICAgICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5k
RnVuY3Rpb24qPihmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIHRh
cmdldEZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0oKSwgYm91bmRGdW5j
dGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogdGFy
Z2V0RXhlY3V0YWJsZSA9IHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgICAg
ICAgICAgICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9u
LT5ib3VuZEFyZ3MoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCgoYm91bmRBcmdzID8gYm91
bmRBcmdzLT5sZW5ndGgoKSA6IDApICsgbV9ub2RlLT5udW1DaGlsZHJlbigpKSA8PSBPcHRpb25z
OjptYXhpbXVtRGlyZWN0Q2FsbFN0YWNrU2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5bmFtaWND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHZtKCksIHRhcmdldEV4ZWN1dGFibGUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgbV9wYXJhbWV0ZXJT
bG90cyBiZWZvcmUgd2UgZ2V0IHRvIHRoZSBiYWNrZW5kLCBidXQgd2UgZG9uJ3QKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB3YW50IHRvIGRvIHRvbyBtdWNoIG9mIHRoaXMuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQWxsb2NhdGVkQXJncyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihmdW5jdGlvbkV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsg
MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtQWxsb2NhdGVkQXJncyA8PSBP
cHRpb25zOjptYXhpbXVtRGlyZWN0Q2FsbFN0YWNrU2l6ZSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBzdGQ6Om1heChtX2dyYXBo
Lm1fcGFyYW1ldGVyU2xvdHMsIEdyYXBoOjpwYXJhbWV0ZXJTbG90c0ZvckFyZ0NvdW50KG51bUFs
bG9jYXRlZEFyZ3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uYXBwZW5kKG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KG1fbm9kZUluZGV4LCBtX25v
ZGUtPm9yaWdpbiwgdGFyZ2V0RnVuY3Rpb24pKTsgLy8gQ2FsbGVlLgorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlvblNldC5p
bnNlcnRDb25zdGFudChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGJvdW5kRnVuY3Rpb24t
PmJvdW5kVGhpcygpKSk7IC8vIHx0aGlzfAorCisgICAgICAgICAgICAgICAgICAgICAgICBKU0lt
bXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFu
dChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGJvdW5kQXJncy0+Z2V0KGluZGV4KSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBG
aXJzdCBvbmUgaXMgfGNhbGxlZXwsIHNlY29uZCBvbmUgaXMgfHRoaXN8LgorICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDI7IGluZGV4IDwgbV9ub2RlLT5udW1D
aGlsZHJlbigpOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ncmFwaC5jaGlsZChtX25vZGUsIGluZGV4KSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0
KEFkamFjZW5jeUxpc3Q6OlZhcmlhYmxlLCBmaXJzdENoaWxkLCBtX2dyYXBoLm1fdmFyQXJnQ2hp
bGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBzdGQ6Om1heChtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMs
IEdyYXBoOjpwYXJhbWV0ZXJTbG90c0ZvckFyZ0NvdW50KG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAt
IDEpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcygpLmFkZENhbGxMaW5rU3RhdHVzKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBDYWxs
TGlua1N0YXR1cyhDYWxsVmFyaWFudCh0YXJnZXRFeGVjdXRhYmxlKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9EaXJlY3RDYWxsKG1fZ3JhcGguZnJlZXplKHRh
cmdldEV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPih2bSgpLCBleGVjdXRhYmxlKSkgewogICAgICAgICAgICAgICAgIGlm
IChtX25vZGUtPm9wKCkgPT0gQ29uc3RydWN0ICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3Ry
dWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggM2RmMDQ0YThmZjFiNTg1MmI1ZWFmM2MwNGZhOTYwOGRjZmUw
OTgyZi4uNDM5YzBkODY3MjA3ZWZkM2Q3MTQ1ZmJhZDE2YjYxMjVhNDdkMDQ1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTUxLDcgKzE1
MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1l
bnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgIGNhc2UgQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5OgorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpczoKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3Vt
ZW50czoKICAgICBjYXNlIEdldEFyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIwNzg2OTFiMTA0YWZmNjIwNDFiMTMzNjVmODFk
OGEzZDFiZDFlNzEuLmVlNTUwMTNhM2Y4NzllMDM4ZGFhM2E4OTEyODg0Zjk3MGUyNjRjYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEx
MDMsOCArMTEwMyw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50
cygpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5OgotICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOwor
ICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CisgICAg
ICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcygpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgICAgICAg
ICAgY29tcGlsZU9iamVjdENyZWF0ZSgpOwpAQCAtNjg0OCwxMCArNjg0OCwxMCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCi0gICAg
dm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KCkKKyAgICB2b2lkIGNvbXBpbGVD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKCkKICAgICB7CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9w
ZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUpOworICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25DcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBnZXRB
cmd1bWVudHNTdGFydCgpLCBnZXRBcmd1bWVudHNMZW5ndGgoKS52YWx1ZSwgbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKSk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IGFlZTM3NDRiNTJlNWU0NTI2MWUyMmZhYzY5MGRiZTA0YWUyYzU0MjYuLmZkMTcwZWNhNzg4
ZDg0YmIxMDhiOGE4ZWUxOTc5NDE4MGEwYzkwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVENvZGVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJm
bHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMzk0LDYgKzM5NSw4
IEBAIGNsYXNzIEdldFN0YWNrVHJhY2VGdW5jdG9yIHsKICAgICAgICAgICAgICAgICBtX3Jlc3Vs
dHMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICBTdGFja0ZyYW1lKG1fdm0sIG1fb3duZXIs
IHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpLCB2aXNpdG9yLT5jb2RlQmxvY2soKSwgdmlzaXRv
ci0+Ynl0ZWNvZGVJbmRleCgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmICh2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKS0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0
aW9uPihtX3ZtKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7CiAgICAgICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVuZCgKICAgICAgICAgICAgICAg
ICAgICAgU3RhY2tGcmFtZShtX3ZtLCBtX293bmVyLCB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwo
KSkpOwogICAgICAgICAgICAgfQpAQCAtNDIyLDcgKzQyNSwxMiBAQCB2b2lkIEludGVycHJldGVy
OjpnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0
cywgc2l6ZQogCiAgICAgc2l6ZV90IGZyYW1lc0NvdW50ID0gMDsKICAgICBzaXplX3QgbWF4RnJh
bWVzQ291bnROZWVkZWQgPSBtYXhTdGFja1NpemUgKyBmcmFtZXNUb1NraXA7Ci0gICAgU3RhY2tW
aXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsIHZtLCBbJl0gKFN0YWNrVmlzaXRvciYpIC0+IFN0YWNr
VmlzaXRvcjo6U3RhdHVzIHsKKyAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0s
IFsmXSAoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7Cisg
ICAgICAgIGlmICh2aXNpdG9yLT5jYWxsZWUoKS5pc0NlbGwoKSkgeworICAgICAgICAgICAgaWYg
KHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KG1f
dm0pKQorICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAg
ICAgICB9CisKICAgICAgICAgaWYgKCsrZnJhbWVzQ291bnQgPCBtYXhGcmFtZXNDb3VudE5lZWRl
ZCkKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IDc2ZDFhNTE3ZDljODhkMjA5NzAyNWY4NDQ1ZjY5YzllZDYzY2ZkM2YuLmNjNmRlNGZjZWM1ZTkz
Zjk5Mzc5MWZiZDZjYWY3NzliZGVhOTFiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
QEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKQogICAgICAgICBE
RUZJTkVfU0xPV19PUChjcmVhdGVfc2NvcGVkX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX1NM
T1dfT1AoY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpCi0gICAgICAgIERFRklORV9TTE9XX09QKGNy
ZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5KQorICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVf
YXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1df
T1AoY3JlYXRlX3Jlc3QpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9wcm9taXNlKQog
ICAgICAgICBERUZJTkVfU0xPV19PUChuZXdfcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGZjMzk5MTRhMWQ1NDI0NTYyZTc5MTlmNTFl
Y2RiMTUzMzg2MmYwNDUuLjI1NWI2NDc4Y2YwMDNhOTA2NTc2ZTQ5MWI4OTEzN2YzMjEwZDJlN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDks
NiArNDksNyBAQAogI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQXN5
bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAt
MTQ1MSw2ICsxNDUyLDggQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0
aEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCiAgICAgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktp
bmQoKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CkBAIC0xNDY0LDI5ICsxNDY3LDQwIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVh
bEZvcldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgICAg
IH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGhhbmRsZUhvc3RDYWxs
KGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5mbykp
OwogICAgIH0KLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwotICAgIEpTU2NvcGUqIHNjb3BlID0gZnVuY3Rp
b24tPnNjb3BlVW5jaGVja2VkKCk7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBm
dW5jdGlvbi0+ZXhlY3V0YWJsZSgpOwotICAgIGlmIChVTkxJS0VMWSghZXhlY3V0YWJsZS0+aGFz
SklUQ29kZUZvcihraW5kKSkpIHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KTsKIAotICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNv
bnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsK
LSAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbikpOwotICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKLSAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHVi
KHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpT
RW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKLSAgICAgICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKLSAgICAgICAgfQorICAgIGF1dG8g
bWF0ZXJpYWxpemVDb2RlQmxvY2tJZk5lY2Vzc2FyeSA9IFsmXShKU0Z1bmN0aW9uKiBmdW5jdGlv
biwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpIC0+IHZvaWQqIHsKKyAgICAgICAgaWYgKFVO
TElLRUxZKCFleGVjdXRhYmxlLT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgeworICAgICAgICAgICAg
SlNTY29wZSogc2NvcGUgPSBmdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKKyAgICAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKLSAgICAgICAgQ29kZUJsb2NrKiogY29k
ZUJsb2NrU2xvdCA9IGNhbGxlZUZyYW1lLT5hZGRyZXNzT2ZDb2RlQmxvY2soKTsKLSAgICAgICAg
RXhjZXB0aW9uKiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlv
bjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxv
Y2tTbG90KTsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigp
ID09IGVycm9yKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkgewotICAgICAgICAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdCgKLSAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHRocm93
RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQ
dHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKLSAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKKyAgICAgICAgICAgIGlmICghaXNDYWxsKGtp
bmQpICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0cnVj
dEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkgeworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3Io
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvbikpOworICAgICAgICAgICAgICAgIHJldHVybiB2bS5nZXRD
VElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGNhbGxlZUZyYW1lLT5h
ZGRyZXNzT2ZDb2RlQmxvY2soKTsKKyAgICAgICAgICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2
bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CisgICAgICAgICAgICBF
WENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOworICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdm0uZ2V0
Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICBh
dXRvIGZhaWx1cmUgPSBtYXRlcmlhbGl6ZUNvZGVCbG9ja0lmTmVjZXNzYXJ5KGZ1bmN0aW9uLCBl
eGVjdXRhYmxlKTsKKyAgICBpZiAoVU5MSUtFTFkoZmFpbHVyZSkpCisgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoZmFpbHVyZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1l
KSk7CisKKyAgICAvLyBDYWxsIElDIGxpbmtzIHRoaXMgY2FsbHNpdGUgdG8gd3JhcHBlZCBmdW5j
dGlvbiBkaXJlY3RseS4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCBkaXJlY3RseSBsaW5rZWQgZnVu
Y3Rpb24gaXMgbWF0ZXJpYWxpemVkIGhlcmUuCisgICAgaWYgKGZ1bmN0aW9uLT5pbmhlcml0czxK
U0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZnVuY3Rpb24p
LT50YXJnZXRGdW5jdGlvbigpLT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsKKyAgICAgICAg
YXV0byogdGFyZ2V0RnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGpzQ2FzdDxKU0JvdW5k
RnVuY3Rpb24qPihmdW5jdGlvbiktPnRhcmdldEZ1bmN0aW9uKCkpOworICAgICAgICBhdXRvIGZh
aWx1cmUgPSBtYXRlcmlhbGl6ZUNvZGVCbG9ja0lmTmVjZXNzYXJ5KHRhcmdldEZ1bmN0aW9uLCB0
YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGZhaWx1
cmUpKQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChmYWlsdXJlLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICB9CisKICAgICAvLyBGSVhNRTogU3Vw
cG9ydCB3YXNtIElDLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjAzMzkKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9p
bnRGb3IoCkBAIC0xNDk2LDYgKzE1MTAsMTAgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2
aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIAog
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwsIFNs
b3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICAvLyBE
dXJpbmcgZXhlY3V0aW9uIG9mIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24vbGlua1BvbHltb3JwaGlj
Q2FsbCwgd2Ugc3Ryb25nbHkgYXNzdW1lIHRoYXQgd2UgbmV2ZXIgZG8gR0MuCisgICAgLy8gR0Mg
amV0dGlzb25zIENvZGVCbG9ja3MsIGNoYW5nZXMgQ2FsbExpbmtJbmZvIGV0Yy4gYW5kIGJyZWFr
cyBhc3N1bXB0aW9uIGRvbmUgYmVmb3JlIGFuZCBhZnRlciB0aGlzIGNhbGwuCisgICAgRGVmZXJH
Q0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxlKGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKwog
ICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JD
YWxsKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsOwogICAgIFNsb3dQYXRoUmV0
dXJuVHlwZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2Fs
bGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwpAQCAtMTUwNyw2
ICsxNTI1LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rUG9seW1v
cnBoaWNDYWxsLCBTbG93UGF0aFJldHVyblR5cGUsIChDYWxsCiAKIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25WaXJ0dWFsQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZy
YW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIC8vIER1cmluZyBleGVjdXRpb24gb2YgdmlydHVh
bEZvcldpdGhGdW5jdGlvbi9saW5rUG9seW1vcnBoaWNDYWxsLCB3ZSBzdHJvbmdseSBhc3N1bWUg
dGhhdCB3ZSBuZXZlciBkbyBHQy4KKyAgICAvLyBHQyBqZXR0aXNvbnMgQ29kZUJsb2NrcywgY2hh
bmdlcyBDYWxsTGlua0luZm8gZXRjLiBhbmQgYnJlYWtzIGFzc3VtcHRpb24gZG9uZSBiZWZvcmUg
YW5kIGFmdGVyIHRoaXMgY2FsbC4KKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0NGb3JBV2hp
bGUoZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApOworCiAgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0
aW9uQ2VsbElnbm9yZWQ7CiAgICAgcmV0dXJuIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LCBjYWxsZWVGcmFtZSwgY2FsbExpbmtJbmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbEln
bm9yZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOGE5NmFi
ZTg1ZWRlZmJhMTU1MTA5Mjc0NjdkNmEzOTk5ZTEzNTRiZS4uMDNlMmFmYWQ3Zjg3MmMyN2UxZGY0
YWI4YjE3ZDliODZmOTMwMTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5o
IgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKKyNpbmNsdWRlICJK
U0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5LmgiCkBAIC0x
MjIzLDYgKzEyMjQsMTEgQEAgdm9pZCBsaW5rRm9yKAogewogICAgIEFTU0VSVCghY2FsbExpbmtJ
bmZvLnN0dWIoKSk7CiAKKyAgICBpZiAoY2FsbGVlLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+
KHZtKSAmJiBjYWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwg
JiYgY2FsbExpbmtJbmZvLmFsbG93U3R1YnMoKSkgeworICAgICAgICBsaW5rU2xvd0Zvcih2bSwg
Y2FsbExpbmtJbmZvLCBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKICAgICAvLyBPdXIgY2FsbGVyIG11c3QgaGF2ZSBhIGNlbGwgZm9y
IGEgY2FsbGVlLiBXaGVuIGNhbGxpbmcKICAgICAvLyB0aGlzIGZyb20gV2FzbSwgd2UgZW5zdXJl
IHRoZSBjYWxsZWUgaXMgYSBjZWxsLgpAQCAtMTM0MCwxNiArMTM0NiwxMDEgQEAgc3RydWN0IENh
bGxUb0NvZGVQdHIgewogfTsKIH0gLy8gYW5ub255bW91cyBuYW1lc3BhY2UKIAorc3RhdGljIHZv
aWQgZ2VuZXJhdGVJbmxpbmVkQm91bmRGdW5jdGlvbkNhbGwoVk0mIHZtLCBDQ2FsbEhlbHBlcnMm
IGppdCwgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisKKyAgICAvLyBTZXQgdXAgb3VyIGNh
bGwgZnJhbWUuCisgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihu
dWxscHRyKSwgQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
aykpOworICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2Fs
bEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOworCisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGZ1bmN0aW9uLT5i
b3VuZEFyZ3MoKTsKKyAgICB1bnNpZ25lZCBjYWxsU2l0ZUFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworICAgIHVuc2ln
bmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbFNpdGVBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIChib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMCk7CisgICAg
dW5zaWduZWQgbnVtUGFyYW1ldGVycyA9IDA7CisgICAgdW5zaWduZWQgbnVtRml4dXBDb3VudCA9
IDA7CisKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oZnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiB0YXJn
ZXRFeGVjdXRhYmxlID0gdGFyZ2V0RnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICBpZiAodGFy
Z2V0RXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIH0gZWxzZSB7CisgICAgICAg
IENvZGVCbG9jayogdGFyZ2V0Q29kZUJsb2NrID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KHRhcmdldEV4ZWN1dGFibGUpLT5jb2RlQmxvY2tGb3JDYWxsKCk7CisgICAgICAgIG51bVBhcmFt
ZXRlcnMgPSB0YXJnZXRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsKKyAgICAgICAgaWYgKG51
bVBhcmFtZXRlcnMgPiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKKyAgICAgICAgICAgIG51
bUZpeHVwQ291bnQgPSBudW1QYXJhbWV0ZXJzIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7
CisgICAgfQorICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzQWZ0ZXJGaXh1
cCA9IHN0ZDo6bWF4PHVuc2lnbmVkPihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbnVtUGFy
YW1ldGVycyk7CisKKyAgICAvLyBUaGUgZm9ybXVsYSBmb3IgdGhlIG51bWJlciBvZiBzdGFjayBi
eXRlcyBuZWVkZWQgZ2l2ZW4gc29tZSBudW1iZXIgb2YgcGFyYW1ldGVycyAoaW5jbHVkaW5nCisg
ICAgLy8gdGhpcykgaXM6CisgICAgLy8KKyAgICAvLyAgICAgc3RhY2tBbGlnbigobnVtUGFyYW1z
ICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIpIC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKQorICAgIC8vCisgICAgLy8gUHJvYmFibHkgd2Ugd2FudCB0byB3cml0ZSB0
aGlzIGFzOgorICAgIC8vCisgICAgLy8gICAgIHN0YWNrQWxpZ24oKG51bVBhcmFtcyArIChDYWxs
RnJhbWVIZWFkZXJTaXplIC0gQ2FsbGVyRnJhbWVBbmRQQ1NpemUpKSAqIHNpemVvZihSZWdpc3Rl
cikpCisgICAgLy8KKyAgICAvLyBUaGF0J3MgcmVhbGx5IGFsbCB0aGVyZSBpcyB0byB0aGlzLiBX
ZSBoYXZlIGFsbCB0aGUgcmVnaXN0ZXJzIHdlIG5lZWQgdG8gZG8gaXQuCisKKyAgICB1bnNpZ25l
ZCBleHRyYVN0YWNrTmVlZGVkID0gMDsKKyAgICBpZiAodW5zaWduZWQgc3RhY2tNaXNhbGlnbm1l
bnQgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkpCisg
ICAgICAgIGV4dHJhU3RhY2tOZWVkZWQgPSBzdGFja0FsaWdubWVudEJ5dGVzKCkgLSBzdGFja01p
c2FsaWdubWVudDsKKworICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAoQ2FsbEZyYW1lOjpoZWFkZXJTaXpl
SW5SZWdpc3RlcnMgLSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMpICsgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNBZnRlckZpeHVwKSArIGV4dHJhU3RhY2tOZWVkZWQ7CisgICAg
aml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtKHN0YWNrU2l6ZSAqIHNpemVv
ZihSZWdpc3RlcikpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5m
bzo6cmVnVDIpOworICAgIGF1dG8gc3RhY2tPdmVyZmxvdyA9IGppdC5icmFuY2hQdHIoQ0NhbGxI
ZWxwZXJzOjpBYm92ZSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Modm0uYWRkcmVzc09m
U29mdFN0YWNrTGltaXQoKSksIEdQUkluZm86OnJlZ1QyKTsKKworICAgIGppdC5tb3ZlKEdQUklu
Zm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQu
c3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworCisgICAgdW5zaWduZWQgaW5kZXhJbkFy
Z3VtZW50cyA9IDA7CisgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKGZ1bmN0aW9uLT5ib3VuZFRo
aXMoKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysr
KSk7CisgICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgaml0
LnN0b3JlVHJ1c3RlZFZhbHVlKGJvdW5kQXJncy0+Z2V0KGluZGV4KSwgQ0NhbGxIZWxwZXJzOjpj
YWxsZWVBcmd1bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisgICAgfQorCisgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQ
UkluZm86OnJlZ1Q0LCBHUFJJbmZvOjpyZWdUMik7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IC8qIGNhbGxzaXRlJ3MgfHRoaXN8IGlzIG5vdCBpbnRlcmVzdGluZyAqLyAxOyBpbmRleCA8IGNh
bGxTaXRlQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraW5kZXgpIHsKKyAgICAgICAgaml0
LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnRJbmNsdWRpbmdUaGlzKGluZGV4KSksIHZhbHVlUmVncyk7CisgICAgICAgIGppdC5zdG9y
ZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoaW5kZXhJ
bkFyZ3VtZW50cysrKSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgbnVtRml4dXBDb3VudDsgKytpbmRleCkKKyAgICAgICAgaml0LnN0b3JlVHJ1c3RlZFZh
bHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KGluZGV4
SW5Bcmd1bWVudHMrKykpOworCisgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKHRhcmdldEZ1bmN0
aW9uLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90OjpjYWxsZWUp
KTsKKyAgICBhdXRvIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKEpTRW50cnlQdHJUYWcpOworICAg
IGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAg
bGlua0J1ZmZlci5saW5rKGZ1bmN0aW9uQ2FsbCwgRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4o
dGFyZ2V0RXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNh
bGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKSkpOworICAgIH0pOworCisgICAgaml0LmVtaXRGdW5j
dGlvbkVwaWxvZ3VlKCk7CisgICAgaml0LnJldCgpOworCisgICAgLy8gVGhyb3cgU3RhY2sgT3Zl
cmZsb3cgZXhjZXB0aW9uCisgICAgc3RhY2tPdmVyZmxvdy5saW5rKCZqaXQpOworICAgIGppdC5j
b3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZy
YW1lKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZnVuY3Rpb24t
PnNjb3BlKCkpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKT4oR1BSSW5mbzo6
cmVnVDMpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKSksIEdQUkluZm86Om5v
bkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0
clRhZyk7CisgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOworfQorCitzdHJ1Y3Qg
SW5saW5lZENhbGxlZSB7CisgICAgc2l6ZV90IGNhc2VJbmRleDsKKyAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIGVudHJ5cG9pbnQ7Cit9OworCiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvLCBDYWxsVmFyaWFudCBuZXdWYXJpYW50KQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxMaW5rSW5mby5hbGxvd1N0dWJzKCkpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxs
ZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7Ci0KLSAgICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9mIGxpbmtQb2x5bW9ycGhp
Y0NhbGwsIHdlIHN0cm9uZ2x5IGFzc3VtZSB0aGF0IHdlIG5ldmVyIGRvIEdDLgotICAgIC8vIEdD
IGpldHRpc29ucyBDb2RlQmxvY2tzLCBjaGFuZ2VzIENhbGxMaW5rSW5mbyBldGMuIGFuZCBicmVh
a3MgYXNzdW1wdGlvbiBkb25lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjYWxsLgotICAgIERlZmVy
R0NGb3JBV2hpbGUgZGVmZXJHQ0ZvckFXaGlsZSh2bS5oZWFwKTsKKyAgICBBU1NFUlQodm0uaGVh
cC5pc0RlZmVycmVkKCkpOwogICAgIAogICAgIGlmICghbmV3VmFyaWFudCkgewogICAgICAgICBs
aW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBjYWxsTGlua0luZm8pOwpAQCAtMTM5Miw2ICsx
NDgzLDExIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAgICAgCiAgICAgVmVjdG9yPFBvbHlt
b3JwaGljQ2FsbENhc2U+IGNhbGxDYXNlczsKICAgICBWZWN0b3I8aW50NjRfdD4gY2FzZVZhbHVl
czsKKworICAgIGF1dG8gaXNMaW5rYWJsZUJvdW5kRnVuY3Rpb24gPSBbJl0oQ2FsbFZhcmlhbnQm
IHZhcmlhbnQpIHsKKyAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB2YXJpYW50LmZ1bmN0
aW9uKCk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAmJiBmdW5jdGlvbi0+aW5oZXJpdHM8SlNC
b3VuZEZ1bmN0aW9uPih2bSkgJiYganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGZ1bmN0aW9uKS0+
dGFyZ2V0RnVuY3Rpb24oKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pICYmICFjYWxsTGlua0lu
Zm8uaXNWYXJhcmdzKCk7CisgICAgfTsKICAgICAKICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgb3Vy
IGNhc2VzIGFyZS4KICAgICBmb3IgKENhbGxWYXJpYW50IHZhcmlhbnQgOiBsaXN0KSB7CkBAIC0x
NDA1LDYgKzE1MDEsMTIgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgICAgICAg
ICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBjYWxsTGlua0luZm8pOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChpc0xpbmth
YmxlQm91bmRGdW5jdGlvbih2YXJpYW50KSkgeworICAgICAgICAgICAgLy8gV2UgbGluayB0aGUg
Y2FsbCB0byB0aGUgdGFyZ2V0IGZ1bmN0aW9uLCBzbyB3ZSBuZWVkIHRvIHJldHJpZXZlIENvZGVC
bG9jayBmcm9tIHRoZSB0YXJnZXQgZnVuY3Rpb24uCisgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0
YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oanNDYXN0PEpTQm91bmRGdW5jdGlv
bio+KHZhcmlhbnQuZnVuY3Rpb24oKSktPnRhcmdldEZ1bmN0aW9uKCkpOworICAgICAgICAgICAg
RXhlY3V0YWJsZUJhc2UqIHRhcmdldEV4ZWN1dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0
YWJsZSgpOworICAgICAgICAgICAgaWYgKCF0YXJnZXRFeGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlv
bigpKQorICAgICAgICAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPih0YXJnZXRFeGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwogICAgICAgICB9CiAK
ICAgICAgICAgaW50NjRfdCBuZXdDYXNlVmFsdWUgPSAwOwpAQCAtMTUyMyw2ICsxNjI1LDcgQEAg
dm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgaGFzRXhlY3V0YWJsZS5saW5rKCZzdHVi
Sml0KTsKICAgICB9CiAKKyAgICBWZWN0b3I8SW5saW5lZENhbGxlZT4gaW5saW5lZENhbGxlZXM7
CiAgICAgQmluYXJ5U3dpdGNoIGJpbmFyeVN3aXRjaChjb21wYXJpc29uVmFsdWVHUFIsIGNhc2VW
YWx1ZXMsIEJpbmFyeVN3aXRjaDo6SW50UHRyKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IGRvbmU7CiAgICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKHN0dWJKaXQpKSB7CkBAIC0x
NTM0LDcgKzE2MzcsMTQgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgaWYgKHZh
cmlhbnQuZXhlY3V0YWJsZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5leGVjdXRh
YmxlKCktPmhhc0pJVENvZGVGb3JDYWxsKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBj
b2RlUHRyID0ganNUb1dhc21JQ0NvZGVQdHIodm0sIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlv
bktpbmQoKSwgdmFyaWFudC5mdW5jdGlvbigpKTsKKyAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IHZhcmlhbnQuZnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIGlmIChp
c0xpbmthYmxlQm91bmRGdW5jdGlvbih2YXJpYW50KSkgeworICAgICAgICAgICAgICAgICAgICAv
LyBFbWl0IGlubGluZWQgSlNCb3VuZEZ1bmN0aW9uIGNhbGwgaWYgSlNCb3VuZEZ1bmN0aW9uJ3Mg
dGFyZ2V0IGZ1bmN0aW9uIGlzIEpTRnVuY3Rpb24sIGFuZCBpdCBpcyBub3QgY2FsbF92YXJhcmdz
CisgICAgICAgICAgICAgICAgICAgIGlubGluZWRDYWxsZWVzLmFwcGVuZChJbmxpbmVkQ2FsbGVl
IHsgY2FzZUluZGV4LCBDQ2FsbEhlbHBlcnM6OkxhYmVsKCkgfSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNvZGVQdHIgPSBqc1RvV2FzbUlDQ29kZVB0cih2
bSwgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpLCBmdW5jdGlvbik7CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIGlmICghY29kZVB0cikKICAgICAgICAgICAgICAgICBjb2Rl
UHRyID0gdmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFk
ZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RSZXF1aXJlZCk7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0xNTU4LDYgKzE2NjgsMjEgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgY2Fs
bHNbY2FzZUluZGV4XS5jb2RlUHRyID0gY29kZVB0cjsKICAgICAgICAgZG9uZS5hcHBlbmQoc3R1
YkppdC5qdW1wKCkpOwogICAgIH0KKworICAgIGZvciAoYXV0byYgaW5saW5lZCA6IGlubGluZWRD
YWxsZWVzKSB7CisgICAgICAgIHNpemVfdCBjYXNlSW5kZXggPSBpbmxpbmVkLmNhc2VJbmRleDsK
KyAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlc1tjYXNlSW5kZXhdLnZhcmlh
bnQoKTsKKyAgICAgICAgaW5saW5lZC5lbnRyeXBvaW50ID0gc3R1YkppdC5sYWJlbCgpOworCisg
ICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKSk7CisgICAgICAgIEFTU0VSVCh2YXJp
YW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CisgICAgICAgIEFTU0VSVCh2
YXJpYW50LmZ1bmN0aW9uKCkpOworICAgICAgICBBU1NFUlQodmFyaWFudC5mdW5jdGlvbigpLT5p
bmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSk7CisgICAgICAgIEFTU0VSVChqc0Nhc3Q8SlNC
b3VuZEZ1bmN0aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKS0+dGFyZ2V0RnVuY3Rpb24oKS0+aW5o
ZXJpdHM8SlNGdW5jdGlvbj4odm0pKTsKKyAgICAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNW
YXJhcmdzKCkpOworCisgICAgICAgIGdlbmVyYXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKHZt
LCBzdHViSml0LCBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKSwg
Y2FsbEZyYW1lKTsKKyAgICB9CiAgICAgCiAgICAgc2xvd1BhdGgubGluaygmc3R1YkppdCk7CiAg
ICAgYmluYXJ5U3dpdGNoLmZhbGxUaHJvdWdoKCkubGluaygmc3R1YkppdCk7CkBAIC0xNTkwLDYg
KzE3MTUsOSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBsaW5rVmlydHVhbEZv
cih2bSwgY2FsbEZyYW1lLCBjYWxsTGlua0luZm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQor
CisgICAgZm9yIChjb25zdCBhdXRvJiBpbmxpbmVkIDogaW5saW5lZENhbGxlZXMpCisgICAgICAg
IGNhbGxzW2lubGluZWQuY2FzZUluZGV4XS5jb2RlUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25P
ZjxKU0VudHJ5UHRyVGFnPihpbmxpbmVkLmVudHJ5cG9pbnQpOwogICAgIAogICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxDYXNlcy5zaXplKCkgPT0gY2FsbHMuc2l6ZSgpKTsKICAgICBmb3IgKENhbGxU
b0NvZGVQdHIgY2FsbFRvQ29kZVB0ciA6IGNhbGxzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggNTFmMDNiOWMxZjU5MTkwZjlkOTk4NGFm
Y2JiMTViOTBiNWExN2NlNy4uZjgwNjUyOTIxZjE2OTU4N2ZmNmUwNDdhNjkzOTUwY2FmODk0MTgz
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApA
QCAtMTE4OSw3ICsxMTg5LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiAgICAgYXV0byBub0FyZ3MgPSBq
aXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QyKTsKICAg
ICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgSlNJbW11
dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMik7
CiAgICAgaml0LmFkZDMyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0
LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CiAg
ICAgbm9BcmdzLmxpbmsoJmppdCk7CiAgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gQ2FsbGVyRnJhbWVBbmRQ
Qzo6c2l6ZUluUmVnaXN0ZXJzKSwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAg
ICBqaXQubHNoaWZ0MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMyksIEdQUkluZm86OnJl
Z1QyKTsKQEAgLTEyNDgsNyArMTI0Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBsb29wQm91bmQgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuc3ViMzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBqaXQubG9h
ZFZhbHVlKENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpy
ZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zm
c2V0T2ZEYXRhKCkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHZhbHVlUmVncyk7
CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdU
MywgR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgSlNJbW11dGFibGVC
dXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgdmFsdWVSZWdzKTsKICAgICBqaXQuc3RvcmVWYWx1
ZSh2YWx1ZVJlZ3MsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDEpLmluZGV4ZWRC
eShHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0KSk7CiAgICAgaml0LmJy
YW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QxKS5saW5rVG8o
bG9vcEJvdW5kLCAmaml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGQwOWQwYTkzMGFjMjQ0MjUyOTM5MjBiY2Zk
NzllN2ZkNTE3YTM4ZTMuLjE0M2MxNDg4NGM4ZTE2NTc2NzI1NmRjOGZiOGQwODg4Nzg1ODA3MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTE5ODEsNyArMTk4MSw3IEBAIG1hY3JvIHNsb3dQYXRoT3Aob3Bjb2RlTmFt
ZSkKIGVuZAogCiBzbG93UGF0aE9wKGNyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKQotc2xvd1BhdGhP
cChjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKK3Nsb3dQYXRoT3AoY3JlYXRlX2FyZ3VtZW50
c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpCiBzbG93UGF0aE9wKGNyZWF0ZV9kaXJlY3RfYXJn
dW1lbnRzKQogc2xvd1BhdGhPcChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHNsb3dQYXRo
T3AoY3JlYXRlX3Jlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCA4MmYzZWNiMDg2M2IzZGFhMDU3NGQ1ZDhkODQ5ZDI5ZDMw
MjllOWE1Li42NzBhNGE0YTRlNWM1ZTQyNWJlYTk4NzkwZmVlNjA1NGI1NDM3ZmZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2Uu
aCIKQEAgLTIwNiwxNiArMjA3LDM4IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpCiAgICAgUkVUVVJOKENsb25lZEFyZ3VtZW50
czo6Y3JlYXRlV2l0aE1hY2hpbmVGcmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgQXJndW1l
bnRzTW9kZTo6Q2xvbmVkKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpCitKU0NfREVGSU5FX0NPTU1PTl9TTE9X
X1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlz
KQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseT4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcz4oKTsKKyAgICBKU0NlbGwqIHRhcmdldCA9
IEdFVChieXRlY29kZS5tX3RhcmdldCkuanNWYWx1ZSgpLmFzQ2VsbCgpOwogICAgIGludDMyX3Qg
YXJndW1lbnRDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwotICAgIEpTSW1tdXRh
YmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRl
KHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhp
bmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5n
U2hhcGVzXS5nZXQoKSwgYXJndW1lbnRDb3VudCk7CisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnQg
PiAxKTsKKworICAgIENoZWNrZWRJbnQzMiB0b3RhbENvdW50ID0gYXJndW1lbnRDb3VudCAtIDE7
CisgICAgaW50MzJfdCBhZGRpdGlvbmFsQ291bnQgPSAwOworICAgIEpTSW1tdXRhYmxlQnV0dGVy
Zmx5KiBib3VuZEFyZ3MgPSBudWxscHRyOworICAgIGlmICh0YXJnZXQtPmluaGVyaXRzPEpTQm91
bmRGdW5jdGlvbj4odm0pKSB7CisgICAgICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlv
biA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0YXJnZXQpOworICAgICAgICBpZiAoYm91bmRG
dW5jdGlvbi0+Y2FuQ2xvbmVCb3VuZEFyZ3MoKSkgeworICAgICAgICAgICAgYm91bmRBcmdzID0g
Ym91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgICAgICAgICBhZGRpdGlvbmFsQ291bnQg
PSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsKKyAgICAgICAgICAgIHRvdGFs
Q291bnQgKz0gYWRkaXRpb25hbENvdW50OworICAgICAgICAgICAgaWYgKHRvdGFsQ291bnQuaGFz
T3ZlcmZsb3dlZCgpKQorICAgICAgICAgICAgICAgIFRIUk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJy
b3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBKU0ltbXV0YWJsZUJ1
dHRlcmZseSogYnV0dGVyZmx5ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6OnRyeUNyZWF0ZSh2bSwg
dm0uaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlw
ZShDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBl
c10uZ2V0KCksIHRvdGFsQ291bnQudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnV0dGVyZmx5KQog
ICAgICAgICBUSFJPVyhjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOwotICAg
IGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgYXJndW1lbnRDb3VudDsgKytpbmRleCkK
LSAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgsIGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoaW5kZXgpKTsKKyAgICBpZiAoYWRkaXRpb25hbENvdW50KSB7CisgICAgICAg
IEFTU0VSVChib3VuZEFyZ3MpOworICAgICAgICBmb3IgKGludDMyX3QgaW5kZXggPSAwOyBpbmRl
eCA8IGFkZGl0aW9uYWxDb3VudDsgKytpbmRleCkKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0
SW5kZXgodm0sIGluZGV4LCBib3VuZEFyZ3MtPmdldChpbmRleCkpOworICAgIH0KKyAgICBmb3Ig
KGludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IChhcmd1bWVudENvdW50IC0gMSk7ICsraW5kZXgp
CisgICAgICAgIGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4ICsgYWRkaXRpb25hbENvdW50
LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGluZGV4ICsgMSkpOwogICAgIFJFVFVSTihi
dXR0ZXJmbHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCmluZGV4IDg0ZTJkYTVmN2FiNjhhNjI2MjQ4NWNiOGNjNDNmODA1NzE0OGM0
NzEuLjk4ODg1MTY5MGYyMDdhZTA5Y2RhODk5NDM3MTcwNGE2Y2U3ZGUwMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yMTAsNyAr
MjEwLDcgQEAgSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY29uc3RydWN0
X2FyaXR5Q2hlY2spOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3Jl
YXRlX2RpcmVjdF9hcmd1bWVudHMpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1df
UEFUSChzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpOwotSlNDX0RFQ0xBUkVfQ09N
TU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpOworSlND
X0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0
ZXJmbHlfZXhjbHVkaW5nX3RoaXMpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfY3JlYXRlX3RoaXMpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3Bh
dGhfZW50ZXIpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdG9fdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmNwcAppbmRleCBkZGU4ZjA5YTU5N2E4OTEzZjM5ODQyYmZmNDJjYTExMDRlYWEyMTUyLi5kNGY3
OGY0NzAyN2EyYThhMDg2OTFlZjMyZmUwOWIzYWQ1MjE1YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTQxLDggKzQxLDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3M7CiAgICAgaWYgKGJvdW5kQXJncykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNl
IHRoZSBmaXJzdCBvbmUgaXMgfHRoaXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQo
Ym91bmRBcmdzLT5nZXQoaSkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKQEAgLTcwLDggKzY5LDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEYKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAg
aWYgKGJvdW5kQXJncykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJz
dCBvbmUgaXMgfHRoaXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRB
cmdzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91
bmRBcmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdz
LT5nZXQoaSkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCk7ICsraSkKQEAgLTk1LDggKzkzLDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2IKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYgKGJvdW5k
QXJncykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMg
fHRoaXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdzLT5sZW5n
dGgoKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdzLT5s
ZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXQoaSkp
OwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCk7ICsraSkKQEAgLTEyMyw4ICsxMjAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oYm91bmRGdW5jdGlvbkNvbnN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3MpIHsK
LSAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4K
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsr
aSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7
ICsraSkKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAgICB9
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
OyArK2kpCkBAIC0yMzQsOCArMjMwLDcgQEAgSlNBcnJheSogSlNCb3VuZEZ1bmN0aW9uOjpib3Vu
ZEFyZ3NDb3B5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNBcnJheSogcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlBcnJheSh0aGlzLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0cik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgaWYgKG1fYm91
bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9uZSBp
cyBib3VuZCB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBtX2JvdW5k
QXJncy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9ib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgICAgIHJlc3VsdC0+cHVzaChn
bG9iYWxPYmplY3QsIG1fYm91bmRBcmdzLT5nZXQoaSkpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKaW5kZXggNGE5MGIwMjJkZDMwZjY0
MDY3MzFiMGYxZGE5Mjk2YTI3N2M1YzY4Ny4uMTdhYTg0Y2ZmZTE1N2NiYTg2Y2Y5MmQ4YWNjNTlm
Njc2OWNhZDBhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
b3VuZEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC00Miw2ICs0Myw4IEBAIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5h
bCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgJiB+SW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZTsKICAgICBzdGF0aWNfYXNzZXJ0KFN0cnVjdHVyZUZsYWdzICYgSW1wbGVtZW50
c0hhc0luc3RhbmNlLCAiIik7CiAKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE51
bWJlck9mQ2xvbmluZ0JvdW5kQXJndW1lbnRzID0gNjQ7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CkBAIC01Miw5ICs1NSwxNiBAQCBjbGFzcyBKU0Jv
dW5kRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgCiAgICAgc3RhdGlj
IGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOwogCisgICAgLy8gSWYgYm91bmRBcmdzJyBsZW5ndGggaXMgdG9vIGxhcmdlLCB3ZSBzaG91
bGQgbm90IGNsb25lIGJvdW5kQXJncyB3aGVuIHdyYXBwaW5nIHRoZSBib3VuZCBmdW5jdGlvbiBh
Z2Fpbi4KKyAgICBib29sIGNhbkNsb25lQm91bmRBcmdzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBib3VuZEFyZ3NMZW5ndGgoKSA8PSBKU0JvdW5kRnVuY3Rpb246Om1heE51bWJlck9m
Q2xvbmluZ0JvdW5kQXJndW1lbnRzOworICAgIH0KKwogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5j
dGlvbigpIHsgcmV0dXJuIG1fdGFyZ2V0RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU1ZhbHVlIGJv
dW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9CiAgICAgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIGJvdW5kQXJncygpIHsgcmV0dXJuIG1fYm91bmRBcmdzLmdldCgpOyB9IC8vIERP
IE5PVCBhbGxvdyB0aGlzIGFycmF5IHRvIGJlIG11dGF0ZWQhCisgICAgdW5zaWduZWQgYm91bmRB
cmdzTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEFyZ3MgPyBtX2JvdW5kQXJncy0+bGVu
Z3RoKCkgOiAwOyB9CiAgICAgSlNBcnJheSogYm91bmRBcmdzQ29weShKU0dsb2JhbE9iamVjdCop
OwogICAgIEpTU3RyaW5nKiBuYW1lTWF5QmVOdWxsKCkgeyByZXR1cm4gbV9uYW1lTWF5QmVOdWxs
LmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwYTYxNjcxM2U2
ZGM2Y2Q1ZWE3OThlZWM0NmQxYTU0NmM3YWUzMmE4Li4xNTJhZDg1ZjM1MTFmMTdiYTRiZjE5NzIw
YjQ0ZTM2YjEwZjdmYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMDAsMTAgKzMwMCwyMiBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04obWFrZUJvdW5kRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRgogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBKU1ZhbHVlIGJvdW5kVGhpcyA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMSk7CiAgICAgSlNWYWx1ZSBib3VuZEFyZ3MgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDIpOworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkg
PSBib3VuZEFyZ3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihib3Vu
ZEFyZ3MpIDogbnVsbHB0cjsKICAgICBkb3VibGUgbGVuZ3RoID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgzKS5hc051bWJlcigpOwogICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0gYXNT
dHJpbmcoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCg0KSk7CiAKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGJvdW5kVGhpcywgYm91bmRBcmdzLmlzQ2VsbCgpID8g
anNDYXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oYm91bmRBcmdzKSA6IG51bGxwdHIsIGxlbmd0
aCwgbmFtZVN0cmluZykpKTsKKyAgICAvLyBVbndyYXAgSlNCb3VuZEZ1bmN0aW9uIGJ5IGNvbmZp
Z3VyaW5nIGJ1dHRlcmZseSBhbmQgdGFyZ2V0LiBUaGUgbGFyZ2VyIEJ1dHRlcmZseSBpcyBhbHJl
YWR5IGFsbG9jYXRlZCBmb3IgdGhhdCBwdXJwb3NlLgorICAgIGlmICh0YXJnZXQtPmluaGVyaXRz
PEpTQm91bmRGdW5jdGlvbj4odm0pKSB7CisgICAgICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRG
dW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0YXJnZXQpOworICAgICAgICBpZiAo
Ym91bmRGdW5jdGlvbi0+Y2FuQ2xvbmVCb3VuZEFyZ3MoKSkgeworICAgICAgICAgICAgYm91bmRU
aGlzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCk7CisgICAgICAgICAgICB0YXJnZXQgPSBi
b3VuZEZ1bmN0aW9uLT50YXJnZXRGdW5jdGlvbigpOworICAgICAgICAgICAgaWYgKCFidXR0ZXJm
bHkgJiYgYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCkpCisgICAgICAgICAgICAgICAgYnV0dGVy
Zmx5ID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGJvdW5kVGhpcywgYnV0dGVyZmx5
LCBsZW5ndGgsIG5hbWVTdHJpbmcpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTiho
YXNPd25MZW5ndGhQcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NDc5MGE3MmFiZjY3M2FlMTdhNzQ1ZGEzNjJhMTVi
MmZlYjNlNDc3Li4wYTlhMmJlMDE2NDYxNDgxZTgxZjBmMzg0ZGVlZGVlYjA5OWY3OWM1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMDEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlvbiBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20v
ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDQtMzAgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQXBwIGhpZ2hsaWdodCBVSSBzaG91
bGQgYmUgZGlzYWJsZWQgd2hlbiBzZWxlY3RpbmcgdGV4dCBpbiBpbWFnZSBvdmVybGF5cwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CmluZGV4IDJjOTgx
MDQ1NTI2NWMzOGU0M2UyODI2YWNkZjg3NjczNWJhZWRhOTYuLjM0ODkzNTVlYzY1MzY0NGY5NDBk
ZjhmNWY2N2IwMTE0ZDM1YWQxNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9mdW5j
dGlvbi1iaW5kLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24t
YmluZC1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBAIFRlc3RzIEZ1bmN0aW9uLmJpbmQuCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBuZXcgKGRlY29kZVVSSS5iaW5kKCkp
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0
b3IgKGV2YWx1YXRpbmcgJ25ldyAoZGVjb2RlVVJJLmJpbmQoKSkoKScpLgorUEFTUyBuZXcgKGRl
Y29kZVVSSS5iaW5kKCkpKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rpb24gaXMg
bm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ2RlY29kZVVSSScpLgogUEFTUyAobmV3IChT
dHJpbmcuYmluZCgpKSgnZm9vJykpLnRvU3RyaW5nKCkgaXMgJ2ZvbycKIFBBU1MgcmVzdWx0IGlz
ICJbb2JqZWN0IFdpbmRvd10gLT4geDoxLCB5OjIiCiBQQVNTIHJlc3VsdCBpcyAiJ2EnIC0+IHg6
J2InLCB5OjEiCkBAIC0yNSw3ICsyNSw3IEBAIFBBU1MgInByb3RvdHlwZSIgaW4gRyBpcyBmYWxz
ZQogUEFTUyAicHJvdG90eXBlIiBpbiBIIGlzIGZhbHNlCiBQQVNTIEZ1bmN0aW9uLmJpbmQuY2Fs
bCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHx0aGlzfCBpcyBub3QgYSBm
dW5jdGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuCiBQQVNTIGFiY0F0KDEpIGlz
ICJiIgotUEFTUyBuZXcgYWJjQXQoMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rp
b24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhYmNBdCgxKScpLgorUEFT
UyBuZXcgYWJjQXQoMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90
IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ2FiY0F0JykuCiBQQVNTIGJvdW5kRnVuY3Rpb25Q
cm90b3R5cGVBY2Nlc3NlZCBpcyBmYWxzZQogUEFTUyBGdW5jdGlvbi5iaW5kLmxlbmd0aCBpcyAx
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlMDU4MWQ0NmJmNjA0YmI3OTVhZDNh
NjIxNTA5ZTQ1OWU3YmVhODAuLjMzNzNhMGM4MzA5NTI2MWYwYzQ0ZWY1OGZlYmU3NGZkOTA1ZTgy
ZmYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMDUtMDEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlvbiBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mv
Ym91bmQtZnVuY3Rpb24taW5saW5pbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICh0KToKKyAgICAgICAgKiBzdHJlc3MvYm91bmQtZnVu
Y3Rpb24tc3RhY2stb3ZlcmZsb3cuanM6CisgICAgICAgICogc3RyZXNzL2JvdW5kLWZ1bmN0aW9u
LXN0cmVuZ3RoLXJlZHVjdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKHQxKToKKyAgICAgICAgKHQyKToKKyAgICAgICAgKiBzdHJl
c3MvZnVuY3Rpb24tYmluZC1jYWxsZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoaW5saW5lZCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZnVu
Y3Rpb24tYmluZC1kby1ub3QtbWlzcy1hbHJlYWR5LWJvdW5kLWFyZ3MuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3ctbW9yZS5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgICh0aHJvd2FibGUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChj
YXRjaCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3cu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGhyb3dhYmxlKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlv
bi1iaW5kLWlubGluZWQtb3NyLWV4aXQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAobWF5RXhpdCk6CisgICAgICAgIChpbmxpbmVkKToKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHRocm93YWJsZSk6CisgICAgICAgIChpbm5lcik6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3Mvc2FtcGxpbmct
cHJvZmlsZXItYm91bmQtZnVuY3Rpb24tbmFtZS5qczoKKyAgICAgICAgKHBsYXRmb3JtU3VwcG9y
dHNTYW1wbGluZ1Byb2ZpbGVyKToKKyAgICAgICAgKiBzdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4t
Y3VzdG9tLWhhc0luc3RhbmNlLmpzOgorCiAyMDIxLTA0LTI4ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZXhjZXB0aW9uIGFzc2VydGlvbnMgaW4gbGlnaHQg
b2YgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Ym91bmQtZnVuY3Rpb24taW5saW5pbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlv
bi1pbmxpbmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzUwNWIxZmU3MjIzOWU2YmNmZDcyMDliNTMwMzBi
ODBkYzFjYjJmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rp
b24taW5saW5pbmcuanMKQEAgLTAsMCArMSwxNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
YSwgYiwgYykgeworICAgIHJldHVybiBhICsgYiArIGM7Cit9CisKK3ZhciBib3VuZCA9IHRlc3Qu
YmluZCgwLCAxKTsKKworZnVuY3Rpb24gdCgpIHsKKyAgICByZXR1cm4gYm91bmQoMiwgMywgNCk7
Cit9Citub0lubGluZSh0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hv
dWxkQmUodCgpLCA2KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9u
LXN0YWNrLW92ZXJmbG93LmpzIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RhY2st
b3ZlcmZsb3cuanMKaW5kZXggZjE4MjJlMWVhNjliNTY1OGJiNDdkODA4YzA2Y2Y0ZDk3OGNjMTc3
YS4uODJhYmUzMTBiMWJjN2RiYzAxMDBhNzFhNDBkZDRkZmVkMTBhZjlhNSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RhY2stb3ZlcmZsb3cuanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RhY2stb3ZlcmZsb3cuanMKQEAgLTgsOCArOCw4
IEBAIGZ1bmN0aW9uIGZvbygpCiB7CiB9CiAKLWZvciAodmFyIGkgPSAwOyBpIDwgNTAwMDsgKytp
KSB7Ci0gICAgZm9vID0gZm9vLmJpbmQoMSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDYwMDA7ICsr
aSkgeworICAgIGZvbyA9IGZvby5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSwgMTAsIDExKTsKICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAibmFtZSIsIHsg
dmFsdWU6ICJiYXIiLCB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgd3JpdGFibGU6
IHRydWUgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9u
LXN0cmVuZ3RoLXJlZHVjdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0
cmVuZ3RoLXJlZHVjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzM3ODZkMmViZjlhNTlkODEzZDNjYjI1
NTQyYjAxNjE2ZjNjODdmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQt
ZnVuY3Rpb24tc3RyZW5ndGgtcmVkdWN0aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
CitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpIHsKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQorbm9J
bmxpbmUodGVzdCk7CisKK3ZhciBib3VuZCA9IHRlc3QuYmluZCgwLCAxKTsKK25vSW5saW5lKGJv
dW5kKTsKKworZnVuY3Rpb24gdDEoKSB7CisgICAgcmV0dXJuIGJvdW5kKDIsIDMsIDQpOworfQor
bm9JbmxpbmUodDEpOworCitmdW5jdGlvbiB0MigpIHsKKyAgICByZXR1cm4gYm91bmQoJ2hlbGxv
Jyk7Cit9Citub0lubGluZSh0Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsK
KyAgICBzaG91bGRCZSh0MSgpLCA2KTsKKyAgICBzaG91bGRCZSh0MigpLCAiMWhlbGxvdW5kZWZp
bmVkIik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGxl
ci5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtY2FsbGVyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYzOGU5ZmUyMzQwMGI5NTZlMzAwZDNiYTFiYTZhZjcwY2ViZGUzMTAKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGxlci5qcwpAQCAtMCwwICsxLDIw
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gaW5saW5lZChhLCBiLCBjKQoreworICAgIHNob3VsZEJl
KGlubGluZWQuY2FsbGVyLCB0ZXN0KTsKK30KKwordmFyIGJvdW5kID0gaW5saW5lZC5iaW5kKHVu
ZGVmaW5lZCwgMykuYmluZCh1bmRlZmluZWQsIDEsIDIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZXR1cm4gYm91bmQoKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2Z1bmN0aW9uLWJpbmQtZG8tbm90LW1pc3MtYWxyZWFkeS1ib3VuZC1hcmdzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kby1ub3QtbWlzcy1hbHJlYWR5LWJvdW5kLWFyZ3MuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzI1NzhmMGQ0NTRhZGVlNWQ1MWViOTI4OGYzMzBmYWIxOGY3ZmIxMwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG8tbm90LW1pc3Mt
YWxyZWFkeS1ib3VuZC1hcmdzLmpzCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlv
biB0ZXN0KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KK3ZhciBib3VuZDEg
PSB0ZXN0LmJpbmQodW5kZWZpbmVkLCAwLCAxLCAyKTsKK3ZhciBib3VuZDIgPSBib3VuZDEuYmlu
ZCh1bmRlZmluZWQpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3Vs
ZEJlKGJvdW5kMigpLCAzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJp
bmQtZG91YmxlLXdyYXAtdGhyb3ctbW9yZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJp
bmQtZG91YmxlLXdyYXAtdGhyb3ctbW9yZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzhjMmE3MmQxZDQ2Y2E1
ZGVkYWNmYTE2NjM0NzAzMmJhYWVhNzlkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy1tb3JlLmpzCkBAIC0wLDAgKzEsMzQg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gdGhyb3dhYmxlKCkKK3sK
KyAgICBpZiAoZmxhZykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9Citub0lubGluZSh0
aHJvd2FibGUpOworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7CisgICAgdGhyb3dhYmxlKCk7Cisg
ICAgcmV0dXJuIGEgKyBiOworfQorCit2YXIgYm91bmQgPSB0ZXN0LmJpbmQodW5kZWZpbmVkLCAx
LCAyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgdmFyIGJvdW5kID0gYm91
bmQuYmluZCh1bmRlZmluZWQpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAg
IHNob3VsZEJlKGJvdW5kKCksIDMpOworZmxhZyA9IHRydWU7Cit2YXIgZXJyb3IgPSBudWxsOwor
dHJ5IHsKKyAgICBib3VuZCgpOworfSBjYXRjaCAoZSkgeworICAgIGVycm9yID0gZTsKK30KK3No
b3VsZEJlKGVycm9yICE9PSBudWxsLCB0cnVlKTsKK3Nob3VsZEJlKGVycm9yLnN0YWNrLnRyaW0o
KS5zcGxpdCgnXG4nKS5sZW5ndGgsIDIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVu
Y3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9u
LWJpbmQtZG91YmxlLXdyYXAtdGhyb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZkOWU4YTVlYjQ0MTNhMjVj
ZWJhNjEwMzNhMWRiNWZlZmFlN2JmMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3cuanMKQEAgLTAsMCArMSwzMiBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7CitmdW5jdGlvbiB0aHJvd2FibGUoKQoreworICAgIGlm
IChmbGFnKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KK25vSW5saW5lKHRocm93YWJs
ZSk7CisKK2Z1bmN0aW9uIHRlc3QoYSwgYikKK3sKKyAgICB0aHJvd2FibGUoKTsKKyAgICByZXR1
cm4gYSArIGI7Cit9Cit2YXIgYm91bmQxID0gdGVzdC5iaW5kKHVuZGVmaW5lZCwgMSk7Cit2YXIg
Ym91bmQyID0gYm91bmQxLmJpbmQodW5kZWZpbmVkLCAyKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShib3VuZDIoKSwgMyk7CitmbGFnID0gdHJ1ZTsKK3Zh
ciBlcnJvciA9IG51bGw7Cit0cnkgeworICAgIGJvdW5kMigpOworfSBjYXRjaCAoZSkgeworICAg
IGVycm9yID0gZTsKK30KK3Nob3VsZEJlKGVycm9yICE9PSBudWxsLCB0cnVlKTsKK3Nob3VsZEJl
KGVycm9yLnN0YWNrLnRyaW0oKS5zcGxpdCgnXG4nKS5sZW5ndGgsIDIpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9zci1leGl0LmpzIGIvSlNUZXN0
cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9zci1leGl0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4
YWNhNTBhMTVkYjczYTA1ZDViOWNhMzM2NDA3OGI2ZTkzZWQ0NGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWlubGluZWQtb3NyLWV4aXQuanMKQEAgLTAs
MCArMSwzMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7CitmdW5jdGlvbiBtYXlFeGl0
KCkKK3sKKyAgICBpZiAoZmxhZykgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIHJldHVy
biAyNDsKKyAgICB9CisgICAgcmV0dXJuIDQyOworfQorCitmdW5jdGlvbiBpbmxpbmVkKGEsIGIs
IGMpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYyArIG1heUV4aXQoKTsKK30KKwordmFyIGJvdW5k
ID0gaW5saW5lZC5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMyk7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJldHVybiBib3VuZCgpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdCgpLCA0OCk7CitmbGFnID0gdHJ1
ZTsKK3Nob3VsZEJlKHRlc3QoKSwgMzApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVu
Y3Rpb24tYmluZC10aHJvdy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGhyb3cu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTUzZjZmZTk5OTU1OTdmY2RkMDk5ZmQyOGFhYTA1ZmQwNjZlYjM1Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGhyb3cuanMK
QEAgLTAsMCArMSwzNiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7CitmdW5jdGlvbiB0
aHJvd2FibGUoKQoreworICAgIGlmIChmbGFnKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImV4
cGVjdGVkIik7Cit9Citub0lubGluZSh0aHJvd2FibGUpOworCitmdW5jdGlvbiBpbm5lcigpCit7
CisgICAgdGhyb3dhYmxlKCk7Cit9Cit2YXIgYm91bmQgPSBpbm5lci5iaW5kKDEsIDIsIDMpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBib3VuZCgpOworfQorbm9JbmxpbmUodGVzdCk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgdGVzdCgpOworCit2YXIgbGVuZ3Ro
ID0gMDsKK3RyeSB7CisgICAgZmxhZyA9IHRydWU7CisgICAgdGVzdCgpOworfSBjYXRjaCAoZXJy
b3IpIHsKKyAgICBsZW5ndGggPSBlcnJvci5zdGFjay50cmltKCkuc3BsaXQoJ1xuJykubGVuZ3Ro
OworfQorc2hvdWxkQmUobGVuZ3RoLCA0KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Nh
bXBsaW5nLXByb2ZpbGVyLWJvdW5kLWZ1bmN0aW9uLW5hbWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9z
YW1wbGluZy1wcm9maWxlci1ib3VuZC1mdW5jdGlvbi1uYW1lLmpzCmluZGV4IGYzNzc2Mjk4OTU4
NTY1ZDkwN2NiMzU2MGM2YTczMzkzYTA3YjYzZmEuLjkzM2E3NDQ1OWMxN2E0OWQ2ZjVjYjQ3ZjY3
MzFmNDBhN2Y1YWVkMTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3NhbXBsaW5nLXByb2Zp
bGVyLWJvdW5kLWZ1bmN0aW9uLW5hbWUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2FtcGxpbmct
cHJvZmlsZXItYm91bmQtZnVuY3Rpb24tbmFtZS5qcwpAQCAtMjMsNiArMjMsNiBAQCBmdW5jdGlv
biBiYXIoKSB7CiAgICAgICAgIGJvdW5kQmFyKCk7CiAgICAgfQogCi0gICAgcnVuVGVzdChiYXos
IFsiZm9vIiwgImJvdW5kIGZvbyIsICJiYXoiXSk7Ci0gICAgcnVuVGVzdChiYXosIFsiYmFyIiwg
ImJvdW5kIGJhciIsICJiYXoiXSk7CisgICAgcnVuVGVzdChiYXosIFsiZm9vIiwgImJheiJdKTsK
KyAgICBydW5UZXN0KGJheiwgWyJiYXIiLCAiYmF6Il0pOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4tY3VzdG9tLWhhc0luc3RhbmNlLmpzIGIvSlNUZXN0
cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4tY3VzdG9tLWhhc0luc3RhbmNlLmpzCmluZGV4IGMx
ZTJlYjA2NDcyY2Y4ZTA5MTA5NzE3NTBhZDdhYTNlZGNkMzc3ZWUuLmM5OGQzMTZhZDUxMTY0Mzc5
MWM4YTc5NDI1NGYwMTljOTE0NjhhMzAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3N0YWNr
LW92ZXJmbG93LWluLWN1c3RvbS1oYXNJbnN0YW5jZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9z
dGFjay1vdmVyZmxvdy1pbi1jdXN0b20taGFzSW5zdGFuY2UuanMKQEAgLTQsNyArNCw3IEBAIGZ1
bmN0aW9uIGYoKSB7fQogCiB2YXIgZm4gPSBmOwogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7
ICsraSkgewotICAgIGZuID0gZm4uYmluZCgpOworICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQs
IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2
KTsKIAogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBmYWxsYmFjayB0byBAQGhhc0luc3RhbmNlIGZy
b20gJUZ1bmN0aW9uUHJvdG90eXBlJS4KICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIFN5
bWJvbC5oYXNJbnN0YW5jZSwgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427517</attachid>
            <date>2021-05-01 20:46:56 -0700</date>
            <delta_ts>2021-05-10 03:05:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210501204655.patch</filename>
            <type>text/plain</type>
            <size>108822</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDkyNDhkYTZiYWNhOWM0NjZkMDQ4MTdmMjJhYmZiMjY1ZDZlNmE4Li41Y2ZkNTE5N2Q3NTVlODkx
OGZiNzBjODY0YTU0OGUwOTY1OWE2MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMjEtMDUtMDEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlvbiBjYWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBvcHRp
bWl6ZXMgRnVuY3Rpb24jYmluZC4KKworICAgICAgICAxLiBGdW5jdGlvbiNiaW5kIGJvdW5kQXJn
cyBkbyBub3QgaW5jbHVkZSB8dGhpc3wsIHdoaWNoIGlzIGR1cGxpY2F0ZWQgaW4gYm91bmRUaGlz
IGZpZWxkLgorICAgICAgICAyLiBGdW5jdGlvbiNiaW5kIHVud3JhcHMgZnVuY3Rpb24gd2hlbiBi
aW5kaW5nIHRoZSBib3VuZCBmdW5jdGlvbi4gV2Uga2VlcCBkZXB0aCBvZiBib3VuZCAxLgorICAg
ICAgICAzLiBDYWxsSUMgbm93IGlubGluZXMgYm91bmQgZnVuY3Rpb24gaWYgaXQgaXMgbm90IGEg
Y2xvc3VyZSBjYWxsLgorICAgICAgICA0LiBERkcgLyBGVEwgYXR0ZW1wdCB0byBpbmxpbmUgd3Jh
cHBlZCBmdW5jdGlvbiBpZiBpdCBmaWd1cmVkIG91dCB0aGF0IGJvdW5kIGZ1bmN0aW9uIGlzIGNh
bGxlZC4KKyAgICAgICAgNS4gREZHIC8gRlRMIGF0dGVtcHQgdG8gc3ByZWFkIGJvdW5kIGFyZ3Vt
ZW50cyBldmVuIGlmIHdlIGRlY2lkZWQgbm90IHRvIGlubGluZSBhIGZ1bmN0aW9uLgorICAgICAg
ICA2LiBBZGQgZWFnZXIgY29uc3RhbnQgZm9sZGluZyBjb2RlIG9mIEdldEdldHRlciAvIEdldFNl
dHRlciBpbiBERkc6OkJ5dGVDb2RlUGFyc2VyIHRvIGVuY291cmFnZSBnZXR0ZXIgLyBzZXR0ZXIg
aW5saW5pbmcgZm9yIGJvdW5kIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGJ1aWx0aW5zL0Z1bmN0
aW9uUHJvdG90eXBlLmpzOgorICAgICAgICAoYmluZCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19jcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHkpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZn
L0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkdyYXBoOjp0cnlHZXRDb25zdGFudEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OnRyeUdldENvbnN0YW50U2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAg
ICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0
b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNl
OjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkpOiBEZWxldGVkLgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0
U3RhY2tUcmFjZUZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6Z2V0U3RhY2tUcmFjZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvUmVw
YXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZUlubGluZWRCb3VuZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhp
Y0NhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlND
Ojpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OmJvdW5kQXJnc0NvcHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICog
dG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKKwogMjAy
MS0wNC0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ug
c21hbGwgSklUIHBvb2wgdGVzdHMgcGFzcyBvbiBBUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4IGFmMjlhZmQ4MzU2Y2Fm
OWI3ZTk4ZjRiNjY3OTFhNDNhNTc0NDU5YWEuLjZiMjUzOTkwMTA3NzQ1ZmJlOWExNzFjYmMyZjJm
MjhkMDBmNjcyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9G
dW5jdGlvblByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTYxLDggKzYxLDcgQEAgZnVuY3Rpb24gYmluZCh0aGlz
VmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHRhcmdldCA9IHRoaXM7Ci0g
ICAgaWYgKCFAaXNDYWxsYWJsZSh0YXJnZXQpKQorICAgIGlmICghQGlzQ2FsbGFibGUodGhpcykp
CiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBhIGZ1bmN0aW9uIGluc2lk
ZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCIpOwogCiAgICAgdmFyIGFyZ3VtZW50Q291bnQgPSBA
YXJndW1lbnRDb3VudCgpOwpAQCAtNzAsMTIgKzY5LDEyIEBAIGZ1bmN0aW9uIGJpbmQodGhpc1Zh
bHVlKQogICAgIHZhciBudW1Cb3VuZEFyZ3MgPSAwOwogICAgIGlmIChhcmd1bWVudENvdW50ID4g
MSkgewogICAgICAgICBudW1Cb3VuZEFyZ3MgPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICAgICAg
Ym91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOworICAgICAgICBib3VuZEFy
Z3MgPSBAY3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KHRoaXMpOwogICAgIH0KIAogICAgIHZhciBs
ZW5ndGggPSAwOwotICAgIGlmIChAaGFzT3duTGVuZ3RoUHJvcGVydHkodGFyZ2V0KSkgewotICAg
ICAgICB2YXIgbGVuZ3RoVmFsdWUgPSB0YXJnZXQubGVuZ3RoOworICAgIGlmIChAaGFzT3duTGVu
Z3RoUHJvcGVydHkodGhpcykpIHsKKyAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0gdGhpcy5sZW5n
dGg7CiAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAg
ICAgICAgICBsZW5ndGhWYWx1ZSA9IEB0b0ludGVnZXJPckluZmluaXR5KGxlbmd0aFZhbHVlKTsK
ICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IGNhcmUgYWJvdXQgcG9zaXRpdmUgbGVu
Z3RoVmFsdWVzLCBob3dldmVyLCB0aGlzIGNvbXBhcmlzaW9uCkBAIC04NSw5ICs4NCw5IEBAIGZ1
bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgdmFyIG5hbWUg
PSB0YXJnZXQubmFtZTsKKyAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICBpZiAodHlwZW9m
IG5hbWUgIT09ICJzdHJpbmciKQogICAgICAgICBuYW1lID0gIiI7CiAKLSAgICByZXR1cm4gQG1h
a2VCb3VuZEZ1bmN0aW9uKHRhcmdldCwgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFt
ZSk7CisgICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0aGlzLCB0aGlzVmFsdWUsIGJvdW5k
QXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGNiMGU3YzhjOWJiYmExNGM1N2QyMmI0YmEyN2ViZmI5
ZDcyOTc3NmEuLjI2YWYwNmVmNDRhZmRiOGMyNzdiNWJkZDcxMWUwNDgxY2FhNjYyMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTEx
LDkgKzExMSwxMCBAQAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKLW9w
IDpjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSwKK29wIDpjcmVhdGVfYXJndW1lbnRzX2J1dHRl
cmZseV9leGNsdWRpbmdfdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICB0YXJnZXQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKIG9wIDpj
cmVhdGVfdGhpcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuY3BwCmluZGV4IDAxNmEwMjdmYTMzYWI3OTQ5NDMxMmE0YTQ3N2RmYzViMmU3YTAw
ZDcuLjk0MzIwZTZlNDc5Y2EwY2MzYmZkZWY0MzkyYWViNGZiZjY4MjNhM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtOTIs
NyArOTIsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJl
Z2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfcHJvZmlsZV9j
b250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBj
YXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3Vt
ZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBv
cF9jaGVja190cmFwczoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKQEAgLTEwMyw2ICsxMDIs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVy
IHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgogICAg
ICAgICByZXR1cm47CiAKKyAgICBVU0VTKE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVk
aW5nVGhpcywgdGFyZ2V0KQogICAgIFVTRVMoT3BUb1RoaXMsIHNyY0RzdCkKICAgICBVU0VTKE9w
Q2hlY2tUZHosIHRhcmdldFZpcnR1YWxSZWdpc3RlcikKICAgICBVU0VTKE9wSWRlbnRpdHlXaXRo
UHJvZmlsZSwgc3JjRHN0KQpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1CiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BD
cmVhdGVTY29wZWRBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzLCBkc3QpCi0gICAgREVGUyhPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgZHN0KQorICAg
IERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBkc3QpCiAgICAg
REVGUyhPcERlbEJ5SWQsIGRzdCkKICAgICBERUZTKE9wRGVsQnlWYWwsIGRzdCkKICAgICBERUZT
KE9wVW5zaWduZWQsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNThlNTBkYTA5MjFiMjA5Zjll
YmVmZjJhYmRmM2IzM2VmZDU1YmQ4Yi4uMDEzMWNmMjg5ZmFhYjVkMDdkZTVhZDVkNWJlZjEzNDgx
MjlkMjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4NzMsOSArMjg3Myw5IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoUmVnaXN0ZXJJRCogZHN0
KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdGFyZ2V0KQog
ewotICAgIE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OjplbWl0KHRoaXMsIGRzdCk7CisgICAg
T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOjplbWl0KHRoaXMsIGRzdCwg
dGFyZ2V0KTsKICAgICByZXR1cm4gZHN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTUxMWRjMjc1
NTVkZTViODg0NDdlMzMzZjllMTY2MjVhODU2MjYxYy4uMzZiOGIwOTRkYjE3YmY1YTc5NmM3NWQy
YzQzYjg2MjY2ZWIxMDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzYxLDcgKzc2MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlUHJvbWlzZShSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCwgYm9vbCBpc0ludGVybmFsUHJvbWlzZSk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRl
QXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpOwot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KFJlZ2lzdGVy
SUQqIGRzdCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogY291bnQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZOZWVkZWQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBjb25zdHJ1Y3RvciwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0
ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggM2NiZDEyMDk5ZTg1YjBiNDI2MjA4MGE0M2EzNWRlODFmMmJkNTdiOS4u
ZjQyMjNkOTI2YWI2N2YxMGZiNzQ0YTBjMzE3ODNhMjMyNjhhNWNmNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTkz
Myw4ICsxOTMzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfbmV3UHJvbWlzZShKU0M6OkJ5dGVjb2RlR2VuZXJhCiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBk
c3QpCiB7Ci0gICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUpOwotICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpKTsKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhZGRpdGlvbmFsQ291bnQgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMoZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYWRkaXRpb25hbENvdW50LmdldCgpKTsKIH0KIAog
I2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9S
UyhuYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZmE5ZDlmYTBiYmZiMDZkYjZkNjIwMTI3
NWNmYzY2MzQxMTA5Yjk5Ni4uMjZiMzUzOGIyNjQ0YThmNDQ5MmJhNjEyZThkNDAyNTZhNWQxMjlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzIzMCw3ICszMjMwLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVy
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAgICAg
ICAgIHNldEZvck5vZGUobm9kZSwgbV92bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2Fy
cmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykg
LSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGY3
ZWU0NmI0NmFhZDMwYTI3YmY2YjM2ZWEyNDcyMjliNWJjYTNkNGQuLjE3ZDkwZWFlOTlkNTUzOWM2
Yzc0MGNhMzE2NjM3Yjk4ZjY0NWJiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5C
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5zdGFuY2VPZlN0YXR1cy5oIgogI2luY2x1ZGUgIkpT
QXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1
ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCkBAIC0xNzcsOCArMTc4LDkgQEAgY2xhc3MgQnl0ZUNv
ZGVQYXJzZXIgewogICAgIHZvaWQgYWRkSnVtcFRvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwog
ICAgIC8vIEhhbmRsZSBjYWxscy4gVGhpcyByZXNvbHZlcyBpc3N1ZXMgc3Vycm91bmRpbmcgaW5s
aW5pbmcgYW5kIGludHJpbnNpY3MuCiAgICAgZW51bSBUZXJtaW5hbGl0eSB7IFRlcm1pbmFsLCBO
b25UZXJtaW5hbCB9OworICAgIGVudW0gY2xhc3MgQ2FsbFN0YWNrT3JpZ2luIHsgQnl0ZWNvZGUs
IE9ubHlERkcgfTsKICAgICBUZXJtaW5hbGl0eSBoYW5kbGVDYWxsKAotICAgICAgICBPcGVyYW5k
IHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQnl0ZWNvZGVJbmRl
eCBvc3JFeGl0SW5kZXgsCisgICAgICAgIE9wZXJhbmQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kLCBDYWxsU3RhY2tPcmlnaW4sIEJ5dGVjb2RlSW5kZXggb3NyRXhp
dEluZGV4LAogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMsCiAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIEVDTUFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xOTIsMTYgKzE5NCwxNiBAQCBjbGFz
cyBCeXRlQ29kZVBhcnNlciB7CiAgICAgYm9vbCBoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb25zdCBDaGVja3NGdW5jdG9yJiBlbWl0RnVuY3Rp
b25DaGVja0lmTmVlZGVkKTsKICAgICB1bnNpZ25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsg
Ly8gUmV0dXJuIFVJTlRfTUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkg
Y29udmVudGlvbiwgaW50cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgogICAgIC8vIEhhbmRsZSBp
bmxpbmluZy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRv
IHBsYW50IGEgY2FsbC4KLSAgICBib29sIGhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0
ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVkIGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUg
Y2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQpOworICAgIGJvb2wgaGFuZGxlVmFyYXJnc0lu
bGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExp
bmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1l
bnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRz
T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbFN0YWNr
T3JpZ2luKTsKICAgICB1bnNpZ25lZCBnZXRJbmxpbmluZ0JhbGFuY2UoY29uc3QgQ2FsbExpbmtT
dGF0dXMmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBlbnVtIGNsYXNzIENhbGxPcHRp
bWl6YXRpb25SZXN1bHQgeyBPcHRpbWl6ZWRUb0p1bXAsIElubGluZWQsIERpZE5vdGhpbmcgfTsK
LSAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNl
dCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBC
YXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOwot
ICAgIENhbGxPcHRpbWl6YXRpb25SZXN1bHQgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rl
ck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgTm9kZVR5cGUgY2FsbE9w
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIEVDTUFN
b2RlKTsKKyAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUNhbGxWYXJpYW50KE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rl
ck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kLCBDYWxsU3RhY2tPcmlnaW4sIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2ln
bmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBib29s
IG5lZWRzVG9DaGVja0NhbGxlZSk7CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVJ
bmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3Vt
ZW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhp
dEluZGV4LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbFN0YWNr
T3JpZ2luLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBFQ01BTW9kZSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICB2b2lkIGlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcyk7CisgICAgdm9pZCBpbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBP
cGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIENhbGxTdGFja09y
aWdpbiwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVy
biB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAg
ICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwg
Q2FsbFZhcmlhbnQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
ICAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgpAQCAtMTMzNiw3ICsxMzM4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBwYywgTm8KICAg
ICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCA9IElubGluZUNhbGxGcmFtZTo6a2luZEZvcihj
YWxsTW9kZSk7CiAgICAgQVNTRVJUKG9zckV4aXRJbmRleCk7CiAKLSAgICByZXR1cm4gaGFuZGxl
Q2FsbChkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgp
LCBKSVRUeXBlOjpERkdKSVQpLCBvcCwga2luZCwgb3NyRXhpdEluZGV4LCBjYWxsVGFyZ2V0LAor
ICAgIHJldHVybiBoYW5kbGVDYWxsKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJ
bmRleC5jaGVja3BvaW50KCksIEpJVFR5cGU6OkRGR0pJVCksIG9wLCBraW5kLCBDYWxsU3RhY2tP
cmlnaW46OkJ5dGVjb2RlLCBvc3JFeGl0SW5kZXgsIGNhbGxUYXJnZXQsCiAgICAgICAgIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5dGVjb2RlLCBtX2N1cnJlbnRJbmRleC5jaGVja3Bv
aW50KCkpLCByZWdpc3Rlck9mZnNldCwgY2FsbExpbmtTdGF0dXMsIGdldFByZWRpY3Rpb24oKSk7
CiB9CiAKQEAgLTEzNDcsNyArMTM0OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnJlZmluZVN0
YXRpY2FsbHkoQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBOb2RlKiBjYWxsCiB9CiAK
IEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgK
LSAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBr
aW5kLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwKKyAgICBPcGVyYW5kIHJlc3VsdCwgTm9k
ZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBDYWxsU3RhY2tPcmlnaW4gY2Fs
bFN0YWNrT3JpZ2luLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwKICAgICBOb2RlKiBjYWxs
VGFyZ2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rlck9mZnNl
dCwKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cywgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CkBAIC0xMzY0LDcgKzEzNjYsNyBAQCBCeXRl
Q29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCA9IHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50SW5jbHVkaW5nVGhpcygwLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIGF1dG8gb3B0
aW1pemF0aW9uUmVzdWx0ID0gaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxs
TGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIHRoaXNBcmd1bWVudCwKLSAgICAgICAgICAgIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5kZXgsIG9wLCBraW5kLCBwcmVkaWN0
aW9uLCBlY21hTW9kZSk7CisgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
b3NyRXhpdEluZGV4LCBvcCwga2luZCwgY2FsbFN0YWNrT3JpZ2luLCBwcmVkaWN0aW9uLCBlY21h
TW9kZSk7CiAgICAgICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gQ2FsbE9wdGltaXphdGlv
blJlc3VsdDo6T3B0aW1pemVkVG9KdW1wKQogICAgICAgICAgICAgcmV0dXJuIFRlcm1pbmFsOwog
ICAgICAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IENhbGxPcHRpbWl6YXRpb25SZXN1bHQ6
OklubGluZWQpIHsKQEAgLTE0MDUsNyArMTQwNyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5h
bGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24q
CiAgICAgICAgIGlmIChoYW5kbGVWYXJhcmdzSW5saW5pbmcoY2FsbFRhcmdldCwgYnl0ZWNvZGUu
bV9kc3QsCiAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cywgZmlyc3RGcmVlUmVnLCBieXRlY29k
ZS5tX3RoaXNWYWx1ZSwgYnl0ZWNvZGUubV9hcmd1bWVudHMsCiAgICAgICAgICAgICBmaXJzdFZh
ckFyZ09mZnNldCwgb3AsCi0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OnZhcmFyZ3NLaW5k
Rm9yKGNhbGxNb2RlKSkpIHsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZTo6dmFyYXJnc0tp
bmRGb3IoY2FsbE1vZGUpLCBDYWxsU3RhY2tPcmlnaW46OkJ5dGVjb2RlKSkgewogICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCiAgICAgICAgICAgICAgICAg
bV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOwogICAgICAgICAgICAg
cmV0dXJuIE5vblRlcm1pbmFsOwpAQCAtMTY2NSw3ICsxNjY3LDcgQEAgdW5zaWduZWQgQnl0ZUNv
ZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENv
dW50SW5jbHUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLXZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVz
dWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQmFzaWNCbG9j
ayogY29udGludWF0aW9uQmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykK
K3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9w
ZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwg
Q2FsbFN0YWNrT3JpZ2luIGNhbGxTdGFja09yaWdpbiwgQmFzaWNCbG9jayogY29udGludWF0aW9u
QmxvY2ssIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBjb25zdCBJ
bnN0cnVjdGlvbiogc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2N1cnJlbnRJbnN0cnVjdGlv
bjsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGlu
ZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwpAQCAtMTc0NiwxMCArMTc0
OCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFuCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBl
eGl0IGhlcmUgc2luY2Ugd2UgY291bGQgZG8gdGhpbmdzIGxpa2UgYXJpdHkgZml4dXAgd2hpY2gg
Y29tcGxpY2F0ZXMgT1NSIGV4aXQgYXZhaWxhYmlsaXR5LgogICAgIG1fZXhpdE9LID0gZmFsc2U7
CiAKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6R2V0dGVy
Q2FsbDoKLSAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6U2V0dGVyQ2FsbDogewotICAgICAgICAv
LyBXaGVuIGlubGluaW5nIGdldHRlciBhbmQgc2V0dGVyIGNhbGxzLCB3ZSBzZXR1cCBhIHN0YWNr
IGZyYW1lIHdoaWNoIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgYnl0ZWNvZGUuCisgICAgaWYgKGNh
bGxTdGFja09yaWdpbiA9PSBDYWxsU3RhY2tPcmlnaW46Ok9ubHlERkcpIHsKKyAgICAgICAgLy8g
V2hlbiBpbmxpbmluZyBnZXR0ZXIsIHNldHRlciwgYW5kIGJvdW5kIGZ1bmN0aW9uIGNhbGxzLCB3
ZSBzZXR1cCBhIHN0YWNrIGZyYW1lIHdoaWNoIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgYnl0ZWNv
ZGUuCiAgICAgICAgIC8vIEJlY2F1c2UgSW5saW5pbmcgY2FuIHN3aXRjaCBvbiBleGVjdXRhYmxl
LCB3ZSBjb3VsZCBoYXZlIGEgZ3JhcGggbGlrZSB0aGlzLgogICAgICAgICAvLwogICAgICAgICAv
LyBCQiMwCkBAIC0xNzgwLDEwICsxNzgwLDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5l
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW4KICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJbmZvKGFyZ3VtZW50VG9HZXQpLCB2YWx1
ZSk7CiAgICAgICAgICAgICBtX3NldExvY2FsUXVldWUuYXBwZW5kKERlbGF5ZWRTZXRMb2NhbCB7
IGN1cnJlbnRDb2RlT3JpZ2luKCksIGFyZ3VtZW50VG9HZXQsIHZhbHVlLCBJbW1lZGlhdGVOYWtl
ZFNldCB9KTsKICAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGFyaXR5Rml4dXBDb3VudCkgewpAQCAt
MTg4MSwxNSArMTg3NywxNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbgogICAgIG1fY3VycmVu
dEluc3RydWN0aW9uID0gc2F2ZWRDdXJyZW50SW5zdHJ1Y3Rpb247CiB9CiAKLUJ5dGVDb2RlUGFy
c2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFy
aWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNh
bGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4
LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
dW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ss
IGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQorQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRp
b25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLCBDYWxsU3RhY2tPcmlnaW4gY2FsbFN0YWNrT3JpZ2luLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250
aW51YXRpb25CbG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpCiB7CiAgICAgVkVSQk9TRV9M
T0coIiAgICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsKIAogICAgIGJvb2wg
ZGlkSW5zZXJ0Q2hlY2tzID0gZmFsc2U7Ci0gICAgYXV0byBpbnNlcnRDaGVja3NXaXRoQWNjb3Vu
dGluZyA9IFsmXSAoKSB7CisgICAgYm9vbCBkaWRCb3VuZEZ1bmN0aW9uSW5saW5pbmcgPSBmYWxz
ZTsKKyAgICBhdXRvIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nID0gWyZdIChib29sIGJvdW5k
RnVuY3Rpb25JbmxpbmluZyA9IGZhbHNlKSB7CiAgICAgICAgIGlmIChuZWVkc1RvQ2hlY2tDYWxs
ZWUpCiAgICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBjYWxsVGFyZ2V0Tm9k
ZSwgdGhpc0FyZ3VtZW50KTsKICAgICAgICAgZGlkSW5zZXJ0Q2hlY2tzID0gdHJ1ZTsKKyAgICAg
ICAgZGlkQm91bmRGdW5jdGlvbklubGluaW5nID0gYm91bmRGdW5jdGlvbklubGluaW5nOwogICAg
IH07CiAKICAgICBpZiAoa2luZCA9PSBJbmxpbmVDYWxsRnJhbWU6OlRhaWxDYWxsICYmIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgY2FsbGVl
LCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGluc2VydENoZWNr
c1dpdGhBY2NvdW50aW5nKSkgewpAQCAtMTkwNSw4ICsxOTAzLDExIEBAIEJ5dGVDb2RlUGFyc2Vy
OjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFu
dChOb2RlKiBjCiAKICAgICBhdXRvIGVuZFNwZWNpYWxDYXNlID0gWyZdICgpIHsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKLSAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsVGFyZ2V0Tm9kZSk7Ci0gICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgIC8vIEJvdW5k
IGZ1bmN0aW9uJ3Mgc2xvdHMgb2YgdGhlbSBhcmUgbm90IGltcG9ydGFudC4gVGhleSBhcmUgZGVh
ZCBhdCBPU1IgZXhpdC4KKyAgICAgICAgaWYgKCFkaWRCb3VuZEZ1bmN0aW9uSW5saW5pbmcpIHsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAg
ICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKTsKKyAgICAgICAgfQogICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAg
ICAgICAgaWYgKGNvbnRpbnVhdGlvbkJsb2NrKSB7CiAgICAgICAgICAgICBtX2N1cnJlbnRJbmRl
eCA9IG9zckV4aXRJbmRleDsKQEAgLTE5MjcsNyArMTkyOCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpD
YWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChO
b2RlKiBjCiAKICAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbGVlLmludHJpbnNpY0Zvcihz
cGVjaWFsaXphdGlvbktpbmQpOwogICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsK
LSAgICAgICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwg
aW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHBy
ZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgeworICAgICAgICBpZiAoaGFu
ZGxlSW50cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBjYWxsZWUsIGludHJpbnNp
YywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5k
ZXgsIGtpbmQsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewogICAg
ICAgICAgICAgZW5kU3BlY2lhbENhc2UoKTsKICAgICAgICAgICAgIHJldHVybiBDYWxsT3B0aW1p
emF0aW9uUmVzdWx0OjpJbmxpbmVkOwogICAgICAgICB9CkBAIC0xOTUzLDcgKzE5NTQsNyBAQCBC
eXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ2FsbFZhcmlhbnQoTm9kZSogYwogICAgICAgICBpZiAobmVlZHNUb0NoZWNrQ2FsbGVlKQog
ICAgICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxlZSwgY2FsbFRhcmdldE5vZGUsIHRo
aXNBcmd1bWVudCk7CiAgICAgfTsKLSAgICBpbmxpbmVDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1
bHQsIGNhbGxlZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBr
aW5kLCBjb250aW51YXRpb25CbG9jaywgaW5zZXJ0Q2hlY2spOworICAgIGlubGluZUNhbGwoY2Fs
bFRhcmdldE5vZGUsIHJlc3VsdCwgY2FsbGVlLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIGtpbmQsIGNhbGxTdGFja09yaWdpbiwgY29udGludWF0aW9uQmxvY2ss
IGluc2VydENoZWNrKTsKICAgICBpbmxpbmluZ0JhbGFuY2UgLT0gbXlJbmxpbmluZ0Nvc3Q7CiAg
ICAgcmV0dXJuIENhbGxPcHRpbWl6YXRpb25SZXN1bHQ6OklubGluZWQ7CiB9CkBAIC0xOTYxLDcg
KzE5NjIsNyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbFZhcmlhbnQoTm9kZSogYwogYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3Vs
dCwKICAgICBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCBmaXJzdEZy
ZWVSZWcsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsCi0gICAgTm9kZVR5
cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCkKKyAgICBOb2RlVHlwZSBjYWxs
T3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBDYWxsU3RhY2tPcmlnaW4gY2FsbFN0YWNr
T3JpZ2luKQogewogICAgIFZFUkJPU0VfTE9HKCJIYW5kbGluZyBpbmxpbmluZyAoVmFyYXJncyku
Li5cblN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKIApAQCAtMjA5MCw3ICsy
MDkxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwKICAgICAvLyB0aG9zZSBhcmd1bWVudHMu
IEV2ZW4gd29yc2UsIGlmIHRoZSBpbnRyaW5zaWMgZGVjaWRlcyB0byBleGl0LCBpdCB3b24ndCBy
ZWFsbHkgaGF2ZSBhbnl3aGVyZSB0bwogICAgIC8vIGV4aXQgdG86IExvYWRWYXJhcmdzIGlzIGVm
ZmVjdGZ1bCBhbmQgaXQncyBwYXJ0IG9mIHRoZSBvcF9jYWxsX3ZhcmFyZ3MsIHNvIHdlIGNhbid0
IGV4aXQgd2l0aG91dAogICAgIC8vIGNhbGxpbmcgTG9hZFZhcmFyZ3MgdHdpY2UuCi0gICAgaW5s
aW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBjYWxsVmFyaWFudCwgcmVnaXN0ZXJPZmZz
ZXQsIG1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kLCBudWxscHRyLCBpbnNlcnRD
aGVja3MpOworICAgIGlubGluZUNhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwgY2FsbFZhcmlh
bnQsIHJlZ2lzdGVyT2Zmc2V0LCBtYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCwg
Y2FsbFN0YWNrT3JpZ2luLCBudWxscHRyLCBpbnNlcnRDaGVja3MpOwogCiAKICAgICBWRVJCT1NF
X0xPRygiU3VjY2Vzc2Z1bCBpbmxpbmluZyAodmFyYXJncywgbW9ub21vcnBoaWMpLlxuU3RhY2s6
ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwpAQCAtMjExMSw3ICsyMTEyLDcgQEAgQnl0
ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKAogICAgIE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29u
c3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLAogICAgIGludCByZWdpc3Rlck9mZnNl
dCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwKICAgICBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsCi0gICAgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIE5vZGVUeXBlIGNh
bGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBO
b2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBDYWxsU3RhY2tPcmln
aW4gY2FsbFN0YWNrT3JpZ2luLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBFQ01BTW9kZSBl
Y21hTW9kZSkKIHsKICAgICBWRVJCT1NFX0xPRygiSGFuZGxpbmcgaW5saW5pbmcuLi5cblN0YWNr
OiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKIApAQCAtMjEzMCw3ICsyMTMxLDcgQEAg
Qnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKAogICAgIGlmICghY2FsbExpbmtTdGF0dXMuY291bGRUYWtlU2xvd1BhdGgo
KSAmJiBjYWxsTGlua1N0YXR1cy5zaXplKCkgPT0gMSkgewogICAgICAgICByZXR1cm4gaGFuZGxl
Q2FsbFZhcmlhbnQoCiAgICAgICAgICAgICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0LCBjYWxsTGlu
a1N0YXR1c1swXSwgcmVnaXN0ZXJPZmZzZXQsIHRoaXNBcmd1bWVudCwKLSAgICAgICAgICAgIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5kZXgsIGtpbmQsIHByZWRpY3Rpb24s
IGlubGluaW5nQmFsYW5jZSwgbnVsbHB0ciwgdHJ1ZSk7CisgICAgICAgICAgICBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgb3NyRXhpdEluZGV4LCBraW5kLCBjYWxsU3RhY2tPcmlnaW4sIHBy
ZWRpY3Rpb24sIGlubGluaW5nQmFsYW5jZSwgbnVsbHB0ciwgdHJ1ZSk7CiAgICAgfQogCiAgICAg
Ly8gV2UgbmVlZCB0byBjcmVhdGUgc29tZSBraW5kIG9mIHN3aXRjaCBvdmVyIGNhbGxlZS4gRm9y
IG5vdyB3ZSBvbmx5IGRvIHRoaXMgaWYgd2UgYmVsaWV2ZSB0aGF0CkBAIC0yMjIwLDcgKzIyMjEs
NyBAQCBCeXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgIAogICAgICAgICBhdXRvIGlubGluaW5nUmVzdWx0
ID0gaGFuZGxlQ2FsbFZhcmlhbnQoCiAgICAgICAgICAgICBteUNhbGxUYXJnZXROb2RlLCByZXN1
bHQsIGNhbGxMaW5rU3RhdHVzW2ldLCByZWdpc3Rlck9mZnNldCwKLSAgICAgICAgICAgIHRoaXNB
cmd1bWVudCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG9zckV4aXRJbmRleCwga2luZCwg
cHJlZGljdGlvbiwKKyAgICAgICAgICAgIHRoaXNBcmd1bWVudCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIG9zckV4aXRJbmRleCwga2luZCwgY2FsbFN0YWNrT3JpZ2luLCBwcmVkaWN0aW9u
LAogICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLCBjb250aW51YXRpb25CbG9jaywgZmFsc2Up
OwogICAgICAgICAKICAgICAgICAgaWYgKGlubGluaW5nUmVzdWx0ID09IENhbGxPcHRpbWl6YXRp
b25SZXN1bHQ6OkRpZE5vdGhpbmcpIHsKQEAgLTIzMjIsNyArMjMyMyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZU1pbk1heChPcGVyYW5kIHJlc3VsdCwgTm9kZVR5cGUgb3AsIGludCBy
ZWdpc3Rlck9mZnNlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1ib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFu
ZCByZXN1bHQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50
IGNhbGxWYXJpYW50LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgs
IElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBj
b25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgVkVSQk9TRV9MT0coIiAg
ICAgICBUaGUgaW50cmluc2ljIGlzICIsIGludHJpbnNpYywgIlxuIik7CiAKQEAgLTM3NTYsNiAr
Mzc1Nyw3NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUq
IGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYwogI2VuZGlmCiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2ljOiB7CisgICAgICAgICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxWYXJpYW50LmZ1bmN0aW9uKCk7CisgICAgICAgICAg
ICBpZiAoIWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNCb3Vu
ZEZ1bmN0aW9uKj4oKm1fdm0sIGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGlmICghYm91bmRGdW5j
dGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGluc2Vy
dENoZWNrcyh0cnVlKTsKKworICAgICAgICAgICAgLy8gTWFrZSBhIGNhbGwuIFdlIGRvbid0IHRy
eSB0byBnZXQgZmFuY3kgd2l0aCB1c2luZyB0aGUgc21hbGxlc3Qgb3BlcmFuZCBudW1iZXIgYmVj
YXVzZQorICAgICAgICAgICAgLy8gdGhlIHN0YWNrIGxheW91dCBwaGFzZSBzaG91bGQgY29tcHJl
c3MgdGhlIHN0YWNrIGFueXdheS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBXZSBk
byBub3Qgb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHN0YWNrIGZvciB0aGlzIGNhbGwuIFdlIG5ld2x5
IGFsbG9jYXRlIHN0YWNrIHNwYWNlIGFuZCBmaWxsIGl0IHdpdGggdmFsdWVzCisgICAgICAgICAg
ICAvLyB0byBrZWVwIE9TUiBleGl0IGNvcnJlY3Qgd2hlbiB3ZSBleGl0IGluIHRoZSBtaWRkbGUg
b2YgdGhpcyBzdGFjayBjb25zdHJ1Y3Rpb24uIFdlIGV4aXQgdG8gdGhlIGNhbGxlciBzaWRlCisg
ICAgICAgICAgICAvLyB3aGVuIHdlIGZhaWxlZCB0byBjb25zdHJ1Y3QgdGhpcyBmcmFtZS4gQW5k
IHRoaXMgaXMgdG90YWxseSBPSyBzaW5jZSB3ZSBhcmUgbm90IGNsb2JiZXJpbmcgdmFsdWVzLgor
CisgICAgICAgICAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5j
dGlvbi0+Ym91bmRBcmdzKCk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUGFyYW1l
dGVycyA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgICAgICAgICAgbnVtYmVyT2ZQ
YXJhbWV0ZXJzKys7IC8vIFRydWUgcmV0dXJuIFBDLgorICAgICAgICAgICAgbnVtYmVyT2ZQYXJh
bWV0ZXJzICs9IGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwOworCisgICAgICAg
ICAgICAvLyBTdGFydCB3aXRoIGEgcmVnaXN0ZXIgb2Zmc2V0IHRoYXQgY29ycmVzcG9uZHMgdG8g
dGhlIGxhc3QgaW4tdXNlIHJlZ2lzdGVyLgorICAgICAgICAgICAgaW50IG5ld1JlZ2lzdGVyT2Zm
c2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSAtIDEpLm9mZnNldCgpOworICAgICAgICAgICAgbmV3
UmVnaXN0ZXJPZmZzZXQgLT0gbnVtYmVyT2ZQYXJhbWV0ZXJzOworICAgICAgICAgICAgbmV3UmVn
aXN0ZXJPZmZzZXQgLT0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CisKKyAgICAg
ICAgICAgIC8vIEdldCB0aGUgYWxpZ25tZW50IHJpZ2h0LgorICAgICAgICAgICAgbmV3UmVnaXN0
ZXJPZmZzZXQgPSAtV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCksIC1uZXdSZWdpc3Rlck9mZnNldCk7CisKKyAgICAgICAgICAgIGVuc3VyZUxvY2Fscyht
X2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKG5ld1JlZ2lzdGVy
T2Zmc2V0KSkudG9Mb2NhbCgpKTsKKworICAgICAgICAgICAgLy8gV2UgZmlyc3QgZW1pdCBhbGwg
YXJndW1lbnRzIGluIHRoZSBncmFwaCAoc2luY2UgaXQgY2FuIGludm9sdmUgbmV3bHkgYWRkZWQg
Y29uc3RhbnRzKSwgYW5kIHRoZW4gd2Ugc2V0IGFsbCBvZiB0aGVtLgorICAgICAgICAgICAgLy8g
T25jZSBvbmUgb2Ygc2V0IGhhcyBhIGNoZWNrLCB0aGUgc3Vic2VxdWVudCBzZXRzJyBjaGVja3Mg
bmVlZCB0byBiZSBob2lzdGVkIHRvby4gSWYgd2UgYXJlIGludGVybGVhdmluZyBqc0NvbnN0YW50
IGFkZGl0aW9uLAorICAgICAgICAgICAgLy8gdGhlc2UgY2hlY2tzIGNhbiBiZSBob2lzdGVkIGFi
b3ZlIHRoYW4gdGhlIGNvbnN0YW50IHdoaWNoIG5lZWRzIHRvIGJlIGNoZWNrZWQuCisgICAgICAg
ICAgICAvLworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGlmIGNoZWNrIGZhaWxlZCBoZXJlLCB3
ZSBleGl0IHRvIGJvdW5kIGZ1bmN0aW9uJ3MgY2FsbGVyLiBTaW5jZSBib3VuZCBmdW5jdGlvbiBk
b2VzIG5vdCBoYXZlIHNpZGUgZWZmZWN0IHVudGlsIHdlIGFjdHVhbGx5CisgICAgICAgICAgICAv
LyBjYWxsIHRoZSB3cmFwcGVkIGZ1bmN0aW9uLCB0aGlzIGlzIE9LLgorICAgICAgICAgICAgVmVj
dG9yPE5vZGUqPiBhcmd1bWVudHM7CisgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGpzQ29u
c3RhbnQoYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCkpKTsKKyAgICAgICAgICAgIGlmIChib3Vu
ZEFyZ3MpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAgICBhcmd1
bWVudHMuYXBwZW5kKGpzQ29uc3RhbnQoYm91bmRBcmdzLT5nZXQoaW5kZXgpKSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IDEp
IHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDE7IGluZGV4IDwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50
cy5hcHBlbmQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhpbmRl
eCwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElz
c3VlIFNldExvY2Fscy4gVGhpcyBoYXMgdHdvIGVmZmVjdHM6CisgICAgICAgICAgICAvLyAxKSBU
aGF0J3MgaG93IGhhbmRsZUNhbGwoKSBzZWVzIHRoZSBhcmd1bWVudHMuCisgICAgICAgICAgICAv
LyAyKSBJZiB3ZSBpbmxpbmUgdGhlbiB0aGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJndW1lbnRzIGFy
ZSBmbHVzaGVkIHNvIHRoYXQgaWYgeW91IHVzZQorICAgICAgICAgICAgLy8gICAgdGhlIGRyZWFk
ZWQgYXJndW1lbnRzIG9iamVjdCBvbiB0aGUgY2FsbCB0YXJnZXQsIHRoZSByaWdodCB0aGluZ3Mg
aGFwcGVuLiBXZWxsLCBzb3J0IG9mIC0KKyAgICAgICAgICAgIC8vICAgIHNpbmNlIHdlIG9ubHkg
cmVhbGx5IGNhcmUgYWJvdXQgJ3RoaXMnIGluIHRoaXMgY2FzZS4gQnV0IHdlJ3JlIG5vdCBnb2lu
ZyB0byB0YWtlIHRoYXQKKyAgICAgICAgICAgIC8vICAgIHNob3J0Y3V0LgorICAgICAgICAgICAg
dW5zaWduZWQgY3VycmVudEFyZ3VtZW50SW5kZXggPSAwOworICAgICAgICAgICAgZm9yIChOb2Rl
KiBhcmd1bWVudCA6IGFyZ3VtZW50cykKKyAgICAgICAgICAgICAgICBzZXQodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGN1cnJlbnRBcmd1bWVudEluZGV4KyssIG5ld1Jl
Z2lzdGVyT2Zmc2V0KSwgYXJndW1lbnQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKworICAgICAgICAg
ICAgLy8gV2UndmUgc2V0IHNvbWUgbG9jYWxzLCBidXQgdGhleSBhcmUgbm90IHVzZXItdmlzaWJs
ZSBzaW5jZSB0aGV5IGFyZSBuZXdseSBhbGxvY2F0ZWQgZm9yIHRoaXMgaW5saW5lZCBjYWxsLiBJ
dCdzIHN0aWxsIE9LIHRvIGV4aXQgZnJvbSBoZXJlLgorICAgICAgICAgICAgLy8gSlNCb3VuZEZ1
bmN0aW9uJ3MgdHJhbXBvbGluZSBkb2VzIG5vdCBoYXZlIHVzZXItdmlzaWJsZSBlZmZlY3QuIFNv
IGV4aXRpbmcgdG8gdGhlIHByZS1ib3VuZCBmdW5jdGlvbiBsb2NhdGlvbiBpcyBPSy4KKyAgICAg
ICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsK
KworICAgICAgICAgICAgaGFuZGxlQ2FsbChyZXN1bHQsIENhbGwsIGtpbmQsIENhbGxTdGFja09y
aWdpbjo6T25seURGRywgb3NyRXhpdEluZGV4LCBqc0NvbnN0YW50KGJvdW5kRnVuY3Rpb24tPnRh
cmdldEZ1bmN0aW9uKCkpLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCBuZXdSZWdpc3Rlck9mZnNl
dCwgQ2FsbExpbmtTdGF0dXMoQ2FsbFZhcmlhbnQoYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rp
b24oKSkpLCBwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGRpZFNldFJlc3VsdCA9IHRydWU7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTQ3MjUsNyArNDc5NywxMSBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAotICAgIE5vZGUqIGdldHRlciA9IGFkZFRvR3JhcGgoR2V0R2V0dGVyLCBsb2Fk
ZWRWYWx1ZSk7CisgICAgTm9kZSogZ2V0dGVyID0gbnVsbHB0cjsKKyAgICBpZiAoSlNWYWx1ZSBn
ZXR0ZXJWYWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRHZXR0ZXIobG9hZGVkVmFsdWUpKQor
ICAgICAgICBnZXR0ZXIgPSB3ZWFrSlNDb25zdGFudChnZXR0ZXJWYWx1ZSk7CisgICAgZWxzZQor
ICAgICAgICBnZXR0ZXIgPSBhZGRUb0dyYXBoKEdldEdldHRlciwgbG9hZGVkVmFsdWUpOwogCiAg
ICAgaWYgKGhhbmRsZUludHJpbnNpY0dldHRlcihkZXN0aW5hdGlvbiwgcHJlZGljdGlvbiwgdmFy
aWFudCwgYmFzZSwKICAgICAgICAgICAgIFsmXSAoKSB7CkBAIC00NzcyLDcgKzQ4NDgsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIGFkZFRvR3JhcGgoRXhpdE9L
KTsKICAgICAKICAgICBoYW5kbGVDYWxsKAotICAgICAgICBkZXN0aW5hdGlvbiwgQ2FsbCwgSW5s
aW5lQ2FsbEZyYW1lOjpHZXR0ZXJDYWxsLCBvc3JFeGl0SW5kZXgsCisgICAgICAgIGRlc3RpbmF0
aW9uLCBDYWxsLCBJbmxpbmVDYWxsRnJhbWU6OkdldHRlckNhbGwsIENhbGxTdGFja09yaWdpbjo6
T25seURGRywgb3NyRXhpdEluZGV4LAogICAgICAgICBnZXR0ZXIsIG51bWJlck9mUGFyYW1ldGVy
cyAtIDEsIHJlZ2lzdGVyT2Zmc2V0LCAqdmFyaWFudC5jYWxsTGlua1N0YXR1cygpLCBwcmVkaWN0
aW9uKTsKIH0KIApAQCAtNTA5MSw3ICs1MTY3LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5SWQoCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIE5vZGUqIHNldHRlciA9IGFkZFRvR3JhcGgoR2V0U2V0dGVyLCBsb2FkZWRWYWx1ZSk7
CisgICAgICAgIE5vZGUqIHNldHRlciA9IG51bGxwdHI7CisgICAgICAgIGlmIChKU1ZhbHVlIHNl
dHRlclZhbHVlID0gbV9ncmFwaC50cnlHZXRDb25zdGFudFNldHRlcihsb2FkZWRWYWx1ZSkpCisg
ICAgICAgICAgICBzZXR0ZXIgPSB3ZWFrSlNDb25zdGFudChzZXR0ZXJWYWx1ZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNldHRlciA9IGFkZFRvR3JhcGgoR2V0U2V0dGVyLCBsb2FkZWRW
YWx1ZSk7CiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIGEgY2FsbC4gV2UgZG9uJ3QgdHJ5IHRv
IGdldCBmYW5jeSB3aXRoIHVzaW5nIHRoZSBzbWFsbGVzdCBvcGVyYW5kIG51bWJlciBiZWNhdXNl
CiAgICAgICAgIC8vIHRoZSBzdGFjayBsYXlvdXQgcGhhc2Ugc2hvdWxkIGNvbXByZXNzIHRoZSBz
dGFjayBhbnl3YXkuCkBAIC01MTI0LDcgKzUyMDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeUlkKAogICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CiAgICAgCiAgICAgICAg
IGhhbmRsZUNhbGwoCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoKSwgQ2FsbCwgSW5saW5l
Q2FsbEZyYW1lOjpTZXR0ZXJDYWxsLAorICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKCksIENh
bGwsIElubGluZUNhbGxGcmFtZTo6U2V0dGVyQ2FsbCwgQ2FsbFN0YWNrT3JpZ2luOjpPbmx5REZH
LAogICAgICAgICAgICAgb3NyRXhpdEluZGV4LCBzZXR0ZXIsIG51bWJlck9mUGFyYW1ldGVycyAt
IDEsIHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICAgICAgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMo
KSwgU3BlY090aGVyLCBlY21hTW9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTgxMTIsMTEgKzgx
OTIsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6IHsK
LSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVu
dHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1
ZGluZ1RoaXM+KCk7CiAgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKLSAgICAgICAg
ICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHkpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVy
Zmx5KTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBFZGdlKGdldChieXRlY29kZS5tX3Rhcmdl
dCksIENlbGxVc2UpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJndW1l
bnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY1ZTIyYTEwYTRkMTI2NWRiNWNk
YzcxYjIzMWQwNmQ1MTYxN2VkNmMuLmJmNGY3OTczZTkzNDE2ZGU4NjZmYWM3MTM3NzA3YTg2YjE3
ZTMzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9w
Y29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ug
b3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2Fy
Z3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNhc2Ug
b3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6CisgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1l
bnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpczoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3Vt
ZW50czoKICAgICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfYXJn
dW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGNm
MDFiY2UwNTNhM2U1NzdkZTk5N2IwMzMzOWI3YjE0YzY2ODg5MjEuLmMyNDBhYTI2MTNmMGQxMjAx
ZWY0OGQ4YTJkMjJkOTExNTU5MjNhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFy
Z3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4
Y2x1ZGluZ1RoaXM6CiAgICAgICAgIHJlYWQoU3RhY2spOwogICAgICAgICByZWFkKEhlYXBPYmpl
Y3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggY2ZjMjIzMDAwYTUzMmIxYzNiMzk4MGU1NGE1
MDFhM2QzZGZhYWIwOS4uZGQ1MWZhMzhjODgxMTBkOTFiOGZlNTU4ZmZlMGQ1NjdiZjYxNmE2OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjY4LDcgKzI2OCw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0
ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBj
YXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRl
cmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CiAg
ICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ2FsbEV2YWw6CiAgICAgY2FzZSBDYWxsRm9yd2FyZFZh
cmFyZ3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRl
eCAzNzRkNTUzMDVkZjhkODc1MDMyZTA0Nzc3YmMzMjIxOWE1NTE1ODBhLi5kMDZkODY0MmY3N2Vm
M2FjNGY3NzUxODUwMTk5MGE1MDNkNzI4MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI4ODAsNyArMjg4MCw3IEBAIGNsYXNzIEZpeHVwUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAg
ICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHk6CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5n
VGhpczoKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UgLy8gbm90IEFTU0VSVF9FTkFCTEVECiAg
ICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4
IDI1YWI5YzMzOTUxZjhlYjk5YjUwZDFjN2UwYTE0NGM4NzgyZDZmZTkuLjcxZjQ1NWI3NDc2M2Q4
OTg3ZTI2ODMxYTVjZDExNjZmOWU1NDVmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCkBAIC0xNDIwLDYgKzE0MjAsMjIgQEAgSlNBcnJheUJ1ZmZlclZpZXcqIEdyYXBo
Ojp0cnlHZXRGb2xkYWJsZVZpZXcoSlNWYWx1ZSB2YWx1ZSwgQXJyYXlNb2RlIGFycmF5TW9kZSkK
ICAgICByZXR1cm4gdHJ5R2V0Rm9sZGFibGVWaWV3KHZhbHVlKTsKIH0KIAorSlNWYWx1ZSBHcmFw
aDo6dHJ5R2V0Q29uc3RhbnRHZXR0ZXIoTm9kZSogZ2V0dGVyU2V0dGVyKQoreworICAgIGF1dG8q
IGNlbGwgPSBnZXR0ZXJTZXR0ZXItPmR5bmFtaWNDYXN0Q29uc3RhbnQ8R2V0dGVyU2V0dGVyKj4o
bV92bSk7CisgICAgaWYgKCFjZWxsKQorICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIHJl
dHVybiBjZWxsLT5nZXR0ZXJDb25jdXJyZW50bHkoKTsKK30KKworSlNWYWx1ZSBHcmFwaDo6dHJ5
R2V0Q29uc3RhbnRTZXR0ZXIoTm9kZSogZ2V0dGVyU2V0dGVyKQoreworICAgIGF1dG8qIGNlbGwg
PSBnZXR0ZXJTZXR0ZXItPmR5bmFtaWNDYXN0Q29uc3RhbnQ8R2V0dGVyU2V0dGVyKj4obV92bSk7
CisgICAgaWYgKCFjZWxsKQorICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIHJldHVybiBj
ZWxsLT5zZXR0ZXJDb25jdXJyZW50bHkoKTsKK30KKwogdm9pZCBHcmFwaDo6cmVnaXN0ZXJGcm96
ZW5WYWx1ZXMoKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2st
Pm1fbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggZDJiZDg5N2Q0
Zjg0NWM2ODY4NTg2ZGFmMmJiYzc0OTFhMzhhMThkOS4uMDY1ZDQ3NmU4YWU0YzI2ZGNiZmI2MzFm
MTczNjU3NWNmOTU4NGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAt
OTk2LDYgKzk5Niw5IEBAIGNsYXNzIEdyYXBoIGZpbmFsIDogcHVibGljIHZpcnR1YWwgU2Nhbm5h
YmxlIHsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdHJ5R2V0Rm9sZGFibGVWaWV3KEpTVmFsdWUp
OwogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0cnlHZXRGb2xkYWJsZVZpZXcoSlNWYWx1ZSwgQXJy
YXlNb2RlIGFycmF5TW9kZSk7CiAKKyAgICBKU1ZhbHVlIHRyeUdldENvbnN0YW50R2V0dGVyKE5v
ZGUqIGdldHRlclNldHRlcik7CisgICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFNldHRlcihOb2Rl
KiBnZXR0ZXJTZXR0ZXIpOworCiAgICAgYm9vbCBjYW5Eb0Zhc3RTcHJlYWQoTm9kZSosIGNvbnN0
IEFic3RyYWN0VmFsdWUmKTsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyRnJvemVuVmFsdWVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggYWYyNjgyODZjODEw
MDlkMTgyNmNiMTBiY2Y1N2I1MTEwYTRhNzMzOS4uN2M0OWRhYTkzMjQ0NjQ3NDdlMDRjNmJmNmY5
YzcxMzk5MTcyNjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApA
QCAtNDUxLDcgKzQ1MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhDcmVhdGVTY29wZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENy
ZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUGhhbnRvbUNs
b25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1h
Y3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8o
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oR2V0RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0
VG9Bcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRBcmd1bWVudCwg
Tm9kZVJlc3VsdEpTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAppbmRleCBlY2M4ZGM4NTA1MTA5Y2IzNTU0OTBjOTFmYTY5NmQ2YWRhNzViMjc5Li45ZDE5
ZTM1MmY4YmFkMjg0ODdiNjZjY2E5YWRjY2RiNzQ1YjAzYzViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl
ICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxl
QnV0dGVyZmx5LmgiCkBAIC0yMDU5LDIwICsyMDYwLDQyIEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMsIEpTQ2VsbCosIChKU0dsb2JhbE9i
amVjCiAgICAgICAgIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhcmd1bWVudFN0YXJ0LCBsZW5n
dGgsIGNhbGxlZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHksIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCkpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
RXhjbHVkaW5nVGhpcywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
Z2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBKU0NlbGwqIHRh
cmdldCkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEFTU0VSVChhcmd1bWVudENvdW50
ID4gMSk7CisKKyAgICBDaGVja2VkSW50MzIgdG90YWxDb3VudCA9IGFyZ3VtZW50Q291bnQgLSAx
OworICAgIGludDMyX3QgYWRkaXRpb25hbENvdW50ID0gMDsKKyAgICBKU0ltbXV0YWJsZUJ1dHRl
cmZseSogYm91bmRBcmdzID0gbnVsbHB0cjsKKyAgICBpZiAodGFyZ2V0LT5pbmhlcml0czxKU0Jv
dW5kRnVuY3Rpb24+KHZtKSkgeworICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rp
b24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGFyZ2V0KTsKKyAgICAgICAgaWYgKGJvdW5k
RnVuY3Rpb24tPmNhbkNsb25lQm91bmRBcmdzKCkpIHsKKyAgICAgICAgICAgIGJvdW5kQXJncyA9
IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAgICAgICAgYWRkaXRpb25hbENvdW50
ID0gYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDA7CisgICAgICAgICAgICB0b3Rh
bENvdW50ICs9IGFkZGl0aW9uYWxDb3VudDsKKyAgICAgICAgICAgIGlmICh0b3RhbENvdW50Lmhh
c092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11
dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlP
bldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQo
KSwgYXJndW1lbnRDb3VudCk7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9
IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVhdGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZs
eVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdp
dGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpLCB0b3RhbENvdW50
LnVuc2FmZUdldCgpKTsKICAgICBpZiAoIWJ1dHRlcmZseSkgewogICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENv
dW50OyArK2luZGV4KQotICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgYXJn
dW1lbnRTdGFydFtpbmRleF0uanNWYWx1ZSgpKTsKKyAgICBpZiAoYWRkaXRpb25hbENvdW50KSB7
CisgICAgICAgIEFTU0VSVChib3VuZEFyZ3MpOworICAgICAgICBmb3IgKGludDMyX3QgaW5kZXgg
PSAwOyBpbmRleCA8IGFkZGl0aW9uYWxDb3VudDsgKytpbmRleCkKKyAgICAgICAgICAgIGJ1dHRl
cmZseS0+c2V0SW5kZXgodm0sIGluZGV4LCBib3VuZEFyZ3MtPmdldChpbmRleCkpOworICAgIH0K
KyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCAoYXJndW1lbnRDb3VudCAtIDEp
OyArK2luZGV4KQorICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCArIGFkZGl0
aW9uYWxDb3VudCwgYXJndW1lbnRTdGFydFtpbmRleCArIDFdLmpzVmFsdWUoKSk7CiAgICAgcmV0
dXJuIGJ1dHRlcmZseTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAppbmRleCA1MmNkYmU4MjY2MTZlYmM0YTkyZDA1OGIwMDFlYzM4ZWZjMmEzZDQ4Li43OWU3
NzZmYjQzZTY1NTI3YTE0MmUyM2RjNzM2Y2MwMjA3MDRhYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjExLDcgKzIxMSw3IEBAIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCwg
SlNDZWxsKiwgKFZNCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZVNj
b3BlZEFyZ3VtZW50cywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVn
aXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVl
LCBKU0xleGljYWxFbnZpcm9ubWVudCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCwgSlNDZWxsKiwgKFZNKiwgSW5s
aW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIHVpbnQzMl90IGFyZ3VtZW50Q291bnQpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzLCBK
U0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRT
dGFydCwgdWludDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxsZWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCBKU0NlbGwq
LCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJn
dW1lbnRDb3VudCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3Qq
LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCwgSlNDZWxs
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVSZXN0LCBKU0Nl
bGwqLCAoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdW5zaWduZWQg
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5U2l6ZSkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgSlNDZWxsKiwgKFZNKiwg
U3RydWN0dXJlKiwgSlNDZWxsKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25TZXRBZGQsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlLCBpbnQzMl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCmluZGV4IDk4MDU5OWIyZTU0YWY3ZDBjYTg3YTk5YzE2
OTYwNjQ5NzBhMDFlODQuLjcwNGViZTcxMTViOGM3ZDMxN2EwMjE5MWMzOTFmOTQ3YzgxMjJhMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2Fs
Q2xvYmJlcml6ZS5oCkBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJl
cml6ZUFkYXB0b3IgewogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAg
ICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVk
QXJndW1lbnRzOgotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAgICAg
ICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgICAgICBj
YXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFy
Z3VtZW50czoKICAgICAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAppbmRleCBmZTc2ZDJiNmUwZjk2ZjNlMjhmYzNkOTgzZmIzM2FjMjMxNjg2YjMxLi43MGU0YTBj
MTZmMjgxNWYxNGY3NzBmYTYyZDkwNGEzMTBiYzBlZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAg
ICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTogeworICAgICAgICBjYXNlIENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rp
b24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAwN2E4NWRiM2Q2
MGM2MDgwYTgzZTZkYTQxODY4YmJmNGI3Y2VmNmM3Li42OWIzYmMyYTdiNTg1NmQ4OTk0MDI5NzI4
NmI1Zjc3YWIwZDU4YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaApAQCAtNTk3LDcgKzU5Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1
bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBlOWNkNDM5MGU0NjFiYjNlNDI1
MDUzMjkxNWE1M2FhZDQ2ODNlODdlLi5lNTJjYWQ2ZWU3YjQ0ZDRjYWRjMGJjMjQ0YTQzMjE2MTcy
NmY5NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcApAQCAtODQ3NSw4ICs4NDc1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHkoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKE5vZGUqIG5vZGUpCiB7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGFyZ2V0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBH
UFJSZWcgdGFyZ2V0R1BSID0gdGFyZ2V0LmdwcigpOworCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTg0ODYsMTIgKzg0ODksMTYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShOb2RlKiBub2RlKQogICAg
IC8vIFdlIHNldCB1cCB0aGUgYXJndW1lbnRzIG91cnNlbHZlcywgYmVjYXVzZSB3ZSBoYXZlIHRo
ZSB3aG9sZSByZWdpc3RlciBmaWxlIGFuZCB3ZSBjYW4KICAgICAvLyBzZXQgdGhlbSB1cCBkaXJl
Y3RseSBpbnRvIHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCiAKLSAgICAvLyBBcmd1bWVudHM6IDA6
SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0LCAzOmxlbmd0aAorICAgIC8vIEFyZ3VtZW50czogMDpK
U0dsb2JhbE9iamVjdCosIDE6c3RhcnQsIDI6bGVuZ3RoLCAzOnRhcmdldAorCisgICAgLy8gRG8g
dGhlIHRhcmdldEdQUiBmaXJzdCwgc2luY2UgaXQgbWlnaHQgYWxpYXMgYW4gYXJndW1lbnQgcmVn
aXN0ZXIuCisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgzLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7
IG1faml0Lm1vdmUodGFyZ2V0R1BSLCBkZXN0R1BSKTsgfSk7CisKICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50KDIsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdldExlbmd0aChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDEsIFsm
XSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdldEFyZ3VtZW50U3RhcnQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQ
UlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgZ2xvYmFsT2JqZWN0KSwgZGVzdEdQUik7IH0pOwogCi0gICAgYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIHJlc3VsdEdQUik7CisgICAg
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNs
dWRpbmdUaGlzLCByZXN1bHRHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggOTcxNzUyMjhmNjJkYTczNTAwMjEwZWZkMmNl
Y2NhOTU4MmI2ODAyZC4uNjZhNDE5MDljYzYwNjlkYjQ1MTc3N2IyOWIxNzk3NDc1MDBiOGQ0YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAt
MTQxMSw3ICsxNDExLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGls
ZUdldEFyZ3VtZW50KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVTY29wZWRBcmd1bWVu
dHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyhOb2RlKik7
Ci0gICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KE5vZGUqKTsKKyAgICB2
b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVSZXN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTcHJl
YWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5KE5vZGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IDM0MjQwZTU0ZTg1N2Y1OGFkNDc2YTZhZjNiZWEzMmNkN2MyMTZkNjguLjYyZDBmNzU0YzAwZWEx
ODUwYzIyNzEyNmU4ZTEwNTdkNjA1NWQ5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzk1MCw4ICszOTUwLDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTogewotICAgICAg
ICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KG5vZGUpOworICAgIGNhc2UgQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczogeworICAgICAgICBjb21waWxlQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAppbmRleCAzOGVlNmI0YTZlZjkwOTc0MzVhYjhlMDk1MjkxZDBiNmU3NzQxMzA1Li45
NWU3ZjVlNzM4MzUxNzYxZWQ2MjUyZjc5M2IzZDkwNjlmNTcxZmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ5MzEsOCAr
NDkzMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6IHsK
LSAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShub2RlKTsKKyAgICBjYXNl
IENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6IHsKKyAgICAgICAgY29tcGls
ZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCBiOTA2NjVlY2NlNTJjNTdm
NDRiNzBkNDY3YzRhNGU1YTVmMzcwMmUwLi5hZWY4YTlhODk2MDA3Zjg3ODEyMzQ3MjYxMGJjMGI3
ODZhNGJmNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMzU3LDcgKzM1Nyw3IEBAIGNs
YXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAgICAgICAgY2FzZSBDcmVhdGVT
Y29wZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoK
LSAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgorICAgICAgICAgICAg
Y2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgICAgICAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246
CiAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNw
cAppbmRleCA0MGYxMTE5MjczYmRiZTFhNWI5NTIxNTg4NWY5Mjc0NDBmYzkxMTA3Li5iNDljNzI0
MDk1Yjc0MWNhMmMyYzhhOWIwMDU4NmMzYTg2MzEwOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0luc2VydGlv
blNldC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgog
I2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgpAQCAtOTI3LDcgKzkyOCw4IEBAIGNsYXNzIFN0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgRXhlY3V0
YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAgICAgICAgRWRnZSBjYWxsZWUg
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CiAgICAgICAgICAgICBDYWxsVmFyaWFu
dCBjYWxsVmFyaWFudDsKLSAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNh
bGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4odm0oKSkpIHsKKyAgICAgICAg
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpT
RnVuY3Rpb24qPih2bSgpKTsKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbikgewogICAgICAgICAg
ICAgICAgIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOwogICAgICAgICAgICAg
ICAgIGNhbGxWYXJpYW50ID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOwogICAgICAgICAgICAgfSBl
bHNlIGlmIChjYWxsZWUtPmlzRnVuY3Rpb25BbGxvY2F0aW9uKCkpIHsKQEAgLTk0Myw3ICs5NDUs
NDggQEAgY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzM5
CiAgICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aW50cmluc2ljKCkgPT0gV2FzbUZ1bmN0aW9u
SW50cmluc2ljKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisKKyAgICAg
ICAgICAgIC8vIFdlIGdhdmUgdXAgaW5saW5pbmcgYSB3cmFwcGVkIGZ1bmN0aW9uLCBidXQgc3Rp
bGwsIHdlIGNhbiBpbmxpbmUgYm91bmQgZnVuY3Rpb24ncyB3cmFwcGVyIGJ5IGV4dHJhY3Rpbmcg
aXQuCisgICAgICAgICAgICAvLyBUaGlzIGFsc28gd2lwZXMgYm91bmQtZnVuY3Rpb24gdGh1bmsg
Y2FsbCB3aGljaCBpcyBzdWJvcHRpbWFsIGNvbXBhcmVkIHRvIGRpcmVjdGx5IGNhbGxpbmcgYSB3
cmFwcGVkIGZ1bmN0aW9uIGhlcmUuCisgICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aW50cmlu
c2ljKCkgPT0gQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMgJiYgZnVuY3Rpb24gJiYgKG1fbm9k
ZS0+b3AoKSA9PSBDYWxsIHx8IG1fbm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCB8fCBtX25vZGUtPm9w
KCkgPT0gVGFpbENhbGxJbmxpbmVkQ2FsbGVyKSkgeworICAgICAgICAgICAgICAgIEpTQm91bmRG
dW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihmdW5jdGlv
bik7CisgICAgICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIHRhcmdldEZ1bmN0aW9uID0ganNE
eW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0oKSwgYm91bmRGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rp
b24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogdGFyZ2V0RXhlY3V0YWJsZSA9IHRh
cmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgICAgICAgICAgICAgIEpTSW1tdXRh
YmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCgoYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6
IDApICsgbV9ub2RlLT5udW1DaGlsZHJlbigpKSA8PSBPcHRpb25zOjptYXhpbXVtRGlyZWN0Q2Fs
bFN0YWNrU2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KHZtKCksIHRhcmdldEV4ZWN1dGFibGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgbV9wYXJhbWV0ZXJTbG90cyBiZWZvcmUgd2UgZ2V0
IHRvIHRoZSBiYWNrZW5kLCBidXQgd2UgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB3YW50IHRvIGRvIHRvbyBtdWNoIG9mIHRoaXMuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbnVtQWxsb2NhdGVkQXJncyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihm
dW5jdGlvbkV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpICsgMTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobnVtQWxsb2NhdGVkQXJncyA8PSBPcHRpb25zOjptYXhpbXVtRGly
ZWN0Q2FsbFN0YWNrU2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBzdGQ6Om1heChtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMs
IEdyYXBoOjpwYXJhbWV0ZXJTbG90c0ZvckFyZ0NvdW50KG51bUFsbG9jYXRlZEFyZ3MpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKG1faW5zZXJ0
aW9uU2V0Lmluc2VydENvbnN0YW50KG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwgdGFyZ2V0
RnVuY3Rpb24pKTsgLy8gQ2FsbGVlLgorICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudChtX25v
ZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpKSk7IC8v
IHx0aGlzfAorCisgICAgICAgICAgICAgICAgICAgICAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSog
Ym91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpbmRl
eCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZChtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudChtX25vZGVJbmRleCwgbV9u
b2RlLT5vcmlnaW4sIGJvdW5kQXJncy0+Z2V0KGluZGV4KSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXJzdCBvbmUgaXMgfGNhbGxl
ZXwsIHNlY29uZCBvbmUgaXMgfHRoaXN8LgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDI7IGluZGV4IDwgbV9ub2RlLT5udW1DaGlsZHJlbigpOyArK2luZGV4
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5h
cHBlbmQobV9ncmFwaC5jaGlsZChtX25vZGUsIGluZGV4KSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZS0+Y2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OlZh
cmlhYmxlLCBmaXJzdENoaWxkLCBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gZmly
c3RDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xv
dHMgPSBzdGQ6Om1heChtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMsIEdyYXBoOjpwYXJhbWV0ZXJT
bG90c0ZvckFyZ0NvdW50KG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSAtIDEpKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZENhbGxM
aW5rU3RhdHVzKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBDYWxsTGlua1N0YXR1cyhDYWxsVmFy
aWFudCh0YXJnZXRFeGVjdXRhYmxlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2Rl
LT5jb252ZXJ0VG9EaXJlY3RDYWxsKG1fZ3JhcGguZnJlZXplKHRhcmdldEV4ZWN1dGFibGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih2
bSgpLCBleGVjdXRhYmxlKSkgewogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0g
Q29uc3RydWN0ICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENv
bnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5k
ZXggM2RmMDQ0YThmZjFiNTg1MmI1ZWFmM2MwNGZhOTYwOGRjZmUwOTgyZi4uNDM5YzBkODY3MjA3
ZWZkM2Q3MTQ1ZmJhZDE2YjYxMjVhNDdkMDQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlRGlyZWN0
QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3Jl
YXRlQ2xvbmVkQXJndW1lbnRzOgotICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5Ogor
ICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICBjYXNl
IEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIEdl
dEFyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCmluZGV4IDIwNzg2OTFiMTA0YWZmNjIwNDFiMTMzNjVmODFkOGEzZDFiZDFlNzEuLmVlNTUw
MTNhM2Y4NzllMDM4ZGFhM2E4OTEyODg0Zjk3MGUyNjRjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTExMDMsOCArMTEwMyw4IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgog
ICAgICAgICAgICAgY29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cygpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgotICAgICAgICAg
ICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOworICAgICAgICBjYXNlIENyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6CisgICAgICAgICAgICBjb21waWxlQ3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgICAgICAgICAgY29tcGlsZU9iamVjdENy
ZWF0ZSgpOwpAQCAtNjg0OCwxMCArNjg0OCwxMCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5KCkKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHlFeGNsdWRpbmdUaGlzKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkNyZWF0ZUFyZ3Vt
ZW50c0J1dHRlcmZseSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgZ2V0QXJndW1lbnRzU3Rh
cnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUpOworICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBnZXRBcmd1bWVudHNTdGFydCgpLCBn
ZXRBcmd1bWVudHNMZW5ndGgoKS52YWx1ZSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSk7CiAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGFlZTM3NDRiNTJlNWU0
NTI2MWUyMmZhYzY5MGRiZTA0YWUyYzU0MjYuLmZkMTcwZWNhNzg4ZDg0YmIxMDhiOGE4ZWUxOTc5
NDE4MGEwYzkwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVy
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVENvZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJK
U0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMzk0LDYgKzM5NSw4IEBAIGNsYXNzIEdldFN0YWNr
VHJhY2VGdW5jdG9yIHsKICAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKAogICAgICAg
ICAgICAgICAgICAgICBTdGFja0ZyYW1lKG1fdm0sIG1fb3duZXIsIHZpc2l0b3ItPmNhbGxlZSgp
LmFzQ2VsbCgpLCB2aXNpdG9yLT5jb2RlQmxvY2soKSwgdmlzaXRvci0+Ynl0ZWNvZGVJbmRleCgp
KSk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh2aXNpdG9yLT5j
YWxsZWUoKS5hc0NlbGwoKS0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPihtX3ZtKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAgICAgICAgICAg
ICAgICAgbV9yZXN1bHRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgU3RhY2tGcmFtZSht
X3ZtLCBtX293bmVyLCB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKSkpOwogICAgICAgICAgICAg
fQpAQCAtNDIyLDcgKzQyNSwxMiBAQCB2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpT
Q2VsbCogb3duZXIsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZQogCiAgICAgc2l6
ZV90IGZyYW1lc0NvdW50ID0gMDsKICAgICBzaXplX3QgbWF4RnJhbWVzQ291bnROZWVkZWQgPSBt
YXhTdGFja1NpemUgKyBmcmFtZXNUb1NraXA7Ci0gICAgU3RhY2tWaXNpdG9yOjp2aXNpdChjYWxs
RnJhbWUsIHZtLCBbJl0gKFN0YWNrVmlzaXRvciYpIC0+IFN0YWNrVmlzaXRvcjo6U3RhdHVzIHsK
KyAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0sIFsmXSAoU3RhY2tWaXNpdG9y
JiB2aXNpdG9yKSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7CisgICAgICAgIGlmICh2aXNpdG9y
LT5jYWxsZWUoKS5pc0NlbGwoKSkgeworICAgICAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxlZSgp
LmFzQ2VsbCgpLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KG1fdm0pKQorICAgICAgICAgICAg
ICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAg
aWYgKCsrZnJhbWVzQ291bnQgPCBtYXhGcmFtZXNDb3VudE5lZWRlZCkKICAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpEb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDc2ZDFhNTE3ZDljODhkMjA5
NzAyNWY4NDQ1ZjY5YzllZDYzY2ZkM2YuLmNjNmRlNGZjZWM1ZTkzZjk5Mzc5MWZiZDZjYWY3Nzli
ZGVhOTFiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMxNiw3ICszMTYsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9X
X09QKGNyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVh
dGVfc2NvcGVkX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2Nsb25l
ZF9hcmd1bWVudHMpCi0gICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9hcmd1bWVudHNfYnV0
dGVyZmx5KQorICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZs
eV9leGNsdWRpbmdfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX3Jlc3QpCiAg
ICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9wcm9taXNlKQogICAgICAgICBERUZJTkVfU0xP
V19PUChuZXdfcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCmluZGV4IGZjMzk5MTRhMWQ1NDI0NTYyZTc5MTlmNTFlY2RiMTUzMzg2MmYwNDUuLjI1
NWI2NDc4Y2YwMDNhOTA2NTc2ZTQ5MWI4OTEzN2YzMjEwZDJlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1
ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgi
CiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMTQ1MSw2ICsxNDUyLDggQEAg
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBB
U1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kID0gY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCkBAIC0xNDY0LDI5ICsxNDY3
LDQwIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgICAgIH0KICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGhhbmRsZUhvc3RDYWxsKGdsb2JhbE9iamVjdCwgY2Fs
bGVlRnJhbWUsIGNhbGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5mbykpOwogICAgIH0KLSAgICAKLSAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOwotICAgIEpTU2NvcGUqIHNjb3BlID0gZnVuY3Rpb24tPnNjb3BlVW5jaGVja2Vk
KCk7Ci0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0YWJs
ZSgpOwotICAgIGlmIChVTkxJS0VMWSghZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvcihraW5kKSkp
IHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAotICAgICAgICBpZiAo
IWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9
PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9y
RXJyb3IoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbikpOwotICAgICAgICAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdCgKLSAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQq
PihLZWVwVGhlRnJhbWUpKTsKLSAgICAgICAgfQorICAgIGF1dG8gbWF0ZXJpYWxpemVDb2RlQmxv
Y2tJZk5lY2Vzc2FyeSA9IFsmXShKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgRXhlY3V0YWJsZUJhc2Uq
IGV4ZWN1dGFibGUpIC0+IHZvaWQqIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFleGVjdXRhYmxl
LT5oYXNKSVRDb2RlRm9yKGtpbmQpKSkgeworICAgICAgICAgICAgSlNTY29wZSogc2NvcGUgPSBm
dW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKKyAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
ZXhlY3V0YWJsZSk7CiAKLSAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGNhbGxl
ZUZyYW1lLT5hZGRyZXNzT2ZDb2RlQmxvY2soKTsKLSAgICAgICAgRXhjZXB0aW9uKiBlcnJvciA9
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFi
bGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKLSAgICAgICAg
RVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yKTsKLSAgICAg
ICAgaWYgKFVOTElLRUxZKGVycm9yKSkgewotICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3Vs
dCgKLSAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxT
bG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVw
VGhlRnJhbWUpKTsKKyAgICAgICAgICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdCkgeworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvbikpOworICAgICAgICAgICAgICAgIHJldHVybiB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0
aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29k
ZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGNhbGxlZUZyYW1lLT5hZGRyZXNzT2ZDb2RlQmxvY2so
KTsKKyAgICAgICAgICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3Bl
LCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CisgICAgICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KGVycm9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2Vw
dGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFn
PigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlID0gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICBhdXRvIGZhaWx1cmUgPSBtYXRl
cmlhbGl6ZUNvZGVCbG9ja0lmTmVjZXNzYXJ5KGZ1bmN0aW9uLCBleGVjdXRhYmxlKTsKKyAgICBp
ZiAoVU5MSUtFTFkoZmFpbHVyZSkpCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZmFpbHVy
ZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisKKyAgICAvLyBDYWxs
IElDIGxpbmtzIHRoaXMgY2FsbHNpdGUgdG8gd3JhcHBlZCBmdW5jdGlvbiBkaXJlY3RseS4gV2Ug
bmVlZCB0byBlbnN1cmUgdGhhdCBkaXJlY3RseSBsaW5rZWQgZnVuY3Rpb24gaXMgbWF0ZXJpYWxp
emVkIGhlcmUuCisgICAgaWYgKGZ1bmN0aW9uLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZt
KSAmJiBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZnVuY3Rpb24pLT50YXJnZXRGdW5jdGlvbigp
LT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgYXV0byogdGFyZ2V0RnVuY3Rp
b24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihmdW5jdGlv
biktPnRhcmdldEZ1bmN0aW9uKCkpOworICAgICAgICBhdXRvIGZhaWx1cmUgPSBtYXRlcmlhbGl6
ZUNvZGVCbG9ja0lmTmVjZXNzYXJ5KHRhcmdldEZ1bmN0aW9uLCB0YXJnZXRGdW5jdGlvbi0+ZXhl
Y3V0YWJsZSgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGZhaWx1cmUpKQorICAgICAgICAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdChmYWlsdXJlLCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVw
VGhlRnJhbWUpKTsKICAgICB9CisKICAgICAvLyBGSVhNRTogU3VwcG9ydCB3YXNtIElDLgogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzMzkKICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoCkBAIC0xNDk2LDYg
KzE1MTAsMTAgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIAogSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwg
KENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9m
IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24vbGlua1BvbHltb3JwaGljQ2FsbCwgd2Ugc3Ryb25nbHkg
YXNzdW1lIHRoYXQgd2UgbmV2ZXIgZG8gR0MuCisgICAgLy8gR0MgamV0dGlzb25zIENvZGVCbG9j
a3MsIGNoYW5nZXMgQ2FsbExpbmtJbmZvIGV0Yy4gYW5kIGJyZWFrcyBhc3N1bXB0aW9uIGRvbmUg
YmVmb3JlIGFuZCBhZnRlciB0aGlzIGNhbGwuCisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdD
Rm9yQVdoaWxlKGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKwogICAgIEFTU0VSVChjYWxsTGlu
a0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsKICAgICBKU0NlbGwq
IGNhbGxlZUFzRnVuY3Rpb25DZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSB2
aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5r
SW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwpAQCAtMTUwNyw2ICsxNTI1LDEwIEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsLCBTbG93UGF0
aFJldHVyblR5cGUsIChDYWxsCiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25W
aXJ0dWFsQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8p
KQogeworICAgIC8vIER1cmluZyBleGVjdXRpb24gb2YgdmlydHVhbEZvcldpdGhGdW5jdGlvbi9s
aW5rUG9seW1vcnBoaWNDYWxsLCB3ZSBzdHJvbmdseSBhc3N1bWUgdGhhdCB3ZSBuZXZlciBkbyBH
Qy4KKyAgICAvLyBHQyBqZXR0aXNvbnMgQ29kZUJsb2NrcywgY2hhbmdlcyBDYWxsTGlua0luZm8g
ZXRjLiBhbmQgYnJlYWtzIGFzc3VtcHRpb24gZG9uZSBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY2Fs
bC4KKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0NGb3JBV2hpbGUoZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApOworCiAgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbElnbm9yZWQ7CiAg
ICAgcmV0dXJuIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFt
ZSwgY2FsbExpbmtJbmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbElnbm9yZWQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOGE5NmFiZTg1ZWRlZmJhMTU1MTA5Mjc0
NjdkNmEzOTk5ZTEzNTRiZS4uMDNlMmFmYWQ3Zjg3MmMyN2UxZGY0YWI4YjE3ZDliODZmOTMwMTEw
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC00OSw2ICs0OSw3IEBA
CiAjaW5jbHVkZSAiSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5LmgiCkBAIC0xMjIzLDYgKzEyMjQsMTEgQEAg
dm9pZCBsaW5rRm9yKAogewogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLnN0dWIoKSk7CiAKKyAg
ICBpZiAoY2FsbGVlLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBjYWxsTGlua0lu
Zm8uc3BlY2lhbGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwgJiYgY2FsbExpbmtJbmZvLmFs
bG93U3R1YnMoKSkgeworICAgICAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZvLCBsaW5r
UG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsK
ICAgICAvLyBPdXIgY2FsbGVyIG11c3QgaGF2ZSBhIGNlbGwgZm9yIGEgY2FsbGVlLiBXaGVuIGNh
bGxpbmcKICAgICAvLyB0aGlzIGZyb20gV2FzbSwgd2UgZW5zdXJlIHRoZSBjYWxsZWUgaXMgYSBj
ZWxsLgpAQCAtMTM0MCwxNiArMTM0NiwxMDEgQEAgc3RydWN0IENhbGxUb0NvZGVQdHIgewogfTsK
IH0gLy8gYW5ub255bW91cyBuYW1lc3BhY2UKIAorc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmxpbmVk
Qm91bmRGdW5jdGlvbkNhbGwoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgSlNCb3VuZEZ1bmN0
aW9uKiBmdW5jdGlvbiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgaml0LmVtaXRGdW5j
dGlvblByb2xvZ3VlKCk7CisKKyAgICAvLyBTZXQgdXAgb3VyIGNhbGwgZnJhbWUuCisgICAgaml0
LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxw
ZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworICAgIGppdC5zdG9y
ZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworCisgICAgSlNJbW11
dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICB1
bnNpZ25lZCBjYWxsU2l0ZUFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzID0gY2FsbFNpdGVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIChib3Vu
ZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMCk7CisgICAgdW5zaWduZWQgbnVtUGFyYW1l
dGVycyA9IDA7CisgICAgdW5zaWduZWQgbnVtRml4dXBDb3VudCA9IDA7CisKKyAgICBKU0Z1bmN0
aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24tPnRhcmdl
dEZ1bmN0aW9uKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiB0YXJnZXRFeGVjdXRhYmxlID0gdGFy
Z2V0RnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKKyAgICBpZiAodGFyZ2V0RXhlY3V0YWJsZS0+aXNI
b3N0RnVuY3Rpb24oKSkgeworICAgIH0gZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogdGFyZ2V0
Q29kZUJsb2NrID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRhcmdldEV4ZWN1dGFibGUp
LT5jb2RlQmxvY2tGb3JDYWxsKCk7CisgICAgICAgIG51bVBhcmFtZXRlcnMgPSB0YXJnZXRDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKTsKKyAgICAgICAgaWYgKG51bVBhcmFtZXRlcnMgPiBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykKKyAgICAgICAgICAgIG51bUZpeHVwQ291bnQgPSBudW1Q
YXJhbWV0ZXJzIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgfQorICAgIHVuc2ln
bmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzQWZ0ZXJGaXh1cCA9IHN0ZDo6bWF4PHVuc2ln
bmVkPihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbnVtUGFyYW1ldGVycyk7CisKKyAgICAv
LyBUaGUgZm9ybXVsYSBmb3IgdGhlIG51bWJlciBvZiBzdGFjayBieXRlcyBuZWVkZWQgZ2l2ZW4g
c29tZSBudW1iZXIgb2YgcGFyYW1ldGVycyAoaW5jbHVkaW5nCisgICAgLy8gdGhpcykgaXM6Cisg
ICAgLy8KKyAgICAvLyAgICAgc3RhY2tBbGlnbigobnVtUGFyYW1zICsgQ2FsbEZyYW1lSGVhZGVy
U2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKQorICAg
IC8vCisgICAgLy8gUHJvYmFibHkgd2Ugd2FudCB0byB3cml0ZSB0aGlzIGFzOgorICAgIC8vCisg
ICAgLy8gICAgIHN0YWNrQWxpZ24oKG51bVBhcmFtcyArIChDYWxsRnJhbWVIZWFkZXJTaXplIC0g
Q2FsbGVyRnJhbWVBbmRQQ1NpemUpKSAqIHNpemVvZihSZWdpc3RlcikpCisgICAgLy8KKyAgICAv
LyBUaGF0J3MgcmVhbGx5IGFsbCB0aGVyZSBpcyB0byB0aGlzLiBXZSBoYXZlIGFsbCB0aGUgcmVn
aXN0ZXJzIHdlIG5lZWQgdG8gZG8gaXQuCisKKyAgICB1bnNpZ25lZCBleHRyYVN0YWNrTmVlZGVk
ID0gMDsKKyAgICBpZiAodW5zaWduZWQgc3RhY2tNaXNhbGlnbm1lbnQgPSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkpCisgICAgICAgIGV4dHJhU3RhY2tO
ZWVkZWQgPSBzdGFja0FsaWdubWVudEJ5dGVzKCkgLSBzdGFja01pc2FsaWdubWVudDsKKworICAg
IHVuc2lnbmVkIHN0YWNrU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpLCAoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBDYWxs
ZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMpICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXNBZnRlckZpeHVwKSArIGV4dHJhU3RhY2tOZWVkZWQ7CisgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigtKHN0YWNrU2l6ZSAqIHNpemVvZihSZWdpc3RlcikpKSwgQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOworICAgIGF1
dG8gc3RhY2tPdmVyZmxvdyA9IGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwgQ0Nh
bGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Modm0uYWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSks
IEdQUkluZm86OnJlZ1QyKTsKKworICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhl
bHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIENDYWxsSGVscGVy
czo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOworCisgICAgdW5zaWduZWQgaW5kZXhJbkFyZ3VtZW50cyA9IDA7CisgICAg
aml0LnN0b3JlVHJ1c3RlZFZhbHVlKGZ1bmN0aW9uLT5ib3VuZFRoaXMoKSwgQ0NhbGxIZWxwZXJz
OjpjYWxsZWVBcmd1bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisgICAgaWYgKGJvdW5k
QXJncykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBib3VuZEFy
Z3MtPmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICAgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVl
KGJvdW5kQXJncy0+Z2V0KGluZGV4KSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3Qo
aW5kZXhJbkFyZ3VtZW50cysrKSk7CisgICAgfQorCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gSlNWYWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1Q0LCBHUFJJ
bmZvOjpyZWdUMik7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IC8qIGNhbGxzaXRlJ3MgfHRo
aXN8IGlzIG5vdCBpbnRlcmVzdGluZyAqLyAxOyBpbmRleCA8IGNhbGxTaXRlQXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM7ICsraW5kZXgpIHsKKyAgICAgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhl
bHBlcnM6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlz
KGluZGV4KSksIHZhbHVlUmVncyk7CisgICAgICAgIGppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywg
Q0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7Cisg
ICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtRml4dXBDb3Vu
dDsgKytpbmRleCkKKyAgICAgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCks
IENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KGluZGV4SW5Bcmd1bWVudHMrKykpOwor
CisgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKHRhcmdldEZ1bmN0aW9uLCBDQ2FsbEhlbHBlcnM6
OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKKyAgICBhdXRvIGZ1bmN0
aW9uQ2FsbCA9IGppdC5jYWxsKEpTRW50cnlQdHJUYWcpOworICAgIGppdC5hZGRMaW5rVGFzayhb
PV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZ1
bmN0aW9uQ2FsbCwgRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4odGFyZ2V0RXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJl
cXVpcmVkKSkpOworICAgIH0pOworCisgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Cisg
ICAgaml0LnJldCgpOworCisgICAgLy8gVGhyb3cgU3RhY2sgT3ZlcmZsb3cgZXhjZXB0aW9uCisg
ICAgc3RhY2tPdmVyZmxvdy5saW5rKCZqaXQpOworICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0Vu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKKyAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZnVuY3Rpb24tPnNjb3BlKCkpLCBHUFJJbmZv
OjpyZWdUMyk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKT4oR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGpp
dC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0Lmp1
bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOworfQorCitzdHJ1Y3QgSW5saW5lZENhbGxlZSB7Cisg
ICAgc2l6ZV90IGNhc2VJbmRleDsKKyAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGVudHJ5cG9pbnQ7
Cit9OworCiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBD
YWxsVmFyaWFudCBuZXdWYXJpYW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5m
by5hbGxvd1N0dWJzKCkpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0KLSAg
ICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9mIGxpbmtQb2x5bW9ycGhpY0NhbGwsIHdlIHN0cm9uZ2x5
IGFzc3VtZSB0aGF0IHdlIG5ldmVyIGRvIEdDLgotICAgIC8vIEdDIGpldHRpc29ucyBDb2RlQmxv
Y2tzLCBjaGFuZ2VzIENhbGxMaW5rSW5mbyBldGMuIGFuZCBicmVha3MgYXNzdW1wdGlvbiBkb25l
IGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjYWxsLgotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJH
Q0ZvckFXaGlsZSh2bS5oZWFwKTsKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwog
ICAgIAogICAgIGlmICghbmV3VmFyaWFudCkgewogICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwg
Y2FsbEZyYW1lLCBjYWxsTGlua0luZm8pOwpAQCAtMTM5Miw2ICsxNDgzLDExIEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ2FsCiAgICAgCiAgICAgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+IGNh
bGxDYXNlczsKICAgICBWZWN0b3I8aW50NjRfdD4gY2FzZVZhbHVlczsKKworICAgIGF1dG8gaXNM
aW5rYWJsZUJvdW5kRnVuY3Rpb24gPSBbJl0oQ2FsbFZhcmlhbnQmIHZhcmlhbnQpIHsKKyAgICAg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB2YXJpYW50LmZ1bmN0aW9uKCk7CisgICAgICAgIHJl
dHVybiBmdW5jdGlvbiAmJiBmdW5jdGlvbi0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkg
JiYganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGZ1bmN0aW9uKS0+dGFyZ2V0RnVuY3Rpb24oKS0+
aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pICYmICFjYWxsTGlua0luZm8uaXNWYXJhcmdzKCk7Cisg
ICAgfTsKICAgICAKICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgb3VyIGNhc2VzIGFyZS4KICAgICBm
b3IgKENhbGxWYXJpYW50IHZhcmlhbnQgOiBsaXN0KSB7CkBAIC0xNDA1LDYgKzE1MDEsMTIgQEAg
dm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgICAgICAgICBsaW5rVmlydHVhbEZvcih2
bSwgY2FsbEZyYW1lLCBjYWxsTGlua0luZm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChpc0xpbmthYmxlQm91bmRGdW5jdGlvbih2
YXJpYW50KSkgeworICAgICAgICAgICAgLy8gV2UgbGluayB0aGUgY2FsbCB0byB0aGUgdGFyZ2V0
IGZ1bmN0aW9uLCBzbyB3ZSBuZWVkIHRvIHJldHJpZXZlIENvZGVCbG9jayBmcm9tIHRoZSB0YXJn
ZXQgZnVuY3Rpb24uCisgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oanNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHZhcmlhbnQuZnVuY3Rp
b24oKSktPnRhcmdldEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIHRh
cmdldEV4ZWN1dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICAg
ICAgaWYgKCF0YXJnZXRFeGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICAgICAg
ICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0YXJnZXRFeGVjdXRh
YmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwogICAgICAgICB9CiAKICAgICAgICAgaW50NjRfdCBu
ZXdDYXNlVmFsdWUgPSAwOwpAQCAtMTUyMyw2ICsxNjI1LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBo
aWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBDYWwKICAgICAgICAgaGFzRXhlY3V0YWJsZS5saW5rKCZzdHViSml0KTsKICAgICB9CiAKKyAg
ICBWZWN0b3I8SW5saW5lZENhbGxlZT4gaW5saW5lZENhbGxlZXM7CiAgICAgQmluYXJ5U3dpdGNo
IGJpbmFyeVN3aXRjaChjb21wYXJpc29uVmFsdWVHUFIsIGNhc2VWYWx1ZXMsIEJpbmFyeVN3aXRj
aDo6SW50UHRyKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAgICAgd2hpbGUg
KGJpbmFyeVN3aXRjaC5hZHZhbmNlKHN0dWJKaXQpKSB7CkBAIC0xNTM0LDcgKzE2MzcsMTQgQEAg
dm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgp
KSB7CiAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5leGVjdXRhYmxlKCktPmhhc0pJVENvZGVG
b3JDYWxsKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjb2RlUHRyID0ganNUb1dhc21J
Q0NvZGVQdHIodm0sIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSwgdmFyaWFudC5m
dW5jdGlvbigpKTsKKyAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHZhcmlh
bnQuZnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0xpbmthYmxlQm91bmRGdW5j
dGlvbih2YXJpYW50KSkgeworICAgICAgICAgICAgICAgICAgICAvLyBFbWl0IGlubGluZWQgSlNC
b3VuZEZ1bmN0aW9uIGNhbGwgaWYgSlNCb3VuZEZ1bmN0aW9uJ3MgdGFyZ2V0IGZ1bmN0aW9uIGlz
IEpTRnVuY3Rpb24sIGFuZCBpdCBpcyBub3QgY2FsbF92YXJhcmdzCisgICAgICAgICAgICAgICAg
ICAgIGlubGluZWRDYWxsZWVzLmFwcGVuZChJbmxpbmVkQ2FsbGVlIHsgY2FzZUluZGV4LCBDQ2Fs
bEhlbHBlcnM6OkxhYmVsKCkgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGNvZGVQdHIgPSBqc1RvV2FzbUlDQ29kZVB0cih2bSwgY2FsbExpbmtJbmZvLnNw
ZWNpYWxpemF0aW9uS2luZCgpLCBmdW5jdGlvbik7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGlmICghY29kZVB0cikKICAgICAgICAgICAgICAgICBjb2RlUHRyID0gdmFyaWFudC5leGVj
dXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKEFyaXR5
Q2hlY2tOb3RSZXF1aXJlZCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xNTU4LDYgKzE2NjgsMjEg
QEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jb2Rl
UHRyID0gY29kZVB0cjsKICAgICAgICAgZG9uZS5hcHBlbmQoc3R1YkppdC5qdW1wKCkpOwogICAg
IH0KKworICAgIGZvciAoYXV0byYgaW5saW5lZCA6IGlubGluZWRDYWxsZWVzKSB7CisgICAgICAg
IHNpemVfdCBjYXNlSW5kZXggPSBpbmxpbmVkLmNhc2VJbmRleDsKKyAgICAgICAgQ2FsbFZhcmlh
bnQgdmFyaWFudCA9IGNhbGxDYXNlc1tjYXNlSW5kZXhdLnZhcmlhbnQoKTsKKyAgICAgICAgaW5s
aW5lZC5lbnRyeXBvaW50ID0gc3R1YkppdC5sYWJlbCgpOworCisgICAgICAgIEFTU0VSVCh2YXJp
YW50LmV4ZWN1dGFibGUoKSk7CisgICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKS0+
aGFzSklUQ29kZUZvckNhbGwoKSk7CisgICAgICAgIEFTU0VSVCh2YXJpYW50LmZ1bmN0aW9uKCkp
OworICAgICAgICBBU1NFUlQodmFyaWFudC5mdW5jdGlvbigpLT5pbmhlcml0czxKU0JvdW5kRnVu
Y3Rpb24+KHZtKSk7CisgICAgICAgIEFTU0VSVChqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odmFy
aWFudC5mdW5jdGlvbigpKS0+dGFyZ2V0RnVuY3Rpb24oKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4o
dm0pKTsKKyAgICAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNWYXJhcmdzKCkpOworCisgICAg
ICAgIGdlbmVyYXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKHZtLCBzdHViSml0LCBqc0Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKSwgY2FsbEZyYW1lKTsKKyAgICB9
CiAgICAgCiAgICAgc2xvd1BhdGgubGluaygmc3R1YkppdCk7CiAgICAgYmluYXJ5U3dpdGNoLmZh
bGxUaHJvdWdoKCkubGluaygmc3R1YkppdCk7CkBAIC0xNTkwLDYgKzE3MTUsOSBAQCB2b2lkIGxp
bmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIENhbAogICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBj
YWxsTGlua0luZm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgZm9yIChjb25zdCBh
dXRvJiBpbmxpbmVkIDogaW5saW5lZENhbGxlZXMpCisgICAgICAgIGNhbGxzW2lubGluZWQuY2Fz
ZUluZGV4XS5jb2RlUHRyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihp
bmxpbmVkLmVudHJ5cG9pbnQpOwogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxDYXNlcy5z
aXplKCkgPT0gY2FsbHMuc2l6ZSgpKTsKICAgICBmb3IgKENhbGxUb0NvZGVQdHIgY2FsbFRvQ29k
ZVB0ciA6IGNhbGxzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKaW5kZXggNTFmMDNiOWMxZjU5MTkwZjlkOTk4NGFmY2JiMTViOTBiNWExN2NlNy4u
ZjgwNjUyOTIxZjE2OTU4N2ZmNmUwNDdhNjkzOTUwY2FmODk0MTgzYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMTE4OSw3ICsxMTg5LDYg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2Fs
bEdlbmVyYXRvcihWTSYgdm0pCiAgICAgYXV0byBub0FyZ3MgPSBqaXQuYnJhbmNoVGVzdFB0cihD
Q2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQubG9hZDMyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9m
ZnNldE9mUHVibGljTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgaml0LmFkZDMyKEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0LnN1YjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgbm9BcmdzLmxpbmsoJmpp
dCk7CiAgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJz
KSwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQubHNoaWZ0MzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMyksIEdQUkluZm86OnJlZ1QyKTsKQEAgLTEyNDgsNyAr
MTI0Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5j
dGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBsb29w
Qm91bmQgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVy
czo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJz
OjpUaW1lc0VpZ2h0LCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkgKyBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHZhbHVlUmVncyk7CisgICAgaml0LmxvYWRWYWx1
ZShDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDEs
IENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9m
RGF0YSgpKSwgdmFsdWVSZWdzKTsKICAgICBqaXQuc3RvcmVWYWx1ZSh2YWx1ZVJlZ3MsIENDYWxs
SGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDEpLmluZGV4ZWRCeShHUFJJbmZvOjpyZWdUMSwg
Q0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0KSk7CiAgICAgaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhl
bHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QxKS5saW5rVG8obG9vcEJvdW5kLCAmaml0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCmluZGV4IGQwOWQwYTkzMGFjMjQ0MjUyOTM5MjBiY2ZkNzllN2ZkNTE3YTM4ZTMuLjE0
M2MxNDg4NGM4ZTE2NTc2NzI1NmRjOGZiOGQwODg4Nzg1ODA3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5ODEs
NyArMTk4MSw3IEBAIG1hY3JvIHNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKIGVuZAogCiBzbG93UGF0
aE9wKGNyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKQotc2xvd1BhdGhPcChjcmVhdGVfYXJndW1lbnRz
X2J1dHRlcmZseSkKK3Nsb3dQYXRoT3AoY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVk
aW5nX3RoaXMpCiBzbG93UGF0aE9wKGNyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKQogc2xvd1BhdGhP
cChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHNsb3dQYXRoT3AoY3JlYXRlX3Jlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApp
bmRleCA4MmYzZWNiMDg2M2IzZGFhMDU3NGQ1ZDhkODQ5ZDI5ZDMwMjllOWE1Li42NzBhNGE0YTRl
NWM1ZTQyNWJlYTk4NzkwZmVlNjA1NGI1NDM3ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0
dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKQEAgLTIwNiwxNiArMjA3
LDM4IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2Nsb25l
ZF9hcmd1bWVudHMpCiAgICAgUkVUVVJOKENsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aE1hY2hp
bmVGcmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgQXJndW1lbnRzTW9kZTo6Q2xvbmVkKSk7
CiB9CiAKLUpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3Vt
ZW50c19idXR0ZXJmbHkpCitKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2Ny
ZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5X2V4Y2x1ZGluZ190aGlzKQogewogICAgIEJFR0lOKCk7
Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseT4o
KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
RXhjbHVkaW5nVGhpcz4oKTsKKyAgICBKU0NlbGwqIHRhcmdldCA9IEdFVChieXRlY29kZS5tX3Rh
cmdldCkuanNWYWx1ZSgpLmFzQ2VsbCgpOwogICAgIGludDMyX3QgYXJndW1lbnRDb3VudCA9IGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0
ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVC
dXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRl
QXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgYXJn
dW1lbnRDb3VudCk7CisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnQgPiAxKTsKKworICAgIENoZWNr
ZWRJbnQzMiB0b3RhbENvdW50ID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAgaW50MzJfdCBhZGRp
dGlvbmFsQ291bnQgPSAwOworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBu
dWxscHRyOworICAgIGlmICh0YXJnZXQtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKSB7
CisgICAgICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5k
RnVuY3Rpb24qPih0YXJnZXQpOworICAgICAgICBpZiAoYm91bmRGdW5jdGlvbi0+Y2FuQ2xvbmVC
b3VuZEFyZ3MoKSkgeworICAgICAgICAgICAgYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91
bmRBcmdzKCk7CisgICAgICAgICAgICBhZGRpdGlvbmFsQ291bnQgPSBib3VuZEFyZ3MgPyBib3Vu
ZEFyZ3MtPmxlbmd0aCgpIDogMDsKKyAgICAgICAgICAgIHRvdGFsQ291bnQgKz0gYWRkaXRpb25h
bENvdW50OworICAgICAgICAgICAgaWYgKHRvdGFsQ291bnQuaGFzT3ZlcmZsb3dlZCgpKQorICAg
ICAgICAgICAgICAgIFRIUk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5
ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6OnRyeUNyZWF0ZSh2bSwgdm0uaW1tdXRhYmxlQnV0dGVy
Zmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFycmF5
V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uZ2V0KCksIHRvdGFsQ291
bnQudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnV0dGVyZmx5KQogICAgICAgICBUSFJPVyhjcmVh
dGVPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOwotICAgIGZvciAoaW50MzJfdCBpbmRl
eCA9IDA7IGluZGV4IDwgYXJndW1lbnRDb3VudDsgKytpbmRleCkKLSAgICAgICAgYnV0dGVyZmx5
LT5zZXRJbmRleCh2bSwgaW5kZXgsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaW5kZXgp
KTsKKyAgICBpZiAoYWRkaXRpb25hbENvdW50KSB7CisgICAgICAgIEFTU0VSVChib3VuZEFyZ3Mp
OworICAgICAgICBmb3IgKGludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IGFkZGl0aW9uYWxDb3Vu
dDsgKytpbmRleCkKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4LCBi
b3VuZEFyZ3MtPmdldChpbmRleCkpOworICAgIH0KKyAgICBmb3IgKGludDMyX3QgaW5kZXggPSAw
OyBpbmRleCA8IChhcmd1bWVudENvdW50IC0gMSk7ICsraW5kZXgpCisgICAgICAgIGJ1dHRlcmZs
eS0+c2V0SW5kZXgodm0sIGluZGV4ICsgYWRkaXRpb25hbENvdW50LCBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KGluZGV4ICsgMSkpOwogICAgIFJFVFVSTihidXR0ZXJmbHkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4
IDg0ZTJkYTVmN2FiNjhhNjI2MjQ4NWNiOGNjNDNmODA1NzE0OGM0NzEuLjk4ODg1MTY5MGYyMDdh
ZTA5Y2RhODk5NDM3MTcwNGE2Y2U3ZGUwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yMTAsNyArMjEwLDcgQEAgSlNDX0RFQ0xB
UkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spOwogSlND
X0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2RpcmVjdF9hcmd1bWVu
dHMpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX3Njb3Bl
ZF9hcmd1bWVudHMpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3Jl
YXRlX2Nsb25lZF9hcmd1bWVudHMpOwotSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpOworSlNDX0RFQ0xBUkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3Ro
aXMpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX3RoaXMp
OwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW50ZXIpOwogSlNDX0RF
Q0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdG9fdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCBkZGU4ZjA5
YTU5N2E4OTEzZjM5ODQyYmZmNDJjYTExMDRlYWEyMTUyLi5kNGY3OGY0NzAyN2EyYThhMDg2OTFl
ZjMyZmUwOWIzYWQ1MjE1YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTQxLDggKzQxLDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmoKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYgKGJvdW5k
QXJncykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMg
fHRoaXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdzLT5sZW5n
dGgoKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdzLT5s
ZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXQoaSkp
OwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCk7ICsraSkKQEAgLTcwLDggKzY5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGJvdW5kRnVuY3Rpb25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEYK
IAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYgKGJvdW5kQXJncykgewot
ICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgfHRoaXN8Lgot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytp
KQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsg
KytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXQoaSkpOwogICAgIH0K
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7
ICsraSkKQEAgLTk1LDggKzkzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhp
c05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2IKIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYgKGJvdW5kQXJncykgewotICAgICAgICAv
LyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgfHRoaXN8LgotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQorICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQogICAg
ICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXQoaSkpOwogICAgIH0KICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKQEAg
LTEyMyw4ICsxMjAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNv
bnN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3MpIHsKLSAgICAgICAgLy8gU3RhcnRz
IHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4KLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAg
IGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCkBAIC0yMzQsOCAr
MjMwLDcgQEAgSlNBcnJheSogSlNCb3VuZEZ1bmN0aW9uOjpib3VuZEFyZ3NDb3B5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1w
dHlBcnJheSh0aGlzLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgaWYgKG1fYm91bmRBcmdzKSB7Ci0gICAgICAg
IC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyBib3VuZCB8dGhpc3wuCi0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7ICsr
aSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ib3VuZEFyZ3MtPmxlbmd0
aCgpOyArK2kpIHsKICAgICAgICAgICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIG1fYm91
bmRBcmdzLT5nZXQoaSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmgKaW5kZXggNGE5MGIwMjJkZDMwZjY0MDY3MzFiMGYxZGE5Mjk2YTI3
N2M1YzY4Ny4uMTdhYTg0Y2ZmZTE1N2NiYTg2Y2Y5MmQ4YWNjNTlmNjc2OWNhZDBhOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00
Miw2ICs0Myw4IEBAIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0
aW9uIHsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgJiB+SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKICAgICBz
dGF0aWNfYXNzZXJ0KFN0cnVjdHVyZUZsYWdzICYgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAiIik7
CiAKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE51bWJlck9mQ2xvbmluZ0JvdW5k
QXJndW1lbnRzID0gNjQ7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CkBAIC01Miw5ICs1NSwxNiBAQCBjbGFzcyBKU0JvdW5kRnVuY3Rpb24gZmluYWwg
OiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgCiAgICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5z
dGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCisgICAgLy8gSWYg
Ym91bmRBcmdzJyBsZW5ndGggaXMgdG9vIGxhcmdlLCB3ZSBzaG91bGQgbm90IGNsb25lIGJvdW5k
QXJncyB3aGVuIHdyYXBwaW5nIHRoZSBib3VuZCBmdW5jdGlvbiBhZ2Fpbi4KKyAgICBib29sIGNh
bkNsb25lQm91bmRBcmdzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBib3VuZEFyZ3NM
ZW5ndGgoKSA8PSBKU0JvdW5kRnVuY3Rpb246Om1heE51bWJlck9mQ2xvbmluZ0JvdW5kQXJndW1l
bnRzOworICAgIH0KKwogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIG1f
dGFyZ2V0RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJu
IG1fYm91bmRUaGlzLmdldCgpOyB9CiAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJn
cygpIHsgcmV0dXJuIG1fYm91bmRBcmdzLmdldCgpOyB9IC8vIERPIE5PVCBhbGxvdyB0aGlzIGFy
cmF5IHRvIGJlIG11dGF0ZWQhCisgICAgdW5zaWduZWQgYm91bmRBcmdzTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZEFyZ3MgPyBtX2JvdW5kQXJncy0+bGVuZ3RoKCkgOiAwOyB9CiAgICAg
SlNBcnJheSogYm91bmRBcmdzQ29weShKU0dsb2JhbE9iamVjdCopOwogICAgIEpTU3RyaW5nKiBu
YW1lTWF5QmVOdWxsKCkgeyByZXR1cm4gbV9uYW1lTWF5QmVOdWxsLmdldCgpOyB9CiAgICAgY29u
c3QgU3RyaW5nJiBuYW1lU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwYTYxNjcxM2U2ZGM2Y2Q1ZWE3OThlZWM0NmQx
YTU0NmM3YWUzMmE4Li4xNTJhZDg1ZjM1MTFmMTdiYTRiZjE5NzIwYjQ0ZTM2YjEwZjdmYjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0zMDAsMTAgKzMwMCwyMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obWFrZUJvdW5k
RnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogICAgIEpTT2Jq
ZWN0KiB0YXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBKU1ZhbHVlIGJvdW5kVGhpcyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7
CiAgICAgSlNWYWx1ZSBib3VuZEFyZ3MgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIp
OworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBib3VuZEFyZ3MuaXNDZWxs
KCkgPyBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihib3VuZEFyZ3MpIDogbnVsbHB0cjsK
ICAgICBkb3VibGUgbGVuZ3RoID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgzKS5hc051
bWJlcigpOwogICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0gYXNTdHJpbmcoY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCg0KSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0
YXJnZXQsIGJvdW5kVGhpcywgYm91bmRBcmdzLmlzQ2VsbCgpID8ganNDYXN0PEpTSW1tdXRhYmxl
QnV0dGVyZmx5Kj4oYm91bmRBcmdzKSA6IG51bGxwdHIsIGxlbmd0aCwgbmFtZVN0cmluZykpKTsK
KyAgICAvLyBVbndyYXAgSlNCb3VuZEZ1bmN0aW9uIGJ5IGNvbmZpZ3VyaW5nIGJ1dHRlcmZseSBh
bmQgdGFyZ2V0LiBUaGUgbGFyZ2VyIEJ1dHRlcmZseSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBmb3Ig
dGhhdCBwdXJwb3NlLgorICAgIGlmICh0YXJnZXQtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4o
dm0pKSB7CisgICAgICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxK
U0JvdW5kRnVuY3Rpb24qPih0YXJnZXQpOworICAgICAgICBpZiAoYm91bmRGdW5jdGlvbi0+Y2Fu
Q2xvbmVCb3VuZEFyZ3MoKSkgeworICAgICAgICAgICAgYm91bmRUaGlzID0gYm91bmRGdW5jdGlv
bi0+Ym91bmRUaGlzKCk7CisgICAgICAgICAgICB0YXJnZXQgPSBib3VuZEZ1bmN0aW9uLT50YXJn
ZXRGdW5jdGlvbigpOworICAgICAgICAgICAgaWYgKCFidXR0ZXJmbHkgJiYgYm91bmRGdW5jdGlv
bi0+Ym91bmRBcmdzKCkpCisgICAgICAgICAgICAgICAgYnV0dGVyZmx5ID0gYm91bmRGdW5jdGlv
bi0+Ym91bmRBcmdzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCB0YXJnZXQsIGJvdW5kVGhpcywgYnV0dGVyZmx5LCBsZW5ndGgsIG5hbWVTdHJp
bmcpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihoYXNPd25MZW5ndGhQcm9wZXJ0
eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBkZWU5Zjg0
OTlkNjk4ZTA2MzI4MDM1ZTUzMWU3OGI3OWExYjYxNDI3Li44MDJhM2MzOGQ1ZmE0MzI0MGIzZTcx
NjE1Yjg3M2IzNzM1YzQ3MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCkBAIC0yMDA4LDYgKzIwMDgsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvblVzZUpJVCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbklzR2lnYWNhZ2VFbmFibGVkKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uVG9VbmNhY2hlYWJsZURpY3Rpb25hcnkpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wpOworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Bc3NlcnRGcmFtZUFsaWduZWQpOwogCiBjb25z
dCBDbGFzc0luZm8gSlNEb2xsYXJWTTo6c19pbmZvID0geyAiRG9sbGFyVk0iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRG9sbGFyVk0pIH07
CiAKQEAgLTM1NzYsNiArMzU3NywxMyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25Jc1ByaXZhdGVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogYwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzU3ltYm9sKGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpLT51aWQoKS5pc1ByaXZhdGUoKSkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25Bc3NlcnRGcmFtZUFsaWduZWQsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxGcmFtZSkgJSBz
dGFja0FsaWdubWVudEJ5dGVzKCkgPT0gMCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKK30KKwogY29uc3RleHByIHVuc2lnbmVkIGpzRG9sbGFyVk1Qcm9wZXJ0
eUF0dHJpYnV0ZXMgPSBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZTsKIAogdm9pZCBK
U0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCkBAIC0zNzMwLDYgKzM3MzgsOCBAQCB2
b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogICAgIGFkZEZ1bmN0aW9u
KHZtLCAiaXNQcml2YXRlU3ltYm9sIiwgZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wsIDEpOwogCisg
ICAgYWRkRnVuY3Rpb24odm0sICJhc3NlcnRGcmFtZUFsaWduZWQiLCBmdW5jdGlvbkFzc2VydEZy
YW1lQWxpZ25lZCwgMCk7CisKICAgICBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRD
b3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iamVjdERvaW5nU2lkZUVm
ZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1czo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIGpzTnVsbCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NDc5MGE3MmFiZjY3M2FlMTdhNzQ1
ZGEzNjJhMTViMmZlYjNlNDc3Li4wYTlhMmJlMDE2NDYxNDgxZTgxZjBmMzg0ZGVlZGVlYjA5OWY3
OWM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMDEgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlv
biBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI1MTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBqcy9kb20vZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDQtMzAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQXBwIGhpZ2hsaWdo
dCBVSSBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiBzZWxlY3RpbmcgdGV4dCBpbiBpbWFnZSBvdmVy
bGF5cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWJpbmQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDJjOTgxMDQ1NTI2NWMzOGU0M2UyODI2YWNkZjg3NjczNWJhZWRhOTYuLjM0ODkzNTVlYzY1
MzY0NGY5NDBkZjhmNWY2N2IwMTE0ZDM1YWQxNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pz
L2RvbS9mdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBAIFRlc3RzIEZ1bmN0aW9u
LmJpbmQuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBuZXcgKGRlY29kZVVS
SS5iaW5kKCkpKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEg
Y29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyAoZGVjb2RlVVJJLmJpbmQoKSkoKScpLgorUEFT
UyBuZXcgKGRlY29kZVVSSS5iaW5kKCkpKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVu
Y3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ2RlY29kZVVSSScpLgogUEFT
UyAobmV3IChTdHJpbmcuYmluZCgpKSgnZm9vJykpLnRvU3RyaW5nKCkgaXMgJ2ZvbycKIFBBU1Mg
cmVzdWx0IGlzICJbb2JqZWN0IFdpbmRvd10gLT4geDoxLCB5OjIiCiBQQVNTIHJlc3VsdCBpcyAi
J2EnIC0+IHg6J2InLCB5OjEiCkBAIC0yNSw3ICsyNSw3IEBAIFBBU1MgInByb3RvdHlwZSIgaW4g
RyBpcyBmYWxzZQogUEFTUyAicHJvdG90eXBlIiBpbiBIIGlzIGZhbHNlCiBQQVNTIEZ1bmN0aW9u
LmJpbmQuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHx0aGlzfCBp
cyBub3QgYSBmdW5jdGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuCiBQQVNTIGFi
Y0F0KDEpIGlzICJiIgotUEFTUyBuZXcgYWJjQXQoMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhYmNBdCgx
KScpLgorUEFTUyBuZXcgYWJjQXQoMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rp
b24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ2FiY0F0JykuCiBQQVNTIGJvdW5k
RnVuY3Rpb25Qcm90b3R5cGVBY2Nlc3NlZCBpcyBmYWxzZQogUEFTUyBGdW5jdGlvbi5iaW5kLmxl
bmd0aCBpcyAxCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlMDU4MWQ0NmJmNjA0
YmI3OTVhZDNhNjIxNTA5ZTQ1OWU3YmVhODAuLjI1NzE3ZWJhNTA1ZGJlNDdkNTNmNzNiNTUwYmQ2
MDlkZjUyMWMxN2MgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjEtMDUtMDEgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlv
biBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI1MTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdHJlc3MvYm91bmQtZnVuY3Rpb24taW5saW5pbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0KToKKyAgICAgICAgKiBzdHJlc3Mv
Ym91bmQtZnVuY3Rpb24tc3RhY2stb3ZlcmZsb3cuanM6CisgICAgICAgICogc3RyZXNzL2JvdW5k
LWZ1bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHQxKToKKyAgICAgICAgKHQyKToKKyAgICAg
ICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1jYWxsLWZyYW1lLmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5k
LWNhbGxlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChpbmxpbmVk
KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5v
dC1taXNzLWFscmVhZHktYm91bmQtYXJncy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUt
d3JhcC10aHJvdy1tb3JlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHRocm93YWJsZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAg
KiBzdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICh0aHJvd2FibGUpOgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZ2V0dGVyLWNh
bGwtb3NyLWV4aXQuanM6IEFkZGVkLgorICAgICAgICAoYmFyKToKKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9z
ci1leGl0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKG1heUV4aXQp
OgorICAgICAgICAoaW5saW5lZCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mv
ZnVuY3Rpb24tYmluZC1zZXR0ZXItY2FsbC1vc3ItZXhpdC5qczogQWRkZWQuCisgICAgICAgIChi
YXIpOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9m
dW5jdGlvbi1iaW5kLXRhaWwtY2FsbC1vc3ItZXhpdC5qczogQWRkZWQuCisgICAgICAgIChiYXIp
OgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5j
dGlvbi1iaW5kLXRocm93LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHRocm93YWJsZSk6CisgICAgICAgIChpbm5lcik6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXItYm91bmQtZnVuY3Rp
b24tbmFtZS5qczoKKyAgICAgICAgKHBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKToK
KyAgICAgICAgKiBzdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4tY3VzdG9tLWhhc0luc3RhbmNlLmpz
OgorCiAyMDIxLTA0LTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggZXhjZXB0aW9uIGFzc2VydGlvbnMgaW4gbGlnaHQgb2YgdGhlIFRlcm1pbmF0aW9uRXhj
ZXB0aW9uLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24taW5saW5p
bmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1pbmxpbmluZy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YzUwNWIxZmU3MjIzOWU2YmNmZDcyMDliNTMwMzBiODBkYzFjYjJmCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24taW5saW5pbmcuanMKQEAgLTAs
MCArMSwxNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykgeworICAgIHJldHVy
biBhICsgYiArIGM7Cit9CisKK3ZhciBib3VuZCA9IHRlc3QuYmluZCgwLCAxKTsKKworZnVuY3Rp
b24gdCgpIHsKKyAgICByZXR1cm4gYm91bmQoMiwgMywgNCk7Cit9Citub0lubGluZSh0KTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodCgpLCA2KTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0YWNrLW92ZXJmbG93LmpzIGIv
SlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RhY2stb3ZlcmZsb3cuanMKaW5kZXggZjE4
MjJlMWVhNjliNTY1OGJiNDdkODA4YzA2Y2Y0ZDk3OGNjMTc3YS4uODJhYmUzMTBiMWJjN2RiYzAx
MDBhNzFhNDBkZDRkZmVkMTBhZjlhNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYm91bmQt
ZnVuY3Rpb24tc3RhY2stb3ZlcmZsb3cuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVu
Y3Rpb24tc3RhY2stb3ZlcmZsb3cuanMKQEAgLTgsOCArOCw4IEBAIGZ1bmN0aW9uIGZvbygpCiB7
CiB9CiAKLWZvciAodmFyIGkgPSAwOyBpIDwgNTAwMDsgKytpKSB7Ci0gICAgZm9vID0gZm9vLmJp
bmQoMSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDYwMDA7ICsraSkgeworICAgIGZvbyA9IGZvby5i
aW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExKTsKICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAibmFtZSIsIHsgdmFsdWU6ICJiYXIiLCB3cml0YWJs
ZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MzM3ODZkMmViZjlhNTlkODEzZDNjYjI1NTQyYjAxNjE2ZjNjODdmCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RyZW5ndGgtcmVk
dWN0aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KGEsIGIs
IGMpIHsKKyAgICByZXR1cm4gYSArIGIgKyBjOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBi
b3VuZCA9IHRlc3QuYmluZCgwLCAxKTsKK25vSW5saW5lKGJvdW5kKTsKKworZnVuY3Rpb24gdDEo
KSB7CisgICAgcmV0dXJuIGJvdW5kKDIsIDMsIDQpOworfQorbm9JbmxpbmUodDEpOworCitmdW5j
dGlvbiB0MigpIHsKKyAgICByZXR1cm4gYm91bmQoJ2hlbGxvJyk7Cit9Citub0lubGluZSh0Mik7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICBzaG91bGRCZSh0MSgpLCA2
KTsKKyAgICBzaG91bGRCZSh0MigpLCAiMWhlbGxvdW5kZWZpbmVkIik7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGwtZnJhbWUuanMgYi9KU1Rlc3RzL3N0
cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGwtZnJhbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3YjhiMjA1N2Mz
Y2M1MDJiZmJiYWVhMGZkMmEzYjZiZDc5YTRiMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2Z1bmN0aW9uLWJpbmQtY2FsbC1mcmFtZS5qcwpAQCAtMCwwICsxLDE2IEBACitmdW5j
dGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgJHZtLmFzc2VydEZyYW1lQWxpZ25lZCgpOworICAg
IHJldHVybiBhICsgYiArIGM7Cit9CisKK3sKKyAgICB2YXIgYm91bmQgPSB0ZXN0LmJpbmQodW5k
ZWZpbmVkLCAwLCAxLCAyKTsKKyAgICBmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICAgICAgcmV0dXJu
IGJvdW5kKCk7CisgICAgfQorICAgIG5vSW5saW5lKHRlc3QxKTsKKworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHRlc3QxKCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGxlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtY2FsbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOGU5ZmUyMzQwMGI5NTZlMzAwZDNiYTFi
YTZhZjcwY2ViZGUzMTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlv
bi1iaW5kLWNhbGxlci5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gaW5s
aW5lZChhLCBiLCBjKQoreworICAgIHNob3VsZEJlKGlubGluZWQuY2FsbGVyLCB0ZXN0KTsKK30K
KwordmFyIGJvdW5kID0gaW5saW5lZC5iaW5kKHVuZGVmaW5lZCwgMykuYmluZCh1bmRlZmluZWQs
IDEsIDIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXR1cm4gYm91bmQoKTsKK30KK25v
SW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3Qo
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG8tbm90LW1pc3Mt
YWxyZWFkeS1ib3VuZC1hcmdzLmpzIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kby1u
b3QtbWlzcy1hbHJlYWR5LWJvdW5kLWFyZ3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI1NzhmMGQ0NTRhZGVl
NWQ1MWViOTI4OGYzMzBmYWIxOGY3ZmIxMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2Z1bmN0aW9uLWJpbmQtZG8tbm90LW1pc3MtYWxyZWFkeS1ib3VuZC1hcmdzLmpzCkBAIC0w
LDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpCit7CisgICAgcmV0
dXJuIGEgKyBiICsgYzsKK30KK3ZhciBib3VuZDEgPSB0ZXN0LmJpbmQodW5kZWZpbmVkLCAwLCAx
LCAyKTsKK3ZhciBib3VuZDIgPSBib3VuZDEuYmluZCh1bmRlZmluZWQpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKGJvdW5kMigpLCAzKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3ctbW9yZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3ctbW9yZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xOTZhYjQxMjAzOWQ0YmNhMTQ0MWZhY2Q2MTBmMGM5NTkzZWMxZGIwCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3Jh
cC10aHJvdy1tb3JlLmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZh
bHNlOworZnVuY3Rpb24gdGhyb3dhYmxlKCkKK3sKKyAgICBpZiAoZmxhZykKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCk7Cit9Citub0lubGluZSh0aHJvd2FibGUpOworCitmdW5jdGlvbiB0ZXN0
KGEsIGIpCit7CisgICAgdGhyb3dhYmxlKCk7CisgICAgcmV0dXJuIGEgKyBiOworfQorCit2YXIg
Ym91bmQgPSB0ZXN0LmJpbmQodW5kZWZpbmVkLCAxLCAyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwOyArK2kpCisgICAgdmFyIGJvdW5kID0gYm91bmQuYmluZCh1bmRlZmluZWQpOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKGJvdW5kKCksIDMpOworZmxh
ZyA9IHRydWU7Cit2YXIgZXJyb3IgPSBudWxsOwordHJ5IHsKKyAgICBib3VuZCgpOworfSBjYXRj
aCAoZSkgeworICAgIGVycm9yID0gZTsKK30KK3Nob3VsZEJlKGVycm9yICE9PSBudWxsLCB0cnVl
KTsKK3Nob3VsZEJlKGVycm9yLnN0YWNrLnRyaW0oKS5zcGxpdCgnXG4nKS5sZW5ndGgsIDMpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJv
dy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3cuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTc1NWRiNGM5NDJmMDlkZTQyNzIxNzU0NmJhNDQ4OGMwMzIwYTYyYgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAt
dGhyb3cuanMKQEAgLTAsMCArMSwzMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7Citm
dW5jdGlvbiB0aHJvd2FibGUoKQoreworICAgIGlmIChmbGFnKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoKTsKK30KK25vSW5saW5lKHRocm93YWJsZSk7CisKK2Z1bmN0aW9uIHRlc3QoYSwgYikK
K3sKKyAgICB0aHJvd2FibGUoKTsKKyAgICByZXR1cm4gYSArIGI7Cit9Cit2YXIgYm91bmQxID0g
dGVzdC5iaW5kKHVuZGVmaW5lZCwgMSk7Cit2YXIgYm91bmQyID0gYm91bmQxLmJpbmQodW5kZWZp
bmVkLCAyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShi
b3VuZDIoKSwgMyk7CitmbGFnID0gdHJ1ZTsKK3ZhciBlcnJvciA9IG51bGw7Cit0cnkgeworICAg
IGJvdW5kMigpOworfSBjYXRjaCAoZSkgeworICAgIGVycm9yID0gZTsKK30KK3Nob3VsZEJlKGVy
cm9yICE9PSBudWxsLCB0cnVlKTsKK3Nob3VsZEJlKGVycm9yLnN0YWNrLnRyaW0oKS5zcGxpdCgn
XG4nKS5sZW5ndGgsIDMpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmlu
ZC1nZXR0ZXItY2FsbC1vc3ItZXhpdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQt
Z2V0dGVyLWNhbGwtb3NyLWV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBlMTU5NjA4NTMzZGZjYjkzYjky
NTkwZTU0ODYzYWY1MjBjY2ZkMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1
bmN0aW9uLWJpbmQtZ2V0dGVyLWNhbGwtb3NyLWV4aXQuanMKQEAgLTAsMCArMSw0NCBAQAorbXlP
YmogPSB7CisgICAgdmFsOiAxCit9CisKK2Z1bmN0aW9uIGJhcihhLCBpZHgpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKGlkeCA9PSA5OTAwKQorICAgICAgICBteU9iai5kZmdPU1Ig
PSAiVGVzdCI7CisKKyAgICBpZiAoaWR4ID09IDE5OTkwMCkKKyAgICAgICAgbXlPYmouZnRsT1NS
ID0gIlRlc3QiOworCisgICAgcmV0dXJuIG15T2JqLnZhbCArIGE7Cit9CisKK3ZhciBjb3VudGVy
ID0gMDsKK2Z1bmN0aW9uIGZvbyhhKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVy
biBiYXIoYSwgY291bnRlcisrKTsKK30KKworYm91bmRGb28gPSBmb28uYmluZChudWxsLCA0MSk7
CisKK3ZhciBvYmplY3QgPSB7fTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdnZXR0
ZXInLCB7CisgICAgZ2V0OiBib3VuZEZvbywKK30pOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDIwMDAwMDsgaSsrKSB7CisgICAgICAgIGdvdCA9IG9iamVj
dC5nZXR0ZXI7CisgICAgICAgIGlmIChnb3QgIT0gNDIpCisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJGdW5jdGlvbiByZXR1cm5lZCAiICsgZ290ICsgIiBidXQgZXhwZWN0ZWQgNDIhIik7CisgICAg
fQorfQorCitub0lubGluZSh0ZXN0KTsKKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9zci1leGl0LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
ZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9zci1leGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YWNhNTBhMTVk
YjczYTA1ZDViOWNhMzM2NDA3OGI2ZTkzZWQ0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9mdW5jdGlvbi1iaW5kLWlubGluZWQtb3NyLWV4aXQuanMKQEAgLTAsMCArMSwzMiBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7CitmdW5jdGlvbiBtYXlFeGl0KCkKK3sKKyAg
ICBpZiAoZmxhZykgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIHJldHVybiAyNDsKKyAg
ICB9CisgICAgcmV0dXJuIDQyOworfQorCitmdW5jdGlvbiBpbmxpbmVkKGEsIGIsIGMpCit7Cisg
ICAgcmV0dXJuIGEgKyBiICsgYyArIG1heUV4aXQoKTsKK30KKwordmFyIGJvdW5kID0gaW5saW5l
ZC5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMyk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
dHVybiBib3VuZCgpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdCgpLCA0OCk7CitmbGFnID0gdHJ1ZTsKK3Nob3Vs
ZEJlKHRlc3QoKSwgMzApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmlu
ZC1zZXR0ZXItY2FsbC1vc3ItZXhpdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQt
c2V0dGVyLWNhbGwtb3NyLWV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkzNjIxM2VjZDA2MzljNTUyZjI4
OTA5YjAxMmIxMmJiMGJkNDBjZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1
bmN0aW9uLWJpbmQtc2V0dGVyLWNhbGwtb3NyLWV4aXQuanMKQEAgLTAsMCArMSw0NSBAQAorbXlP
YmogPSB7CisgICAgdmFsOiAxCit9CisKK3ZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gYmFyKGEs
IGlkeCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoaWR4ID09IDk5MDApCisgICAg
ICAgIG15T2JqLmRmZ09TUiA9ICJUZXN0IjsKKworICAgIGlmIChpZHggPT0gMTk5OTAwKQorICAg
ICAgICBteU9iai5mdGxPU1IgPSAiVGVzdCI7CisKKyAgICByZXR1cm4gbXlPYmoudmFsICsgYTsK
K30KKwordmFyIGNvdW50ZXIgPSAwOworZnVuY3Rpb24gZm9vKGEpCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgcmVzdWx0ID0gYmFyKGEsIGNvdW50ZXIrKyk7Cit9CisKK2JvdW5kRm9vID0g
Zm9vLmJpbmQobnVsbCwgNDEpOworCit2YXIgb2JqZWN0ID0ge307CitPYmplY3QuZGVmaW5lUHJv
cGVydHkob2JqZWN0LCAnc2V0dGVyJywgeworICAgIHNldDogYm91bmRGb28sCit9KTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMDAwMDA7IGkrKykgewor
ICAgICAgICBvYmplY3Quc2V0dGVyID0gaTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkZ1bmN0aW9uIHJldHVybmVkICIgKyBnb3QgKyAiIGJ1dCBl
eHBlY3RlZCA0MiEiKTsKKyAgICB9Cit9CisKK25vSW5saW5lKHRlc3QpOworCit0ZXN0KCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRhaWwtY2FsbC1vc3ItZXhp
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGFpbC1jYWxsLW9zci1leGl0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU1YjIwOWEyM2UwOWUzOTBjM2Y2OGMxMmQxNzMwY2QyNTQyNzQ2NGQKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRhaWwtY2FsbC1v
c3ItZXhpdC5qcwpAQCAtMCwwICsxLDM4IEBACitteU9iaiA9IHsKKyAgICB2YWw6IDEKK30KKwor
ZnVuY3Rpb24gYmFyKGEsIGlkeCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoaWR4
ID09IDk5MDApCisgICAgICAgIG15T2JqLmRmZ09TUiA9ICJUZXN0IjsKKworICAgIGlmIChpZHgg
PT0gMTk5OTAwKQorICAgICAgICBteU9iai5mdGxPU1IgPSAiVGVzdCI7CisKKyAgICByZXR1cm4g
bXlPYmoudmFsICsgYTsKK30KKworZnVuY3Rpb24gZm9vKGEsIGlkeCkKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICByZXR1cm4gYmFyKGEsIGlkeCk7Cit9CisKK2JvdW5kRm9vID0gZm9vLmJp
bmQobnVsbCwgNDEpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDIwMDAwMDsgaSsrKSB7CisgICAgICAgIGdvdCA9IGJvdW5kRm9vKGkpOworICAgICAgICBp
ZiAoZ290ICE9IDQyKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiRnVuY3Rpb24gcmV0dXJuZWQg
IiArIGdvdCArICIgYnV0IGV4cGVjdGVkIDQyISIpOworICAgIH0KK30KKworbm9JbmxpbmUodGVz
dCk7CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQt
dGhyb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE1M2Y2ZmU5OTk1NTk3ZmNkZDA5OWZkMjhhYWEwNWZkMDY2ZWIzNTcKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93LmpzCkBAIC0wLDAgKzEs
MzYgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gdGhyb3dhYmxlKCkK
K3sKKyAgICBpZiAoZmxhZykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJleHBlY3RlZCIpOwor
fQorbm9JbmxpbmUodGhyb3dhYmxlKTsKKworZnVuY3Rpb24gaW5uZXIoKQoreworICAgIHRocm93
YWJsZSgpOworfQordmFyIGJvdW5kID0gaW5uZXIuYmluZCgxLCAyLCAzKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgYm91bmQoKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHRlc3QoKTsKKwordmFyIGxlbmd0aCA9IDA7Cit0cnkg
eworICAgIGZsYWcgPSB0cnVlOworICAgIHRlc3QoKTsKK30gY2F0Y2ggKGVycm9yKSB7CisgICAg
bGVuZ3RoID0gZXJyb3Iuc3RhY2sudHJpbSgpLnNwbGl0KCdcbicpLmxlbmd0aDsKK30KK3Nob3Vs
ZEJlKGxlbmd0aCwgNCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9m
aWxlci1ib3VuZC1mdW5jdGlvbi1uYW1lLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2FtcGxpbmctcHJv
ZmlsZXItYm91bmQtZnVuY3Rpb24tbmFtZS5qcwppbmRleCBmMzc3NjI5ODk1ODU2NWQ5MDdjYjM1
NjBjNmE3MzM5M2EwN2I2M2ZhLi45MzNhNzQ0NTljMTdhNDlkNmY1Y2I0N2Y2NzMxZjQwYTdmNWFl
ZDE3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxlci1ib3VuZC1m
dW5jdGlvbi1uYW1lLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NhbXBsaW5nLXByb2ZpbGVyLWJv
dW5kLWZ1bmN0aW9uLW5hbWUuanMKQEAgLTIzLDYgKzIzLDYgQEAgZnVuY3Rpb24gYmFyKCkgewog
ICAgICAgICBib3VuZEJhcigpOwogICAgIH0KIAotICAgIHJ1blRlc3QoYmF6LCBbImZvbyIsICJi
b3VuZCBmb28iLCAiYmF6Il0pOwotICAgIHJ1blRlc3QoYmF6LCBbImJhciIsICJib3VuZCBiYXIi
LCAiYmF6Il0pOworICAgIHJ1blRlc3QoYmF6LCBbImZvbyIsICJiYXoiXSk7CisgICAgcnVuVGVz
dChiYXosIFsiYmFyIiwgImJheiJdKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0
YWNrLW92ZXJmbG93LWluLWN1c3RvbS1oYXNJbnN0YW5jZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0
YWNrLW92ZXJmbG93LWluLWN1c3RvbS1oYXNJbnN0YW5jZS5qcwppbmRleCBjMWUyZWIwNjQ3MmNm
OGUwOTEwOTcxNzUwYWQ3YWEzZWRjZDM3N2VlLi5jOThkMzE2YWQ1MTE2NDM3OTFjOGE3OTQyNTRm
MDE5YzkxNDY4YTMwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy1p
bi1jdXN0b20taGFzSW5zdGFuY2UuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZs
b3ctaW4tY3VzdG9tLWhhc0luc3RhbmNlLmpzCkBAIC00LDcgKzQsNyBAQCBmdW5jdGlvbiBmKCkg
e30KIAogdmFyIGZuID0gZjsKIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKLSAg
ICBmbiA9IGZuLmJpbmQoKTsKKyAgICBmbiA9IGZuLmJpbmQodW5kZWZpbmVkLCAwLCAxLCAyLCAz
LCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNik7CiAKICAgICAv
LyBFbnN1cmUgd2UgZG9uJ3QgZmFsbGJhY2sgdG8gQEBoYXNJbnN0YW5jZSBmcm9tICVGdW5jdGlv
blByb3RvdHlwZSUuCiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBTeW1ib2wuaGFzSW5z
dGFuY2UsIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428162</attachid>
            <date>2021-05-10 03:05:41 -0700</date>
            <delta_ts>2021-05-10 03:13:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210510030540.patch</filename>
            <type>text/plain</type>
            <size>108932</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YjkxZmE4YWVkYjkzYmIzN2I3MTNkODZlYzRkMjIxMjA0MTliMTRkLi43Yzk0NDdhZTdmNzM5NzJj
ZDVjNGM5MjNkYzRkNTQ4YzNmZWVjMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMjEtMDUtMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlvbiBjYWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBvcHRp
bWl6ZXMgRnVuY3Rpb24jYmluZC4KKworICAgICAgICAxLiBGdW5jdGlvbiNiaW5kIGJvdW5kQXJn
cyBkbyBub3QgaW5jbHVkZSB8dGhpc3wsIHdoaWNoIGlzIGR1cGxpY2F0ZWQgaW4gYm91bmRUaGlz
IGZpZWxkLgorICAgICAgICAyLiBGdW5jdGlvbiNiaW5kIHVud3JhcHMgZnVuY3Rpb24gd2hlbiBi
aW5kaW5nIHRoZSBib3VuZCBmdW5jdGlvbi4gV2Uga2VlcCBkZXB0aCBvZiBib3VuZCAxLgorICAg
ICAgICAzLiBDYWxsSUMgbm93IGlubGluZXMgYm91bmQgZnVuY3Rpb24gaWYgaXQgaXMgbm90IGEg
Y2xvc3VyZSBjYWxsLgorICAgICAgICA0LiBERkcgLyBGVEwgYXR0ZW1wdCB0byBpbmxpbmUgd3Jh
cHBlZCBmdW5jdGlvbiBpZiBpdCBmaWd1cmVkIG91dCB0aGF0IGJvdW5kIGZ1bmN0aW9uIGlzIGNh
bGxlZC4KKyAgICAgICAgNS4gREZHIC8gRlRMIGF0dGVtcHQgdG8gc3ByZWFkIGJvdW5kIGFyZ3Vt
ZW50cyBldmVuIGlmIHdlIGRlY2lkZWQgbm90IHRvIGlubGluZSBhIGZ1bmN0aW9uLgorICAgICAg
ICA2LiBBZGQgZWFnZXIgY29uc3RhbnQgZm9sZGluZyBjb2RlIG9mIEdldEdldHRlciAvIEdldFNl
dHRlciBpbiBERkc6OkJ5dGVDb2RlUGFyc2VyIHRvIGVuY291cmFnZSBnZXR0ZXIgLyBzZXR0ZXIg
aW5saW5pbmcgZm9yIGJvdW5kIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGJ1aWx0aW5zL0Z1bmN0
aW9uUHJvdG90eXBlLmpzOgorICAgICAgICAoYmluZCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19jcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHkpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZn
L0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkdyYXBoOjp0cnlHZXRDb25zdGFudEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OnRyeUdldENvbnN0YW50U2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAg
ICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0
b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNl
OjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkpOiBEZWxldGVkLgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0
U3RhY2tUcmFjZUZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6Z2V0U3RhY2tUcmFjZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvUmVw
YXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZUlubGluZWRCb3VuZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhp
Y0NhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlND
Ojpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OmJvdW5kQXJnc0NvcHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICog
dG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKKwogMjAy
MS0wNS0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3Rv
cmUgcHJlLXIyNzY4NzkgYmVoYXZpb3IgZm9yIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoKSBhbmQg
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4IGFmMjlhZmQ4MzU2
Y2FmOWI3ZTk4ZjRiNjY3OTFhNDNhNTc0NDU5YWEuLjZiMjUzOTkwMTA3NzQ1ZmJlOWExNzFjYmMy
ZjJmMjhkMDBmNjcyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9GdW5jdGlvblByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTYxLDggKzYxLDcgQEAgZnVuY3Rpb24gYmluZCh0
aGlzVmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHRhcmdldCA9IHRoaXM7
Ci0gICAgaWYgKCFAaXNDYWxsYWJsZSh0YXJnZXQpKQorICAgIGlmICghQGlzQ2FsbGFibGUodGhp
cykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBhIGZ1bmN0aW9uIGlu
c2lkZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCIpOwogCiAgICAgdmFyIGFyZ3VtZW50Q291bnQg
PSBAYXJndW1lbnRDb3VudCgpOwpAQCAtNzAsMTIgKzY5LDEyIEBAIGZ1bmN0aW9uIGJpbmQodGhp
c1ZhbHVlKQogICAgIHZhciBudW1Cb3VuZEFyZ3MgPSAwOwogICAgIGlmIChhcmd1bWVudENvdW50
ID4gMSkgewogICAgICAgICBudW1Cb3VuZEFyZ3MgPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICAg
ICAgYm91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOworICAgICAgICBib3Vu
ZEFyZ3MgPSBAY3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KHRoaXMpOwogICAgIH0KIAogICAgIHZh
ciBsZW5ndGggPSAwOwotICAgIGlmIChAaGFzT3duTGVuZ3RoUHJvcGVydHkodGFyZ2V0KSkgewot
ICAgICAgICB2YXIgbGVuZ3RoVmFsdWUgPSB0YXJnZXQubGVuZ3RoOworICAgIGlmIChAaGFzT3du
TGVuZ3RoUHJvcGVydHkodGhpcykpIHsKKyAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0gdGhpcy5s
ZW5ndGg7CiAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsdWUgPT09ICJudW1iZXIiKSB7CiAg
ICAgICAgICAgICBsZW5ndGhWYWx1ZSA9IEB0b0ludGVnZXJPckluZmluaXR5KGxlbmd0aFZhbHVl
KTsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IGNhcmUgYWJvdXQgcG9zaXRpdmUg
bGVuZ3RoVmFsdWVzLCBob3dldmVyLCB0aGlzIGNvbXBhcmlzaW9uCkBAIC04NSw5ICs4NCw5IEBA
IGZ1bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgdmFyIG5h
bWUgPSB0YXJnZXQubmFtZTsKKyAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICBpZiAodHlw
ZW9mIG5hbWUgIT09ICJzdHJpbmciKQogICAgICAgICBuYW1lID0gIiI7CiAKLSAgICByZXR1cm4g
QG1ha2VCb3VuZEZ1bmN0aW9uKHRhcmdldCwgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0aCwg
bmFtZSk7CisgICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0aGlzLCB0aGlzVmFsdWUsIGJv
dW5kQXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDE2NDEwMWZlY2UwNDI2YTAwMmZmNWE0N2ExYzAy
NGI4OTQ2NjQ0M2MuLjU0ZTJiYTdiOWZkZWUyOGIwNDVlYjFkNjhlZGNjZWUzMWQ5MDJjYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAt
MTExLDkgKzExMSwxMCBAQAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAK
LW9wIDpjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSwKK29wIDpjcmVhdGVfYXJndW1lbnRzX2J1
dHRlcmZseV9leGNsdWRpbmdfdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICB0YXJnZXQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKIG9w
IDpjcmVhdGVfdGhpcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDAxNmEwMjdmYTMzYWI3OTQ5NDMxMmE0YTQ3N2RmYzViMmU3
YTAwZDcuLjk0MzIwZTZlNDc5Y2EwY2MzYmZkZWY0MzkyYWViNGZiZjY4MjNhM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAt
OTIsNyArOTIsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVh
bFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfcHJvZmls
ZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAg
ICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfY3JlYXRlX2Fy
Z3VtZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2Fz
ZSBvcF9jaGVja190cmFwczoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKQEAgLTEwMyw2ICsx
MDIsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lz
dGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgog
ICAgICAgICByZXR1cm47CiAKKyAgICBVU0VTKE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhj
bHVkaW5nVGhpcywgdGFyZ2V0KQogICAgIFVTRVMoT3BUb1RoaXMsIHNyY0RzdCkKICAgICBVU0VT
KE9wQ2hlY2tUZHosIHRhcmdldFZpcnR1YWxSZWdpc3RlcikKICAgICBVU0VTKE9wSWRlbnRpdHlX
aXRoUHJvZmlsZSwgc3JjRHN0KQpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1CiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMo
T3BDcmVhdGVTY29wZWRBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlQ2xvbmVkQXJn
dW1lbnRzLCBkc3QpCi0gICAgREVGUyhPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgZHN0KQor
ICAgIERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBkc3QpCiAg
ICAgREVGUyhPcERlbEJ5SWQsIGRzdCkKICAgICBERUZTKE9wRGVsQnlWYWwsIGRzdCkKICAgICBE
RUZTKE9wVW5zaWduZWQsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNThlNTBkYTA5MjFiMjA5
ZjllYmVmZjJhYmRmM2IzM2VmZDU1YmQ4Yi4uNzkzNTEwZDY5YTQyOTcyZDQ4NDhmNmZkOWMwNTBl
MTQ5MTk4ZTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4NzMsOSArMjg3Myw5IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoUmVnaXN0ZXJJRCog
ZHN0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdGFyZ2V0
RnVuY3Rpb24pCiB7Ci0gICAgT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6OmVtaXQodGhpcywg
ZHN0KTsKKyAgICBPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6OmVtaXQo
dGhpcywgZHN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IGU1MTFkYzI3NTU1ZGU1Yjg4NDQ3ZTMzM2Y5ZTE2NjI1YTg1NjI2MWMuLmU5ZDVm
YTg4ZjBlZmEwMmQ4ZjQyODY0NzRiYWM3MTFjYmIyNzc3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc2
MSw3ICs3NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENy
ZWF0ZVByb21pc2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wg
aXNJbnRlcm5hbFByb21pc2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJh
dG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogbmV3VGFyZ2V0KTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseShSZWdpc3RlcklEKiBkc3QpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHRhcmdldEZ1bmN0aW9uKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNl
RmllbGRJbml0aWFsaXphdGlvbklmTmVlZGVkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
Y29uc3RydWN0b3IsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAg
ICAgIHZvaWQgZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAgIGJvb2wg
bmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDNjYmQxMjA5OWU4NWIw
YjQyNjIwODBhNDNhMzVkZTgxZjJiZDU3YjkuLjU5M2MyNzRlMTdmMzNhOGIzNDJlY2FmZGY0MGQy
YjE4OTA0ODE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE5MzMsOCArMTkzMywxMCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX25ld1Byb21pc2UoSlNDOjpCeXRl
Y29kZUdlbmVyYQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2NyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIEpTQzo6UmVnaXN0ZXJJRCogZHN0KQogewotICAgIEFTU0VSVCghbV9hcmdzLT5t
X2xpc3ROb2RlKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHkoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7CisgICAgQXJndW1lbnRMaXN0
Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dGFyZ2V0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9u
ZXh0KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlF
eGNsdWRpbmdUaGlzKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHRhcmdldC5nZXQo
KSk7CiB9CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5U
X0dFTkVSQVRPUlMobmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGZhOWQ5ZmEwYmJmYjA2
ZGI2ZDYyMDEyNzVjZmM2NjM0MTEwOWI5OTYuLjI2YjM1MzhiMjY0NGE4ZjQ0OTJiYTYxMmU4ZDQw
MjU2YTVkMTI5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMyMzAsNyArMzIzMCw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1bWVu
dHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdU
aGlzOgogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG1fdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3Ry
dWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENv
bnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uZ2V0KCkpOwogICAgICAgICBicmVh
azsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCBmN2VlNDZiNDZhYWQzMGEyN2JmNmIzNmVhMjQ3MjI5YjViY2EzZDRkLi4xN2Q5MGVh
ZTk5ZDU1MzljNmM3NDBjYTMxNjYzN2I5OGY2NDViYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2lu
Y2x1ZGUgIkluQnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkluc3RhbmNlT2ZTdGF0dXMuaCIKICNp
bmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHku
aCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgpAQCAtMTc3LDggKzE3OCw5IEBAIGNs
YXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lkIGFkZEp1bXBUbyh1bnNpZ25lZCBieXRlY29k
ZUluZGV4KTsKICAgICAvLyBIYW5kbGUgY2FsbHMuIFRoaXMgcmVzb2x2ZXMgaXNzdWVzIHN1cnJv
dW5kaW5nIGlubGluaW5nIGFuZCBpbnRyaW5zaWNzLgogICAgIGVudW0gVGVybWluYWxpdHkgeyBU
ZXJtaW5hbCwgTm9uVGVybWluYWwgfTsKKyAgICBlbnVtIGNsYXNzIENhbGxTdGFja09yaWdpbiB7
IEJ5dGVjb2RlLCBPbmx5REZHIH07CiAgICAgVGVybWluYWxpdHkgaGFuZGxlQ2FsbCgKLSAgICAg
ICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJ5
dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LAorICAgICAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5
cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbFN0YWNrT3JpZ2luLCBCeXRlY29kZUlu
ZGV4IG9zckV4aXRJbmRleCwKICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzLAog
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBFQ01BTW9kZSA9IEVDTUFNb2RlOjpz
dHJpY3QoKSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTkyLDE2ICsxOTQs
MTYgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIGJvb2wgaGFuZGxlUmVjdXJzaXZlVGFp
bENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYg
ZW1pdEZ1bmN0aW9uQ2hlY2tJZk5lZWRlZCk7CiAgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENh
bGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFt
ZTo6S2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5k
aWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAv
LyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYg
d2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmco
Tm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1
cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmly
dHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQs
IE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAgICBib29sIGhhbmRs
ZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNv
bnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
dGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVk
IGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IENhbGxTdGFja09yaWdpbik7CiAgICAgdW5zaWduZWQgZ2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0
IENhbGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgZW51bSBjbGFz
cyBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IHsgT3B0aW1pemVkVG9KdW1wLCBJbmxpbmVkLCBEaWRO
b3RoaW5nIH07Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIElubGluZUNhbGxG
cmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5n
QmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNr
Q2FsbGVlKTsKLSAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIE5vZGVU
eXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCBFQ01BTW9kZSk7CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFy
aWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCwgQ2FsbFN0YWNrT3JpZ2luLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25C
bG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOworICAgIENhbGxPcHRpbWl6YXRpb25SZXN1
bHQgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBj
b25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVy
IHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUlu
ZGV4IG9zckV4aXRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IENhbGxTdGFja09yaWdpbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgRUNNQU1vZGUpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgdm9pZCBpbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBD
YWxsU3RhY2tPcmlnaW4sIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVuY3Rp
b25zLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxh
bnQgYSBjYWxsLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJp
bnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFu
ZCByZXN1bHQsIENhbGxWYXJpYW50LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNr
c0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFu
ZCByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KQEAgLTEzMzYsNyArMTMzOCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpU
ZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiog
cGMsIE5vCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJhbWU6
OmtpbmRGb3IoY2FsbE1vZGUpOwogICAgIEFTU0VSVChvc3JFeGl0SW5kZXgpOwogCi0gICAgcmV0
dXJuIGhhbmRsZUNhbGwoZGVzdGluYXRpb25Gb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNo
ZWNrcG9pbnQoKSwgSklUVHlwZTo6REZHSklUKSwgb3AsIGtpbmQsIG9zckV4aXRJbmRleCwgY2Fs
bFRhcmdldCwKKyAgICByZXR1cm4gaGFuZGxlQ2FsbChkZXN0aW5hdGlvbkZvcihieXRlY29kZSwg
bV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpLCBKSVRUeXBlOjpERkdKSVQpLCBvcCwga2luZCwg
Q2FsbFN0YWNrT3JpZ2luOjpCeXRlY29kZSwgb3NyRXhpdEluZGV4LCBjYWxsVGFyZ2V0LAogICAg
ICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgbV9jdXJyZW50SW5k
ZXguY2hlY2twb2ludCgpKSwgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVk
aWN0aW9uKCkpOwogfQogCkBAIC0xMzQ3LDcgKzEzNDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSog
Y2FsbAogfQogCiBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNhbGwoCi0gICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQga2luZCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsCisgICAgT3BlcmFuZCBy
ZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbFN0YWNr
T3JpZ2luIGNhbGxTdGFja09yaWdpbiwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsCiAgICAg
Tm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIEVDTUFNb2RlIGVjbWFNb2RlKQogewpAQCAtMTM2NCw3ICsxMzY2
LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
YWxsKAogCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMCwgcmVnaXN0ZXJPZmZzZXQpOwogICAgICAg
ICBhdXRvIG9wdGltaXphdGlvblJlc3VsdCA9IGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJl
c3VsdCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCB0aGlzQXJndW1lbnQsCi0gICAg
ICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgb3NyRXhpdEluZGV4LCBvcCwga2lu
ZCwgcHJlZGljdGlvbiwgZWNtYU1vZGUpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIG9zckV4aXRJbmRleCwgb3AsIGtpbmQsIGNhbGxTdGFja09yaWdpbiwgcHJlZGlj
dGlvbiwgZWNtYU1vZGUpOwogICAgICAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IENhbGxP
cHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZFRvSnVtcCkKICAgICAgICAgICAgIHJldHVybiBU
ZXJtaW5hbDsKICAgICAgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBDYWxsT3B0aW1pemF0
aW9uUmVzdWx0OjpJbmxpbmVkKSB7CkBAIC0xNDA1LDcgKzE0MDcsNyBAQCBCeXRlQ29kZVBhcnNl
cjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKGNvbnN0IElu
c3RydWN0aW9uKgogICAgICAgICBpZiAoaGFuZGxlVmFyYXJnc0lubGluaW5nKGNhbGxUYXJnZXQs
IGJ5dGVjb2RlLm1fZHN0LAogICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMsIGZpcnN0RnJlZVJl
ZywgYnl0ZWNvZGUubV90aGlzVmFsdWUsIGJ5dGVjb2RlLm1fYXJndW1lbnRzLAogICAgICAgICAg
ICAgZmlyc3RWYXJBcmdPZmZzZXQsIG9wLAotICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lOjp2
YXJhcmdzS2luZEZvcihjYWxsTW9kZSkpKSB7CisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6
OnZhcmFyZ3NLaW5kRm9yKGNhbGxNb2RlKSwgQ2FsbFN0YWNrT3JpZ2luOjpCeXRlY29kZSkpIHsK
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKICAg
ICAgICAgICAgIHJldHVybiBOb25UZXJtaW5hbDsKQEAgLTE2NjUsNyArMTY2Nyw3IEBAIHVuc2ln
bmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQg
YXJndW1lbnRDb3VudEluY2x1CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+
Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBP
cGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIGtpbmQsIENhbGxTdGFja09yaWdpbiBjYWxsU3RhY2tPcmlnaW4sIEJhc2ljQmxvY2sqIGNv
bnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50
SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktp
bmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKQEAgLTE3
NDYsMTAgKzE3NDgsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbgogICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIGNvdWxkIGRvIHRoaW5ncyBsaWtlIGFyaXR5IGZp
eHVwIHdoaWNoIGNvbXBsaWNhdGVzIE9TUiBleGl0IGF2YWlsYWJpbGl0eS4KICAgICBtX2V4aXRP
SyA9IGZhbHNlOwogCi0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBJbmxpbmVDYWxsRnJh
bWU6OkdldHRlckNhbGw6Ci0gICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OlNldHRlckNhbGw6IHsK
LSAgICAgICAgLy8gV2hlbiBpbmxpbmluZyBnZXR0ZXIgYW5kIHNldHRlciBjYWxscywgd2Ugc2V0
dXAgYSBzdGFjayBmcmFtZSB3aGljaCBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIGJ5dGVjb2RlLgor
ICAgIGlmIChjYWxsU3RhY2tPcmlnaW4gPT0gQ2FsbFN0YWNrT3JpZ2luOjpPbmx5REZHKSB7Cisg
ICAgICAgIC8vIFdoZW4gaW5saW5pbmcgZ2V0dGVyLCBzZXR0ZXIsIGFuZCBib3VuZCBmdW5jdGlv
biBjYWxscywgd2Ugc2V0dXAgYSBzdGFjayBmcmFtZSB3aGljaCBkb2VzIG5vdCBhcHBlYXIgaW4g
dGhlIGJ5dGVjb2RlLgogICAgICAgICAvLyBCZWNhdXNlIElubGluaW5nIGNhbiBzd2l0Y2ggb24g
ZXhlY3V0YWJsZSwgd2UgY291bGQgaGF2ZSBhIGdyYXBoIGxpa2UgdGhpcy4KICAgICAgICAgLy8K
ICAgICAgICAgLy8gQkIjMApAQCAtMTc4MCwxMCArMTc4MCw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxs
VmFyaWFuCiAgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5mbyhhcmd1bWVudFRv
R2V0KSwgdmFsdWUpOwogICAgICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLmFwcGVuZChEZWxheWVk
U2V0TG9jYWwgeyBjdXJyZW50Q29kZU9yaWdpbigpLCBhcmd1bWVudFRvR2V0LCB2YWx1ZSwgSW1t
ZWRpYXRlTmFrZWRTZXQgfSk7CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmIChhcml0eUZpeHVwQ291
bnQpIHsKQEAgLTE4ODEsMTUgKzE4NzcsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5l
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW4KICAg
ICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9IHNhdmVkQ3VycmVudEluc3RydWN0aW9uOwogfQogCi1C
eXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxs
VmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNB
cmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG9z
ckV4aXRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVh
dGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbFN0YWNrT3JpZ2luIGNhbGxTdGFja09yaWdpbiwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNC
bG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQogewogICAg
IFZFUkJPU0VfTE9HKCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxuIik7CiAK
ICAgICBib29sIGRpZEluc2VydENoZWNrcyA9IGZhbHNlOwotICAgIGF1dG8gaW5zZXJ0Q2hlY2tz
V2l0aEFjY291bnRpbmcgPSBbJl0gKCkgeworICAgIGJvb2wgZGlkQm91bmRGdW5jdGlvbklubGlu
aW5nID0gZmFsc2U7CisgICAgYXV0byBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZyA9IFsmXSAo
Ym9vbCBib3VuZEZ1bmN0aW9uSW5saW5pbmcgPSBmYWxzZSkgewogICAgICAgICBpZiAobmVlZHNU
b0NoZWNrQ2FsbGVlKQogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxlZSwgY2Fs
bFRhcmdldE5vZGUsIHRoaXNBcmd1bWVudCk7CiAgICAgICAgIGRpZEluc2VydENoZWNrcyA9IHRy
dWU7CisgICAgICAgIGRpZEJvdW5kRnVuY3Rpb25JbmxpbmluZyA9IGJvdW5kRnVuY3Rpb25Jbmxp
bmluZzsKICAgICB9OwogCiAgICAgaWYgKGtpbmQgPT0gSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2Fs
bCAmJiBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoY2FsbFRhcmdldE5v
ZGUsIGNhbGxlZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBp
bnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKQEAgLTE5MDUsOCArMTkwMywxMSBAQCBCeXRl
Q29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
Q2FsbFZhcmlhbnQoTm9kZSogYwogCiAgICAgYXV0byBlbmRTcGVjaWFsQ2FzZSA9IFsmXSAoKSB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7Ci0gICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOwotICAgICAgICBlbWl0QXJndW1lbnRQaGFu
dG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAg
ICAvLyBCb3VuZCBmdW5jdGlvbidzIHNsb3RzIG9mIHRoZW0gYXJlIG5vdCBpbXBvcnRhbnQuIFRo
ZXkgYXJlIGRlYWQgYXQgT1NSIGV4aXQuCisgICAgICAgIGlmICghZGlkQm91bmRGdW5jdGlvbklu
bGluaW5nKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2Rl
KTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgIH0KICAgICAgICAgaW5saW5pbmdCYWxh
bmNlLS07CiAgICAgICAgIGlmIChjb250aW51YXRpb25CbG9jaykgewogICAgICAgICAgICAgbV9j
dXJyZW50SW5kZXggPSBvc3JFeGl0SW5kZXg7CkBAIC0xOTI3LDcgKzE5MjgsNyBAQCBCeXRlQ29k
ZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bFZhcmlhbnQoTm9kZSogYwogCiAgICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5pbnRy
aW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpZiAoaW50cmluc2ljICE9IE5vSW50
cmluc2ljKSB7Ci0gICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNhbGxUYXJnZXROb2Rl
LCByZXN1bHQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAgICAg
ICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwgY2FsbGVl
LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
b3NyRXhpdEluZGV4LCBraW5kLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGlu
ZykpIHsKICAgICAgICAgICAgIGVuZFNwZWNpYWxDYXNlKCk7CiAgICAgICAgICAgICByZXR1cm4g
Q2FsbE9wdGltaXphdGlvblJlc3VsdDo6SW5saW5lZDsKICAgICAgICAgfQpAQCAtMTk1Myw3ICsx
OTU0LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKICAgICAgICAgaWYgKG5lZWRzVG9DaGVj
a0NhbGxlZSkKICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJn
ZXROb2RlLCB0aGlzQXJndW1lbnQpOwogICAgIH07Ci0gICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0
Tm9kZSwgcmVzdWx0LCBjYWxsZWUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywga2luZCwgY29udGludWF0aW9uQmxvY2ssIGluc2VydENoZWNrKTsKKyAgICBpbmxp
bmVDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHQsIGNhbGxlZSwgcmVnaXN0ZXJPZmZzZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kLCBjYWxsU3RhY2tPcmlnaW4sIGNvbnRpbnVh
dGlvbkJsb2NrLCBpbnNlcnRDaGVjayk7CiAgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5p
bmdDb3N0OwogICAgIHJldHVybiBDYWxsT3B0aW1pemF0aW9uUmVzdWx0OjpJbmxpbmVkOwogfQpA
QCAtMTk2MSw3ICsxOTYyLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1
bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3Bl
cmFuZCByZXN1bHQsCiAgICAgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBp
bnQgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIFZpcnR1
YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LAot
ICAgIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCisgICAgTm9k
ZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbFN0YWNrT3JpZ2lu
IGNhbGxTdGFja09yaWdpbikKIHsKICAgICBWRVJCT1NFX0xPRygiSGFuZGxpbmcgaW5saW5pbmcg
KFZhcmFyZ3MpLi4uXG5TdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAKQEAg
LTIwOTAsNyArMjA5MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgLy8gdGhvc2Ug
YXJndW1lbnRzLiBFdmVuIHdvcnNlLCBpZiB0aGUgaW50cmluc2ljIGRlY2lkZXMgdG8gZXhpdCwg
aXQgd29uJ3QgcmVhbGx5IGhhdmUgYW55d2hlcmUgdG8KICAgICAvLyBleGl0IHRvOiBMb2FkVmFy
YXJncyBpcyBlZmZlY3RmdWwgYW5kIGl0J3MgcGFydCBvZiB0aGUgb3BfY2FsbF92YXJhcmdzLCBz
byB3ZSBjYW4ndCBleGl0IHdpdGhvdXQKICAgICAvLyBjYWxsaW5nIExvYWRWYXJhcmdzIHR3aWNl
LgotICAgIGlubGluZUNhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwgY2FsbFZhcmlhbnQsIHJl
Z2lzdGVyT2Zmc2V0LCBtYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCwgbnVsbHB0
ciwgaW5zZXJ0Q2hlY2tzKTsKKyAgICBpbmxpbmVDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHQs
IGNhbGxWYXJpYW50LCByZWdpc3Rlck9mZnNldCwgbWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIGtpbmQsIGNhbGxTdGFja09yaWdpbiwgbnVsbHB0ciwgaW5zZXJ0Q2hlY2tzKTsKIAogCiAg
ICAgVkVSQk9TRV9MT0coIlN1Y2Nlc3NmdWwgaW5saW5pbmcgKHZhcmFyZ3MsIG1vbm9tb3JwaGlj
KS5cblN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKQEAgLTIxMTEsNyArMjEx
Miw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCBy
ZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVn
aXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLAotICAgIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBO
b2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICBCeXRlY29kZUluZGV4IG9zckV4
aXRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2Fs
bFN0YWNrT3JpZ2luIGNhbGxTdGFja09yaWdpbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
RUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVkVSQk9TRV9MT0coIkhhbmRsaW5nIGlubGluaW5n
Li4uXG5TdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAKQEAgLTIxMzAsNyAr
MjEzMSw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFr
ZVNsb3dQYXRoKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgcmV0
dXJuIGhhbmRsZUNhbGxWYXJpYW50KAogICAgICAgICAgICAgY2FsbFRhcmdldE5vZGUsIHJlc3Vs
dCwgY2FsbExpbmtTdGF0dXNbMF0sIHJlZ2lzdGVyT2Zmc2V0LCB0aGlzQXJndW1lbnQsCi0gICAg
ICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgb3NyRXhpdEluZGV4LCBraW5kLCBw
cmVkaWN0aW9uLCBpbmxpbmluZ0JhbGFuY2UsIG51bGxwdHIsIHRydWUpOworICAgICAgICAgICAg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG9zckV4aXRJbmRleCwga2luZCwgY2FsbFN0YWNr
T3JpZ2luLCBwcmVkaWN0aW9uLCBpbmxpbmluZ0JhbGFuY2UsIG51bGxwdHIsIHRydWUpOwogICAg
IH0KIAogICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBzd2l0Y2ggb3ZlciBj
YWxsZWUuIEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUgdGhhdApAQCAtMjIy
MCw3ICsyMjIxLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICAKICAgICAgICAgYXV0byBpbmxp
bmluZ1Jlc3VsdCA9IGhhbmRsZUNhbGxWYXJpYW50KAogICAgICAgICAgICAgbXlDYWxsVGFyZ2V0
Tm9kZSwgcmVzdWx0LCBjYWxsTGlua1N0YXR1c1tpXSwgcmVnaXN0ZXJPZmZzZXQsCi0gICAgICAg
ICAgICB0aGlzQXJndW1lbnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5k
ZXgsIGtpbmQsIHByZWRpY3Rpb24sCisgICAgICAgICAgICB0aGlzQXJndW1lbnQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5kZXgsIGtpbmQsIGNhbGxTdGFja09yaWdpbiwg
cHJlZGljdGlvbiwKICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZSwgY29udGludWF0aW9uQmxv
Y2ssIGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbmxpbmluZ1Jlc3VsdCA9PSBDYWxs
T3B0aW1pemF0aW9uUmVzdWx0OjpEaWROb3RoaW5nKSB7CkBAIC0yMzIyLDcgKzIzMjMsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBl
IG9wLCBpbnQgcmVnaXN0ZXJPZmZzZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxs
ZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBD
YWxsVmFyaWFudCBjYWxsVmFyaWFudCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3Ny
RXhpdEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJP
U0VfTE9HKCIgICAgICAgVGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMsICJcbiIpOwogCkBA
IC0zNzU2LDYgKzM3NTcsNzcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
Q2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICNlbmRpZgogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBCb3VuZEZ1bmN0aW9uQ2FsbEludHJpbnNpYzogeworICAg
ICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsVmFyaWFudC5mdW5jdGlvbigpOwor
ICAgICAgICAgICAgaWYgKCFmdW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0R5bmFtaWND
YXN0PEpTQm91bmRGdW5jdGlvbio+KCptX3ZtLCBmdW5jdGlvbik7CisgICAgICAgICAgICBpZiAo
IWJvdW5kRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICBpbnNlcnRDaGVja3ModHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIE1ha2UgYSBjYWxsLiBX
ZSBkb24ndCB0cnkgdG8gZ2V0IGZhbmN5IHdpdGggdXNpbmcgdGhlIHNtYWxsZXN0IG9wZXJhbmQg
bnVtYmVyIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBzdGFjayBsYXlvdXQgcGhhc2Ugc2hv
dWxkIGNvbXByZXNzIHRoZSBzdGFjayBhbnl3YXkuCisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gV2UgZG8gbm90IG92ZXJyaWRlIHRoZSBleGlzdGluZyBzdGFjayBmb3IgdGhpcyBjYWxs
LiBXZSBuZXdseSBhbGxvY2F0ZSBzdGFjayBzcGFjZSBhbmQgZmlsbCBpdCB3aXRoIHZhbHVlcwor
ICAgICAgICAgICAgLy8gdG8ga2VlcCBPU1IgZXhpdCBjb3JyZWN0IHdoZW4gd2UgZXhpdCBpbiB0
aGUgbWlkZGxlIG9mIHRoaXMgc3RhY2sgY29uc3RydWN0aW9uLiBXZSBleGl0IHRvIHRoZSBjYWxs
ZXIgc2lkZQorICAgICAgICAgICAgLy8gd2hlbiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoaXMg
ZnJhbWUuIEFuZCB0aGlzIGlzIHRvdGFsbHkgT0sgc2luY2Ugd2UgYXJlIG5vdCBjbG9iYmVyaW5n
IHZhbHVlcy4KKworICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9
IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZlBhcmFtZXRlcnMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICAgICAgICAg
IG51bWJlck9mUGFyYW1ldGVycysrOyAvLyBUcnVlIHJldHVybiBQQy4KKyAgICAgICAgICAgIG51
bWJlck9mUGFyYW1ldGVycyArPSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsK
KworICAgICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJl
c3BvbmRzIHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KKyAgICAgICAgICAgIGludCBuZXdS
ZWdpc3Rlck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkgLSAxKS5vZmZzZXQoKTsKKyAgICAg
ICAgICAgIG5ld1JlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIG5ld1JlZ2lzdGVyT2Zmc2V0IC09IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
OworCisgICAgICAgICAgICAvLyBHZXQgdGhlIGFsaWdubWVudCByaWdodC4KKyAgICAgICAgICAg
IG5ld1JlZ2lzdGVyT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpLCAtbmV3UmVnaXN0ZXJPZmZzZXQpOworCisgICAgICAgICAgICBlbnN1
cmVMb2NhbHMobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3Rlcihu
ZXdSZWdpc3Rlck9mZnNldCkpLnRvTG9jYWwoKSk7CisKKyAgICAgICAgICAgIC8vIFdlIGZpcnN0
IGVtaXQgYWxsIGFyZ3VtZW50cyBpbiB0aGUgZ3JhcGggKHNpbmNlIGl0IGNhbiBpbnZvbHZlIG5l
d2x5IGFkZGVkIGNvbnN0YW50cyksIGFuZCB0aGVuIHdlIHNldCBhbGwgb2YgdGhlbS4KKyAgICAg
ICAgICAgIC8vIE9uY2Ugb25lIG9mIHNldCBoYXMgYSBjaGVjaywgdGhlIHN1YnNlcXVlbnQgc2V0
cycgY2hlY2tzIG5lZWQgdG8gYmUgaG9pc3RlZCB0b28uIElmIHdlIGFyZSBpbnRlcmxlYXZpbmcg
anNDb25zdGFudCBhZGRpdGlvbiwKKyAgICAgICAgICAgIC8vIHRoZXNlIGNoZWNrcyBjYW4gYmUg
aG9pc3RlZCBhYm92ZSB0aGFuIHRoZSBjb25zdGFudCB3aGljaCBuZWVkcyB0byBiZSBjaGVja2Vk
LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBpZiBjaGVjayBmYWls
ZWQgaGVyZSwgd2UgZXhpdCB0byBib3VuZCBmdW5jdGlvbidzIGNhbGxlci4gU2luY2UgYm91bmQg
ZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSBzaWRlIGVmZmVjdCB1bnRpbCB3ZSBhY3R1YWxseQorICAg
ICAgICAgICAgLy8gY2FsbCB0aGUgd3JhcHBlZCBmdW5jdGlvbiwgdGhpcyBpcyBPSy4KKyAgICAg
ICAgICAgIFZlY3RvcjxOb2RlKj4gYXJndW1lbnRzOworICAgICAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChqc0NvbnN0YW50KGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpKSk7CisgICAgICAgICAg
ICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnRzLmFwcGVuZChqc0NvbnN0YW50KGJvdW5kQXJncy0+Z2V0KGluZGV4KSkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPiAxKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXggPSAxOyBpbmRleCA8
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudHMuYXBwZW5kKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBJc3N1ZSBTZXRMb2NhbHMuIFRoaXMgaGFzIHR3byBlZmZlY3RzOgorICAgICAgICAg
ICAgLy8gMSkgVGhhdCdzIGhvdyBoYW5kbGVDYWxsKCkgc2VlcyB0aGUgYXJndW1lbnRzLgorICAg
ICAgICAgICAgLy8gMikgSWYgd2UgaW5saW5lIHRoZW4gdGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFy
Z3VtZW50cyBhcmUgZmx1c2hlZCBzbyB0aGF0IGlmIHlvdSB1c2UKKyAgICAgICAgICAgIC8vICAg
IHRoZSBkcmVhZGVkIGFyZ3VtZW50cyBvYmplY3Qgb24gdGhlIGNhbGwgdGFyZ2V0LCB0aGUgcmln
aHQgdGhpbmdzIGhhcHBlbi4gV2VsbCwgc29ydCBvZiAtCisgICAgICAgICAgICAvLyAgICBzaW5j
ZSB3ZSBvbmx5IHJlYWxseSBjYXJlIGFib3V0ICd0aGlzJyBpbiB0aGlzIGNhc2UuIEJ1dCB3ZSdy
ZSBub3QgZ29pbmcgdG8gdGFrZSB0aGF0CisgICAgICAgICAgICAvLyAgICBzaG9ydGN1dC4KKyAg
ICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmd1bWVudEluZGV4ID0gMDsKKyAgICAgICAgICAg
IGZvciAoTm9kZSogYXJndW1lbnQgOiBhcmd1bWVudHMpCisgICAgICAgICAgICAgICAgc2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRl
eCsrLCBuZXdSZWdpc3Rlck9mZnNldCksIGFyZ3VtZW50LCBJbW1lZGlhdGVOYWtlZFNldCk7CisK
KyAgICAgICAgICAgIC8vIFdlJ3ZlIHNldCBzb21lIGxvY2FscywgYnV0IHRoZXkgYXJlIG5vdCB1
c2VyLXZpc2libGUgc2luY2UgdGhleSBhcmUgbmV3bHkgYWxsb2NhdGVkIGZvciB0aGlzIGlubGlu
ZWQgY2FsbC4gSXQncyBzdGlsbCBPSyB0byBleGl0IGZyb20gaGVyZS4KKyAgICAgICAgICAgIC8v
IEpTQm91bmRGdW5jdGlvbidzIHRyYW1wb2xpbmUgZG9lcyBub3QgaGF2ZSB1c2VyLXZpc2libGUg
ZWZmZWN0LiBTbyBleGl0aW5nIHRvIHRoZSBwcmUtYm91bmQgZnVuY3Rpb24gbG9jYXRpb24gaXMg
T0suCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisKKyAgICAgICAgICAgIGhhbmRsZUNhbGwocmVzdWx0LCBDYWxsLCBraW5kLCBD
YWxsU3RhY2tPcmlnaW46Ok9ubHlERkcsIG9zckV4aXRJbmRleCwganNDb25zdGFudChib3VuZEZ1
bmN0aW9uLT50YXJnZXRGdW5jdGlvbigpKSwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgbmV3UmVn
aXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzKENhbGxWYXJpYW50KGJvdW5kRnVuY3Rpb24tPnRh
cmdldEZ1bmN0aW9uKCkpKSwgcHJlZGljdGlvbik7CisgICAgICAgICAgICBkaWRTZXRSZXN1bHQg
PSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC00NzI1LDcg
KzQ3OTcsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBOb2RlKiBnZXR0ZXIgPSBhZGRUb0dyYXBoKEdldEdl
dHRlciwgbG9hZGVkVmFsdWUpOworICAgIE5vZGUqIGdldHRlciA9IG51bGxwdHI7CisgICAgaWYg
KEpTVmFsdWUgZ2V0dGVyVmFsdWUgPSBtX2dyYXBoLnRyeUdldENvbnN0YW50R2V0dGVyKGxvYWRl
ZFZhbHVlKSkKKyAgICAgICAgZ2V0dGVyID0gd2Vha0pTQ29uc3RhbnQoZ2V0dGVyVmFsdWUpOwor
ICAgIGVsc2UKKyAgICAgICAgZ2V0dGVyID0gYWRkVG9HcmFwaChHZXRHZXR0ZXIsIGxvYWRlZFZh
bHVlKTsKIAogICAgIGlmIChoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoZGVzdGluYXRpb24sIHByZWRp
Y3Rpb24sIHZhcmlhbnQsIGJhc2UsCiAgICAgICAgICAgICBbJl0gKCkgewpAQCAtNDc3Miw3ICs0
ODQ4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICBhZGRUb0dy
YXBoKEV4aXRPSyk7CiAgICAgCiAgICAgaGFuZGxlQ2FsbCgKLSAgICAgICAgZGVzdGluYXRpb24s
IENhbGwsIElubGluZUNhbGxGcmFtZTo6R2V0dGVyQ2FsbCwgb3NyRXhpdEluZGV4LAorICAgICAg
ICBkZXN0aW5hdGlvbiwgQ2FsbCwgSW5saW5lQ2FsbEZyYW1lOjpHZXR0ZXJDYWxsLCBDYWxsU3Rh
Y2tPcmlnaW46Ok9ubHlERkcsIG9zckV4aXRJbmRleCwKICAgICAgICAgZ2V0dGVyLCBudW1iZXJP
ZlBhcmFtZXRlcnMgLSAxLCByZWdpc3Rlck9mZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMo
KSwgcHJlZGljdGlvbik7CiB9CiAKQEAgLTUwOTEsNyArNTE2NywxMSBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBOb2RlKiBzZXR0ZXIgPSBhZGRUb0dyYXBoKEdldFNldHRlciwgbG9h
ZGVkVmFsdWUpOworICAgICAgICBOb2RlKiBzZXR0ZXIgPSBudWxscHRyOworICAgICAgICBpZiAo
SlNWYWx1ZSBzZXR0ZXJWYWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRTZXR0ZXIobG9hZGVk
VmFsdWUpKQorICAgICAgICAgICAgc2V0dGVyID0gd2Vha0pTQ29uc3RhbnQoc2V0dGVyVmFsdWUp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXR0ZXIgPSBhZGRUb0dyYXBoKEdldFNldHRl
ciwgbG9hZGVkVmFsdWUpOwogICAgICAgICAKICAgICAgICAgLy8gTWFrZSBhIGNhbGwuIFdlIGRv
bid0IHRyeSB0byBnZXQgZmFuY3kgd2l0aCB1c2luZyB0aGUgc21hbGxlc3Qgb3BlcmFuZCBudW1i
ZXIgYmVjYXVzZQogICAgICAgICAvLyB0aGUgc3RhY2sgbGF5b3V0IHBoYXNlIHNob3VsZCBjb21w
cmVzcyB0aGUgc3RhY2sgYW55d2F5LgpAQCAtNTEyNCw3ICs1MjA0LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwogICAg
IAogICAgICAgICBoYW5kbGVDYWxsKAotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKCksIENh
bGwsIElubGluZUNhbGxGcmFtZTo6U2V0dGVyQ2FsbCwKKyAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlcigpLCBDYWxsLCBJbmxpbmVDYWxsRnJhbWU6OlNldHRlckNhbGwsIENhbGxTdGFja09yaWdp
bjo6T25seURGRywKICAgICAgICAgICAgIG9zckV4aXRJbmRleCwgc2V0dGVyLCBudW1iZXJPZlBh
cmFtZXRlcnMgLSAxLCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgICAgICp2YXJpYW50LmNhbGxM
aW5rU3RhdHVzKCksIFNwZWNPdGhlciwgZWNtYU1vZGUpOwogICAgICAgICByZXR1cm47CkBAIC04
MTEyLDExICs4MTkyLDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfY2xvbmVkX2FyZ3Vt
ZW50cyk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0
dGVyZmx5OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseT4oKTsKKyAgICAgICAgY2FzZSBvcF9jcmVh
dGVfYXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpczogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHlFeGNsdWRpbmdUaGlzPigpOwogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5KSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJndW1l
bnRzX2J1dHRlcmZseSk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3Jh
cGgoQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgRWRnZShnZXQoYnl0ZWNv
ZGUubV90YXJnZXQpLCBDZWxsVXNlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3Jl
YXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBiNDgxOWZkNzY5
YjU4Y2Q1MmFkZDFhNTQ2ZDcwYTNhNWQ1OTQxMzk3Li45NjRhZGIxMGRjYmI0NmVjYmZmODRlNjQw
ZTdiOTY2ZjY2ZWY0NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkK
ICAgICBjYXNlIG9wX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRl
X3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czoK
LSAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5OgorICAgIGNhc2Ugb3BfY3Jl
YXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXM6CiAgICAgY2FzZSBvcF9nZXRf
ZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOgogICAgIGNhc2Ug
b3BfZ2V0X2FyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAppbmRleCBjZjAxYmNlMDUzYTNlNTc3ZGU5OTdiMDMzMzliN2IxNGM2Njg4OTIxLi5jMjQwYWEy
NjEzZjBkMTIwMWVmNDhkOGEyZDIyZDkxMTU1OTIzYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVh
dGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAg
Y2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgICAgICByZWFkKFN0YWNrKTsKICAgICAgICAgcmVh
ZChIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGNmYzIyMzAwMGE1MzJiMWMz
YjM5ODBlNTRhNTAxYTNkM2RmYWFiMDkuLmRkNTFmYTM4Yzg4MTEwZDkxYjhmZTU1OGZmZTBkNTY3
YmY2MTZhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI2
OCw3ICsyNjgsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVu
dHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNlIENhbGxFdmFsOgogICAgIGNhc2UgQ2Fs
bEZvcndhcmRWYXJhcmdzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggMzc0ZDU1MzA1ZGY4ZDg3NTAzMmUwNDc3N2JjMzIyMTlhNTUxNTgwYS4uZDA2
ZDg2NDJmNzdlZjNhYzRmNzc1MTg1MDE5OTBhNTAzZDcyODJhZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yODgwLDcgKzI4ODAsNyBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1By
aXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0
dXM6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgICAgIGNhc2UgQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5OgorICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eUV4Y2x1ZGluZ1RoaXM6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlIC8vIG5vdCBBU1NFUlRf
RU5BQkxFRAogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAppbmRleCAyNWFiOWMzMzk1MWY4ZWI5OWI1MGQxYzdlMGExNDRjODc4MmQ2ZmU5Li43MWY0
NTViNzQ3NjNkODk4N2UyNjgzMWE1Y2QxMTY2ZjllNTQ1ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTQyMCw2ICsxNDIwLDIyIEBAIEpTQXJyYXlCdWZmZXJW
aWV3KiBHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KEpTVmFsdWUgdmFsdWUsIEFycmF5TW9kZSBh
cnJheU1vZGUpCiAgICAgcmV0dXJuIHRyeUdldEZvbGRhYmxlVmlldyh2YWx1ZSk7CiB9CiAKK0pT
VmFsdWUgR3JhcGg6OnRyeUdldENvbnN0YW50R2V0dGVyKE5vZGUqIGdldHRlclNldHRlcikKK3sK
KyAgICBhdXRvKiBjZWxsID0gZ2V0dGVyU2V0dGVyLT5keW5hbWljQ2FzdENvbnN0YW50PEdldHRl
clNldHRlcio+KG1fdm0pOworICAgIGlmICghY2VsbCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICByZXR1cm4gY2VsbC0+Z2V0dGVyQ29uY3VycmVudGx5KCk7Cit9CisKK0pTVmFsdWUg
R3JhcGg6OnRyeUdldENvbnN0YW50U2V0dGVyKE5vZGUqIGdldHRlclNldHRlcikKK3sKKyAgICBh
dXRvKiBjZWxsID0gZ2V0dGVyU2V0dGVyLT5keW5hbWljQ2FzdENvbnN0YW50PEdldHRlclNldHRl
cio+KG1fdm0pOworICAgIGlmICghY2VsbCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICByZXR1cm4gY2VsbC0+c2V0dGVyQ29uY3VycmVudGx5KCk7Cit9CisKIHZvaWQgR3JhcGg6OnJl
Z2lzdGVyRnJvemVuVmFsdWVzKCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
Y29kZUJsb2NrLT5tX2xvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4
IGQyYmQ4OTdkNGY4NDVjNjg2ODU4NmRhZjJiYmM3NDkxYTM4YTE4ZDkuLjA2NWQ0NzZlOGFlNGMy
NmRjYmZiNjMxZjE3MzY1NzVjZjk1ODRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKQEAgLTk5Niw2ICs5OTYsOSBAQCBjbGFzcyBHcmFwaCBmaW5hbCA6IHB1YmxpYyB2aXJ0
dWFsIFNjYW5uYWJsZSB7CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRyeUdldEZvbGRhYmxlVmll
dyhKU1ZhbHVlKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdHJ5R2V0Rm9sZGFibGVWaWV3KEpT
VmFsdWUsIEFycmF5TW9kZSBhcnJheU1vZGUpOwogCisgICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFu
dEdldHRlcihOb2RlKiBnZXR0ZXJTZXR0ZXIpOworICAgIEpTVmFsdWUgdHJ5R2V0Q29uc3RhbnRT
ZXR0ZXIoTm9kZSogZ2V0dGVyU2V0dGVyKTsKKwogICAgIGJvb2wgY2FuRG9GYXN0U3ByZWFkKE5v
ZGUqLCBjb25zdCBBYnN0cmFjdFZhbHVlJik7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlckZyb3pl
blZhbHVlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGFm
MjY4Mjg2YzgxMDA5ZDE4MjZjYjEwYmNmNTdiNTExMGE0YTczMzkuLjdjNDlkYWE5MzI0NDY0NzQ3
ZTA0YzZiZjZmOWM3MTM5OTE3MjY2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKQEAgLTQ1MSw3ICs0NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBtYWNybyhDcmVhdGVDbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3Jv
KFBoYW50b21DbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKLSAgICBtYWNybyhDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIE5vZGVSZXN1bHRKUykgXAor
ICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKEdldEZyb21Bcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFB1dFRvQXJndW1lbnRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0
QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggZWNjOGRjODUwNTEwOWNiMzU1NDkwYzkxZmE2OTZkNmFkYTc1
YjI3OS4uOWQxOWUzNTJmOGJhZDI4NDg3YjY2Y2NhOWFkY2NkYjc0NWIwM2M1YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0ltbXV0YWJsZUJ1dHRlcmZseS5oIgpAQCAtMjA1OSwyMCArMjA2MCw0MiBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzLCBKU0NlbGwqLCAo
SlNHbG9iYWxPYmplYwogICAgICAgICBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgYXJndW1lbnRT
dGFydCwgbGVuZ3RoLCBjYWxsZWUpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3VtZW50
Q291bnQpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCwg
SlNDZWxsKiB0YXJnZXQpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBBU1NFUlQoYXJn
dW1lbnRDb3VudCA+IDEpOworCisgICAgQ2hlY2tlZEludDMyIHRvdGFsQ291bnQgPSBhcmd1bWVu
dENvdW50IC0gMTsKKyAgICBpbnQzMl90IGFkZGl0aW9uYWxDb3VudCA9IDA7CisgICAgSlNJbW11
dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IG51bGxwdHI7CisgICAgaWYgKHRhcmdldC0+aW5o
ZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBi
b3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAgICAg
IGlmIChib3VuZEZ1bmN0aW9uLT5jYW5DbG9uZUJvdW5kQXJncygpKSB7CisgICAgICAgICAgICBi
b3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAgICAgICAgIGFkZGl0
aW9uYWxDb3VudCA9IGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwOworICAgICAg
ICAgICAgdG90YWxDb3VudCArPSBhZGRpdGlvbmFsQ291bnQ7CisgICAgICAgICAgICBpZiAodG90
YWxDb3VudC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBKU0ltbXV0YWJs
ZUJ1dHRlcmZseSogYnV0dGVyZmx5ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6OnRyeUNyZWF0ZSh2
bSwgdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5n
VHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1No
YXBlc10uZ2V0KCksIGFyZ3VtZW50Q291bnQpOworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFi
bGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldy
aXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwg
dG90YWxDb3VudC51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFidXR0ZXJmbHkpIHsKICAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwg
YXJndW1lbnRDb3VudDsgKytpbmRleCkKLSAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwg
aW5kZXgsIGFyZ3VtZW50U3RhcnRbaW5kZXhdLmpzVmFsdWUoKSk7CisgICAgaWYgKGFkZGl0aW9u
YWxDb3VudCkgeworICAgICAgICBBU1NFUlQoYm91bmRBcmdzKTsKKyAgICAgICAgZm9yIChpbnQz
Ml90IGluZGV4ID0gMDsgaW5kZXggPCBhZGRpdGlvbmFsQ291bnQ7ICsraW5kZXgpCisgICAgICAg
ICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgYm91bmRBcmdzLT5nZXQoaW5kZXgp
KTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgKGFyZ3VtZW50
Q291bnQgLSAxKTsgKytpbmRleCkKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5k
ZXggKyBhZGRpdGlvbmFsQ291bnQsIGFyZ3VtZW50U3RhcnRbaW5kZXggKyAxXS5qc1ZhbHVlKCkp
OwogICAgIHJldHVybiBidXR0ZXJmbHk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKaW5kZXggNTJjZGJlODI2NjE2ZWJjNGE5MmQwNThiMDAxZWMzOGVmYzJh
M2Q0OC4uNzllNzc2ZmI0M2U2NTUyN2ExNDJlMjNkYzczNmNjMDIwNzA0YWMxMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTIxMSw3ICsyMTEsNyBAQCBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1
cmluZ0V4aXQsIEpTQ2VsbCosIChWTQogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25DcmVhdGVTY29wZWRBcmd1bWVudHMsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rp
b24qIGNhbGxlZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQsIEpTQ2VsbCos
IChWTSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCB1aW50MzJfdCBhcmd1bWVudENv
dW50KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFy
Z3VtZW50cywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIq
IGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVp
bnQzMl90IGFyZ3VtZW50Q291bnQpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgSlNDZWxsKiwgKEpTR2xv
YmFsT2JqZWN0KiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3VtZW50Q291
bnQsIEpTQ2VsbCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRl
UmVzdCwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQs
IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwLCB1bnNpZ25lZCBhcnJheVNpemUpKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIEpTQ2Vs
bCosIChWTSosIFN0cnVjdHVyZSosIEpTQ2VsbCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uU2V0QWRkLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBF
bmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAppbmRleCA5ODA1OTliMmU1NGFmN2Qw
Y2E4N2E5OWMxNjk2MDY0OTcwYTAxZTg0Li43MDRlYmU3MTE1YjhjN2QzMTdhMDIxOTFjMzkxZjk0
N2M4MTIyYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNp
c2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMTg0LDcgKzE4NCw3IEBAIGNsYXNzIFByZWNpc2VM
b2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVu
dHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIENy
ZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHk6CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoK
ICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50
b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKaW5kZXggZmU3NmQyYjZlMGY5NmYzZTI4ZmMzZDk4M2ZiMzNhYzIzMTY4NmIz
MS4uNzBlNGEwYzE2ZjI4MTVmMTRmNzcwZmE2MmQ5MDRhMzEwYmMwZWYyOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6IHsKKyAgICAgICAgY2Fz
ZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOiB7CiAgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXgg
MDdhODVkYjNkNjBjNjA4MGE4M2U2ZGE0MTg2OGJiZjRiN2NlZjZjNy4uNjliM2JjMmE3YjU4NTZk
ODk5NDAyOTcyODZiNWY3N2FiMGQ1OGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTU5Nyw3ICs1OTcsNyBAQCBib29sIHNhZmVUb0V4ZWN1
dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJv
b2wgaWdubwogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRl
U2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgIGNh
c2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2Ug
TmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZTljZDQzOTBl
NDYxYmIzZTQyNTA1MzI5MTVhNTNhYWQ0NjgzZTg3ZS4uZTUyY2FkNmVlN2I0NGQ0Y2FkYzBiYzI0
NGE0MzIxNjE3MjZmOTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTg0NzUsOCArODQ3NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgY2VsbFJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhOb2RlKiBub2Rl
KQogeworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRhcmdldCh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgR1BSUmVnIHRhcmdldEdQUiA9IHRhcmdldC5ncHIoKTsKKwogICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC04NDg2LDEyICs4NDg5LDE2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSog
bm9kZSkKICAgICAvLyBXZSBzZXQgdXAgdGhlIGFyZ3VtZW50cyBvdXJzZWx2ZXMsIGJlY2F1c2Ug
d2UgaGF2ZSB0aGUgd2hvbGUgcmVnaXN0ZXIgZmlsZSBhbmQgd2UgY2FuCiAgICAgLy8gc2V0IHRo
ZW0gdXAgZGlyZWN0bHkgaW50byB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgogCi0gICAgLy8gQXJn
dW1lbnRzOiAwOkpTR2xvYmFsT2JqZWN0KiwgMTpzdGFydCwgMzpsZW5ndGgKKyAgICAvLyBBcmd1
bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0LCAyOmxlbmd0aCwgMzp0YXJnZXQKKwor
ICAgIC8vIERvIHRoZSB0YXJnZXRHUFIgZmlyc3QsIHNpbmNlIGl0IG1pZ2h0IGFsaWFzIGFuIGFy
Z3VtZW50IHJlZ2lzdGVyLgorICAgIG1faml0LnNldHVwQXJndW1lbnQoMywgWyZdIChHUFJSZWcg
ZGVzdEdQUikgeyBtX2ppdC5tb3ZlKHRhcmdldEdQUiwgZGVzdEdQUik7IH0pOworCiAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRMZW5ndGgo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudCgxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRBcmd1bWVudFN0YXJ0KG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOwogICAgIG1faml0LnNldHVwQXJndW1lbnQo
MCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGRlc3RHUFIpOyB9KTsKIAotICAgIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCByZXN1bHRH
UFIpOworICAgIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5RXhjbHVkaW5nVGhpcywgcmVzdWx0R1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDk3MTc1MjI4ZjYyZGE3MzUw
MDIxMGVmZDJjZWNjYTk1ODJiNjgwMmQuLjY2YTQxOTA5Y2M2MDY5ZGI0NTE3NzdiMjliMTc5NzQ3
NTAwYjhkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKQEAgLTE0MTEsNyArMTQxMSw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2
b2lkIGNvbXBpbGVHZXRBcmd1bWVudChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlU2Nv
cGVkQXJndW1lbnRzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVu
dHMoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhp
cyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlUmVzdChOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU3ByZWFkKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdBcnJheShOb2RlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCAzNDI0MGU1NGU4NTdmNThhZDQ3NmE2YWYzYmVhMzJjZDdjMjE2ZDY4Li42MmQw
Zjc1NGMwMGVhMTg1MGMyMjcxMjZlOGUxMDU3ZDYwNTVkOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM5NTAs
OCArMzk1MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6
IHsKLSAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShub2RlKTsKKyAgICBj
YXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6IHsKKyAgICAgICAgY29t
cGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMzhlZTZiNGE2ZWY5MDk3NDM1YWI4ZTA5NTI5MWQwYjZl
Nzc0MTMwNS4uOTVlN2Y1ZTczODM1MTc2MWVkNjI1MmY3OTNiM2Q5MDY5ZjU3MWZjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBA
IC00OTMxLDggKzQ5MzEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5OiB7Ci0gICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkobm9kZSk7
CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOiB7CisgICAg
ICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggYjkwNjY1
ZWNjZTUyYzU3ZjQ0YjcwZDQ2N2M0YTRlNWE1ZjM3MDJlMC4uYWVmOGE5YTg5NjAwN2Y4NzgxMjM0
NzI2MTBiYzBiNzg2YTRiZjQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTM1Nyw3ICsz
NTcsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgICAgIGNh
c2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRB
cmd1bWVudHM6Ci0gICAgICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAg
ICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAg
ICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRv
ckZ1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKaW5kZXggNDBmMTExOTI3M2JkYmUxYTViOTUyMTU4ODVmOTI3NDQwZmM5MTEw
Ny4uYjQ5YzcyNDA5NWI3NDFjYTJjMmM4YTliMDA1ODZjM2E4NjMxMDkyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJE
RkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIkpTQm91
bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlICJSZWdFeHBP
YmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKQEAgLTkyNyw3ICs5MjgsOCBA
QCBjbGFzcyBTdHJlbmd0aFJlZHVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgICAgIEVk
Z2UgY2FsbGVlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApOwogICAgICAgICAgICAg
Q2FsbFZhcmlhbnQgY2FsbFZhcmlhbnQ7Ci0gICAgICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KHZtKCkpKSB7
CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RD
b25zdGFudDxKU0Z1bmN0aW9uKj4odm0oKSk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb24pIHsK
ICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAg
ICAgICAgICAgICAgICBjYWxsVmFyaWFudCA9IENhbGxWYXJpYW50KGZ1bmN0aW9uKTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2FsbGVlLT5pc0Z1bmN0aW9uQWxsb2NhdGlvbigpKSB7CkBAIC05
NDMsNyArOTQ1LDQ4IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDMzOQogICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmludHJpbnNpYygpID09IFdh
c21GdW5jdGlvbkludHJpbnNpYykKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IAorCisgICAgICAgICAgICAvLyBXZSBnYXZlIHVwIGlubGluaW5nIGEgd3JhcHBlZCBmdW5jdGlv
biwgYnV0IHN0aWxsLCB3ZSBjYW4gaW5saW5lIGJvdW5kIGZ1bmN0aW9uJ3Mgd3JhcHBlciBieSBl
eHRyYWN0aW5nIGl0LgorICAgICAgICAgICAgLy8gVGhpcyBhbHNvIHdpcGVzIGJvdW5kLWZ1bmN0
aW9uIHRodW5rIGNhbGwgd2hpY2ggaXMgc3Vib3B0aW1hbCBjb21wYXJlZCB0byBkaXJlY3RseSBj
YWxsaW5nIGEgd3JhcHBlZCBmdW5jdGlvbiBoZXJlLgorICAgICAgICAgICAgaWYgKGV4ZWN1dGFi
bGUtPmludHJpbnNpYygpID09IEJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2ljICYmIGZ1bmN0aW9u
ICYmIChtX25vZGUtPm9wKCkgPT0gQ2FsbCB8fCBtX25vZGUtPm9wKCkgPT0gVGFpbENhbGwgfHwg
bV9ub2RlLT5vcCgpID09IFRhaWxDYWxsSW5saW5lZENhbGxlcikpIHsKKyAgICAgICAgICAgICAg
ICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZnVuY3Rpb24pOworICAgICAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiB0YXJnZXRGdW5j
dGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtKCksIGJvdW5kRnVuY3Rpb24tPnRh
cmdldEZ1bmN0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHRhcmdldEV4ZWN1
dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICAgICAgICAgICAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRB
cmdzKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgoKGJvdW5kQXJncyA/IGJvdW5kQXJncy0+
bGVuZ3RoKCkgOiAwKSArIG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSkgPD0gT3B0aW9uczo6bWF4aW11
bURpcmVjdENhbGxTdGFja1NpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPih2bSgpLCB0YXJnZXRFeGVjdXRhYmxlKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIG1fcGFyYW1ldGVyU2xvdHMgYmVm
b3JlIHdlIGdldCB0byB0aGUgYmFja2VuZCwgYnV0IHdlIGRvbid0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gd2FudCB0byBkbyB0b28gbXVjaCBvZiB0aGlzLgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUFsbG9jYXRlZEFyZ3MgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSArIDE7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bUFsbG9jYXRlZEFyZ3MgPD0gT3B0aW9uczo6
bWF4aW11bURpcmVjdENhbGxTdGFja1NpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gc3RkOjptYXgobV9ncmFwaC5tX3BhcmFt
ZXRlclNsb3RzLCBHcmFwaDo6cGFyYW1ldGVyU2xvdHNGb3JBcmdDb3VudChudW1BbGxvY2F0ZWRB
cmdzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVu
ZChtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmln
aW4sIHRhcmdldEZ1bmN0aW9uKSk7IC8vIENhbGxlZS4KKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29u
c3RhbnQobV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRo
aXMoKSkpOyAvLyB8dGhpc3wKKworICAgICAgICAgICAgICAgICAgICAgICAgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3Ro
KCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2Rl
SW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBib3VuZEFyZ3MtPmdldChpbmRleCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3Qgb25l
IGlzIHxjYWxsZWV8LCBzZWNvbmQgb25lIGlzIHx0aGlzfC4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAyOyBpbmRleCA8IG1fbm9kZS0+bnVtQ2hpbGRyZW4o
KTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uYXBwZW5kKG1fZ3JhcGguY2hpbGQobV9ub2RlLCBpbmRleCkpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdChBZGphY2Vu
Y3lMaXN0OjpWYXJpYWJsZSwgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Bh
cmFtZXRlclNsb3RzID0gc3RkOjptYXgobV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzLCBHcmFwaDo6
cGFyYW1ldGVyU2xvdHNGb3JBcmdDb3VudChtX25vZGUtPm51bUNoaWxkcmVuKCkgLSAxKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMo
KS5hZGRDYWxsTGlua1N0YXR1cyhtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgQ2FsbExpbmtTdGF0
dXMoQ2FsbFZhcmlhbnQodGFyZ2V0RXhlY3V0YWJsZSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbm9kZS0+Y29udmVydFRvRGlyZWN0Q2FsbChtX2dyYXBoLmZyZWV6ZSh0YXJnZXRFeGVj
dXRhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4odm0oKSwgZXhlY3V0YWJsZSkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9ub2Rl
LT5vcCgpID09IENvbnN0cnVjdCAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxp
dHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCmluZGV4IDNkZjA0NGE4ZmYxYjU4NTJiNWVhZjNjMDRmYTk2MDhkY2ZlMDk4MmYuLjQz
OWMwZDg2NzIwN2VmZDNkNzE0NWZiYWQxNmI2MTI1YTQ3ZDA0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENy
ZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAg
ICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAg
ICAgY2FzZSBHZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCAyMDc4NjkxYjEwNGFmZjYyMDQxYjEzMzY1ZjgxZDhhM2QxYmQx
ZTcxLi5lZTU1MDEzYTNmODc5ZTAzOGRhYTNhODkxMjg4NGY5NzBlMjY0Y2EzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMTAzLDggKzEx
MDMsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToK
LSAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoKTsKKyAgICAgICAg
Y2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgorICAgICAgICAgICAg
Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICAgICAgICAgIGNvbXBp
bGVPYmplY3RDcmVhdGUoKTsKQEAgLTY4NDgsMTAgKzY4NDgsMTAgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAotICAgIHZvaWQgY29t
cGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpCisgICAgdm9pZCBjb21waWxlQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGdldEFy
Z3VtZW50c1N0YXJ0KCksIGdldEFyZ3VtZW50c0xlbmd0aCgpLnZhbHVlKTsKKyAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5RXhjbHVkaW5nVGhpcywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgZ2V0QXJndW1lbnRz
U3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUsIGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSkpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBhZWUz
NzQ0YjUyZTVlNDUyNjFlMjJmYWM2OTBkYmUwNGFlMmM1NDI2Li5mZDE3MGVjYTc4OGQ4NGJiMTA4
YjhhOGVlMTk3OTQxODBhMGM5MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJ
bnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKSVRDb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTM5NCw2ICszOTUsOCBAQCBjbGFz
cyBHZXRTdGFja1RyYWNlRnVuY3RvciB7CiAgICAgICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICAgICAgU3RhY2tGcmFtZShtX3ZtLCBtX293bmVyLCB2aXNpdG9y
LT5jYWxsZWUoKS5hc0NlbGwoKSwgdmlzaXRvci0+Y29kZUJsb2NrKCksIHZpc2l0b3ItPmJ5dGVj
b2RlSW5kZXgoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAo
dmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCktPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4obV92
bSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgIFN0
YWNrRnJhbWUobV92bSwgbV9vd25lciwgdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCkpKTsKICAg
ICAgICAgICAgIH0KQEAgLTQyMiw3ICs0MjUsMTIgQEAgdm9pZCBJbnRlcnByZXRlcjo6Z2V0U3Rh
Y2tUcmFjZShKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemUK
IAogICAgIHNpemVfdCBmcmFtZXNDb3VudCA9IDA7CiAgICAgc2l6ZV90IG1heEZyYW1lc0NvdW50
TmVlZGVkID0gbWF4U3RhY2tTaXplICsgZnJhbWVzVG9Ta2lwOwotICAgIFN0YWNrVmlzaXRvcjo6
dmlzaXQoY2FsbEZyYW1lLCB2bSwgWyZdIChTdGFja1Zpc2l0b3ImKSAtPiBTdGFja1Zpc2l0b3I6
OlN0YXR1cyB7CisgICAgU3RhY2tWaXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsIHZtLCBbJl0gKFN0
YWNrVmlzaXRvciYgdmlzaXRvcikgLT4gU3RhY2tWaXNpdG9yOjpTdGF0dXMgeworICAgICAgICBp
ZiAodmlzaXRvci0+Y2FsbGVlKCkuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIGlmICh2aXNpdG9y
LT5jYWxsZWUoKS5hc0NlbGwoKS0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPihtX3ZtKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKKyAgICAgICAgfQor
CiAgICAgICAgIGlmICgrK2ZyYW1lc0NvdW50IDwgbWF4RnJhbWVzQ291bnROZWVkZWQpCiAgICAg
ICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICAgICAgcmV0dXJuIFN0
YWNrVmlzaXRvcjo6RG9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA3NmQxYTUx
N2Q5Yzg4ZDIwOTcwMjVmODQ0NWY2OWM5ZWQ2M2NmZDNmLi5jYzZkZTRmY2VjNWU5M2Y5OTM3OTFm
YmQ2Y2FmNzc5YmRlYTkxYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zMTYs
NyArMzE2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfU0xPV19PUChjcmVhdGVfZGlyZWN0X2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX1NM
T1dfT1AoY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNy
ZWF0ZV9jbG9uZWRfYXJndW1lbnRzKQotICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfYXJn
dW1lbnRzX2J1dHRlcmZseSkKKyAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2FyZ3VtZW50
c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0
ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAg
REVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCBmYzM5OTE0YTFkNTQyNDU2MmU3OTE5ZjUxZWNkYjE1MzM4
NjJmMDQ1Li4yNTViNjQ3OGNmMDAzYTkwNjU3NmU0OTFiODkxMzdmMzIxMGQyZTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQ5LDYgKzQ5LDcg
QEAKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q1B0clRhZy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTE0NTEsNiAr
MTQ1Miw4IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCisgICAgQVNTRVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsKKwogICAgIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCA9IGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIApAQCAtMTQ2
NCwyOSArMTQ2Nyw0MCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRo
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgICAgICB9CiAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBoYW5kbGVIb3N0Q2FsbChnbG9iYWxP
YmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pKTsKICAgICB9
Ci0gICAgCi0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNh
bGxlZUFzRnVuY3Rpb25DZWxsKTsKLSAgICBKU1Njb3BlKiBzY29wZSA9IGZ1bmN0aW9uLT5zY29w
ZVVuY2hlY2tlZCgpOwotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24t
PmV4ZWN1dGFibGUoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWV4ZWN1dGFibGUtPmhhc0pJVENvZGVG
b3Ioa2luZCkpKSB7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKLSAg
ICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RB
YmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KSB7Ci0gICAgICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pKTsKLSAgICAgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQoCi0gICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4
Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRy
VGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7Ci0gICAgICAgIH0KKyAgICBhdXRvIG1hdGVyaWFs
aXplQ29kZUJsb2NrSWZOZWNlc3NhcnkgPSBbJl0oSlNGdW5jdGlvbiogZnVuY3Rpb24sIEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlKSAtPiB2b2lkKiB7CisgICAgICAgIGlmIChVTkxJS0VMWSgh
ZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvcihraW5kKSkpIHsKKyAgICAgICAgICAgIEpTU2NvcGUq
IHNjb3BlID0gZnVuY3Rpb24tPnNjb3BlVW5jaGVja2VkKCk7CisgICAgICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCi0gICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Ns
b3QgPSBjYWxsZWVGcmFtZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEV4Y2VwdGlv
biogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rp
b25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7
Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJv
cik7Ci0gICAgICAgIGlmIChVTkxJS0VMWShlcnJvcikpIHsKLSAgICAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoCi0gICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlv
bkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigp
LmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisgICAgICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBm
dW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3QpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGdsb2JhbE9i
amVjdCwgZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdm0uZ2V0Q1RJU3R1Yih0
aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0Vu
dHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBjYWxsZWVGcmFtZS0+YWRkcmVzc09m
Q29kZUJsb2NrKCk7CisgICAgICAgICAgICBFeGNlcHRpb24qIGVycm9yID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0
aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOworICAgICAgICAgICAgRVhDRVBUSU9O
X0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yKTsKKyAgICAgICAgICAgIGlm
IChVTkxJS0VMWShlcnJvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZtLmdldENUSVN0dWIo
dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNF
bnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICB9CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH07CisgICAgCisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgYXV0byBmYWls
dXJlID0gbWF0ZXJpYWxpemVDb2RlQmxvY2tJZk5lY2Vzc2FyeShmdW5jdGlvbiwgZXhlY3V0YWJs
ZSk7CisgICAgaWYgKFVOTElLRUxZKGZhaWx1cmUpKQorICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KGZhaWx1cmUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOworCisg
ICAgLy8gQ2FsbCBJQyBsaW5rcyB0aGlzIGNhbGxzaXRlIHRvIHdyYXBwZWQgZnVuY3Rpb24gZGly
ZWN0bHkuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgZGlyZWN0bHkgbGlua2VkIGZ1bmN0aW9uIGlz
IG1hdGVyaWFsaXplZCBoZXJlLgorICAgIGlmIChmdW5jdGlvbi0+aW5oZXJpdHM8SlNCb3VuZEZ1
bmN0aW9uPih2bSkgJiYganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGZ1bmN0aW9uKS0+dGFyZ2V0
RnVuY3Rpb24oKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKSB7CisgICAgICAgIGF1dG8qIHRh
cmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZnVuY3Rpb24pLT50YXJnZXRGdW5jdGlvbigpKTsKKyAgICAgICAgYXV0byBmYWlsdXJlID0g
bWF0ZXJpYWxpemVDb2RlQmxvY2tJZk5lY2Vzc2FyeSh0YXJnZXRGdW5jdGlvbiwgdGFyZ2V0RnVu
Y3Rpb24tPmV4ZWN1dGFibGUoKSk7CisgICAgICAgIGlmIChVTkxJS0VMWShmYWlsdXJlKSkKKyAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZmFpbHVyZSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgfQorCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgd2Fz
bSBJQy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIw
MzM5CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKApA
QCAtMTQ5Niw2ICsxNTEwLDEwIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZv
cldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAKIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsLCBTbG93UGF0aFJl
dHVyblR5cGUsIChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykpCiB7CisgICAgLy8gRHVyaW5nIGV4
ZWN1dGlvbiBvZiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uL2xpbmtQb2x5bW9ycGhpY0NhbGwsIHdl
IHN0cm9uZ2x5IGFzc3VtZSB0aGF0IHdlIG5ldmVyIGRvIEdDLgorICAgIC8vIEdDIGpldHRpc29u
cyBDb2RlQmxvY2tzLCBjaGFuZ2VzIENhbGxMaW5rSW5mbyBldGMuIGFuZCBicmVha3MgYXNzdW1w
dGlvbiBkb25lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjYWxsLgorICAgIERlZmVyR0NGb3JBV2hp
bGUgZGVmZXJHQ0ZvckFXaGlsZShnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKICAgICBBU1NF
UlQoY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKSA9PSBDb2RlRm9yQ2FsbCk7CiAg
ICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbDsKICAgICBTbG93UGF0aFJldHVyblR5cGUg
cmVzdWx0ID0gdmlydHVhbEZvcldpdGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1l
LCBjYWxsTGlua0luZm8sIGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKQEAgLTE1MDcsNiArMTUyNSwx
MCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2Fs
bCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbAogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uVmlydHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2Fs
bGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvKSkKIHsKKyAgICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9mIHZpcnR1YWxGb3JXaXRo
RnVuY3Rpb24vbGlua1BvbHltb3JwaGljQ2FsbCwgd2Ugc3Ryb25nbHkgYXNzdW1lIHRoYXQgd2Ug
bmV2ZXIgZG8gR0MuCisgICAgLy8gR0MgamV0dGlzb25zIENvZGVCbG9ja3MsIGNoYW5nZXMgQ2Fs
bExpbmtJbmZvIGV0Yy4gYW5kIGJyZWFrcyBhc3N1bXB0aW9uIGRvbmUgYmVmb3JlIGFuZCBhZnRl
ciB0aGlzIGNhbGwuCisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxlKGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKTsKKwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGxJ
Z25vcmVkOwogICAgIHJldHVybiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwg
Y2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDhhOTZhYmU4NWVkZWZi
YTE1NTEwOTI3NDY3ZDZhMzk5OWUxMzU0YmUuLjcxOTkwY2Q1M2EzYTM4YzI3ZTUxZmFhNzAxY2Ri
YzYzNDAyMzNjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNDks
NiArNDksNyBAQAogI2luY2x1ZGUgIkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCIKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseS5oIgpAQCAtMTIyMyw2ICsx
MjI0LDExIEBAIHZvaWQgbGlua0ZvcigKIHsKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5zdHVi
KCkpOwogCisgICAgaWYgKGNhbGxlZS0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkgJiYg
Y2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsICYmIGNhbGxM
aW5rSW5mby5hbGxvd1N0dWJzKCkpIHsKKyAgICAgICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxMaW5r
SW5mbywgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxl
ckZyYW1lKCk7CiAgICAgLy8gT3VyIGNhbGxlciBtdXN0IGhhdmUgYSBjZWxsIGZvciBhIGNhbGxl
ZS4gV2hlbiBjYWxsaW5nCiAgICAgLy8gdGhpcyBmcm9tIFdhc20sIHdlIGVuc3VyZSB0aGUgY2Fs
bGVlIGlzIGEgY2VsbC4KQEAgLTEzNDAsMTYgKzEzNDYsMTAxIEBAIHN0cnVjdCBDYWxsVG9Db2Rl
UHRyIHsKIH07CiB9IC8vIGFubm9ueW1vdXMgbmFtZXNwYWNlCiAKK3N0YXRpYyB2b2lkIGdlbmVy
YXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
Qm91bmRGdW5jdGlvbiogZnVuY3Rpb24sIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIGpp
dC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZyYW1l
LgorICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciks
IENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKKyAg
ICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKwor
ICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBmdW5jdGlvbi0+Ym91bmRBcmdz
KCk7CisgICAgdW5zaWduZWQgY2FsbFNpdGVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKyAgICB1bnNpZ25lZCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxTaXRlQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyAoYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDApOworICAgIHVuc2lnbmVk
IG51bVBhcmFtZXRlcnMgPSAwOworICAgIHVuc2lnbmVkIG51bUZpeHVwQ291bnQgPSAwOworCisg
ICAgSlNGdW5jdGlvbiogdGFyZ2V0RnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0
aW9uLT50YXJnZXRGdW5jdGlvbigpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogdGFyZ2V0RXhlY3V0
YWJsZSA9IHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgaWYgKHRhcmdldEV4ZWN1
dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICB9IGVsc2UgeworICAgICAgICBDb2RlQmxv
Y2sqIHRhcmdldENvZGVCbG9jayA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0YXJnZXRF
eGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgpOworICAgICAgICBudW1QYXJhbWV0ZXJzID0g
dGFyZ2V0Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7CisgICAgICAgIGlmIChudW1QYXJhbWV0
ZXJzID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgICAgICAgICBudW1GaXh1cENv
dW50ID0gbnVtUGFyYW1ldGVycyAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIH0K
KyAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0FmdGVyRml4dXAgPSBzdGQ6
Om1heDx1bnNpZ25lZD4oYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG51bVBhcmFtZXRlcnMp
OworCisgICAgLy8gVGhlIGZvcm11bGEgZm9yIHRoZSBudW1iZXIgb2Ygc3RhY2sgYnl0ZXMgbmVl
ZGVkIGdpdmVuIHNvbWUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKGluY2x1ZGluZworICAgIC8vIHRo
aXMpIGlzOgorICAgIC8vCisgICAgLy8gICAgIHN0YWNrQWxpZ24oKG51bVBhcmFtcyArIENhbGxG
cmFtZUhlYWRlclNpemUpICogc2l6ZW9mKFJlZ2lzdGVyKSAtIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSkKKyAgICAvLworICAgIC8vIFByb2JhYmx5IHdlIHdhbnQgdG8gd3JpdGUgdGhpcyBhczoK
KyAgICAvLworICAgIC8vICAgICBzdGFja0FsaWduKChudW1QYXJhbXMgKyAoQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSAtIENhbGxlckZyYW1lQW5kUENTaXplKSkgKiBzaXplb2YoUmVnaXN0ZXIpKQorICAg
IC8vCisgICAgLy8gVGhhdCdzIHJlYWxseSBhbGwgdGhlcmUgaXMgdG8gdGhpcy4gV2UgaGF2ZSBh
bGwgdGhlIHJlZ2lzdGVycyB3ZSBuZWVkIHRvIGRvIGl0LgorCisgICAgdW5zaWduZWQgZXh0cmFT
dGFja05lZWRlZCA9IDA7CisgICAgaWYgKHVuc2lnbmVkIHN0YWNrTWlzYWxpZ25tZW50ID0gc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpICUgc3RhY2tBbGlnbm1lbnRCeXRlcygpKQorICAgICAgICBl
eHRyYVN0YWNrTmVlZGVkID0gc3RhY2tBbGlnbm1lbnRCeXRlcygpIC0gc3RhY2tNaXNhbGlnbm1l
bnQ7CisKKyAgICB1bnNpZ25lZCBzdGFja1NpemVJblJlZ2lzdGVyc1sgPSBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgKENhbGxGcmFtZTo6aGVhZGVy
U2l6ZUluUmVnaXN0ZXJzIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzKSArIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzQWZ0ZXJGaXh1cCk7CisgICAgaml0LmFkZFB0cihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtKHN0YWNrU2l6ZUluUmVnaXN0ZXJzICogc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBleHRyYVN0YWNrTmVlZGVkKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOworICAgIGF1dG8gc3RhY2tPdmVyZmxvdyA9IGppdC5i
cmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJl
c3Modm0uYWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSksIEdQUkluZm86OnJlZ1QyKTsKKworICAg
IGppdC5tb3ZlKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xv
dChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworCisgICAgdW5z
aWduZWQgaW5kZXhJbkFyZ3VtZW50cyA9IDA7CisgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKGZ1
bmN0aW9uLT5ib3VuZFRoaXMoKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoaW5k
ZXhJbkFyZ3VtZW50cysrKSk7CisgICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2luZGV4KQor
ICAgICAgICAgICAgaml0LnN0b3JlVHJ1c3RlZFZhbHVlKGJvdW5kQXJncy0+Z2V0KGluZGV4KSwg
Q0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7Cisg
ICAgfQorCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1ZVJlZ3M6OndpdGhUd29B
dmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZvOjpyZWdUMik7CisgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IC8qIGNhbGxzaXRlJ3MgfHRoaXN8IGlzIG5vdCBpbnRlcmVzdGluZyAq
LyAxOyBpbmRleCA8IGNhbGxTaXRlQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraW5kZXgp
IHsKKyAgICAgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGluZGV4KSksIHZhbHVlUmVncyk7Cisg
ICAgICAgIGppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1
bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtRml4dXBDb3VudDsgKytpbmRleCkKKyAgICAgICAgaml0
LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6Y2FsbGVlQXJn
dW1lbnRTbG90KGluZGV4SW5Bcmd1bWVudHMrKykpOworCisgICAgaml0LnN0b3JlVHJ1c3RlZFZh
bHVlKHRhcmdldEZ1bmN0aW9uLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKTsKKyAgICBhdXRvIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKEpTRW50
cnlQdHJUYWcpOworICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZ1bmN0aW9uQ2FsbCwgRnVuY3Rpb25QdHI8
SlNFbnRyeVB0clRhZz4odGFyZ2V0RXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwo
KS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKSkpOworICAgIH0pOworCisg
ICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgaml0LnJldCgpOworCisgICAgLy8g
VGhyb3cgU3RhY2sgT3ZlcmZsb3cgZXhjZXB0aW9uCisgICAgc3RhY2tPdmVyZmxvdy5saW5rKCZq
aXQpOworICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cih2bS50b3BFbnRyeUZyYW1lKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZnVuY3Rpb24tPnNjb3BlKCkpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRo
dW5rKT4oR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxP
cGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5r
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0p
OworfQorCitzdHJ1Y3QgSW5saW5lZENhbGxlZSB7CisgICAgc2l6ZV90IGNhc2VJbmRleDsKKyAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGVudHJ5cG9pbnQ7Cit9OworCiB2b2lkIGxpbmtQb2x5bW9y
cGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDYWxsVmFyaWFudCBuZXdWYXJpYW50KQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mby5hbGxvd1N0dWJzKCkpOwogCiAgICAg
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0KLSAgICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9m
IGxpbmtQb2x5bW9ycGhpY0NhbGwsIHdlIHN0cm9uZ2x5IGFzc3VtZSB0aGF0IHdlIG5ldmVyIGRv
IEdDLgotICAgIC8vIEdDIGpldHRpc29ucyBDb2RlQmxvY2tzLCBjaGFuZ2VzIENhbGxMaW5rSW5m
byBldGMuIGFuZCBicmVha3MgYXNzdW1wdGlvbiBkb25lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBj
YWxsLgotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQ0ZvckFXaGlsZSh2bS5oZWFwKTsKKyAg
ICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwogICAgIAogICAgIGlmICghbmV3VmFyaWFu
dCkgewogICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBjYWxsTGlua0luZm8p
OwpAQCAtMTM5Miw2ICsxNDgzLDExIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAgICAgCiAg
ICAgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+IGNhbGxDYXNlczsKICAgICBWZWN0b3I8aW50
NjRfdD4gY2FzZVZhbHVlczsKKworICAgIGF1dG8gaXNMaW5rYWJsZUJvdW5kRnVuY3Rpb24gPSBb
Jl0oQ2FsbFZhcmlhbnQmIHZhcmlhbnQpIHsKKyAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSB2YXJpYW50LmZ1bmN0aW9uKCk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAmJiBmdW5jdGlv
bi0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkgJiYganNDYXN0PEpTQm91bmRGdW5jdGlv
bio+KGZ1bmN0aW9uKS0+dGFyZ2V0RnVuY3Rpb24oKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0p
ICYmICFjYWxsTGlua0luZm8uaXNWYXJhcmdzKCk7CisgICAgfTsKICAgICAKICAgICAvLyBGaWd1
cmUgb3V0IHdoYXQgb3VyIGNhc2VzIGFyZS4KICAgICBmb3IgKENhbGxWYXJpYW50IHZhcmlhbnQg
OiBsaXN0KSB7CkBAIC0xNDA1LDYgKzE1MDEsMTIgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwK
ICAgICAgICAgICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBjYWxsTGlua0lu
Zm8pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIGlmIChpc0xpbmthYmxlQm91bmRGdW5jdGlvbih2YXJpYW50KSkgeworICAgICAgICAgICAg
Ly8gV2UgbGluayB0aGUgY2FsbCB0byB0aGUgdGFyZ2V0IGZ1bmN0aW9uLCBzbyB3ZSBuZWVkIHRv
IHJldHJpZXZlIENvZGVCbG9jayBmcm9tIHRoZSB0YXJnZXQgZnVuY3Rpb24uCisgICAgICAgICAg
ICBKU0Z1bmN0aW9uKiB0YXJnZXRGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oanNDYXN0
PEpTQm91bmRGdW5jdGlvbio+KHZhcmlhbnQuZnVuY3Rpb24oKSktPnRhcmdldEZ1bmN0aW9uKCkp
OworICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIHRhcmdldEV4ZWN1dGFibGUgPSB0YXJnZXRG
dW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICAgICAgaWYgKCF0YXJnZXRFeGVjdXRhYmxl
LT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPih0YXJnZXRFeGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgp
OwogICAgICAgICB9CiAKICAgICAgICAgaW50NjRfdCBuZXdDYXNlVmFsdWUgPSAwOwpAQCAtMTUy
Myw2ICsxNjI1LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAgICAgaGFzRXhlY3V0
YWJsZS5saW5rKCZzdHViSml0KTsKICAgICB9CiAKKyAgICBWZWN0b3I8SW5saW5lZENhbGxlZT4g
aW5saW5lZENhbGxlZXM7CiAgICAgQmluYXJ5U3dpdGNoIGJpbmFyeVN3aXRjaChjb21wYXJpc29u
VmFsdWVHUFIsIGNhc2VWYWx1ZXMsIEJpbmFyeVN3aXRjaDo6SW50UHRyKTsKICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAgICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKHN0
dWJKaXQpKSB7CkBAIC0xNTM0LDcgKzE2MzcsMTQgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwK
ICAgICAgICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
dmFyaWFudC5leGVjdXRhYmxlKCktPmhhc0pJVENvZGVGb3JDYWxsKCkpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBjb2RlUHRyID0ganNUb1dhc21JQ0NvZGVQdHIodm0sIGNhbGxMaW5rSW5m
by5zcGVjaWFsaXphdGlvbktpbmQoKSwgdmFyaWFudC5mdW5jdGlvbigpKTsKKyAgICAgICAgICAg
IGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHZhcmlhbnQuZnVuY3Rpb24oKSkgeworICAgICAg
ICAgICAgICAgIGlmIChpc0xpbmthYmxlQm91bmRGdW5jdGlvbih2YXJpYW50KSkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBFbWl0IGlubGluZWQgSlNCb3VuZEZ1bmN0aW9uIGNhbGwgaWYgSlNC
b3VuZEZ1bmN0aW9uJ3MgdGFyZ2V0IGZ1bmN0aW9uIGlzIEpTRnVuY3Rpb24sIGFuZCBpdCBpcyBu
b3QgY2FsbF92YXJhcmdzCisgICAgICAgICAgICAgICAgICAgIGlubGluZWRDYWxsZWVzLmFwcGVu
ZChJbmxpbmVkQ2FsbGVlIHsgY2FzZUluZGV4LCBDQ2FsbEhlbHBlcnM6OkxhYmVsKCkgfSk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNvZGVQdHIgPSBqc1Rv
V2FzbUlDQ29kZVB0cih2bSwgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpLCBmdW5j
dGlvbik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICghY29kZVB0cikKICAgICAg
ICAgICAgICAgICBjb2RlUHRyID0gdmFyaWFudC5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENv
ZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RSZXF1aXJlZCk7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC0xNTU4LDYgKzE2NjgsMjEgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWND
YWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
YWwKICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jb2RlUHRyID0gY29kZVB0cjsKICAgICAgICAg
ZG9uZS5hcHBlbmQoc3R1YkppdC5qdW1wKCkpOwogICAgIH0KKworICAgIGZvciAoYXV0byYgaW5s
aW5lZCA6IGlubGluZWRDYWxsZWVzKSB7CisgICAgICAgIHNpemVfdCBjYXNlSW5kZXggPSBpbmxp
bmVkLmNhc2VJbmRleDsKKyAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlc1tj
YXNlSW5kZXhdLnZhcmlhbnQoKTsKKyAgICAgICAgaW5saW5lZC5lbnRyeXBvaW50ID0gc3R1Ykpp
dC5sYWJlbCgpOworCisgICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKSk7CisgICAg
ICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7Cisg
ICAgICAgIEFTU0VSVCh2YXJpYW50LmZ1bmN0aW9uKCkpOworICAgICAgICBBU1NFUlQodmFyaWFu
dC5mdW5jdGlvbigpLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSk7CisgICAgICAgIEFT
U0VSVChqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKS0+dGFyZ2V0
RnVuY3Rpb24oKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKTsKKyAgICAgICAgQVNTRVJUKCFj
YWxsTGlua0luZm8uaXNWYXJhcmdzKCkpOworCisgICAgICAgIGdlbmVyYXRlSW5saW5lZEJvdW5k
RnVuY3Rpb25DYWxsKHZtLCBzdHViSml0LCBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odmFyaWFu
dC5mdW5jdGlvbigpKSwgY2FsbEZyYW1lKTsKKyAgICB9CiAgICAgCiAgICAgc2xvd1BhdGgubGlu
aygmc3R1YkppdCk7CiAgICAgYmluYXJ5U3dpdGNoLmZhbGxUaHJvdWdoKCkubGluaygmc3R1Ykpp
dCk7CkBAIC0xNTkwLDYgKzE3MTUsOSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAg
ICBsaW5rVmlydHVhbEZvcih2bSwgY2FsbEZyYW1lLCBjYWxsTGlua0luZm8pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiBpbmxpbmVkIDogaW5saW5lZENh
bGxlZXMpCisgICAgICAgIGNhbGxzW2lubGluZWQuY2FzZUluZGV4XS5jb2RlUHRyID0gcGF0Y2hC
dWZmZXIubG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihpbmxpbmVkLmVudHJ5cG9pbnQpOwogICAg
IAogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxDYXNlcy5zaXplKCkgPT0gY2FsbHMuc2l6ZSgpKTsK
ICAgICBmb3IgKENhbGxUb0NvZGVQdHIgY2FsbFRvQ29kZVB0ciA6IGNhbGxzKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggNTFmMDNiOWMx
ZjU5MTkwZjlkOTk4NGFmY2JiMTViOTBiNWExN2NlNy4uZjgwNjUyOTIxZjE2OTU4N2ZmNmUwNDdh
NjkzOTUwY2FmODk0MTgzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcApAQCAtMTE4OSw3ICsxMTg5LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiAgICAg
YXV0byBub0FyZ3MgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUklu
Zm86OnJlZ1QyKTsKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMiwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBH
UFJJbmZvOjpyZWdUMik7CiAgICAgaml0LmFkZDMyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpy
ZWdUMSk7Ci0gICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJ
bmZvOjpyZWdUMSk7CiAgICAgbm9BcmdzLmxpbmsoJmppdCk7CiAgICAgaml0LmFkZDMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0g
Q2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzKSwgR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QyKTsKICAgICBqaXQubHNoaWZ0MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MyksIEdQUkluZm86OnJlZ1QyKTsKQEAgLTEyNDgsNyArMTI0Nyw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZt
KQogCiAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBsb29wQm91bmQgPSBqaXQubGFiZWwoKTsKICAg
ICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1Qx
KTsKLSAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJl
Z1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBKU0ltbXV0YWJs
ZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KSksIHZhbHVlUmVncyk7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkJhc2VJbmRl
eChHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6VGltZXNFaWdo
dCwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgdmFsdWVSZWdzKTsKICAg
ICBqaXQuc3RvcmVWYWx1ZSh2YWx1ZVJlZ3MsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRT
bG90KDEpLmluZGV4ZWRCeShHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0
KSk7CiAgICAgaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86
OnJlZ1QxKS5saW5rVG8obG9vcEJvdW5kLCAmaml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDg3MmI4NTcyZGQ5
M2NkOGJiOTVlN2VhNDIzNzQ0YzBlMmM1ZmYwODMuLjg1ODExYTNjYmVhMmZlY2NhYzc5ZmM3YTJl
YzQzNTc0NzE1OTc5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5ODEsNyArMTk4MSw3IEBAIG1hY3JvIHNsb3dQ
YXRoT3Aob3Bjb2RlTmFtZSkKIGVuZAogCiBzbG93UGF0aE9wKGNyZWF0ZV9jbG9uZWRfYXJndW1l
bnRzKQotc2xvd1BhdGhPcChjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKK3Nsb3dQYXRoT3Ao
Y3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpCiBzbG93UGF0aE9wKGNy
ZWF0ZV9kaXJlY3RfYXJndW1lbnRzKQogc2xvd1BhdGhPcChjcmVhdGVfbGV4aWNhbF9lbnZpcm9u
bWVudCkKIHNsb3dQYXRoT3AoY3JlYXRlX3Jlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA4MmYzZWNiMDg2M2IzZGFhMDU3
NGQ1ZDhkODQ5ZDI5ZDMwMjllOWE1Li42NzBhNGE0YTRlNWM1ZTQyNWJlYTk4NzkwZmVlNjA1NGI1
NDM3ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2Vu
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNJ
bnRlcm5hbFByb21pc2UuaCIKQEAgLTIwNiwxNiArMjA3LDM4IEBAIEpTQ19ERUZJTkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpCiAgICAgUkVUVVJO
KENsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aE1hY2hpbmVGcmFtZShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgQXJndW1lbnRzTW9kZTo6Q2xvbmVkKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpCitKU0NfREVG
SU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5
X2V4Y2x1ZGluZ190aGlzKQogewogICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseT4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcz4oKTsKKyAgICBK
U0NlbGwqIHRhcmdldCA9IEdFVChieXRlY29kZS5tX3RhcmdldCkuanNWYWx1ZSgpLmFzQ2VsbCgp
OwogICAgIGludDMyX3QgYXJndW1lbnRDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
OwotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRl
cmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5
SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBO
dW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgYXJndW1lbnRDb3VudCk7CisgICAgQVNTRVJU
KGFyZ3VtZW50Q291bnQgPiAxKTsKKworICAgIENoZWNrZWRJbnQzMiB0b3RhbENvdW50ID0gYXJn
dW1lbnRDb3VudCAtIDE7CisgICAgaW50MzJfdCBhZGRpdGlvbmFsQ291bnQgPSAwOworICAgIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBudWxscHRyOworICAgIGlmICh0YXJnZXQt
PmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKSB7CisgICAgICAgIEpTQm91bmRGdW5jdGlv
biogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0YXJnZXQpOworICAg
ICAgICBpZiAoYm91bmRGdW5jdGlvbi0+Y2FuQ2xvbmVCb3VuZEFyZ3MoKSkgeworICAgICAgICAg
ICAgYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgICAgICAgICBh
ZGRpdGlvbmFsQ291bnQgPSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsKKyAg
ICAgICAgICAgIHRvdGFsQ291bnQgKz0gYWRkaXRpb25hbENvdW50OworICAgICAgICAgICAgaWYg
KHRvdGFsQ291bnQuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICAgICAgICAgIFRIUk9XKGNyZWF0
ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6
OnRyeUNyZWF0ZSh2bSwgdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4
RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVy
T2ZJbmRleGluZ1NoYXBlc10uZ2V0KCksIHRvdGFsQ291bnQudW5zYWZlR2V0KCkpOwogICAgIGlm
ICghYnV0dGVyZmx5KQogICAgICAgICBUSFJPVyhjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGdsb2Jh
bE9iamVjdCkpOwotICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgYXJndW1lbnRD
b3VudDsgKytpbmRleCkKLSAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgsIGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaW5kZXgpKTsKKyAgICBpZiAoYWRkaXRpb25hbENv
dW50KSB7CisgICAgICAgIEFTU0VSVChib3VuZEFyZ3MpOworICAgICAgICBmb3IgKGludDMyX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGFkZGl0aW9uYWxDb3VudDsgKytpbmRleCkKKyAgICAgICAgICAg
IGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4LCBib3VuZEFyZ3MtPmdldChpbmRleCkpOwor
ICAgIH0KKyAgICBmb3IgKGludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IChhcmd1bWVudENvdW50
IC0gMSk7ICsraW5kZXgpCisgICAgICAgIGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4ICsg
YWRkaXRpb25hbENvdW50LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGluZGV4ICsgMSkp
OwogICAgIFJFVFVSTihidXR0ZXJmbHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDg0ZTJkYTVmN2FiNjhhNjI2MjQ4NWNi
OGNjNDNmODA1NzE0OGM0NzEuLjk4ODg1MTY5MGYyMDdhZTA5Y2RhODk5NDM3MTcwNGE2Y2U3ZGUw
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCkBAIC0yMTAsNyArMjEwLDcgQEAgSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFU
SChzbG93X3BhdGhfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpOwogSlNDX0RFQ0xBUkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpOwogSlNDX0RFQ0xB
UkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpOwot
SlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19i
dXR0ZXJmbHkpOworSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRl
X2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpOwogSlNDX0RFQ0xBUkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX3RoaXMpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfZW50ZXIpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChz
bG93X3BhdGhfdG9fdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCBkZGU4ZjA5YTU5N2E4OTEzZjM5ODQyYmZmNDJjYTEx
MDRlYWEyMTUyLi5kNGY3OGY0NzAyN2EyYThhMDg2OTFlZjMyZmUwOWIzYWQ1MjE1YjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
QEAgLTQxLDggKzQxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYgKGJvdW5kQXJncykgewotICAgICAgICAvLyBTdGFy
dHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgfHRoaXN8LgotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAg
ICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXQoaSkpOwogICAgIH0KICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKQEAgLTcwLDgg
KzY5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kRnVuY3Rpb25DYWxsLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEYKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7CiAgICAgaWYgKGJvdW5kQXJncykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAx
IHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgfHRoaXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5h
cHBlbmQoYm91bmRBcmdzLT5nZXQoaSkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKQEAgLTk1LDggKzkzLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2IKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7
CiAgICAgaWYgKGJvdW5kQXJncykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRo
ZSBmaXJzdCBvbmUgaXMgfHRoaXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
Ym91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91
bmRBcmdzLT5nZXQoaSkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKQEAgLTEyMyw4ICsxMjAsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNvbnN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGlm
IChib3VuZEFyZ3MpIHsKLSAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qg
b25lIGlzIHx0aGlzfC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJn
cy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5k
QXJncy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+
Z2V0KGkpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpOyArK2kpCkBAIC0yMzQsOCArMjMwLDcgQEAgSlNBcnJheSogSlNCb3Vu
ZEZ1bmN0aW9uOjpib3VuZEFyZ3NDb3B5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheSh0aGlzLT5nbG9iYWxPYmpl
Y3QoKSwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CiAgICAgaWYgKG1fYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2Ug
dGhlIGZpcnN0IG9uZSBpcyBib3VuZCB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9ib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgICAg
IHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIG1fYm91bmRBcmdzLT5nZXQoaSkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKaW5kZXgg
NGE5MGIwMjJkZDMwZjY0MDY3MzFiMGYxZGE5Mjk2YTI3N2M1YzY4Ny4uMTdhYTg0Y2ZmZTE1N2Ni
YTg2Y2Y5MmQ4YWNjNTlmNjc2OWNhZDBhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVy
Zmx5LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw2ICs0Myw4IEBAIGNsYXNzIEpTQm91
bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgJiB+SW1w
bGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKICAgICBzdGF0aWNfYXNzZXJ0KFN0cnVjdHVyZUZs
YWdzICYgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAiIik7CiAKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1heE51bWJlck9mQ2xvbmluZ0JvdW5kQXJndW1lbnRzID0gNjQ7CisKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CkBAIC01Miw5ICs1NSwx
NiBAQCBjbGFzcyBKU0JvdW5kRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAg
ICAgCiAgICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOwogCisgICAgLy8gSWYgYm91bmRBcmdzJyBsZW5ndGggaXMgdG9v
IGxhcmdlLCB3ZSBzaG91bGQgbm90IGNsb25lIGJvdW5kQXJncyB3aGVuIHdyYXBwaW5nIHRoZSBi
b3VuZCBmdW5jdGlvbiBhZ2Fpbi4KKyAgICBib29sIGNhbkNsb25lQm91bmRBcmdzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBib3VuZEFyZ3NMZW5ndGgoKSA8PSBKU0JvdW5kRnVuY3Rp
b246Om1heE51bWJlck9mQ2xvbmluZ0JvdW5kQXJndW1lbnRzOworICAgIH0KKwogICAgIEpTT2Jq
ZWN0KiB0YXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIG1fdGFyZ2V0RnVuY3Rpb24uZ2V0KCk7IH0K
ICAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9CiAg
ICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncygpIHsgcmV0dXJuIG1fYm91bmRBcmdz
LmdldCgpOyB9IC8vIERPIE5PVCBhbGxvdyB0aGlzIGFycmF5IHRvIGJlIG11dGF0ZWQhCisgICAg
dW5zaWduZWQgYm91bmRBcmdzTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEFyZ3MgPyBt
X2JvdW5kQXJncy0+bGVuZ3RoKCkgOiAwOyB9CiAgICAgSlNBcnJheSogYm91bmRBcmdzQ29weShK
U0dsb2JhbE9iamVjdCopOwogICAgIEpTU3RyaW5nKiBuYW1lTWF5QmVOdWxsKCkgeyByZXR1cm4g
bV9uYW1lTWF5QmVOdWxsLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lU3RyaW5nKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApp
bmRleCAwYTYxNjcxM2U2ZGM2Y2Q1ZWE3OThlZWM0NmQxYTU0NmM3YWUzMmE4Li4xNTJhZDg1ZjM1
MTFmMTdiYTRiZjE5NzIwYjQ0ZTM2YjEwZjdmYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMDAsMTAgKzMwMCwyMiBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obWFrZUJvdW5kRnVuY3Rpb24sIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBKU1ZhbHVlIGJvdW5kVGhpcyA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgSlNWYWx1ZSBib3VuZEFyZ3Mg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOworICAgIEpTSW1tdXRhYmxlQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSBib3VuZEFyZ3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNJbW11dGFibGVC
dXR0ZXJmbHkqPihib3VuZEFyZ3MpIDogbnVsbHB0cjsKICAgICBkb3VibGUgbGVuZ3RoID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgzKS5hc051bWJlcigpOwogICAgIEpTU3RyaW5nKiBu
YW1lU3RyaW5nID0gYXNTdHJpbmcoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCg0KSk7CiAK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGJvdW5kVGhpcywgYm91bmRB
cmdzLmlzQ2VsbCgpID8ganNDYXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oYm91bmRBcmdzKSA6
IG51bGxwdHIsIGxlbmd0aCwgbmFtZVN0cmluZykpKTsKKyAgICAvLyBVbndyYXAgSlNCb3VuZEZ1
bmN0aW9uIGJ5IGNvbmZpZ3VyaW5nIGJ1dHRlcmZseSBhbmQgdGFyZ2V0LiBUaGUgbGFyZ2VyIEJ1
dHRlcmZseSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBmb3IgdGhhdCBwdXJwb3NlLgorICAgIGlmICh0
YXJnZXQtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKSB7CisgICAgICAgIEpTQm91bmRG
dW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0YXJnZXQp
OworICAgICAgICBpZiAoYm91bmRGdW5jdGlvbi0+Y2FuQ2xvbmVCb3VuZEFyZ3MoKSkgeworICAg
ICAgICAgICAgYm91bmRUaGlzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCk7CisgICAgICAg
ICAgICB0YXJnZXQgPSBib3VuZEZ1bmN0aW9uLT50YXJnZXRGdW5jdGlvbigpOworICAgICAgICAg
ICAgaWYgKCFidXR0ZXJmbHkgJiYgYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCkpCisgICAgICAg
ICAgICAgICAgYnV0dGVyZmx5ID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGJvdW5k
VGhpcywgYnV0dGVyZmx5LCBsZW5ndGgsIG5hbWVTdHJpbmcpKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihoYXNPd25MZW5ndGhQcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBkZWU5Zjg0OTlkNjk4ZTA2MzI4MDM1ZTUzMWU3OGI3
OWExYjYxNDI3Li44MDJhM2MzOGQ1ZmE0MzI0MGIzZTcxNjE1Yjg3M2IzNzM1YzQ3MDFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0yMDA4LDYgKzIw
MDgsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblVzZUpJVCk7
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbklzR2lnYWNhZ2VFbmFi
bGVkKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVG9VbmNhY2hl
YWJsZURpY3Rpb25hcnkpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25Jc1ByaXZhdGVTeW1ib2wpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25Bc3NlcnRGcmFtZUFsaWduZWQpOwogCiBjb25zdCBDbGFzc0luZm8gSlNEb2xsYXJWTTo6
c19pbmZvID0geyAiRG9sbGFyVk0iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTRG9sbGFyVk0pIH07CiAKQEAgLTM1NzYsNiArMzU3NywxMyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wsIChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGFzU3ltYm9sKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpLT51aWQoKS5pc1ByaXZhdGUo
KSkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Bc3NlcnRGcmFtZUFs
aWduZWQsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworICAgIFJFTEVBU0VfQVNTRVJUKGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxGcmFtZSkgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkgPT0g
MCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogY29u
c3RleHByIHVuc2lnbmVkIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMgPSBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZTsKIAogdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCkBAIC0zNzMwLDYgKzM3MzgsOCBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIAogICAgIGFkZEZ1bmN0aW9uKHZtLCAiaXNQcml2YXRlU3ltYm9sIiwg
ZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wsIDEpOwogCisgICAgYWRkRnVuY3Rpb24odm0sICJhc3Nl
cnRGcmFtZUFsaWduZWQiLCBmdW5jdGlvbkFzc2VydEZyYW1lQWxpZ25lZCwgMCk7CisKICAgICBt
X29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xv
dFN0YXR1czo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBlYjcxMjUxY2IxNDY4ZDlkMjUwZmExNGM1OGUxYTc4YWE1MGJhZjFlLi40MTNm
NTlmN2JlODczMmRiOWUzNmFmMGI1NGZmNzY5NTc5YTZmNjU1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjEtMDUtMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlvbiBjYWxscworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZnVuY3Rpb24tYmluZC1l
eHBlY3RlZC50eHQ6CisKIDIwMjEtMDUtMDMgIFJvYmVydCBKZW5uZXIgIDxqZW5uZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFsgbWFjT1MvaU9TIERlYnVnIF0gaHR0cC93cHQvY3J5cHRvL3Vud3Jh
cC1yc2Eta2V5LWNyYXNoLmFueS5odG1sIChsYXlvdXQtdGVzdCkgaXMgYSBmbGFreSBjcmFzaApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CmluZGV4IDJj
OTgxMDQ1NTI2NWMzOGU0M2UyODI2YWNkZjg3NjczNWJhZWRhOTYuLjM0ODkzNTVlYzY1MzY0NGY5
NDBkZjhmNWY2N2IwMTE0ZDM1YWQxNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9m
dW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rp
b24tYmluZC1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBAIFRlc3RzIEZ1bmN0aW9uLmJpbmQu
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBuZXcgKGRlY29kZVVSSS5iaW5k
KCkpKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3Ry
dWN0b3IgKGV2YWx1YXRpbmcgJ25ldyAoZGVjb2RlVVJJLmJpbmQoKSkoKScpLgorUEFTUyBuZXcg
KGRlY29kZVVSSS5iaW5kKCkpKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rpb24g
aXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ2RlY29kZVVSSScpLgogUEFTUyAobmV3
IChTdHJpbmcuYmluZCgpKSgnZm9vJykpLnRvU3RyaW5nKCkgaXMgJ2ZvbycKIFBBU1MgcmVzdWx0
IGlzICJbb2JqZWN0IFdpbmRvd10gLT4geDoxLCB5OjIiCiBQQVNTIHJlc3VsdCBpcyAiJ2EnIC0+
IHg6J2InLCB5OjEiCkBAIC0yNSw3ICsyNSw3IEBAIFBBU1MgInByb3RvdHlwZSIgaW4gRyBpcyBm
YWxzZQogUEFTUyAicHJvdG90eXBlIiBpbiBIIGlzIGZhbHNlCiBQQVNTIEZ1bmN0aW9uLmJpbmQu
Y2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHx0aGlzfCBpcyBub3Qg
YSBmdW5jdGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuCiBQQVNTIGFiY0F0KDEp
IGlzICJiIgotUEFTUyBuZXcgYWJjQXQoMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVu
Y3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBhYmNBdCgxKScpLgor
UEFTUyBuZXcgYWJjQXQoMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogZnVuY3Rpb24gaXMg
bm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ2FiY0F0JykuCiBQQVNTIGJvdW5kRnVuY3Rp
b25Qcm90b3R5cGVBY2Nlc3NlZCBpcyBmYWxzZQogUEFTUyBGdW5jdGlvbi5iaW5kLmxlbmd0aCBp
cyAxCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5N2FmNjFhM2NmNDY3Y2EzNjY4
NjUwNzQ2MTAwZjZhYjc5M2JkZmMuLmI4ZWUzZGE1Y2ZhODExNjBlZTEyOTVkMDY3NDQwMzFiZGE0
OTZhZDcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjEtMDUtMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlvbiBjYWxs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJl
c3MvYm91bmQtZnVuY3Rpb24taW5saW5pbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0KToKKyAgICAgICAgKiBzdHJlc3MvYm91bmQt
ZnVuY3Rpb24tc3RhY2stb3ZlcmZsb3cuanM6CisgICAgICAgICogc3RyZXNzL2JvdW5kLWZ1bmN0
aW9uLXN0cmVuZ3RoLXJlZHVjdGlvbi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKHQxKToKKyAgICAgICAgKHQyKToKKyAgICAgICAgKiBz
dHJlc3MvZnVuY3Rpb24tYmluZC1jYWxsLWZyYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAodGVzdDEpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGxl
ci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChpbmxpbmVkKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5vdC1taXNz
LWFscmVhZHktYm91bmQtYXJncy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10
aHJvdy1tb3JlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRocm93
YWJsZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJl
c3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgICh0aHJvd2FibGUpOgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZ2V0dGVyLWNhbGwtb3Ny
LWV4aXQuanM6IEFkZGVkLgorICAgICAgICAoYmFyKToKKyAgICAgICAgKGZvbyk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9zci1leGl0
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKG1heUV4aXQpOgorICAg
ICAgICAoaW5saW5lZCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rp
b24tYmluZC1zZXR0ZXItY2FsbC1vc3ItZXhpdC5qczogQWRkZWQuCisgICAgICAgIChiYXIpOgor
ICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlv
bi1iaW5kLXRhaWwtY2FsbC1vc3ItZXhpdC5qczogQWRkZWQuCisgICAgICAgIChiYXIpOgorICAg
ICAgICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1i
aW5kLXRocm93LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRocm93
YWJsZSk6CisgICAgICAgIChpbm5lcik6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGNhdGNo
KToKKyAgICAgICAgKiBzdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXItYm91bmQtZnVuY3Rpb24tbmFt
ZS5qczoKKyAgICAgICAgKHBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyKToKKyAgICAg
ICAgKiBzdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4tY3VzdG9tLWhhc0luc3RhbmNlLmpzOgorCiAy
MDIxLTA1LTAzICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dBU00tRnVuY3Rpb24tUmVmZXJlbmNlc10gQWRkIGNhbGxfcmVmIGluc3RydWN0
aW9uCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1pbmxpbmluZy5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLWlubGluaW5nLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdjNTA1YjFmZTcyMjM5ZTZiY2ZkNzIwOWI1MzAzMGI4MGRjMWNiMmYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1pbmxpbmluZy5qcwpAQCAtMCwwICsx
LDE3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKSB7CisgICAgcmV0dXJuIGEg
KyBiICsgYzsKK30KKwordmFyIGJvdW5kID0gdGVzdC5iaW5kKDAsIDEpOworCitmdW5jdGlvbiB0
KCkgeworICAgIHJldHVybiBib3VuZCgyLCAzLCA0KTsKK30KK25vSW5saW5lKHQpOworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0KCksIDYpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RhY2stb3ZlcmZsb3cuanMgYi9KU1Rl
c3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdGFjay1vdmVyZmxvdy5qcwppbmRleCBmMTgyMmUx
ZWE2OWI1NjU4YmI0N2Q4MDhjMDZjZjRkOTc4Y2MxNzdhLi44MmFiZTMxMGIxYmM3ZGJjMDEwMGE3
MWE0MGRkNGRmZWQxMGFmOWE1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5j
dGlvbi1zdGFjay1vdmVyZmxvdy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlv
bi1zdGFjay1vdmVyZmxvdy5qcwpAQCAtOCw4ICs4LDggQEAgZnVuY3Rpb24gZm9vKCkKIHsKIH0K
IAotZm9yICh2YXIgaSA9IDA7IGkgPCA1MDAwOyArK2kpIHsKLSAgICBmb28gPSBmb28uYmluZCgx
KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgNjAwMDsgKytpKSB7CisgICAgZm9vID0gZm9vLmJpbmQo
dW5kZWZpbmVkLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEpOwogICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShmb28sICJuYW1lIiwgeyB2YWx1ZTogImJhciIsIHdyaXRhYmxlOiB0
cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RyZW5ndGgtcmVkdWN0aW9uLmpzIGIv
SlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24tc3RyZW5ndGgtcmVkdWN0aW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUzMzc4NmQyZWJmOWE1OWQ4MTNkM2NiMjU1NDJiMDE2MTZmM2M4N2YKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdHJlbmd0aC1yZWR1Y3Rp
b24uanMKQEAgLTAsMCArMSwyNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykg
eworICAgIHJldHVybiBhICsgYiArIGM7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIGJvdW5k
ID0gdGVzdC5iaW5kKDAsIDEpOworbm9JbmxpbmUoYm91bmQpOworCitmdW5jdGlvbiB0MSgpIHsK
KyAgICByZXR1cm4gYm91bmQoMiwgMywgNCk7Cit9Citub0lubGluZSh0MSk7CisKK2Z1bmN0aW9u
IHQyKCkgeworICAgIHJldHVybiBib3VuZCgnaGVsbG8nKTsKK30KK25vSW5saW5lKHQyKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHNob3VsZEJlKHQxKCksIDYpOwor
ICAgIHNob3VsZEJlKHQyKCksICIxaGVsbG91bmRlZmluZWQiKTsKK30KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtY2FsbC1mcmFtZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L2Z1bmN0aW9uLWJpbmQtY2FsbC1mcmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDdiOGIyMDU3YzNjYzUw
MmJmYmJhZWEwZmQyYTNiNmJkNzlhNGIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZnVuY3Rpb24tYmluZC1jYWxsLWZyYW1lLmpzCkBAIC0wLDAgKzEsMTYgQEAKK2Z1bmN0aW9u
IHRlc3QoYSwgYiwgYykKK3sKKyAgICAkdm0uYXNzZXJ0RnJhbWVBbGlnbmVkKCk7CisgICAgcmV0
dXJuIGEgKyBiICsgYzsKK30KKworeworICAgIHZhciBib3VuZCA9IHRlc3QuYmluZCh1bmRlZmlu
ZWQsIDAsIDEsIDIpOworICAgIGZ1bmN0aW9uIHRlc3QxKCkgeworICAgICAgICByZXR1cm4gYm91
bmQoKTsKKyAgICB9CisgICAgbm9JbmxpbmUodGVzdDEpOworCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgdGVzdDEoKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2Z1bmN0aW9uLWJpbmQtY2FsbGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24t
YmluZC1jYWxsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM4ZTlmZTIzNDAwYjk1NmUzMDBkM2JhMWJhNmFm
NzBjZWJkZTMxMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJp
bmQtY2FsbGVyLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBpbmxpbmVk
KGEsIGIsIGMpCit7CisgICAgc2hvdWxkQmUoaW5saW5lZC5jYWxsZXIsIHRlc3QpOworfQorCit2
YXIgYm91bmQgPSBpbmxpbmVkLmJpbmQodW5kZWZpbmVkLCAzKS5iaW5kKHVuZGVmaW5lZCwgMSwg
Mik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJldHVybiBib3VuZCgpOworfQorbm9Jbmxp
bmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgdGVzdCgpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kby1ub3QtbWlzcy1hbHJl
YWR5LWJvdW5kLWFyZ3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5vdC1t
aXNzLWFscmVhZHktYm91bmQtYXJncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjU3OGYwZDQ1NGFkZWU1ZDUx
ZWI5Mjg4ZjMzMGZhYjE4ZjdmYjEzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
ZnVuY3Rpb24tYmluZC1kby1ub3QtbWlzcy1hbHJlYWR5LWJvdW5kLWFyZ3MuanMKQEAgLTAsMCAr
MSwxNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYykKK3sKKyAgICByZXR1cm4g
YSArIGIgKyBjOworfQordmFyIGJvdW5kMSA9IHRlc3QuYmluZCh1bmRlZmluZWQsIDAsIDEsIDIp
OwordmFyIGJvdW5kMiA9IGJvdW5kMS5iaW5kKHVuZGVmaW5lZCk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUoYm91bmQyKCksIDMpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy1tb3JlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy1tb3JlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE5NmFiNDEyMDM5ZDRiY2ExNDQxZmFjZDYxMGYwYzk1OTNlYzFkYjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRo
cm93LW1vcmUuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7
CitmdW5jdGlvbiB0aHJvd2FibGUoKQoreworICAgIGlmIChmbGFnKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoKTsKK30KK25vSW5saW5lKHRocm93YWJsZSk7CisKK2Z1bmN0aW9uIHRlc3QoYSwg
YikKK3sKKyAgICB0aHJvd2FibGUoKTsKKyAgICByZXR1cm4gYSArIGI7Cit9CisKK3ZhciBib3Vu
ZCA9IHRlc3QuYmluZCh1bmRlZmluZWQsIDEsIDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7
ICsraSkKKyAgICB2YXIgYm91bmQgPSBib3VuZC5iaW5kKHVuZGVmaW5lZCk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUoYm91bmQoKSwgMyk7CitmbGFnID0g
dHJ1ZTsKK3ZhciBlcnJvciA9IG51bGw7Cit0cnkgeworICAgIGJvdW5kKCk7Cit9IGNhdGNoIChl
KSB7CisgICAgZXJyb3IgPSBlOworfQorc2hvdWxkQmUoZXJyb3IgIT09IG51bGwsIHRydWUpOwor
c2hvdWxkQmUoZXJyb3Iuc3RhY2sudHJpbSgpLnNwbGl0KCdcbicpLmxlbmd0aCwgMyk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJvdy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NzU1ZGI0Yzk0MmYwOWRlNDI3MjE3NTQ2YmE0NDg4YzAzMjBhNjJiCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1kb3VibGUtd3JhcC10aHJv
dy5qcwpAQCAtMCwwICsxLDMyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGZsYWcgPSBmYWxzZTsKK2Z1bmN0
aW9uIHRocm93YWJsZSgpCit7CisgICAgaWYgKGZsYWcpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigpOworfQorbm9JbmxpbmUodGhyb3dhYmxlKTsKKworZnVuY3Rpb24gdGVzdChhLCBiKQorewor
ICAgIHRocm93YWJsZSgpOworICAgIHJldHVybiBhICsgYjsKK30KK3ZhciBib3VuZDEgPSB0ZXN0
LmJpbmQodW5kZWZpbmVkLCAxKTsKK3ZhciBib3VuZDIgPSBib3VuZDEuYmluZCh1bmRlZmluZWQs
IDIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKGJvdW5k
MigpLCAzKTsKK2ZsYWcgPSB0cnVlOwordmFyIGVycm9yID0gbnVsbDsKK3RyeSB7CisgICAgYm91
bmQyKCk7Cit9IGNhdGNoIChlKSB7CisgICAgZXJyb3IgPSBlOworfQorc2hvdWxkQmUoZXJyb3Ig
IT09IG51bGwsIHRydWUpOworc2hvdWxkQmUoZXJyb3Iuc3RhY2sudHJpbSgpLnNwbGl0KCdcbicp
Lmxlbmd0aCwgMyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWdl
dHRlci1jYWxsLW9zci1leGl0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1nZXR0
ZXItY2FsbC1vc3ItZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGUxNTk2MDg1MzNkZmNiOTNiOTI1OTBl
NTQ4NjNhZjUyMGNjZmQyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rp
b24tYmluZC1nZXR0ZXItY2FsbC1vc3ItZXhpdC5qcwpAQCAtMCwwICsxLDQ0IEBACitteU9iaiA9
IHsKKyAgICB2YWw6IDEKK30KKworZnVuY3Rpb24gYmFyKGEsIGlkeCkKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICBpZiAoaWR4ID09IDk5MDApCisgICAgICAgIG15T2JqLmRmZ09TUiA9ICJU
ZXN0IjsKKworICAgIGlmIChpZHggPT0gMTk5OTAwKQorICAgICAgICBteU9iai5mdGxPU1IgPSAi
VGVzdCI7CisKKyAgICByZXR1cm4gbXlPYmoudmFsICsgYTsKK30KKwordmFyIGNvdW50ZXIgPSAw
OworZnVuY3Rpb24gZm9vKGEpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuIGJh
cihhLCBjb3VudGVyKyspOworfQorCitib3VuZEZvbyA9IGZvby5iaW5kKG51bGwsIDQxKTsKKwor
dmFyIG9iamVjdCA9IHt9OworT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ2dldHRlcics
IHsKKyAgICBnZXQ6IGJvdW5kRm9vLAorfSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMjAwMDAwOyBpKyspIHsKKyAgICAgICAgZ290ID0gb2JqZWN0Lmdl
dHRlcjsKKyAgICAgICAgaWYgKGdvdCAhPSA0MikKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZ1
bmN0aW9uIHJldHVybmVkICIgKyBnb3QgKyAiIGJ1dCBleHBlY3RlZCA0MiEiKTsKKyAgICB9Cit9
CisKK25vSW5saW5lKHRlc3QpOworCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9mdW5jdGlvbi1iaW5kLWlubGluZWQtb3NyLWV4aXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5j
dGlvbi1iaW5kLWlubGluZWQtb3NyLWV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThhY2E1MGExNWRiNzNh
MDVkNWI5Y2EzMzY0MDc4YjZlOTNlZDQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2Z1bmN0aW9uLWJpbmQtaW5saW5lZC1vc3ItZXhpdC5qcwpAQCAtMCwwICsxLDMyIEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKK30KKwordmFyIGZsYWcgPSBmYWxzZTsKK2Z1bmN0aW9uIG1heUV4aXQoKQoreworICAgIGlm
IChmbGFnKSB7CisgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgcmV0dXJuIDI0OworICAgIH0K
KyAgICByZXR1cm4gNDI7Cit9CisKK2Z1bmN0aW9uIGlubGluZWQoYSwgYiwgYykKK3sKKyAgICBy
ZXR1cm4gYSArIGIgKyBjICsgbWF5RXhpdCgpOworfQorCit2YXIgYm91bmQgPSBpbmxpbmVkLmJp
bmQodW5kZWZpbmVkLCAxLCAyLCAzKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmV0dXJu
IGJvdW5kKCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7
ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCksIDQ4KTsKK2ZsYWcgPSB0cnVlOworc2hvdWxkQmUo
dGVzdCgpLCAzMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXNl
dHRlci1jYWxsLW9zci1leGl0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1zZXR0
ZXItY2FsbC1vc3ItZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTM2MjEzZWNkMDYzOWM1NTJmMjg5MDli
MDEyYjEyYmIwYmQ0MGNmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rp
b24tYmluZC1zZXR0ZXItY2FsbC1vc3ItZXhpdC5qcwpAQCAtMCwwICsxLDQ1IEBACitteU9iaiA9
IHsKKyAgICB2YWw6IDEKK30KKwordmFyIHJlc3VsdCA9IDA7CitmdW5jdGlvbiBiYXIoYSwgaWR4
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChpZHggPT0gOTkwMCkKKyAgICAgICAg
bXlPYmouZGZnT1NSID0gIlRlc3QiOworCisgICAgaWYgKGlkeCA9PSAxOTk5MDApCisgICAgICAg
IG15T2JqLmZ0bE9TUiA9ICJUZXN0IjsKKworICAgIHJldHVybiBteU9iai52YWwgKyBhOworfQor
Cit2YXIgY291bnRlciA9IDA7CitmdW5jdGlvbiBmb28oYSkKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICByZXN1bHQgPSBiYXIoYSwgY291bnRlcisrKTsKK30KKworYm91bmRGb28gPSBmb28u
YmluZChudWxsLCA0MSk7CisKK3ZhciBvYmplY3QgPSB7fTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0
eShvYmplY3QsICdzZXR0ZXInLCB7CisgICAgc2V0OiBib3VuZEZvbywKK30pOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwMDAwMDsgaSsrKSB7CisgICAg
ICAgIG9iamVjdC5zZXR0ZXIgPSBpOworICAgICAgICBpZiAocmVzdWx0ICE9IDQyKQorICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiRnVuY3Rpb24gcmV0dXJuZWQgIiArIGdvdCArICIgYnV0IGV4cGVj
dGVkIDQyISIpOworICAgIH0KK30KKworbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGFpbC1jYWxsLW9zci1leGl0Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC10YWlsLWNhbGwtb3NyLWV4aXQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTViMjA5YTIzZTA5ZTM5MGMzZjY4YzEyZDE3MzBjZDI1NDI3NDY0ZAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGFpbC1jYWxsLW9zci1l
eGl0LmpzCkBAIC0wLDAgKzEsMzggQEAKK215T2JqID0geworICAgIHZhbDogMQorfQorCitmdW5j
dGlvbiBiYXIoYSwgaWR4KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChpZHggPT0g
OTkwMCkKKyAgICAgICAgbXlPYmouZGZnT1NSID0gIlRlc3QiOworCisgICAgaWYgKGlkeCA9PSAx
OTk5MDApCisgICAgICAgIG15T2JqLmZ0bE9TUiA9ICJUZXN0IjsKKworICAgIHJldHVybiBteU9i
ai52YWwgKyBhOworfQorCitmdW5jdGlvbiBmb28oYSwgaWR4KQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIHJldHVybiBiYXIoYSwgaWR4KTsKK30KKworYm91bmRGb28gPSBmb28uYmluZChu
dWxsLCA0MSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MjAwMDAwOyBpKyspIHsKKyAgICAgICAgZ290ID0gYm91bmRGb28oaSk7CisgICAgICAgIGlmIChn
b3QgIT0gNDIpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJGdW5jdGlvbiByZXR1cm5lZCAiICsg
Z290ICsgIiBidXQgZXhwZWN0ZWQgNDIhIik7CisgICAgfQorfQorCitub0lubGluZSh0ZXN0KTsK
KwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC10aHJv
dy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGhyb3cuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTUzZjZmZTk5OTU1OTdmY2RkMDk5ZmQyOGFhYTA1ZmQwNjZlYjM1NwotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtdGhyb3cuanMKQEAgLTAsMCArMSwzNiBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK3ZhciBmbGFnID0gZmFsc2U7CitmdW5jdGlvbiB0aHJvd2FibGUoKQorewor
ICAgIGlmIChmbGFnKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImV4cGVjdGVkIik7Cit9Citu
b0lubGluZSh0aHJvd2FibGUpOworCitmdW5jdGlvbiBpbm5lcigpCit7CisgICAgdGhyb3dhYmxl
KCk7Cit9Cit2YXIgYm91bmQgPSBpbm5lci5iaW5kKDEsIDIsIDMpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBib3VuZCgpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU2OyArK2kpCisgICAgdGVzdCgpOworCit2YXIgbGVuZ3RoID0gMDsKK3RyeSB7Cisg
ICAgZmxhZyA9IHRydWU7CisgICAgdGVzdCgpOworfSBjYXRjaCAoZXJyb3IpIHsKKyAgICBsZW5n
dGggPSBlcnJvci5zdGFjay50cmltKCkuc3BsaXQoJ1xuJykubGVuZ3RoOworfQorc2hvdWxkQmUo
bGVuZ3RoLCA0KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NhbXBsaW5nLXByb2ZpbGVy
LWJvdW5kLWZ1bmN0aW9uLW5hbWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxl
ci1ib3VuZC1mdW5jdGlvbi1uYW1lLmpzCmluZGV4IGYzNzc2Mjk4OTU4NTY1ZDkwN2NiMzU2MGM2
YTczMzkzYTA3YjYzZmEuLjkzM2E3NDQ1OWMxN2E0OWQ2ZjVjYjQ3ZjY3MzFmNDBhN2Y1YWVkMTcg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3NhbXBsaW5nLXByb2ZpbGVyLWJvdW5kLWZ1bmN0
aW9uLW5hbWUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXItYm91bmQt
ZnVuY3Rpb24tbmFtZS5qcwpAQCAtMjMsNiArMjMsNiBAQCBmdW5jdGlvbiBiYXIoKSB7CiAgICAg
ICAgIGJvdW5kQmFyKCk7CiAgICAgfQogCi0gICAgcnVuVGVzdChiYXosIFsiZm9vIiwgImJvdW5k
IGZvbyIsICJiYXoiXSk7Ci0gICAgcnVuVGVzdChiYXosIFsiYmFyIiwgImJvdW5kIGJhciIsICJi
YXoiXSk7CisgICAgcnVuVGVzdChiYXosIFsiZm9vIiwgImJheiJdKTsKKyAgICBydW5UZXN0KGJh
eiwgWyJiYXIiLCAiYmF6Il0pOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RhY2st
b3ZlcmZsb3ctaW4tY3VzdG9tLWhhc0luc3RhbmNlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RhY2st
b3ZlcmZsb3ctaW4tY3VzdG9tLWhhc0luc3RhbmNlLmpzCmluZGV4IGMxZTJlYjA2NDcyY2Y4ZTA5
MTA5NzE3NTBhZDdhYTNlZGNkMzc3ZWUuLmM5OGQzMTZhZDUxMTY0Mzc5MWM4YTc5NDI1NGYwMTlj
OTE0NjhhMzAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93LWluLWN1
c3RvbS1oYXNJbnN0YW5jZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy1p
bi1jdXN0b20taGFzSW5zdGFuY2UuanMKQEAgLTQsNyArNCw3IEBAIGZ1bmN0aW9uIGYoKSB7fQog
CiB2YXIgZm4gPSBmOwogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewotICAgIGZu
ID0gZm4uYmluZCgpOworICAgIGZuID0gZm4uYmluZCh1bmRlZmluZWQsIDAsIDEsIDIsIDMsIDQs
IDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2KTsKIAogICAgIC8vIEVu
c3VyZSB3ZSBkb24ndCBmYWxsYmFjayB0byBAQGhhc0luc3RhbmNlIGZyb20gJUZ1bmN0aW9uUHJv
dG90eXBlJS4KICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIFN5bWJvbC5oYXNJbnN0YW5j
ZSwgewo=
</data>
<flag name="commit-queue"
          id="448999"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428163</attachid>
            <date>2021-05-10 03:12:47 -0700</date>
            <delta_ts>2021-05-10 10:42:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225135-20210510031246.patch</filename>
            <type>text/plain</type>
            <size>108931</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YjkxZmE4YWVkYjkzYmIzN2I3MTNkODZlYzRkMjIxMjA0MTliMTRkLi43Yzk0NDdhZTdmNzM5NzJj
ZDVjNGM5MjNkYzRkNTQ4YzNmZWVjMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMjEtMDUtMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBib3VuZCBmdW5jdGlvbiBjYWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBvcHRp
bWl6ZXMgRnVuY3Rpb24jYmluZC4KKworICAgICAgICAxLiBGdW5jdGlvbiNiaW5kIGJvdW5kQXJn
cyBkbyBub3QgaW5jbHVkZSB8dGhpc3wsIHdoaWNoIGlzIGR1cGxpY2F0ZWQgaW4gYm91bmRUaGlz
IGZpZWxkLgorICAgICAgICAyLiBGdW5jdGlvbiNiaW5kIHVud3JhcHMgZnVuY3Rpb24gd2hlbiBi
aW5kaW5nIHRoZSBib3VuZCBmdW5jdGlvbi4gV2Uga2VlcCBkZXB0aCBvZiBib3VuZCAxLgorICAg
ICAgICAzLiBDYWxsSUMgbm93IGlubGluZXMgYm91bmQgZnVuY3Rpb24gaWYgaXQgaXMgbm90IGEg
Y2xvc3VyZSBjYWxsLgorICAgICAgICA0LiBERkcgLyBGVEwgYXR0ZW1wdCB0byBpbmxpbmUgd3Jh
cHBlZCBmdW5jdGlvbiBpZiBpdCBmaWd1cmVkIG91dCB0aGF0IGJvdW5kIGZ1bmN0aW9uIGlzIGNh
bGxlZC4KKyAgICAgICAgNS4gREZHIC8gRlRMIGF0dGVtcHQgdG8gc3ByZWFkIGJvdW5kIGFyZ3Vt
ZW50cyBldmVuIGlmIHdlIGRlY2lkZWQgbm90IHRvIGlubGluZSBhIGZ1bmN0aW9uLgorICAgICAg
ICA2LiBBZGQgZWFnZXIgY29uc3RhbnQgZm9sZGluZyBjb2RlIG9mIEdldEdldHRlciAvIEdldFNl
dHRlciBpbiBERkc6OkJ5dGVDb2RlUGFyc2VyIHRvIGVuY291cmFnZSBnZXR0ZXIgLyBzZXR0ZXIg
aW5saW5pbmcgZm9yIGJvdW5kIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGJ1aWx0aW5zL0Z1bmN0
aW9uUHJvdG90eXBlLmpzOgorICAgICAgICAoYmluZCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19jcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHkpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZn
L0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkdyYXBoOjp0cnlHZXRDb25zdGFudEdldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OnRyeUdldENvbnN0YW50U2V0dGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAg
ICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0
b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNl
OjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkpOiBEZWxldGVkLgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0
U3RhY2tUcmFjZUZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6Z2V0U3RhY2tUcmFjZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvUmVw
YXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZUlubGluZWRCb3VuZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhp
Y0NhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlND
Ojpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OmJvdW5kQXJnc0NvcHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICog
dG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKKwogMjAy
MS0wNS0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3Rv
cmUgcHJlLXIyNzY4NzkgYmVoYXZpb3IgZm9yIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoKSBhbmQg
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4IGFmMjlhZmQ4MzU2
Y2FmOWI3ZTk4ZjRiNjY3OTFhNDNhNTc0NDU5YWEuLjZiMjUzOTkwMTA3NzQ1ZmJlOWExNzFjYmMy
ZjJmMjhkMDBmNjcyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9GdW5jdGlvblByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTYxLDggKzYxLDcgQEAgZnVuY3Rpb24gYmluZCh0
aGlzVmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHRhcmdldCA9IHRoaXM7
Ci0gICAgaWYgKCFAaXNDYWxsYWJsZSh0YXJnZXQpKQorICAgIGlmICghQGlzQ2FsbGFibGUodGhp
cykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBhIGZ1bmN0aW9uIGlu
c2lkZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCIpOwogCiAgICAgdmFyIGFyZ3VtZW50Q291bnQg
PSBAYXJndW1lbnRDb3VudCgpOwpAQCAtNzAsMTIgKzY5LDEyIEBAIGZ1bmN0aW9uIGJpbmQodGhp
c1ZhbHVlKQogICAgIHZhciBudW1Cb3VuZEFyZ3MgPSAwOwogICAgIGlmIChhcmd1bWVudENvdW50
ID4gMSkgewogICAgICAgICBudW1Cb3VuZEFyZ3MgPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICAg
ICAgYm91bmRBcmdzID0gQGNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOworICAgICAgICBib3Vu
ZEFyZ3MgPSBAY3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KHRoaXMpOwogICAgIH0KIAogICAgIHZh
ciBsZW5ndGggPSAwOwotICAgIGlmIChAaGFzT3duTGVuZ3RoUHJvcGVydHkodGFyZ2V0KSkgewot
ICAgICAgICB2YXIgbGVuZ3RoVmFsdWUgPSB0YXJnZXQubGVuZ3RoOworICAgIGlmIChAaGFzT3du
TGVuZ3RoUHJvcGVydHkodGhpcykpIHsKKyAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0gdGhpcy5s
ZW5ndGg7CiAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsdWUgPT09ICJudW1iZXIiKSB7CiAg
ICAgICAgICAgICBsZW5ndGhWYWx1ZSA9IEB0b0ludGVnZXJPckluZmluaXR5KGxlbmd0aFZhbHVl
KTsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IGNhcmUgYWJvdXQgcG9zaXRpdmUg
bGVuZ3RoVmFsdWVzLCBob3dldmVyLCB0aGlzIGNvbXBhcmlzaW9uCkBAIC04NSw5ICs4NCw5IEBA
IGZ1bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgdmFyIG5h
bWUgPSB0YXJnZXQubmFtZTsKKyAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICBpZiAodHlw
ZW9mIG5hbWUgIT09ICJzdHJpbmciKQogICAgICAgICBuYW1lID0gIiI7CiAKLSAgICByZXR1cm4g
QG1ha2VCb3VuZEZ1bmN0aW9uKHRhcmdldCwgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0aCwg
bmFtZSk7CisgICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0aGlzLCB0aGlzVmFsdWUsIGJv
dW5kQXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDE2NDEwMWZlY2UwNDI2YTAwMmZmNWE0N2ExYzAy
NGI4OTQ2NjQ0M2MuLjU0ZTJiYTdiOWZkZWUyOGIwNDVlYjFkNjhlZGNjZWUzMWQ5MDJjYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAt
MTExLDkgKzExMSwxMCBAQAogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAK
LW9wIDpjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSwKK29wIDpjcmVhdGVfYXJndW1lbnRzX2J1
dHRlcmZseV9leGNsdWRpbmdfdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICB0YXJnZXQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKIG9w
IDpjcmVhdGVfdGhpcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDAxNmEwMjdmYTMzYWI3OTQ5NDMxMmE0YTQ3N2RmYzViMmU3
YTAwZDcuLjk0MzIwZTZlNDc5Y2EwY2MzYmZkZWY0MzkyYWViNGZiZjY4MjNhM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAt
OTIsNyArOTIsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVh
bFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfcHJvZmls
ZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAg
ICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfY3JlYXRlX2Fy
Z3VtZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2Fz
ZSBvcF9jaGVja190cmFwczoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKQEAgLTEwMyw2ICsx
MDIsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lz
dGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgog
ICAgICAgICByZXR1cm47CiAKKyAgICBVU0VTKE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhj
bHVkaW5nVGhpcywgdGFyZ2V0KQogICAgIFVTRVMoT3BUb1RoaXMsIHNyY0RzdCkKICAgICBVU0VT
KE9wQ2hlY2tUZHosIHRhcmdldFZpcnR1YWxSZWdpc3RlcikKICAgICBVU0VTKE9wSWRlbnRpdHlX
aXRoUHJvZmlsZSwgc3JjRHN0KQpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1CiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMo
T3BDcmVhdGVTY29wZWRBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlQ2xvbmVkQXJn
dW1lbnRzLCBkc3QpCi0gICAgREVGUyhPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgZHN0KQor
ICAgIERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzLCBkc3QpCiAg
ICAgREVGUyhPcERlbEJ5SWQsIGRzdCkKICAgICBERUZTKE9wRGVsQnlWYWwsIGRzdCkKICAgICBE
RUZTKE9wVW5zaWduZWQsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNThlNTBkYTA5MjFiMjA5
ZjllYmVmZjJhYmRmM2IzM2VmZDU1YmQ4Yi4uNzkzNTEwZDY5YTQyOTcyZDQ4NDhmNmZkOWMwNTBl
MTQ5MTk4ZTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4NzMsOSArMjg3Myw5IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXN5bmNHZW5lcmF0b3IoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoUmVnaXN0ZXJJRCog
ZHN0KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHlFeGNsdWRpbmdUaGlzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdGFyZ2V0
RnVuY3Rpb24pCiB7Ci0gICAgT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6OmVtaXQodGhpcywg
ZHN0KTsKKyAgICBPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6OmVtaXQo
dGhpcywgZHN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IGU1MTFkYzI3NTU1ZGU1Yjg4NDQ3ZTMzM2Y5ZTE2NjI1YTg1NjI2MWMuLmU5ZDVm
YTg4ZjBlZmEwMmQ4ZjQyODY0NzRiYWM3MTFjYmIyNzc3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc2
MSw3ICs3NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENy
ZWF0ZVByb21pc2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wg
aXNJbnRlcm5hbFByb21pc2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJh
dG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdENyZWF0ZUFzeW5jR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogbmV3VGFyZ2V0KTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseShSZWdpc3RlcklEKiBkc3QpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3Jl
YXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHRhcmdldEZ1bmN0aW9uKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNl
RmllbGRJbml0aWFsaXphdGlvbklmTmVlZGVkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
Y29uc3RydWN0b3IsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAg
ICAgIHZvaWQgZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAgIGJvb2wg
bmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDNjYmQxMjA5OWU4NWIw
YjQyNjIwODBhNDNhMzVkZTgxZjJiZDU3YjkuLjU5M2MyNzRlMTdmMzNhOGIzNDJlY2FmZGY0MGQy
YjE4OTA0ODE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE5MzMsOCArMTkzMywxMCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX25ld1Byb21pc2UoSlNDOjpCeXRl
Y29kZUdlbmVyYQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2NyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIEpTQzo6UmVnaXN0ZXJJRCogZHN0KQogewotICAgIEFTU0VSVCghbV9hcmdzLT5t
X2xpc3ROb2RlKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHkoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7CisgICAgQXJndW1lbnRMaXN0
Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dGFyZ2V0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9u
ZXh0KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlF
eGNsdWRpbmdUaGlzKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHRhcmdldC5nZXQo
KSk7CiB9CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5U
X0dFTkVSQVRPUlMobmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGZhOWQ5ZmEwYmJmYjA2
ZGI2ZDYyMDEyNzVjZmM2NjM0MTEwOWI5OTYuLjI2YjM1MzhiMjY0NGE4ZjQ0OTJiYTYxMmU4ZDQw
MjU2YTVkMTI5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMyMzAsNyArMzIzMCw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1bWVu
dHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdU
aGlzOgogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG1fdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3Ry
dWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENv
bnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uZ2V0KCkpOwogICAgICAgICBicmVh
azsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCBmN2VlNDZiNDZhYWQzMGEyN2JmNmIzNmVhMjQ3MjI5YjViY2EzZDRkLi4xN2Q5MGVh
ZTk5ZDU1MzljNmM3NDBjYTMxNjYzN2I5OGY2NDViYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2lu
Y2x1ZGUgIkluQnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkluc3RhbmNlT2ZTdGF0dXMuaCIKICNp
bmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHku
aCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgpAQCAtMTc3LDggKzE3OCw5IEBAIGNs
YXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB2b2lkIGFkZEp1bXBUbyh1bnNpZ25lZCBieXRlY29k
ZUluZGV4KTsKICAgICAvLyBIYW5kbGUgY2FsbHMuIFRoaXMgcmVzb2x2ZXMgaXNzdWVzIHN1cnJv
dW5kaW5nIGlubGluaW5nIGFuZCBpbnRyaW5zaWNzLgogICAgIGVudW0gVGVybWluYWxpdHkgeyBU
ZXJtaW5hbCwgTm9uVGVybWluYWwgfTsKKyAgICBlbnVtIGNsYXNzIENhbGxTdGFja09yaWdpbiB7
IEJ5dGVjb2RlLCBPbmx5REZHIH07CiAgICAgVGVybWluYWxpdHkgaGFuZGxlQ2FsbCgKLSAgICAg
ICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIEJ5
dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LAorICAgICAgICBPcGVyYW5kIHJlc3VsdCwgTm9kZVR5
cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbFN0YWNrT3JpZ2luLCBCeXRlY29kZUlu
ZGV4IG9zckV4aXRJbmRleCwKICAgICAgICAgTm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzLAog
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBFQ01BTW9kZSA9IEVDTUFNb2RlOjpz
dHJpY3QoKSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTkyLDE2ICsxOTQs
MTYgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIGJvb2wgaGFuZGxlUmVjdXJzaXZlVGFp
bENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29uc3QgQ2hlY2tzRnVuY3RvciYg
ZW1pdEZ1bmN0aW9uQ2hlY2tJZk5lZWRlZCk7CiAgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENh
bGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFt
ZTo6S2luZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5k
aWRhdGUuIEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAv
LyBIYW5kbGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYg
d2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBoYW5kbGVWYXJhcmdzSW5saW5pbmco
Tm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBDYWxsTGlua1N0YXR1
cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmly
dHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQs
IE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKKyAgICBib29sIGhhbmRs
ZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIGNv
bnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
dGhpc0FyZ3VtZW50LCBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVk
IGFyZ3VtZW50c09mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IENhbGxTdGFja09yaWdpbik7CiAgICAgdW5zaWduZWQgZ2V0SW5saW5pbmdCYWxhbmNlKGNvbnN0
IENhbGxMaW5rU3RhdHVzJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgZW51bSBjbGFz
cyBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IHsgT3B0aW1pemVkVG9KdW1wLCBJbmxpbmVkLCBEaWRO
b3RoaW5nIH07Ci0gICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFyaWFudChO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIElubGluZUNhbGxG
cmFtZTo6S2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5n
QmFsYW5jZSwgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNr
Q2FsbGVlKTsKLSAgICBDYWxsT3B0aW1pemF0aW9uUmVzdWx0IGhhbmRsZUlubGluaW5nKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIE5vZGVU
eXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCBFQ01BTW9kZSk7CisgICAgQ2FsbE9wdGltaXphdGlvblJlc3VsdCBoYW5kbGVDYWxsVmFy
aWFudChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCwgQ2FsbFN0YWNrT3JpZ2luLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uLCB1bnNpZ25lZCYgaW5saW5pbmdCYWxhbmNlLCBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25C
bG9jaywgYm9vbCBuZWVkc1RvQ2hlY2tDYWxsZWUpOworICAgIENhbGxPcHRpbWl6YXRpb25SZXN1
bHQgaGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBj
b25zdCBDYWxsTGlua1N0YXR1cyYsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVy
IHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUlu
ZGV4IG9zckV4aXRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
IENhbGxTdGFja09yaWdpbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgRUNNQU1vZGUpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgdm9pZCBpbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQsIGludCBy
ZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBJbmxpbmVDYWxs
RnJhbWU6OktpbmQsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NG
dW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBD
YWxsU3RhY2tPcmlnaW4sIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVuY3Rp
b25zLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8gcGxh
bnQgYSBjYWxsLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJp
bnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFu
ZCByZXN1bHQsIENhbGxWYXJpYW50LCBJbnRyaW5zaWMsIGludCByZWdpc3Rlck9mZnNldCwgaW50
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRleCwg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBD
aGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNr
c0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFu
ZCByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KQEAgLTEzMzYsNyArMTMzOCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpU
ZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiog
cGMsIE5vCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJhbWU6
OmtpbmRGb3IoY2FsbE1vZGUpOwogICAgIEFTU0VSVChvc3JFeGl0SW5kZXgpOwogCi0gICAgcmV0
dXJuIGhhbmRsZUNhbGwoZGVzdGluYXRpb25Gb3IoYnl0ZWNvZGUsIG1fY3VycmVudEluZGV4LmNo
ZWNrcG9pbnQoKSwgSklUVHlwZTo6REZHSklUKSwgb3AsIGtpbmQsIG9zckV4aXRJbmRleCwgY2Fs
bFRhcmdldCwKKyAgICByZXR1cm4gaGFuZGxlQ2FsbChkZXN0aW5hdGlvbkZvcihieXRlY29kZSwg
bV9jdXJyZW50SW5kZXguY2hlY2twb2ludCgpLCBKSVRUeXBlOjpERkdKSVQpLCBvcCwga2luZCwg
Q2FsbFN0YWNrT3JpZ2luOjpCeXRlY29kZSwgb3NyRXhpdEluZGV4LCBjYWxsVGFyZ2V0LAogICAg
ICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgbV9jdXJyZW50SW5k
ZXguY2hlY2twb2ludCgpKSwgcmVnaXN0ZXJPZmZzZXQsIGNhbGxMaW5rU3RhdHVzLCBnZXRQcmVk
aWN0aW9uKCkpOwogfQogCkBAIC0xMzQ3LDcgKzEzNDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpyZWZpbmVTdGF0aWNhbGx5KENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywgTm9kZSog
Y2FsbAogfQogCiBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUNhbGwoCi0gICAgT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJh
bWU6OktpbmQga2luZCwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsCisgICAgT3BlcmFuZCBy
ZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbFN0YWNr
T3JpZ2luIGNhbGxTdGFja09yaWdpbiwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZXgsCiAgICAg
Tm9kZSogY2FsbFRhcmdldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIEVDTUFNb2RlIGVjbWFNb2RlKQogewpAQCAtMTM2NCw3ICsxMzY2
LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
YWxsKAogCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMCwgcmVnaXN0ZXJPZmZzZXQpOwogICAgICAg
ICBhdXRvIG9wdGltaXphdGlvblJlc3VsdCA9IGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJl
c3VsdCwgY2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCB0aGlzQXJndW1lbnQsCi0gICAg
ICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgb3NyRXhpdEluZGV4LCBvcCwga2lu
ZCwgcHJlZGljdGlvbiwgZWNtYU1vZGUpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIG9zckV4aXRJbmRleCwgb3AsIGtpbmQsIGNhbGxTdGFja09yaWdpbiwgcHJlZGlj
dGlvbiwgZWNtYU1vZGUpOwogICAgICAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IENhbGxP
cHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZFRvSnVtcCkKICAgICAgICAgICAgIHJldHVybiBU
ZXJtaW5hbDsKICAgICAgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBDYWxsT3B0aW1pemF0
aW9uUmVzdWx0OjpJbmxpbmVkKSB7CkBAIC0xNDA1LDcgKzE0MDcsNyBAQCBCeXRlQ29kZVBhcnNl
cjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKGNvbnN0IElu
c3RydWN0aW9uKgogICAgICAgICBpZiAoaGFuZGxlVmFyYXJnc0lubGluaW5nKGNhbGxUYXJnZXQs
IGJ5dGVjb2RlLm1fZHN0LAogICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMsIGZpcnN0RnJlZVJl
ZywgYnl0ZWNvZGUubV90aGlzVmFsdWUsIGJ5dGVjb2RlLm1fYXJndW1lbnRzLAogICAgICAgICAg
ICAgZmlyc3RWYXJBcmdPZmZzZXQsIG9wLAotICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lOjp2
YXJhcmdzS2luZEZvcihjYWxsTW9kZSkpKSB7CisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6
OnZhcmFyZ3NLaW5kRm9yKGNhbGxNb2RlKSwgQ2FsbFN0YWNrT3JpZ2luOjpCeXRlY29kZSkpIHsK
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZENhbGwoKTsKICAg
ICAgICAgICAgIHJldHVybiBOb25UZXJtaW5hbDsKQEAgLTE2NjUsNyArMTY2Nyw3IEBAIHVuc2ln
bmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQg
YXJndW1lbnRDb3VudEluY2x1CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+
Ci12b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBP
cGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQs
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIGtpbmQsIENhbGxTdGFja09yaWdpbiBjYWxsU3RhY2tPcmlnaW4sIEJhc2ljQmxvY2sqIGNv
bnRpbnVhdGlvbkJsb2NrLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50
SW5zdHJ1Y3Rpb247CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktp
bmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKQEAgLTE3
NDYsMTAgKzE3NDgsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBPcGVyYW5kIHJlc3VsdCwgQ2FsbFZhcmlhbgogICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIGNvdWxkIGRvIHRoaW5ncyBsaWtlIGFyaXR5IGZp
eHVwIHdoaWNoIGNvbXBsaWNhdGVzIE9TUiBleGl0IGF2YWlsYWJpbGl0eS4KICAgICBtX2V4aXRP
SyA9IGZhbHNlOwogCi0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBJbmxpbmVDYWxsRnJh
bWU6OkdldHRlckNhbGw6Ci0gICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OlNldHRlckNhbGw6IHsK
LSAgICAgICAgLy8gV2hlbiBpbmxpbmluZyBnZXR0ZXIgYW5kIHNldHRlciBjYWxscywgd2Ugc2V0
dXAgYSBzdGFjayBmcmFtZSB3aGljaCBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIGJ5dGVjb2RlLgor
ICAgIGlmIChjYWxsU3RhY2tPcmlnaW4gPT0gQ2FsbFN0YWNrT3JpZ2luOjpPbmx5REZHKSB7Cisg
ICAgICAgIC8vIFdoZW4gaW5saW5pbmcgZ2V0dGVyLCBzZXR0ZXIsIGFuZCBib3VuZCBmdW5jdGlv
biBjYWxscywgd2Ugc2V0dXAgYSBzdGFjayBmcmFtZSB3aGljaCBkb2VzIG5vdCBhcHBlYXIgaW4g
dGhlIGJ5dGVjb2RlLgogICAgICAgICAvLyBCZWNhdXNlIElubGluaW5nIGNhbiBzd2l0Y2ggb24g
ZXhlY3V0YWJsZSwgd2UgY291bGQgaGF2ZSBhIGdyYXBoIGxpa2UgdGhpcy4KICAgICAgICAgLy8K
ICAgICAgICAgLy8gQkIjMApAQCAtMTc4MCwxMCArMTc4MCw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxs
VmFyaWFuCiAgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5mbyhhcmd1bWVudFRv
R2V0KSwgdmFsdWUpOwogICAgICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLmFwcGVuZChEZWxheWVk
U2V0TG9jYWwgeyBjdXJyZW50Q29kZU9yaWdpbigpLCBhcmd1bWVudFRvR2V0LCB2YWx1ZSwgSW1t
ZWRpYXRlTmFrZWRTZXQgfSk7CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmIChhcml0eUZpeHVwQ291
bnQpIHsKQEAgLTE4ODEsMTUgKzE4NzcsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5l
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW4KICAg
ICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9IHNhdmVkQ3VycmVudEluc3RydWN0aW9uOwogfQogCi1C
eXRlQ29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ2FsbFZhcmlhbnQoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9wZXJhbmQgcmVzdWx0LCBDYWxs
VmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNB
cmd1bWVudCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBCeXRlY29kZUluZGV4IG9z
ckV4aXRJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmluZ0JhbGFuY2UsIEJhc2ljQmxvY2sqIGNvbnRpbnVh
dGlvbkJsb2NrLCBib29sIG5lZWRzVG9DaGVja0NhbGxlZSkKK0J5dGVDb2RlUGFyc2VyOjpDYWxs
T3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsVmFyaWFudChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBJbmxpbmVD
YWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbFN0YWNrT3JpZ2luIGNhbGxTdGFja09yaWdpbiwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSwgQmFzaWNC
bG9jayogY29udGludWF0aW9uQmxvY2ssIGJvb2wgbmVlZHNUb0NoZWNrQ2FsbGVlKQogewogICAg
IFZFUkJPU0VfTE9HKCIgICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxuIik7CiAK
ICAgICBib29sIGRpZEluc2VydENoZWNrcyA9IGZhbHNlOwotICAgIGF1dG8gaW5zZXJ0Q2hlY2tz
V2l0aEFjY291bnRpbmcgPSBbJl0gKCkgeworICAgIGJvb2wgZGlkQm91bmRGdW5jdGlvbklubGlu
aW5nID0gZmFsc2U7CisgICAgYXV0byBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZyA9IFsmXSAo
Ym9vbCBib3VuZEZ1bmN0aW9uSW5saW5pbmcgPSBmYWxzZSkgewogICAgICAgICBpZiAobmVlZHNU
b0NoZWNrQ2FsbGVlKQogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNhbGxlZSwgY2Fs
bFRhcmdldE5vZGUsIHRoaXNBcmd1bWVudCk7CiAgICAgICAgIGRpZEluc2VydENoZWNrcyA9IHRy
dWU7CisgICAgICAgIGRpZEJvdW5kRnVuY3Rpb25JbmxpbmluZyA9IGJvdW5kRnVuY3Rpb25Jbmxp
bmluZzsKICAgICB9OwogCiAgICAgaWYgKGtpbmQgPT0gSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2Fs
bCAmJiBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoY2FsbFRhcmdldE5v
ZGUsIGNhbGxlZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBp
bnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKQEAgLTE5MDUsOCArMTkwMywxMSBAQCBCeXRl
Q29kZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
Q2FsbFZhcmlhbnQoTm9kZSogYwogCiAgICAgYXV0byBlbmRTcGVjaWFsQ2FzZSA9IFsmXSAoKSB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7Ci0gICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOwotICAgICAgICBlbWl0QXJndW1lbnRQaGFu
dG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAg
ICAvLyBCb3VuZCBmdW5jdGlvbidzIHNsb3RzIG9mIHRoZW0gYXJlIG5vdCBpbXBvcnRhbnQuIFRo
ZXkgYXJlIGRlYWQgYXQgT1NSIGV4aXQuCisgICAgICAgIGlmICghZGlkQm91bmRGdW5jdGlvbklu
bGluaW5nKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2Rl
KTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgIH0KICAgICAgICAgaW5saW5pbmdCYWxh
bmNlLS07CiAgICAgICAgIGlmIChjb250aW51YXRpb25CbG9jaykgewogICAgICAgICAgICAgbV9j
dXJyZW50SW5kZXggPSBvc3JFeGl0SW5kZXg7CkBAIC0xOTI3LDcgKzE5MjgsNyBAQCBCeXRlQ29k
ZVBhcnNlcjo6Q2FsbE9wdGltaXphdGlvblJlc3VsdCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bFZhcmlhbnQoTm9kZSogYwogCiAgICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5pbnRy
aW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpZiAoaW50cmluc2ljICE9IE5vSW50
cmluc2ljKSB7Ci0gICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNhbGxUYXJnZXROb2Rl
LCByZXN1bHQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAgICAg
ICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwgY2FsbGVl
LCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
b3NyRXhpdEluZGV4LCBraW5kLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGlu
ZykpIHsKICAgICAgICAgICAgIGVuZFNwZWNpYWxDYXNlKCk7CiAgICAgICAgICAgICByZXR1cm4g
Q2FsbE9wdGltaXphdGlvblJlc3VsdDo6SW5saW5lZDsKICAgICAgICAgfQpAQCAtMTk1Myw3ICsx
OTU0LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKICAgICAgICAgaWYgKG5lZWRzVG9DaGVj
a0NhbGxlZSkKICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJn
ZXROb2RlLCB0aGlzQXJndW1lbnQpOwogICAgIH07Ci0gICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0
Tm9kZSwgcmVzdWx0LCBjYWxsZWUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywga2luZCwgY29udGludWF0aW9uQmxvY2ssIGluc2VydENoZWNrKTsKKyAgICBpbmxp
bmVDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHQsIGNhbGxlZSwgcmVnaXN0ZXJPZmZzZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kLCBjYWxsU3RhY2tPcmlnaW4sIGNvbnRpbnVh
dGlvbkJsb2NrLCBpbnNlcnRDaGVjayk7CiAgICAgaW5saW5pbmdCYWxhbmNlIC09IG15SW5saW5p
bmdDb3N0OwogICAgIHJldHVybiBDYWxsT3B0aW1pemF0aW9uUmVzdWx0OjpJbmxpbmVkOwogfQpA
QCAtMTk2MSw3ICsxOTYyLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1
bHQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGxWYXJpYW50KE5vZGUqIGMKIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3Bl
cmFuZCByZXN1bHQsCiAgICAgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBp
bnQgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50LAogICAgIFZpcnR1
YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LAot
ICAgIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCisgICAgTm9k
ZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2FsbFN0YWNrT3JpZ2lu
IGNhbGxTdGFja09yaWdpbikKIHsKICAgICBWRVJCT1NFX0xPRygiSGFuZGxpbmcgaW5saW5pbmcg
KFZhcmFyZ3MpLi4uXG5TdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAKQEAg
LTIwOTAsNyArMjA5MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxp
bmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQsCiAgICAgLy8gdGhvc2Ug
YXJndW1lbnRzLiBFdmVuIHdvcnNlLCBpZiB0aGUgaW50cmluc2ljIGRlY2lkZXMgdG8gZXhpdCwg
aXQgd29uJ3QgcmVhbGx5IGhhdmUgYW55d2hlcmUgdG8KICAgICAvLyBleGl0IHRvOiBMb2FkVmFy
YXJncyBpcyBlZmZlY3RmdWwgYW5kIGl0J3MgcGFydCBvZiB0aGUgb3BfY2FsbF92YXJhcmdzLCBz
byB3ZSBjYW4ndCBleGl0IHdpdGhvdXQKICAgICAvLyBjYWxsaW5nIExvYWRWYXJhcmdzIHR3aWNl
LgotICAgIGlubGluZUNhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdCwgY2FsbFZhcmlhbnQsIHJl
Z2lzdGVyT2Zmc2V0LCBtYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywga2luZCwgbnVsbHB0
ciwgaW5zZXJ0Q2hlY2tzKTsKKyAgICBpbmxpbmVDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHQs
IGNhbGxWYXJpYW50LCByZWdpc3Rlck9mZnNldCwgbWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIGtpbmQsIGNhbGxTdGFja09yaWdpbiwgbnVsbHB0ciwgaW5zZXJ0Q2hlY2tzKTsKIAogCiAg
ICAgVkVSQk9TRV9MT0coIlN1Y2Nlc3NmdWwgaW5saW5pbmcgKHZhcmFyZ3MsIG1vbm9tb3JwaGlj
KS5cblN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKQEAgLTIxMTEsNyArMjEx
Miw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCBy
ZXN1bHQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1cywKICAgICBpbnQgcmVn
aXN0ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsCiAgICAgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLAotICAgIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGV4LCBO
b2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICBCeXRlY29kZUluZGV4IG9zckV4
aXRJbmRleCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgQ2Fs
bFN0YWNrT3JpZ2luIGNhbGxTdGFja09yaWdpbiwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
RUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVkVSQk9TRV9MT0coIkhhbmRsaW5nIGlubGluaW5n
Li4uXG5TdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAKQEAgLTIxMzAsNyAr
MjEzMSw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpDYWxsT3B0aW1pemF0aW9uUmVzdWx0IEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFr
ZVNsb3dQYXRoKCkgJiYgY2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgcmV0
dXJuIGhhbmRsZUNhbGxWYXJpYW50KAogICAgICAgICAgICAgY2FsbFRhcmdldE5vZGUsIHJlc3Vs
dCwgY2FsbExpbmtTdGF0dXNbMF0sIHJlZ2lzdGVyT2Zmc2V0LCB0aGlzQXJndW1lbnQsCi0gICAg
ICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgb3NyRXhpdEluZGV4LCBraW5kLCBw
cmVkaWN0aW9uLCBpbmxpbmluZ0JhbGFuY2UsIG51bGxwdHIsIHRydWUpOworICAgICAgICAgICAg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG9zckV4aXRJbmRleCwga2luZCwgY2FsbFN0YWNr
T3JpZ2luLCBwcmVkaWN0aW9uLCBpbmxpbmluZ0JhbGFuY2UsIG51bGxwdHIsIHRydWUpOwogICAg
IH0KIAogICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIHNvbWUga2luZCBvZiBzd2l0Y2ggb3ZlciBj
YWxsZWUuIEZvciBub3cgd2Ugb25seSBkbyB0aGlzIGlmIHdlIGJlbGlldmUgdGhhdApAQCAtMjIy
MCw3ICsyMjIxLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OkNhbGxPcHRpbWl6YXRpb25SZXN1bHQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICAKICAgICAgICAgYXV0byBpbmxp
bmluZ1Jlc3VsdCA9IGhhbmRsZUNhbGxWYXJpYW50KAogICAgICAgICAgICAgbXlDYWxsVGFyZ2V0
Tm9kZSwgcmVzdWx0LCBjYWxsTGlua1N0YXR1c1tpXSwgcmVnaXN0ZXJPZmZzZXQsCi0gICAgICAg
ICAgICB0aGlzQXJndW1lbnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5k
ZXgsIGtpbmQsIHByZWRpY3Rpb24sCisgICAgICAgICAgICB0aGlzQXJndW1lbnQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBvc3JFeGl0SW5kZXgsIGtpbmQsIGNhbGxTdGFja09yaWdpbiwg
cHJlZGljdGlvbiwKICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZSwgY29udGludWF0aW9uQmxv
Y2ssIGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbmxpbmluZ1Jlc3VsdCA9PSBDYWxs
T3B0aW1pemF0aW9uUmVzdWx0OjpEaWROb3RoaW5nKSB7CkBAIC0yMzIyLDcgKzIzMjMsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoT3BlcmFuZCByZXN1bHQsIE5vZGVUeXBl
IG9wLCBpbnQgcmVnaXN0ZXJPZmZzZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxs
ZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZz
ZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBD
YWxsVmFyaWFudCBjYWxsVmFyaWFudCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEJ5dGVjb2RlSW5kZXggb3Ny
RXhpdEluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIFZFUkJP
U0VfTE9HKCIgICAgICAgVGhlIGludHJpbnNpYyBpcyAiLCBpbnRyaW5zaWMsICJcbiIpOwogCkBA
IC0zNzU2LDYgKzM3NTcsNzcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
Q2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICNlbmRpZgogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBCb3VuZEZ1bmN0aW9uQ2FsbEludHJpbnNpYzogeworICAg
ICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsVmFyaWFudC5mdW5jdGlvbigpOwor
ICAgICAgICAgICAgaWYgKCFmdW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0R5bmFtaWND
YXN0PEpTQm91bmRGdW5jdGlvbio+KCptX3ZtLCBmdW5jdGlvbik7CisgICAgICAgICAgICBpZiAo
IWJvdW5kRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICBpbnNlcnRDaGVja3ModHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIE1ha2UgYSBjYWxsLiBX
ZSBkb24ndCB0cnkgdG8gZ2V0IGZhbmN5IHdpdGggdXNpbmcgdGhlIHNtYWxsZXN0IG9wZXJhbmQg
bnVtYmVyIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBzdGFjayBsYXlvdXQgcGhhc2Ugc2hv
dWxkIGNvbXByZXNzIHRoZSBzdGFjayBhbnl3YXkuCisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gV2UgZG8gbm90IG92ZXJyaWRlIHRoZSBleGlzdGluZyBzdGFjayBmb3IgdGhpcyBjYWxs
LiBXZSBuZXdseSBhbGxvY2F0ZSBzdGFjayBzcGFjZSBhbmQgZmlsbCBpdCB3aXRoIHZhbHVlcwor
ICAgICAgICAgICAgLy8gdG8ga2VlcCBPU1IgZXhpdCBjb3JyZWN0IHdoZW4gd2UgZXhpdCBpbiB0
aGUgbWlkZGxlIG9mIHRoaXMgc3RhY2sgY29uc3RydWN0aW9uLiBXZSBleGl0IHRvIHRoZSBjYWxs
ZXIgc2lkZQorICAgICAgICAgICAgLy8gd2hlbiB3ZSBmYWlsZWQgdG8gY29uc3RydWN0IHRoaXMg
ZnJhbWUuIEFuZCB0aGlzIGlzIHRvdGFsbHkgT0sgc2luY2Ugd2UgYXJlIG5vdCBjbG9iYmVyaW5n
IHZhbHVlcy4KKworICAgICAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9
IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworCisgICAgICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZlBhcmFtZXRlcnMgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICAgICAgICAg
IG51bWJlck9mUGFyYW1ldGVycysrOyAvLyBUcnVlIHJldHVybiBQQy4KKyAgICAgICAgICAgIG51
bWJlck9mUGFyYW1ldGVycyArPSBib3VuZEFyZ3MgPyBib3VuZEFyZ3MtPmxlbmd0aCgpIDogMDsK
KworICAgICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIHJlZ2lzdGVyIG9mZnNldCB0aGF0IGNvcnJl
c3BvbmRzIHRvIHRoZSBsYXN0IGluLXVzZSByZWdpc3Rlci4KKyAgICAgICAgICAgIGludCBuZXdS
ZWdpc3Rlck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkgLSAxKS5vZmZzZXQoKTsKKyAgICAg
ICAgICAgIG5ld1JlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIG5ld1JlZ2lzdGVyT2Zmc2V0IC09IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
OworCisgICAgICAgICAgICAvLyBHZXQgdGhlIGFsaWdubWVudCByaWdodC4KKyAgICAgICAgICAg
IG5ld1JlZ2lzdGVyT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdu
bWVudFJlZ2lzdGVycygpLCAtbmV3UmVnaXN0ZXJPZmZzZXQpOworCisgICAgICAgICAgICBlbnN1
cmVMb2NhbHMobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3Rlcihu
ZXdSZWdpc3Rlck9mZnNldCkpLnRvTG9jYWwoKSk7CisKKyAgICAgICAgICAgIC8vIFdlIGZpcnN0
IGVtaXQgYWxsIGFyZ3VtZW50cyBpbiB0aGUgZ3JhcGggKHNpbmNlIGl0IGNhbiBpbnZvbHZlIG5l
d2x5IGFkZGVkIGNvbnN0YW50cyksIGFuZCB0aGVuIHdlIHNldCBhbGwgb2YgdGhlbS4KKyAgICAg
ICAgICAgIC8vIE9uY2Ugb25lIG9mIHNldCBoYXMgYSBjaGVjaywgdGhlIHN1YnNlcXVlbnQgc2V0
cycgY2hlY2tzIG5lZWQgdG8gYmUgaG9pc3RlZCB0b28uIElmIHdlIGFyZSBpbnRlcmxlYXZpbmcg
anNDb25zdGFudCBhZGRpdGlvbiwKKyAgICAgICAgICAgIC8vIHRoZXNlIGNoZWNrcyBjYW4gYmUg
aG9pc3RlZCBhYm92ZSB0aGFuIHRoZSBjb25zdGFudCB3aGljaCBuZWVkcyB0byBiZSBjaGVja2Vk
LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBpZiBjaGVjayBmYWls
ZWQgaGVyZSwgd2UgZXhpdCB0byBib3VuZCBmdW5jdGlvbidzIGNhbGxlci4gU2luY2UgYm91bmQg
ZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSBzaWRlIGVmZmVjdCB1bnRpbCB3ZSBhY3R1YWxseQorICAg
ICAgICAgICAgLy8gY2FsbCB0aGUgd3JhcHBlZCBmdW5jdGlvbiwgdGhpcyBpcyBPSy4KKyAgICAg
ICAgICAgIFZlY3RvcjxOb2RlKj4gYXJndW1lbnRzOworICAgICAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChqc0NvbnN0YW50KGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpKSk7CisgICAgICAgICAg
ICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnRzLmFwcGVuZChqc0NvbnN0YW50KGJvdW5kQXJncy0+Z2V0KGluZGV4KSkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPiAxKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXggPSAxOyBpbmRleCA8
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2luZGV4KQorICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudHMuYXBwZW5kKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoaW5kZXgsIHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBJc3N1ZSBTZXRMb2NhbHMuIFRoaXMgaGFzIHR3byBlZmZlY3RzOgorICAgICAgICAg
ICAgLy8gMSkgVGhhdCdzIGhvdyBoYW5kbGVDYWxsKCkgc2VlcyB0aGUgYXJndW1lbnRzLgorICAg
ICAgICAgICAgLy8gMikgSWYgd2UgaW5saW5lIHRoZW4gdGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFy
Z3VtZW50cyBhcmUgZmx1c2hlZCBzbyB0aGF0IGlmIHlvdSB1c2UKKyAgICAgICAgICAgIC8vICAg
IHRoZSBkcmVhZGVkIGFyZ3VtZW50cyBvYmplY3Qgb24gdGhlIGNhbGwgdGFyZ2V0LCB0aGUgcmln
aHQgdGhpbmdzIGhhcHBlbi4gV2VsbCwgc29ydCBvZiAtCisgICAgICAgICAgICAvLyAgICBzaW5j
ZSB3ZSBvbmx5IHJlYWxseSBjYXJlIGFib3V0ICd0aGlzJyBpbiB0aGlzIGNhc2UuIEJ1dCB3ZSdy
ZSBub3QgZ29pbmcgdG8gdGFrZSB0aGF0CisgICAgICAgICAgICAvLyAgICBzaG9ydGN1dC4KKyAg
ICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmd1bWVudEluZGV4ID0gMDsKKyAgICAgICAgICAg
IGZvciAoTm9kZSogYXJndW1lbnQgOiBhcmd1bWVudHMpCisgICAgICAgICAgICAgICAgc2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhjdXJyZW50QXJndW1lbnRJbmRl
eCsrLCBuZXdSZWdpc3Rlck9mZnNldCksIGFyZ3VtZW50LCBJbW1lZGlhdGVOYWtlZFNldCk7CisK
KyAgICAgICAgICAgIC8vIFdlJ3ZlIHNldCBzb21lIGxvY2FscywgYnV0IHRoZXkgYXJlIG5vdCB1
c2VyLXZpc2libGUgc2luY2UgdGhleSBhcmUgbmV3bHkgYWxsb2NhdGVkIGZvciB0aGlzIGlubGlu
ZWQgY2FsbC4gSXQncyBzdGlsbCBPSyB0byBleGl0IGZyb20gaGVyZS4KKyAgICAgICAgICAgIC8v
IEpTQm91bmRGdW5jdGlvbidzIHRyYW1wb2xpbmUgZG9lcyBub3QgaGF2ZSB1c2VyLXZpc2libGUg
ZWZmZWN0LiBTbyBleGl0aW5nIHRvIHRoZSBwcmUtYm91bmQgZnVuY3Rpb24gbG9jYXRpb24gaXMg
T0suCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisKKyAgICAgICAgICAgIGhhbmRsZUNhbGwocmVzdWx0LCBDYWxsLCBraW5kLCBD
YWxsU3RhY2tPcmlnaW46Ok9ubHlERkcsIG9zckV4aXRJbmRleCwganNDb25zdGFudChib3VuZEZ1
bmN0aW9uLT50YXJnZXRGdW5jdGlvbigpKSwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgbmV3UmVn
aXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzKENhbGxWYXJpYW50KGJvdW5kRnVuY3Rpb24tPnRh
cmdldEZ1bmN0aW9uKCkpKSwgcHJlZGljdGlvbik7CisgICAgICAgICAgICBkaWRTZXRSZXN1bHQg
PSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC00NzI1LDcg
KzQ3OTcsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBOb2RlKiBnZXR0ZXIgPSBhZGRUb0dyYXBoKEdldEdl
dHRlciwgbG9hZGVkVmFsdWUpOworICAgIE5vZGUqIGdldHRlciA9IG51bGxwdHI7CisgICAgaWYg
KEpTVmFsdWUgZ2V0dGVyVmFsdWUgPSBtX2dyYXBoLnRyeUdldENvbnN0YW50R2V0dGVyKGxvYWRl
ZFZhbHVlKSkKKyAgICAgICAgZ2V0dGVyID0gd2Vha0pTQ29uc3RhbnQoZ2V0dGVyVmFsdWUpOwor
ICAgIGVsc2UKKyAgICAgICAgZ2V0dGVyID0gYWRkVG9HcmFwaChHZXRHZXR0ZXIsIGxvYWRlZFZh
bHVlKTsKIAogICAgIGlmIChoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoZGVzdGluYXRpb24sIHByZWRp
Y3Rpb24sIHZhcmlhbnQsIGJhc2UsCiAgICAgICAgICAgICBbJl0gKCkgewpAQCAtNDc3Miw3ICs0
ODQ4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICBhZGRUb0dy
YXBoKEV4aXRPSyk7CiAgICAgCiAgICAgaGFuZGxlQ2FsbCgKLSAgICAgICAgZGVzdGluYXRpb24s
IENhbGwsIElubGluZUNhbGxGcmFtZTo6R2V0dGVyQ2FsbCwgb3NyRXhpdEluZGV4LAorICAgICAg
ICBkZXN0aW5hdGlvbiwgQ2FsbCwgSW5saW5lQ2FsbEZyYW1lOjpHZXR0ZXJDYWxsLCBDYWxsU3Rh
Y2tPcmlnaW46Ok9ubHlERkcsIG9zckV4aXRJbmRleCwKICAgICAgICAgZ2V0dGVyLCBudW1iZXJP
ZlBhcmFtZXRlcnMgLSAxLCByZWdpc3Rlck9mZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMo
KSwgcHJlZGljdGlvbik7CiB9CiAKQEAgLTUwOTEsNyArNTE2NywxMSBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBOb2RlKiBzZXR0ZXIgPSBhZGRUb0dyYXBoKEdldFNldHRlciwgbG9h
ZGVkVmFsdWUpOworICAgICAgICBOb2RlKiBzZXR0ZXIgPSBudWxscHRyOworICAgICAgICBpZiAo
SlNWYWx1ZSBzZXR0ZXJWYWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRTZXR0ZXIobG9hZGVk
VmFsdWUpKQorICAgICAgICAgICAgc2V0dGVyID0gd2Vha0pTQ29uc3RhbnQoc2V0dGVyVmFsdWUp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXR0ZXIgPSBhZGRUb0dyYXBoKEdldFNldHRl
ciwgbG9hZGVkVmFsdWUpOwogICAgICAgICAKICAgICAgICAgLy8gTWFrZSBhIGNhbGwuIFdlIGRv
bid0IHRyeSB0byBnZXQgZmFuY3kgd2l0aCB1c2luZyB0aGUgc21hbGxlc3Qgb3BlcmFuZCBudW1i
ZXIgYmVjYXVzZQogICAgICAgICAvLyB0aGUgc3RhY2sgbGF5b3V0IHBoYXNlIHNob3VsZCBjb21w
cmVzcyB0aGUgc3RhY2sgYW55d2F5LgpAQCAtNTEyNCw3ICs1MjA0LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOwogICAg
IAogICAgICAgICBoYW5kbGVDYWxsKAotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKCksIENh
bGwsIElubGluZUNhbGxGcmFtZTo6U2V0dGVyQ2FsbCwKKyAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlcigpLCBDYWxsLCBJbmxpbmVDYWxsRnJhbWU6OlNldHRlckNhbGwsIENhbGxTdGFja09yaWdp
bjo6T25seURGRywKICAgICAgICAgICAgIG9zckV4aXRJbmRleCwgc2V0dGVyLCBudW1iZXJPZlBh
cmFtZXRlcnMgLSAxLCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgICAgICp2YXJpYW50LmNhbGxM
aW5rU3RhdHVzKCksIFNwZWNPdGhlciwgZWNtYU1vZGUpOwogICAgICAgICByZXR1cm47CkBAIC04
MTEyLDExICs4MTkyLDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfY2xvbmVkX2FyZ3Vt
ZW50cyk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0
dGVyZmx5OiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseT4oKTsKKyAgICAgICAgY2FzZSBvcF9jcmVh
dGVfYXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpczogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHlFeGNsdWRpbmdUaGlzPigpOwogICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7
Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5KSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJndW1l
bnRzX2J1dHRlcmZseSk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3Jh
cGgoQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgRWRnZShnZXQoYnl0ZWNv
ZGUubV90YXJnZXQpLCBDZWxsVXNlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3Jl
YXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBiNDgxOWZkNzY5
YjU4Y2Q1MmFkZDFhNTQ2ZDcwYTNhNWQ1OTQxMzk3Li45NjRhZGIxMGRjYmI0NmVjYmZmODRlNjQw
ZTdiOTY2ZjY2ZWY0NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkK
ICAgICBjYXNlIG9wX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRl
X3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50czoK
LSAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5OgorICAgIGNhc2Ugb3BfY3Jl
YXRlX2FyZ3VtZW50c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXM6CiAgICAgY2FzZSBvcF9nZXRf
ZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOgogICAgIGNhc2Ug
b3BfZ2V0X2FyZ3VtZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAppbmRleCBjZjAxYmNlMDUzYTNlNTc3ZGU5OTdiMDMzMzliN2IxNGM2Njg4OTIxLi5jMjQwYWEy
NjEzZjBkMTIwMWVmNDhkOGEyZDIyZDkxMTU1OTIzYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVh
dGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAg
Y2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgogICAgICAgICByZWFkKFN0YWNrKTsKICAgICAgICAgcmVh
ZChIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGNmYzIyMzAwMGE1MzJiMWMz
YjM5ODBlNTRhNTAxYTNkM2RmYWFiMDkuLmRkNTFmYTM4Yzg4MTEwZDkxYjhmZTU1OGZmZTBkNTY3
YmY2MTZhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI2
OCw3ICsyNjgsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVu
dHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHk6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRp
bmdUaGlzOgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNlIENhbGxFdmFsOgogICAgIGNhc2UgQ2Fs
bEZvcndhcmRWYXJhcmdzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggMzc0ZDU1MzA1ZGY4ZDg3NTAzMmUwNDc3N2JjMzIyMTlhNTUxNTgwYS4uZDA2
ZDg2NDJmNzdlZjNhYzRmNzc1MTg1MDE5OTBhNTAzZDcyODJhZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yODgwLDcgKzI4ODAsNyBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1By
aXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0
dXM6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgICAgIGNhc2UgQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5OgorICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eUV4Y2x1ZGluZ1RoaXM6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlIC8vIG5vdCBBU1NFUlRf
RU5BQkxFRAogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAppbmRleCAyNWFiOWMzMzk1MWY4ZWI5OWI1MGQxYzdlMGExNDRjODc4MmQ2ZmU5Li43MWY0
NTViNzQ3NjNkODk4N2UyNjgzMWE1Y2QxMTY2ZjllNTQ1ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTQyMCw2ICsxNDIwLDIyIEBAIEpTQXJyYXlCdWZmZXJW
aWV3KiBHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KEpTVmFsdWUgdmFsdWUsIEFycmF5TW9kZSBh
cnJheU1vZGUpCiAgICAgcmV0dXJuIHRyeUdldEZvbGRhYmxlVmlldyh2YWx1ZSk7CiB9CiAKK0pT
VmFsdWUgR3JhcGg6OnRyeUdldENvbnN0YW50R2V0dGVyKE5vZGUqIGdldHRlclNldHRlcikKK3sK
KyAgICBhdXRvKiBjZWxsID0gZ2V0dGVyU2V0dGVyLT5keW5hbWljQ2FzdENvbnN0YW50PEdldHRl
clNldHRlcio+KG1fdm0pOworICAgIGlmICghY2VsbCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICByZXR1cm4gY2VsbC0+Z2V0dGVyQ29uY3VycmVudGx5KCk7Cit9CisKK0pTVmFsdWUg
R3JhcGg6OnRyeUdldENvbnN0YW50U2V0dGVyKE5vZGUqIGdldHRlclNldHRlcikKK3sKKyAgICBh
dXRvKiBjZWxsID0gZ2V0dGVyU2V0dGVyLT5keW5hbWljQ2FzdENvbnN0YW50PEdldHRlclNldHRl
cio+KG1fdm0pOworICAgIGlmICghY2VsbCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICByZXR1cm4gY2VsbC0+c2V0dGVyQ29uY3VycmVudGx5KCk7Cit9CisKIHZvaWQgR3JhcGg6OnJl
Z2lzdGVyRnJvemVuVmFsdWVzKCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
Y29kZUJsb2NrLT5tX2xvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4
IGQyYmQ4OTdkNGY4NDVjNjg2ODU4NmRhZjJiYmM3NDkxYTM4YTE4ZDkuLjA2NWQ0NzZlOGFlNGMy
NmRjYmZiNjMxZjE3MzY1NzVjZjk1ODRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKQEAgLTk5Niw2ICs5OTYsOSBAQCBjbGFzcyBHcmFwaCBmaW5hbCA6IHB1YmxpYyB2aXJ0
dWFsIFNjYW5uYWJsZSB7CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRyeUdldEZvbGRhYmxlVmll
dyhKU1ZhbHVlKTsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdHJ5R2V0Rm9sZGFibGVWaWV3KEpT
VmFsdWUsIEFycmF5TW9kZSBhcnJheU1vZGUpOwogCisgICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFu
dEdldHRlcihOb2RlKiBnZXR0ZXJTZXR0ZXIpOworICAgIEpTVmFsdWUgdHJ5R2V0Q29uc3RhbnRT
ZXR0ZXIoTm9kZSogZ2V0dGVyU2V0dGVyKTsKKwogICAgIGJvb2wgY2FuRG9GYXN0U3ByZWFkKE5v
ZGUqLCBjb25zdCBBYnN0cmFjdFZhbHVlJik7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlckZyb3pl
blZhbHVlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGFm
MjY4Mjg2YzgxMDA5ZDE4MjZjYjEwYmNmNTdiNTExMGE0YTczMzkuLjdjNDlkYWE5MzI0NDY0NzQ3
ZTA0YzZiZjZmOWM3MTM5OTE3MjY2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKQEAgLTQ1MSw3ICs0NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBtYWNybyhDcmVhdGVDbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3Jv
KFBoYW50b21DbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKLSAgICBtYWNybyhDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIE5vZGVSZXN1bHRKUykgXAor
ICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKEdldEZyb21Bcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFB1dFRvQXJndW1lbnRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0
QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggZWNjOGRjODUwNTEwOWNiMzU1NDkwYzkxZmE2OTZkNmFkYTc1
YjI3OS4uOWQxOWUzNTJmOGJhZDI4NDg3YjY2Y2NhOWFkY2NkYjc0NWIwM2M1YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0ltbXV0YWJsZUJ1dHRlcmZseS5oIgpAQCAtMjA1OSwyMCArMjA2MCw0MiBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzLCBKU0NlbGwqLCAo
SlNHbG9iYWxPYmplYwogICAgICAgICBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgYXJndW1lbnRT
dGFydCwgbGVuZ3RoLCBjYWxsZWUpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3VtZW50
Q291bnQpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3VudCwg
SlNDZWxsKiB0YXJnZXQpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBBU1NFUlQoYXJn
dW1lbnRDb3VudCA+IDEpOworCisgICAgQ2hlY2tlZEludDMyIHRvdGFsQ291bnQgPSBhcmd1bWVu
dENvdW50IC0gMTsKKyAgICBpbnQzMl90IGFkZGl0aW9uYWxDb3VudCA9IDA7CisgICAgSlNJbW11
dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IG51bGxwdHI7CisgICAgaWYgKHRhcmdldC0+aW5o
ZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBi
b3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAgICAg
IGlmIChib3VuZEZ1bmN0aW9uLT5jYW5DbG9uZUJvdW5kQXJncygpKSB7CisgICAgICAgICAgICBi
b3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAgICAgICAgIGFkZGl0
aW9uYWxDb3VudCA9IGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwOworICAgICAg
ICAgICAgdG90YWxDb3VudCArPSBhZGRpdGlvbmFsQ291bnQ7CisgICAgICAgICAgICBpZiAodG90
YWxDb3VudC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBKU0ltbXV0YWJs
ZUJ1dHRlcmZseSogYnV0dGVyZmx5ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6OnRyeUNyZWF0ZSh2
bSwgdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5n
VHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1No
YXBlc10uZ2V0KCksIGFyZ3VtZW50Q291bnQpOworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFi
bGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldy
aXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwg
dG90YWxDb3VudC51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFidXR0ZXJmbHkpIHsKICAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwg
YXJndW1lbnRDb3VudDsgKytpbmRleCkKLSAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwg
aW5kZXgsIGFyZ3VtZW50U3RhcnRbaW5kZXhdLmpzVmFsdWUoKSk7CisgICAgaWYgKGFkZGl0aW9u
YWxDb3VudCkgeworICAgICAgICBBU1NFUlQoYm91bmRBcmdzKTsKKyAgICAgICAgZm9yIChpbnQz
Ml90IGluZGV4ID0gMDsgaW5kZXggPCBhZGRpdGlvbmFsQ291bnQ7ICsraW5kZXgpCisgICAgICAg
ICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgYm91bmRBcmdzLT5nZXQoaW5kZXgp
KTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgKGFyZ3VtZW50
Q291bnQgLSAxKTsgKytpbmRleCkKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5k
ZXggKyBhZGRpdGlvbmFsQ291bnQsIGFyZ3VtZW50U3RhcnRbaW5kZXggKyAxXS5qc1ZhbHVlKCkp
OwogICAgIHJldHVybiBidXR0ZXJmbHk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKaW5kZXggNTJjZGJlODI2NjE2ZWJjNGE5MmQwNThiMDAxZWMzOGVmYzJh
M2Q0OC4uNzllNzc2ZmI0M2U2NTUyN2ExNDJlMjNkYzczNmNjMDIwNzA0YWMxMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTIxMSw3ICsyMTEsNyBAQCBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1
cmluZ0V4aXQsIEpTQ2VsbCosIChWTQogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25DcmVhdGVTY29wZWRBcmd1bWVudHMsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rp
b24qIGNhbGxlZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQsIEpTQ2VsbCos
IChWTSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCB1aW50MzJfdCBhcmd1bWVudENv
dW50KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFy
Z3VtZW50cywgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIq
IGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlKSk7Ci1K
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZs
eSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVp
bnQzMl90IGFyZ3VtZW50Q291bnQpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcywgSlNDZWxsKiwgKEpTR2xv
YmFsT2JqZWN0KiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3VtZW50Q291
bnQsIEpTQ2VsbCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRl
UmVzdCwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQs
IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwLCB1bnNpZ25lZCBhcnJheVNpemUpKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIEpTQ2Vs
bCosIChWTSosIFN0cnVjdHVyZSosIEpTQ2VsbCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uU2V0QWRkLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBF
bmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAppbmRleCA5ODA1OTliMmU1NGFmN2Qw
Y2E4N2E5OWMxNjk2MDY0OTcwYTAxZTg0Li43MDRlYmU3MTE1YjhjN2QzMTdhMDIxOTFjMzkxZjk0
N2M4MTIyYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNp
c2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMTg0LDcgKzE4NCw3IEBAIGNsYXNzIFByZWNpc2VM
b2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVu
dHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIENy
ZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHk6CisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoK
ICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50
b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKaW5kZXggZmU3NmQyYjZlMGY5NmYzZTI4ZmMzZDk4M2ZiMzNhYzIzMTY4NmIz
MS4uNzBlNGEwYzE2ZjI4MTVmMTRmNzcwZmE2MmQ5MDRhMzEwYmMwZWYyOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6IHsKKyAgICAgICAgY2Fz
ZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOiB7CiAgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXgg
MDdhODVkYjNkNjBjNjA4MGE4M2U2ZGE0MTg2OGJiZjRiN2NlZjZjNy4uNjliM2JjMmE3YjU4NTZk
ODk5NDAyOTcyODZiNWY3N2FiMGQ1OGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTU5Nyw3ICs1OTcsNyBAQCBib29sIHNhZmVUb0V4ZWN1
dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJv
b2wgaWdubwogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRl
U2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgIGNh
c2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5RXhjbHVkaW5nVGhpczoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2Ug
TmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZTljZDQzOTBl
NDYxYmIzZTQyNTA1MzI5MTVhNTNhYWQ0NjgzZTg3ZS4uZTUyY2FkNmVlN2I0NGQ0Y2FkYzBiYzI0
NGE0MzIxNjE3MjZmOTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTg0NzUsOCArODQ3NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgY2VsbFJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcyhOb2RlKiBub2Rl
KQogeworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRhcmdldCh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgR1BSUmVnIHRhcmdldEdQUiA9IHRhcmdldC5ncHIoKTsKKwogICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC04NDg2LDEyICs4NDg5LDE2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSog
bm9kZSkKICAgICAvLyBXZSBzZXQgdXAgdGhlIGFyZ3VtZW50cyBvdXJzZWx2ZXMsIGJlY2F1c2Ug
d2UgaGF2ZSB0aGUgd2hvbGUgcmVnaXN0ZXIgZmlsZSBhbmQgd2UgY2FuCiAgICAgLy8gc2V0IHRo
ZW0gdXAgZGlyZWN0bHkgaW50byB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgogCi0gICAgLy8gQXJn
dW1lbnRzOiAwOkpTR2xvYmFsT2JqZWN0KiwgMTpzdGFydCwgMzpsZW5ndGgKKyAgICAvLyBBcmd1
bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0LCAyOmxlbmd0aCwgMzp0YXJnZXQKKwor
ICAgIC8vIERvIHRoZSB0YXJnZXRHUFIgZmlyc3QsIHNpbmNlIGl0IG1pZ2h0IGFsaWFzIGFuIGFy
Z3VtZW50IHJlZ2lzdGVyLgorICAgIG1faml0LnNldHVwQXJndW1lbnQoMywgWyZdIChHUFJSZWcg
ZGVzdEdQUikgeyBtX2ppdC5tb3ZlKHRhcmdldEdQUiwgZGVzdEdQUik7IH0pOworCiAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRMZW5ndGgo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudCgxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRBcmd1bWVudFN0YXJ0KG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOwogICAgIG1faml0LnNldHVwQXJndW1lbnQo
MCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGRlc3RHUFIpOyB9KTsKIAotICAgIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCByZXN1bHRH
UFIpOworICAgIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5RXhjbHVkaW5nVGhpcywgcmVzdWx0R1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDk3MTc1MjI4ZjYyZGE3MzUw
MDIxMGVmZDJjZWNjYTk1ODJiNjgwMmQuLjY2YTQxOTA5Y2M2MDY5ZGI0NTE3NzdiMjliMTc5NzQ3
NTAwYjhkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKQEAgLTE0MTEsNyArMTQxMSw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2
b2lkIGNvbXBpbGVHZXRBcmd1bWVudChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlU2Nv
cGVkQXJndW1lbnRzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVu
dHMoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhp
cyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlUmVzdChOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU3ByZWFkKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdBcnJheShOb2RlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCAzNDI0MGU1NGU4NTdmNThhZDQ3NmE2YWYzYmVhMzJjZDdjMjE2ZDY4Li42MmQw
Zjc1NGMwMGVhMTg1MGMyMjcxMjZlOGUxMDU3ZDYwNTVkOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM5NTAs
OCArMzk1MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6
IHsKLSAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShub2RlKTsKKyAgICBj
YXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6IHsKKyAgICAgICAgY29t
cGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMzhlZTZiNGE2ZWY5MDk3NDM1YWI4ZTA5NTI5MWQwYjZl
Nzc0MTMwNS4uOTVlN2Y1ZTczODM1MTc2MWVkNjI1MmY3OTNiM2Q5MDY5ZjU3MWZjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBA
IC00OTMxLDggKzQ5MzEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5OiB7Ci0gICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkobm9kZSk7
CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOiB7CisgICAg
ICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzKG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggYjkwNjY1
ZWNjZTUyYzU3ZjQ0YjcwZDQ2N2M0YTRlNWE1ZjM3MDJlMC4uYWVmOGE5YTg5NjAwN2Y4NzgxMjM0
NzI2MTBiYzBiNzg2YTRiZjQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTM1Nyw3ICsz
NTcsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgICAgIGNh
c2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRB
cmd1bWVudHM6Ci0gICAgICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKKyAg
ICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpczoKICAg
ICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRv
ckZ1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKaW5kZXggNDBmMTExOTI3M2JkYmUxYTViOTUyMTU4ODVmOTI3NDQwZmM5MTEw
Ny4uYjQ5YzcyNDA5NWI3NDFjYTJjMmM4YTliMDA1ODZjM2E4NjMxMDkyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJE
RkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIkpTQm91
bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlICJSZWdFeHBP
YmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKQEAgLTkyNyw3ICs5MjgsOCBA
QCBjbGFzcyBTdHJlbmd0aFJlZHVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgICAgIEVk
Z2UgY2FsbGVlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApOwogICAgICAgICAgICAg
Q2FsbFZhcmlhbnQgY2FsbFZhcmlhbnQ7Ci0gICAgICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KHZtKCkpKSB7
CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RD
b25zdGFudDxKU0Z1bmN0aW9uKj4odm0oKSk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb24pIHsK
ICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAg
ICAgICAgICAgICAgICBjYWxsVmFyaWFudCA9IENhbGxWYXJpYW50KGZ1bmN0aW9uKTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2FsbGVlLT5pc0Z1bmN0aW9uQWxsb2NhdGlvbigpKSB7CkBAIC05
NDMsNyArOTQ1LDQ4IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDMzOQogICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmludHJpbnNpYygpID09IFdh
c21GdW5jdGlvbkludHJpbnNpYykKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IAorCisgICAgICAgICAgICAvLyBXZSBnYXZlIHVwIGlubGluaW5nIGEgd3JhcHBlZCBmdW5jdGlv
biwgYnV0IHN0aWxsLCB3ZSBjYW4gaW5saW5lIGJvdW5kIGZ1bmN0aW9uJ3Mgd3JhcHBlciBieSBl
eHRyYWN0aW5nIGl0LgorICAgICAgICAgICAgLy8gVGhpcyBhbHNvIHdpcGVzIGJvdW5kLWZ1bmN0
aW9uIHRodW5rIGNhbGwgd2hpY2ggaXMgc3Vib3B0aW1hbCBjb21wYXJlZCB0byBkaXJlY3RseSBj
YWxsaW5nIGEgd3JhcHBlZCBmdW5jdGlvbiBoZXJlLgorICAgICAgICAgICAgaWYgKGV4ZWN1dGFi
bGUtPmludHJpbnNpYygpID09IEJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2ljICYmIGZ1bmN0aW9u
ICYmIChtX25vZGUtPm9wKCkgPT0gQ2FsbCB8fCBtX25vZGUtPm9wKCkgPT0gVGFpbENhbGwgfHwg
bV9ub2RlLT5vcCgpID09IFRhaWxDYWxsSW5saW5lZENhbGxlcikpIHsKKyAgICAgICAgICAgICAg
ICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZnVuY3Rpb24pOworICAgICAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiB0YXJnZXRGdW5j
dGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtKCksIGJvdW5kRnVuY3Rpb24tPnRh
cmdldEZ1bmN0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHRhcmdldEV4ZWN1
dGFibGUgPSB0YXJnZXRGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICAgICAgICAgICAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRB
cmdzKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgoKGJvdW5kQXJncyA/IGJvdW5kQXJncy0+
bGVuZ3RoKCkgOiAwKSArIG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSkgPD0gT3B0aW9uczo6bWF4aW11
bURpcmVjdENhbGxTdGFja1NpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPih2bSgpLCB0YXJnZXRFeGVjdXRhYmxlKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIG1fcGFyYW1ldGVyU2xvdHMgYmVm
b3JlIHdlIGdldCB0byB0aGUgYmFja2VuZCwgYnV0IHdlIGRvbid0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gd2FudCB0byBkbyB0b28gbXVjaCBvZiB0aGlzLgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUFsbG9jYXRlZEFyZ3MgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSArIDE7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bUFsbG9jYXRlZEFyZ3MgPD0gT3B0aW9uczo6
bWF4aW11bURpcmVjdENhbGxTdGFja1NpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gc3RkOjptYXgobV9ncmFwaC5tX3BhcmFt
ZXRlclNsb3RzLCBHcmFwaDo6cGFyYW1ldGVyU2xvdHNGb3JBcmdDb3VudChudW1BbGxvY2F0ZWRB
cmdzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVu
ZChtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmln
aW4sIHRhcmdldEZ1bmN0aW9uKSk7IC8vIENhbGxlZS4KKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29u
c3RhbnQobV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBib3VuZEZ1bmN0aW9uLT5ib3VuZFRo
aXMoKSkpOyAvLyB8dGhpc3wKKworICAgICAgICAgICAgICAgICAgICAgICAgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3Ro
KCk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQobV9ub2Rl
SW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBib3VuZEFyZ3MtPmdldChpbmRleCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3Qgb25l
IGlzIHxjYWxsZWV8LCBzZWNvbmQgb25lIGlzIHx0aGlzfC4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAyOyBpbmRleCA8IG1fbm9kZS0+bnVtQ2hpbGRyZW4o
KTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uYXBwZW5kKG1fZ3JhcGguY2hpbGQobV9ub2RlLCBpbmRleCkpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdChBZGphY2Vu
Y3lMaXN0OjpWYXJpYWJsZSwgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKSAtIGZpcnN0Q2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Bh
cmFtZXRlclNsb3RzID0gc3RkOjptYXgobV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzLCBHcmFwaDo6
cGFyYW1ldGVyU2xvdHNGb3JBcmdDb3VudChtX25vZGUtPm51bUNoaWxkcmVuKCkgLSAxKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMo
KS5hZGRDYWxsTGlua1N0YXR1cyhtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgQ2FsbExpbmtTdGF0
dXMoQ2FsbFZhcmlhbnQodGFyZ2V0RXhlY3V0YWJsZSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbm9kZS0+Y29udmVydFRvRGlyZWN0Q2FsbChtX2dyYXBoLmZyZWV6ZSh0YXJnZXRFeGVj
dXRhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4odm0oKSwgZXhlY3V0YWJsZSkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9ub2Rl
LT5vcCgpID09IENvbnN0cnVjdCAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxp
dHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCmluZGV4IDNkZjA0NGE4ZmYxYjU4NTJiNWVhZjNjMDRmYTk2MDhkY2ZlMDk4MmYuLjQz
OWMwZDg2NzIwN2VmZDNkNzE0NWZiYWQxNmI2MTI1YTQ3ZDA0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENy
ZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAg
ICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1
dHRlcmZseToKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXM6
CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAg
ICAgY2FzZSBHZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCAyMDc4NjkxYjEwNGFmZjYyMDQxYjEzMzY1ZjgxZDhhM2QxYmQx
ZTcxLi5lZTU1MDEzYTNmODc5ZTAzOGRhYTNhODkxMjg4NGY5NzBlMjY0Y2EzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMTAzLDggKzEx
MDMsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFy
Z3VtZW50czoKICAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToK
LSAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoKTsKKyAgICAgICAg
Y2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzOgorICAgICAgICAgICAg
Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseUV4Y2x1ZGluZ1RoaXMoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICAgICAgICAgIGNvbXBp
bGVPYmplY3RDcmVhdGUoKTsKQEAgLTY4NDgsMTAgKzY4NDgsMTAgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAotICAgIHZvaWQgY29t
cGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpCisgICAgdm9pZCBjb21waWxlQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5RXhjbHVkaW5nVGhpcygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25D
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGdldEFy
Z3VtZW50c1N0YXJ0KCksIGdldEFyZ3VtZW50c0xlbmd0aCgpLnZhbHVlKTsKKyAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5RXhjbHVkaW5nVGhpcywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgZ2V0QXJndW1lbnRz
U3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUsIGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSkpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBhZWUz
NzQ0YjUyZTVlNDUyNjFlMjJmYWM2OTBkYmUwNGFlMmM1NDI2Li5mZDE3MGVjYTc4OGQ4NGJiMTA4
YjhhOGVlMTk3OTQxODBhMGM5MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJ
bnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKSVRDb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTM5NCw2ICszOTUsOCBAQCBjbGFz
cyBHZXRTdGFja1RyYWNlRnVuY3RvciB7CiAgICAgICAgICAgICAgICAgbV9yZXN1bHRzLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICAgICAgU3RhY2tGcmFtZShtX3ZtLCBtX293bmVyLCB2aXNpdG9y
LT5jYWxsZWUoKS5hc0NlbGwoKSwgdmlzaXRvci0+Y29kZUJsb2NrKCksIHZpc2l0b3ItPmJ5dGVj
b2RlSW5kZXgoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAo
dmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCktPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4obV92
bSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIG1fcmVzdWx0cy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgIFN0
YWNrRnJhbWUobV92bSwgbV9vd25lciwgdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCkpKTsKICAg
ICAgICAgICAgIH0KQEAgLTQyMiw3ICs0MjUsMTIgQEAgdm9pZCBJbnRlcnByZXRlcjo6Z2V0U3Rh
Y2tUcmFjZShKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemUK
IAogICAgIHNpemVfdCBmcmFtZXNDb3VudCA9IDA7CiAgICAgc2l6ZV90IG1heEZyYW1lc0NvdW50
TmVlZGVkID0gbWF4U3RhY2tTaXplICsgZnJhbWVzVG9Ta2lwOwotICAgIFN0YWNrVmlzaXRvcjo6
dmlzaXQoY2FsbEZyYW1lLCB2bSwgWyZdIChTdGFja1Zpc2l0b3ImKSAtPiBTdGFja1Zpc2l0b3I6
OlN0YXR1cyB7CisgICAgU3RhY2tWaXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsIHZtLCBbJl0gKFN0
YWNrVmlzaXRvciYgdmlzaXRvcikgLT4gU3RhY2tWaXNpdG9yOjpTdGF0dXMgeworICAgICAgICBp
ZiAodmlzaXRvci0+Y2FsbGVlKCkuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIGlmICh2aXNpdG9y
LT5jYWxsZWUoKS5hc0NlbGwoKS0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPihtX3ZtKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKKyAgICAgICAgfQor
CiAgICAgICAgIGlmICgrK2ZyYW1lc0NvdW50IDwgbWF4RnJhbWVzQ291bnROZWVkZWQpCiAgICAg
ICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICAgICAgcmV0dXJuIFN0
YWNrVmlzaXRvcjo6RG9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA3NmQxYTUx
N2Q5Yzg4ZDIwOTcwMjVmODQ0NWY2OWM5ZWQ2M2NmZDNmLi5jYzZkZTRmY2VjNWU5M2Y5OTM3OTFm
YmQ2Y2FmNzc5YmRlYTkxYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zMTYs
NyArMzE2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfU0xPV19PUChjcmVhdGVfZGlyZWN0X2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX1NM
T1dfT1AoY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNy
ZWF0ZV9jbG9uZWRfYXJndW1lbnRzKQotICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfYXJn
dW1lbnRzX2J1dHRlcmZseSkKKyAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2FyZ3VtZW50
c19idXR0ZXJmbHlfZXhjbHVkaW5nX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0
ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAg
REVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCBmYzM5OTE0YTFkNTQyNDU2MmU3OTE5ZjUxZWNkYjE1MzM4
NjJmMDQ1Li4yNTViNjQ3OGNmMDAzYTkwNjU3NmU0OTFiODkxMzdmMzIxMGQyZTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQ5LDYgKzQ5LDcg
QEAKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q1B0clRhZy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTE0NTEsNiAr
MTQ1Miw4IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCisgICAgQVNTRVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsKKwogICAgIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCA9IGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIApAQCAtMTQ2
NCwyOSArMTQ2Nyw0MCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRo
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgICAgICB9CiAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBoYW5kbGVIb3N0Q2FsbChnbG9iYWxP
YmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pKTsKICAgICB9
Ci0gICAgCi0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNh
bGxlZUFzRnVuY3Rpb25DZWxsKTsKLSAgICBKU1Njb3BlKiBzY29wZSA9IGZ1bmN0aW9uLT5zY29w
ZVVuY2hlY2tlZCgpOwotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24t
PmV4ZWN1dGFibGUoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWV4ZWN1dGFibGUtPmhhc0pJVENvZGVG
b3Ioa2luZCkpKSB7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKLSAg
ICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RB
YmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KSB7Ci0gICAgICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24pKTsKLSAgICAgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQoCi0gICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4
Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRy
VGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7Ci0gICAgICAgIH0KKyAgICBhdXRvIG1hdGVyaWFs
aXplQ29kZUJsb2NrSWZOZWNlc3NhcnkgPSBbJl0oSlNGdW5jdGlvbiogZnVuY3Rpb24sIEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlKSAtPiB2b2lkKiB7CisgICAgICAgIGlmIChVTkxJS0VMWSgh
ZXhlY3V0YWJsZS0+aGFzSklUQ29kZUZvcihraW5kKSkpIHsKKyAgICAgICAgICAgIEpTU2NvcGUq
IHNjb3BlID0gZnVuY3Rpb24tPnNjb3BlVW5jaGVja2VkKCk7CisgICAgICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCi0gICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Ns
b3QgPSBjYWxsZWVGcmFtZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEV4Y2VwdGlv
biogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rp
b25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7
Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJv
cik7Ci0gICAgICAgIGlmIChVTkxJS0VMWShlcnJvcikpIHsKLSAgICAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoCi0gICAgICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlv
bkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigp
LmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisgICAgICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBm
dW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3QpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGdsb2JhbE9i
amVjdCwgZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdm0uZ2V0Q1RJU3R1Yih0
aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0Vu
dHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBjYWxsZWVGcmFtZS0+YWRkcmVzc09m
Q29kZUJsb2NrKCk7CisgICAgICAgICAgICBFeGNlcHRpb24qIGVycm9yID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGZ1bmN0
aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOworICAgICAgICAgICAgRVhDRVBUSU9O
X0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yKTsKKyAgICAgICAgICAgIGlm
IChVTkxJS0VMWShlcnJvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZtLmdldENUSVN0dWIo
dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNF
bnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICB9CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH07CisgICAgCisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgYXV0byBmYWls
dXJlID0gbWF0ZXJpYWxpemVDb2RlQmxvY2tJZk5lY2Vzc2FyeShmdW5jdGlvbiwgZXhlY3V0YWJs
ZSk7CisgICAgaWYgKFVOTElLRUxZKGZhaWx1cmUpKQorICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KGZhaWx1cmUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOworCisg
ICAgLy8gQ2FsbCBJQyBsaW5rcyB0aGlzIGNhbGxzaXRlIHRvIHdyYXBwZWQgZnVuY3Rpb24gZGly
ZWN0bHkuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgZGlyZWN0bHkgbGlua2VkIGZ1bmN0aW9uIGlz
IG1hdGVyaWFsaXplZCBoZXJlLgorICAgIGlmIChmdW5jdGlvbi0+aW5oZXJpdHM8SlNCb3VuZEZ1
bmN0aW9uPih2bSkgJiYganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGZ1bmN0aW9uKS0+dGFyZ2V0
RnVuY3Rpb24oKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKSB7CisgICAgICAgIGF1dG8qIHRh
cmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZnVuY3Rpb24pLT50YXJnZXRGdW5jdGlvbigpKTsKKyAgICAgICAgYXV0byBmYWlsdXJlID0g
bWF0ZXJpYWxpemVDb2RlQmxvY2tJZk5lY2Vzc2FyeSh0YXJnZXRGdW5jdGlvbiwgdGFyZ2V0RnVu
Y3Rpb24tPmV4ZWN1dGFibGUoKSk7CisgICAgICAgIGlmIChVTkxJS0VMWShmYWlsdXJlKSkKKyAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZmFpbHVyZSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgfQorCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgd2Fz
bSBJQy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIw
MzM5CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKApA
QCAtMTQ5Niw2ICsxNTEwLDEwIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZv
cldpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAKIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsLCBTbG93UGF0aFJl
dHVyblR5cGUsIChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykpCiB7CisgICAgLy8gRHVyaW5nIGV4
ZWN1dGlvbiBvZiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uL2xpbmtQb2x5bW9ycGhpY0NhbGwsIHdl
IHN0cm9uZ2x5IGFzc3VtZSB0aGF0IHdlIG5ldmVyIGRvIEdDLgorICAgIC8vIEdDIGpldHRpc29u
cyBDb2RlQmxvY2tzLCBjaGFuZ2VzIENhbGxMaW5rSW5mbyBldGMuIGFuZCBicmVha3MgYXNzdW1w
dGlvbiBkb25lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjYWxsLgorICAgIERlZmVyR0NGb3JBV2hp
bGUgZGVmZXJHQ0ZvckFXaGlsZShnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKICAgICBBU1NF
UlQoY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKSA9PSBDb2RlRm9yQ2FsbCk7CiAg
ICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbDsKICAgICBTbG93UGF0aFJldHVyblR5cGUg
cmVzdWx0ID0gdmlydHVhbEZvcldpdGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1l
LCBjYWxsTGlua0luZm8sIGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKQEAgLTE1MDcsNiArMTUyNSwx
MCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2Fs
bCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbAogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uVmlydHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2Fs
bGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvKSkKIHsKKyAgICAvLyBEdXJpbmcgZXhlY3V0aW9uIG9mIHZpcnR1YWxGb3JXaXRo
RnVuY3Rpb24vbGlua1BvbHltb3JwaGljQ2FsbCwgd2Ugc3Ryb25nbHkgYXNzdW1lIHRoYXQgd2Ug
bmV2ZXIgZG8gR0MuCisgICAgLy8gR0MgamV0dGlzb25zIENvZGVCbG9ja3MsIGNoYW5nZXMgQ2Fs
bExpbmtJbmZvIGV0Yy4gYW5kIGJyZWFrcyBhc3N1bXB0aW9uIGRvbmUgYmVmb3JlIGFuZCBhZnRl
ciB0aGlzIGNhbGwuCisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxlKGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKTsKKwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGxJ
Z25vcmVkOwogICAgIHJldHVybiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwg
Y2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDhhOTZhYmU4NWVkZWZi
YTE1NTEwOTI3NDY3ZDZhMzk5OWUxMzU0YmUuLjYzNzEzNjI1ODdiMjcwZTZlMTc3ODkyYTVmNTQy
NDgwYTc3MmJkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNDks
NiArNDksNyBAQAogI2luY2x1ZGUgIkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCIKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseS5oIgpAQCAtMTIyMyw2ICsx
MjI0LDExIEBAIHZvaWQgbGlua0ZvcigKIHsKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5zdHVi
KCkpOwogCisgICAgaWYgKGNhbGxlZS0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkgJiYg
Y2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsICYmIGNhbGxM
aW5rSW5mby5hbGxvd1N0dWJzKCkpIHsKKyAgICAgICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxMaW5r
SW5mbywgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxl
ckZyYW1lKCk7CiAgICAgLy8gT3VyIGNhbGxlciBtdXN0IGhhdmUgYSBjZWxsIGZvciBhIGNhbGxl
ZS4gV2hlbiBjYWxsaW5nCiAgICAgLy8gdGhpcyBmcm9tIFdhc20sIHdlIGVuc3VyZSB0aGUgY2Fs
bGVlIGlzIGEgY2VsbC4KQEAgLTEzNDAsMTYgKzEzNDYsMTAxIEBAIHN0cnVjdCBDYWxsVG9Db2Rl
UHRyIHsKIH07CiB9IC8vIGFubm9ueW1vdXMgbmFtZXNwYWNlCiAKK3N0YXRpYyB2b2lkIGdlbmVy
YXRlSW5saW5lZEJvdW5kRnVuY3Rpb25DYWxsKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
Qm91bmRGdW5jdGlvbiogZnVuY3Rpb24sIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIGpp
dC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZyYW1l
LgorICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciks
IENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKKyAg
ICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKwor
ICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBmdW5jdGlvbi0+Ym91bmRBcmdz
KCk7CisgICAgdW5zaWduZWQgY2FsbFNpdGVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKyAgICB1bnNpZ25lZCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxTaXRlQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyAoYm91bmRBcmdzID8gYm91bmRBcmdzLT5sZW5ndGgoKSA6IDApOworICAgIHVuc2lnbmVk
IG51bVBhcmFtZXRlcnMgPSAwOworICAgIHVuc2lnbmVkIG51bUZpeHVwQ291bnQgPSAwOworCisg
ICAgSlNGdW5jdGlvbiogdGFyZ2V0RnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0
aW9uLT50YXJnZXRGdW5jdGlvbigpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogdGFyZ2V0RXhlY3V0
YWJsZSA9IHRhcmdldEZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgaWYgKHRhcmdldEV4ZWN1
dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICB9IGVsc2UgeworICAgICAgICBDb2RlQmxv
Y2sqIHRhcmdldENvZGVCbG9jayA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0YXJnZXRF
eGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgpOworICAgICAgICBudW1QYXJhbWV0ZXJzID0g
dGFyZ2V0Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7CisgICAgICAgIGlmIChudW1QYXJhbWV0
ZXJzID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgICAgICAgICBudW1GaXh1cENv
dW50ID0gbnVtUGFyYW1ldGVycyAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIH0K
KyAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0FmdGVyRml4dXAgPSBzdGQ6
Om1heDx1bnNpZ25lZD4oYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG51bVBhcmFtZXRlcnMp
OworCisgICAgLy8gVGhlIGZvcm11bGEgZm9yIHRoZSBudW1iZXIgb2Ygc3RhY2sgYnl0ZXMgbmVl
ZGVkIGdpdmVuIHNvbWUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKGluY2x1ZGluZworICAgIC8vIHRo
aXMpIGlzOgorICAgIC8vCisgICAgLy8gICAgIHN0YWNrQWxpZ24oKG51bVBhcmFtcyArIENhbGxG
cmFtZUhlYWRlclNpemUpICogc2l6ZW9mKFJlZ2lzdGVyKSAtIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSkKKyAgICAvLworICAgIC8vIFByb2JhYmx5IHdlIHdhbnQgdG8gd3JpdGUgdGhpcyBhczoK
KyAgICAvLworICAgIC8vICAgICBzdGFja0FsaWduKChudW1QYXJhbXMgKyAoQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSAtIENhbGxlckZyYW1lQW5kUENTaXplKSkgKiBzaXplb2YoUmVnaXN0ZXIpKQorICAg
IC8vCisgICAgLy8gVGhhdCdzIHJlYWxseSBhbGwgdGhlcmUgaXMgdG8gdGhpcy4gV2UgaGF2ZSBh
bGwgdGhlIHJlZ2lzdGVycyB3ZSBuZWVkIHRvIGRvIGl0LgorCisgICAgdW5zaWduZWQgZXh0cmFT
dGFja05lZWRlZCA9IDA7CisgICAgaWYgKHVuc2lnbmVkIHN0YWNrTWlzYWxpZ25tZW50ID0gc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpICUgc3RhY2tBbGlnbm1lbnRCeXRlcygpKQorICAgICAgICBl
eHRyYVN0YWNrTmVlZGVkID0gc3RhY2tBbGlnbm1lbnRCeXRlcygpIC0gc3RhY2tNaXNhbGlnbm1l
bnQ7CisKKyAgICB1bnNpZ25lZCBzdGFja1NpemVJblJlZ2lzdGVycyA9IFdURjo6cm91bmRVcFRv
TXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAoQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMgLSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMpICsgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXNBZnRlckZpeHVwKTsKKyAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKC0oc3RhY2tTaXplSW5SZWdpc3RlcnMgKiBzaXplb2YoUmVn
aXN0ZXIpKSAtIGV4dHJhU3RhY2tOZWVkZWQpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7CisgICAgYXV0byBzdGFja092ZXJmbG93ID0gaml0LmJy
YW5jaFB0cihDQ2FsbEhlbHBlcnM6OkFib3ZlLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyh2bS5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6cmVnVDIpOworCisgICAg
aml0Lm1vdmUoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisKKyAgICB1bnNp
Z25lZCBpbmRleEluQXJndW1lbnRzID0gMDsKKyAgICBqaXQuc3RvcmVUcnVzdGVkVmFsdWUoZnVu
Y3Rpb24tPmJvdW5kVGhpcygpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdChpbmRl
eEluQXJndW1lbnRzKyspKTsKKyAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraW5kZXgpCisg
ICAgICAgICAgICBqaXQuc3RvcmVUcnVzdGVkVmFsdWUoYm91bmRBcmdzLT5nZXQoaW5kZXgpLCBD
Q2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdChpbmRleEluQXJndW1lbnRzKyspKTsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2
YWlsYWJsZVJlZ3MoR1BSSW5mbzo6cmVnVDQsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gLyogY2FsbHNpdGUncyB8dGhpc3wgaXMgbm90IGludGVyZXN0aW5nICov
IDE7IGluZGV4IDwgY2FsbFNpdGVBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpbmRleCkg
eworICAgICAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoaW5kZXgpKSwgdmFsdWVSZWdzKTsKKyAg
ICAgICAgaml0LnN0b3JlVmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3Vt
ZW50U2xvdChpbmRleEluQXJndW1lbnRzKyspKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBudW1GaXh1cENvdW50OyArK2luZGV4KQorICAgICAgICBqaXQu
c3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1
bWVudFNsb3QoaW5kZXhJbkFyZ3VtZW50cysrKSk7CisKKyAgICBqaXQuc3RvcmVUcnVzdGVkVmFs
dWUodGFyZ2V0RnVuY3Rpb24sIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpOworICAgIGF1dG8gZnVuY3Rpb25DYWxsID0gaml0LmNhbGwoSlNFbnRy
eVB0clRhZyk7CisgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBGdW5jdGlvblB0cjxK
U0VudHJ5UHRyVGFnPih0YXJnZXRFeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgp
LT5hZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpKSk7CisgICAgfSk7CisKKyAg
ICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICBqaXQucmV0KCk7CisKKyAgICAvLyBU
aHJvdyBTdGFjayBPdmVyZmxvdyBleGNlcHRpb24KKyAgICBzdGFja092ZXJmbG93LmxpbmsoJmpp
dCk7CisgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHZtLnRvcEVudHJ5RnJhbWUpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihmdW5jdGlvbi0+c2NvcGUoKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1
bmspPihHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
KyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7
Cit9CisKK3N0cnVjdCBJbmxpbmVkQ2FsbGVlIHsKKyAgICBzaXplX3QgY2FzZUluZGV4OworICAg
IENDYWxsSGVscGVyczo6TGFiZWwgZW50cnlwb2ludDsKK307CisKIHZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENhbGxWYXJpYW50IG5ld1ZhcmlhbnQpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvLmFsbG93U3R1YnMoKSk7CiAKICAgICBD
YWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLQotICAgIC8vIER1cmluZyBleGVjdXRpb24gb2Yg
bGlua1BvbHltb3JwaGljQ2FsbCwgd2Ugc3Ryb25nbHkgYXNzdW1lIHRoYXQgd2UgbmV2ZXIgZG8g
R0MuCi0gICAgLy8gR0MgamV0dGlzb25zIENvZGVCbG9ja3MsIGNoYW5nZXMgQ2FsbExpbmtJbmZv
IGV0Yy4gYW5kIGJyZWFrcyBhc3N1bXB0aW9uIGRvbmUgYmVmb3JlIGFuZCBhZnRlciB0aGlzIGNh
bGwuCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxlKHZtLmhlYXApOworICAg
IEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7CiAgICAgCiAgICAgaWYgKCFuZXdWYXJpYW50
KSB7CiAgICAgICAgIGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5mbyk7
CkBAIC0xMzkyLDYgKzE0ODMsMTEgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKICAgICAKICAg
ICBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4gY2FsbENhc2VzOwogICAgIFZlY3RvcjxpbnQ2
NF90PiBjYXNlVmFsdWVzOworCisgICAgYXV0byBpc0xpbmthYmxlQm91bmRGdW5jdGlvbiA9IFsm
XShDYWxsVmFyaWFudCYgdmFyaWFudCkgeworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IHZhcmlhbnQuZnVuY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICYmIGZ1bmN0aW9u
LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSAmJiBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9u
Kj4oZnVuY3Rpb24pLT50YXJnZXRGdW5jdGlvbigpLT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkg
JiYgIWNhbGxMaW5rSW5mby5pc1ZhcmFyZ3MoKTsKKyAgICB9OwogICAgIAogICAgIC8vIEZpZ3Vy
ZSBvdXQgd2hhdCBvdXIgY2FzZXMgYXJlLgogICAgIGZvciAoQ2FsbFZhcmlhbnQgdmFyaWFudCA6
IGxpc3QpIHsKQEAgLTE0MDUsNiArMTUwMSwxMiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAog
ICAgICAgICAgICAgICAgIGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5m
byk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgaWYgKGlzTGlua2FibGVCb3VuZEZ1bmN0aW9uKHZhcmlhbnQpKSB7CisgICAgICAgICAgICAv
LyBXZSBsaW5rIHRoZSBjYWxsIHRvIHRoZSB0YXJnZXQgZnVuY3Rpb24sIHNvIHdlIG5lZWQgdG8g
cmV0cmlldmUgQ29kZUJsb2NrIGZyb20gdGhlIHRhcmdldCBmdW5jdGlvbi4KKyAgICAgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldEZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihqc0Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4odmFyaWFudC5mdW5jdGlvbigpKS0+dGFyZ2V0RnVuY3Rpb24oKSk7
CisgICAgICAgICAgICBFeGVjdXRhYmxlQmFzZSogdGFyZ2V0RXhlY3V0YWJsZSA9IHRhcmdldEZ1
bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgICAgICBpZiAoIXRhcmdldEV4ZWN1dGFibGUt
PmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KHRhcmdldEV4ZWN1dGFibGUpLT5jb2RlQmxvY2tGb3JDYWxsKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBpbnQ2NF90IG5ld0Nhc2VWYWx1ZSA9IDA7CkBAIC0xNTIz
LDYgKzE2MjUsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogICAgICAgICBoYXNFeGVjdXRh
YmxlLmxpbmsoJnN0dWJKaXQpOwogICAgIH0KIAorICAgIFZlY3RvcjxJbmxpbmVkQ2FsbGVlPiBp
bmxpbmVkQ2FsbGVlczsKICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKGNvbXBhcmlzb25W
YWx1ZUdQUiwgY2FzZVZhbHVlcywgQmluYXJ5U3dpdGNoOjpJbnRQdHIpOwogICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZG9uZTsKICAgICB3aGlsZSAoYmluYXJ5U3dpdGNoLmFkdmFuY2Uoc3R1
YkppdCkpIHsKQEAgLTE1MzQsNyArMTYzNywxNCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAog
ICAgICAgICBpZiAodmFyaWFudC5leGVjdXRhYmxlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCh2
YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNvZGVQdHIgPSBqc1RvV2FzbUlDQ29kZVB0cih2bSwgY2FsbExpbmtJbmZv
LnNwZWNpYWxpemF0aW9uS2luZCgpLCB2YXJpYW50LmZ1bmN0aW9uKCkpOworICAgICAgICAgICAg
aWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdmFyaWFudC5mdW5jdGlvbigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzTGlua2FibGVCb3VuZEZ1bmN0aW9uKHZhcmlhbnQpKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIEVtaXQgaW5saW5lZCBKU0JvdW5kRnVuY3Rpb24gY2FsbCBpZiBKU0Jv
dW5kRnVuY3Rpb24ncyB0YXJnZXQgZnVuY3Rpb24gaXMgSlNGdW5jdGlvbiwgYW5kIGl0IGlzIG5v
dCBjYWxsX3ZhcmFyZ3MKKyAgICAgICAgICAgICAgICAgICAgaW5saW5lZENhbGxlZXMuYXBwZW5k
KElubGluZWRDYWxsZWUgeyBjYXNlSW5kZXgsIENDYWxsSGVscGVyczo6TGFiZWwoKSB9KTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ciA9IGpzVG9X
YXNtSUNDb2RlUHRyKHZtLCBjYWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCksIGZ1bmN0
aW9uKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCFjb2RlUHRyKQogICAgICAg
ICAgICAgICAgIGNvZGVQdHIgPSB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKTsKICAgICAg
ICAgfSBlbHNlIHsKQEAgLTE1NTgsNiArMTY2OCwyMSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0Nh
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENh
bAogICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNvZGVQdHIgPSBjb2RlUHRyOwogICAgICAgICBk
b25lLmFwcGVuZChzdHViSml0Lmp1bXAoKSk7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBpbmxp
bmVkIDogaW5saW5lZENhbGxlZXMpIHsKKyAgICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGlubGlu
ZWQuY2FzZUluZGV4OworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2Nh
c2VJbmRleF0udmFyaWFudCgpOworICAgICAgICBpbmxpbmVkLmVudHJ5cG9pbnQgPSBzdHViSml0
LmxhYmVsKCk7CisKKyAgICAgICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpKTsKKyAgICAg
ICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKTsKKyAg
ICAgICAgQVNTRVJUKHZhcmlhbnQuZnVuY3Rpb24oKSk7CisgICAgICAgIEFTU0VSVCh2YXJpYW50
LmZ1bmN0aW9uKCktPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKTsKKyAgICAgICAgQVNT
RVJUKGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih2YXJpYW50LmZ1bmN0aW9uKCkpLT50YXJnZXRG
dW5jdGlvbigpLT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpOworICAgICAgICBBU1NFUlQoIWNh
bGxMaW5rSW5mby5pc1ZhcmFyZ3MoKSk7CisKKyAgICAgICAgZ2VuZXJhdGVJbmxpbmVkQm91bmRG
dW5jdGlvbkNhbGwodm0sIHN0dWJKaXQsIGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih2YXJpYW50
LmZ1bmN0aW9uKCkpLCBjYWxsRnJhbWUpOworICAgIH0KICAgICAKICAgICBzbG93UGF0aC5saW5r
KCZzdHViSml0KTsKICAgICBiaW5hcnlTd2l0Y2guZmFsbFRocm91Z2goKS5saW5rKCZzdHViSml0
KTsKQEAgLTE1OTAsNiArMTcxNSw5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAgICAgICAg
IGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsRnJhbWUsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlubGluZWQgOiBpbmxpbmVkQ2Fs
bGVlcykKKyAgICAgICAgY2FsbHNbaW5saW5lZC5jYXNlSW5kZXhdLmNvZGVQdHIgPSBwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KGlubGluZWQuZW50cnlwb2ludCk7CiAgICAg
CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbENhc2VzLnNpemUoKSA9PSBjYWxscy5zaXplKCkpOwog
ICAgIGZvciAoQ2FsbFRvQ29kZVB0ciBjYWxsVG9Db2RlUHRyIDogY2FsbHMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA1MWYwM2I5YzFm
NTkxOTBmOWQ5OTg0YWZjYmIxNWI5MGI1YTE3Y2U3Li5mODA2NTI5MjFmMTY5NTg3ZmY2ZTA0N2E2
OTM5NTBjYWY4OTQxODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCkBAIC0xMTg5LDcgKzExODksNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2bSkKICAgICBh
dXRvIG5vQXJncyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5m
bzo6cmVnVDIpOwogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QyLCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSksIEdQ
UkluZm86OnJlZ1QyKTsKICAgICBqaXQuYWRkMzIoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJl
Z1QxKTsKLSAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUklu
Zm86OnJlZ1QxKTsKICAgICBub0FyZ3MubGluaygmaml0KTsKICAgICBqaXQuYWRkMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSBD
YWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMpLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDIpOwogICAgIGppdC5sc2hpZnQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigz
KSwgR1BSSW5mbzo6cmVnVDIpOwpAQCAtMTI0OCw3ICsxMjQ3LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0p
CiAKICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGxvb3BCb3VuZCA9IGppdC5sYWJlbCgpOwogICAg
IGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEp
OwotICAgIGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIEpTSW1tdXRhYmxl
QnV0dGVyZmx5OjpvZmZzZXRPZkRhdGEoKSArIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
KSwgdmFsdWVSZWdzKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QmFzZUluZGV4
KEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0
LCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkpLCB2YWx1ZVJlZ3MpOwogICAg
IGppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNs
b3QoMSkuaW5kZXhlZEJ5KEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQp
KTsKICAgICBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6
cmVnVDEpLmxpbmtUbyhsb29wQm91bmQsICZqaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggODcyYjg1NzJkZDkz
Y2Q4YmI5NWU3ZWE0MjM3NDRjMGUyYzVmZjA4My4uODU4MTFhM2NiZWEyZmVjY2FjNzlmYzdhMmVj
NDM1NzQ3MTU5NzkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgbWFjcm8gc2xvd1Bh
dGhPcChvcGNvZGVOYW1lKQogZW5kCiAKIHNsb3dQYXRoT3AoY3JlYXRlX2Nsb25lZF9hcmd1bWVu
dHMpCi1zbG93UGF0aE9wKGNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5KQorc2xvd1BhdGhPcChj
cmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcykKIHNsb3dQYXRoT3AoY3Jl
YXRlX2RpcmVjdF9hcmd1bWVudHMpCiBzbG93UGF0aE9wKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KQogc2xvd1BhdGhPcChjcmVhdGVfcmVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDgyZjNlY2IwODYzYjNkYWEwNTc0
ZDVkOGQ4NDlkMjlkMzAyOWU5YTUuLjY3MGE0YTRhNGU1YzVlNDI1YmVhOTg3OTBmZWU2MDU0YjU0
MzdmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0lu
dGVybmFsUHJvbWlzZS5oIgpAQCAtMjA2LDE2ICsyMDcsMzggQEAgSlNDX0RFRklORV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKICAgICBSRVRVUk4o
Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRoTWFjaGluZUZyYW1lKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBBcmd1bWVudHNNb2RlOjpDbG9uZWQpKTsKIH0KIAotSlNDX0RFRklORV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKK0pTQ19ERUZJ
TkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHlf
ZXhjbHVkaW5nX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHlFeGNsdWRpbmdUaGlzPigpOworICAgIEpT
Q2VsbCogdGFyZ2V0ID0gR0VUKGJ5dGVjb2RlLm1fdGFyZ2V0KS5qc1ZhbHVlKCkuYXNDZWxsKCk7
CiAgICAgaW50MzJfdCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7
Ci0gICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVy
Zmx5Ojp0cnlDcmVhdGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJ
bmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51
bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpLCBhcmd1bWVudENvdW50KTsKKyAgICBBU1NFUlQo
YXJndW1lbnRDb3VudCA+IDEpOworCisgICAgQ2hlY2tlZEludDMyIHRvdGFsQ291bnQgPSBhcmd1
bWVudENvdW50IC0gMTsKKyAgICBpbnQzMl90IGFkZGl0aW9uYWxDb3VudCA9IDA7CisgICAgSlNJ
bW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IG51bGxwdHI7CisgICAgaWYgKHRhcmdldC0+
aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7CisgICAg
ICAgIGlmIChib3VuZEZ1bmN0aW9uLT5jYW5DbG9uZUJvdW5kQXJncygpKSB7CisgICAgICAgICAg
ICBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAgICAgICAgIGFk
ZGl0aW9uYWxDb3VudCA9IGJvdW5kQXJncyA/IGJvdW5kQXJncy0+bGVuZ3RoKCkgOiAwOworICAg
ICAgICAgICAgdG90YWxDb3VudCArPSBhZGRpdGlvbmFsQ291bnQ7CisgICAgICAgICAgICBpZiAo
dG90YWxDb3VudC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICAgICAgVEhST1coY3JlYXRl
T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6
dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhG
cm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJP
ZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgdG90YWxDb3VudC51bnNhZmVHZXQoKSk7CiAgICAgaWYg
KCFidXR0ZXJmbHkpCiAgICAgICAgIFRIUk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFs
T2JqZWN0KSk7Ci0gICAgZm9yIChpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENv
dW50OyArK2luZGV4KQotICAgICAgICBidXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpbmRleCkpOworICAgIGlmIChhZGRpdGlvbmFsQ291
bnQpIHsKKyAgICAgICAgQVNTRVJUKGJvdW5kQXJncyk7CisgICAgICAgIGZvciAoaW50MzJfdCBp
bmRleCA9IDA7IGluZGV4IDwgYWRkaXRpb25hbENvdW50OyArK2luZGV4KQorICAgICAgICAgICAg
YnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgsIGJvdW5kQXJncy0+Z2V0KGluZGV4KSk7Cisg
ICAgfQorICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgKGFyZ3VtZW50Q291bnQg
LSAxKTsgKytpbmRleCkKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXggKyBh
ZGRpdGlvbmFsQ291bnQsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaW5kZXggKyAxKSk7
CiAgICAgUkVUVVJOKGJ1dHRlcmZseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggODRlMmRhNWY3YWI2OGE2MjYyNDg1Y2I4
Y2M0M2Y4MDU3MTQ4YzQ3MS4uOTg4ODUxNjkwZjIwN2FlMDljZGE4OTk0MzcxNzA0YTZjZTdkZTAx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKQEAgLTIxMCw3ICsyMTAsNyBAQCBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3df
cGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyk7CiBKU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyk7CiBKU0NfREVDTEFS
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cyk7Ci1K
U0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1
dHRlcmZseSk7CitKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzX2J1dHRlcmZseV9leGNsdWRpbmdfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xP
V19QQVRIKHNsb3dfcGF0aF9lbnRlcik7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF90b190aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IGRkZThmMDlhNTk3YTg5MTNmMzk4NDJiZmY0MmNhMTEw
NGVhYTIxNTIuLmQ0Zjc4ZjQ3MDI3YTJhOGEwODY5MWVmMzJmZTA5YjNhZDUyMTViNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApA
QCAtNDEsOCArNDEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9Bcmdz
RnVuY3Rpb25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0
cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAg
ICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtNzAsOCAr
NjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRGdW5jdGlvbkNhbGwsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEg
c2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFw
cGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtOTUsOCArOTMsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3Qs
IChKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
ICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhl
IGZpcnN0IG9uZSBpcyB8dGhpc3wuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBi
b3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChib3Vu
ZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtMTIzLDggKzEyMCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihib3VuZEZ1bmN0aW9uQ29uc3RydWN0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgaWYg
KGJvdW5kQXJncykgewotICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBv
bmUgaXMgfHRoaXN8LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRB
cmdzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5n
ZXQoaSkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCk7ICsraSkKQEAgLTIzNCw4ICsyMzAsNyBAQCBKU0FycmF5KiBKU0JvdW5k
RnVuY3Rpb246OmJvdW5kQXJnc0NvcHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KHRoaXMtPmdsb2JhbE9iamVj
dCgpLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
ICAgICBpZiAobV9ib3VuZEFyZ3MpIHsKLSAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0
aGUgZmlyc3Qgb25lIGlzIGJvdW5kIHx0aGlzfC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8IG1fYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2JvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAg
cmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgbV9ib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAppbmRleCA0
YTkwYjAyMmRkMzBmNjQwNjczMWIwZjFkYTkyOTZhMjc3YzVjNjg3Li4xN2FhODRjZmZlMTU3Y2Jh
ODZjZjkyZDhhY2M1OWY2NzY5Y2FkMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJm
bHkuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQyLDYgKzQzLDggQEAgY2xhc3MgSlNCb3Vu
ZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyAmIH5JbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOwogICAgIHN0YXRpY19hc3NlcnQoU3RydWN0dXJlRmxh
Z3MgJiBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsICIiKTsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbWF4TnVtYmVyT2ZDbG9uaW5nQm91bmRBcmd1bWVudHMgPSA2NDsKKwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKQEAgLTUyLDkgKzU1LDE2
IEBAIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAg
ICAKICAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CiAKKyAgICAvLyBJZiBib3VuZEFyZ3MnIGxlbmd0aCBpcyB0b28g
bGFyZ2UsIHdlIHNob3VsZCBub3QgY2xvbmUgYm91bmRBcmdzIHdoZW4gd3JhcHBpbmcgdGhlIGJv
dW5kIGZ1bmN0aW9uIGFnYWluLgorICAgIGJvb2wgY2FuQ2xvbmVCb3VuZEFyZ3MoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJvdW5kQXJnc0xlbmd0aCgpIDw9IEpTQm91bmRGdW5jdGlv
bjo6bWF4TnVtYmVyT2ZDbG9uaW5nQm91bmRBcmd1bWVudHM7CisgICAgfQorCiAgICAgSlNPYmpl
Y3QqIHRhcmdldEZ1bmN0aW9uKCkgeyByZXR1cm4gbV90YXJnZXRGdW5jdGlvbi5nZXQoKTsgfQog
ICAgIEpTVmFsdWUgYm91bmRUaGlzKCkgeyByZXR1cm4gbV9ib3VuZFRoaXMuZ2V0KCk7IH0KICAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzKCkgeyByZXR1cm4gbV9ib3VuZEFyZ3Mu
Z2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRoaXMgYXJyYXkgdG8gYmUgbXV0YXRlZCEKKyAgICB1
bnNpZ25lZCBib3VuZEFyZ3NMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQXJncyA/IG1f
Ym91bmRBcmdzLT5sZW5ndGgoKSA6IDA7IH0KICAgICBKU0FycmF5KiBib3VuZEFyZ3NDb3B5KEpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgSlNTdHJpbmcqIG5hbWVNYXlCZU51bGwoKSB7IHJldHVybiBt
X25hbWVNYXlCZU51bGwuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWVTdHJpbmcoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDBhNjE2NzEzZTZkYzZjZDVlYTc5OGVlYzQ2ZDFhNTQ2YzdhZTMyYTguLjE1MmFkODVmMzUx
MWYxN2JhNGJmMTk3MjBiNDRlMzZiMTBmN2ZiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwMCwxMCArMzAwLDIyIEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihtYWtlQm91bmRGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEpTVmFsdWUgYm91bmRUaGlzID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBKU1ZhbHVlIGJvdW5kQXJncyA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7CisgICAgSlNJbW11dGFibGVCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IGJvdW5kQXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1
dHRlcmZseSo+KGJvdW5kQXJncykgOiBudWxscHRyOwogICAgIGRvdWJsZSBsZW5ndGggPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDMpLmFzTnVtYmVyKCk7CiAgICAgSlNTdHJpbmcqIG5h
bWVTdHJpbmcgPSBhc1N0cmluZyhjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKTsKIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFy
Z3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihib3VuZEFyZ3MpIDog
bnVsbHB0ciwgbGVuZ3RoLCBuYW1lU3RyaW5nKSkpOworICAgIC8vIFVud3JhcCBKU0JvdW5kRnVu
Y3Rpb24gYnkgY29uZmlndXJpbmcgYnV0dGVyZmx5IGFuZCB0YXJnZXQuIFRoZSBsYXJnZXIgQnV0
dGVyZmx5IGlzIGFscmVhZHkgYWxsb2NhdGVkIGZvciB0aGF0IHB1cnBvc2UuCisgICAgaWYgKHRh
cmdldC0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAgICAgSlNCb3VuZEZ1
bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRhcmdldCk7
CisgICAgICAgIGlmIChib3VuZEZ1bmN0aW9uLT5jYW5DbG9uZUJvdW5kQXJncygpKSB7CisgICAg
ICAgICAgICBib3VuZFRoaXMgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZFRoaXMoKTsKKyAgICAgICAg
ICAgIHRhcmdldCA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7CisgICAgICAgICAg
ICBpZiAoIWJ1dHRlcmZseSAmJiBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkKKyAgICAgICAg
ICAgICAgICBidXR0ZXJmbHkgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRU
aGlzLCBidXR0ZXJmbHksIGxlbmd0aCwgbmFtZVN0cmluZykpKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGhhc093bkxlbmd0aFByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGRlZTlmODQ5OWQ2OThlMDYzMjgwMzVlNTMxZTc4Yjc5
YTFiNjE0MjcuLjgwMmEzYzM4ZDVmYTQzMjQwYjNlNzE2MTViODczYjM3MzVjNDcwMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTIwMDgsNiArMjAw
OCw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVXNlSklUKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNHaWdhY2FnZUVuYWJs
ZWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Ub1VuY2FjaGVh
YmxlRGljdGlvbmFyeSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bklzUHJpdmF0ZVN5bWJvbCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkFzc2VydEZyYW1lQWxpZ25lZCk7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RvbGxhclZNOjpz
X2luZm8gPSB7ICJEb2xsYXJWTSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNEb2xsYXJWTSkgfTsKIApAQCAtMzU3Niw2ICszNTc3LDEzIEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbklzUHJpdmF0ZVN5bWJvbCwgKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oYXNTeW1ib2woY2FsbEZyYW1lLT5hcmd1bWVudCgwKSktPnVpZCgpLmlzUHJpdmF0ZSgp
KSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkFzc2VydEZyYW1lQWxp
Z25lZCwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgUkVMRUFTRV9BU1NFUlQoYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oY2FsbEZyYW1lKSAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSA9PSAw
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBjb25z
dGV4cHIgdW5zaWduZWQganNEb2xsYXJWTVByb3BlcnR5QXR0cmlidXRlcyA9IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlOwogCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKQEAgLTM3MzAsNiArMzczOCw4IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogCiAgICAgYWRkRnVuY3Rpb24odm0sICJpc1ByaXZhdGVTeW1ib2wiLCBm
dW5jdGlvbklzUHJpdmF0ZVN5bWJvbCwgMSk7CiAKKyAgICBhZGRGdW5jdGlvbih2bSwgImFzc2Vy
dEZyYW1lQWxpZ25lZCIsIGZ1bmN0aW9uQXNzZXJ0RnJhbWVBbGlnbmVkLCAwKTsKKwogICAgIG1f
b2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90
U3RhdHVzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGViNzEyNTFjYjE0NjhkOWQyNTBmYTE0YzU4ZTFhNzhhYTUwYmFmMWUuLjQxM2Y1
OWY3YmU4NzMyZGI5ZTM2YWYwYjU0ZmY3Njk1NzlhNmY2NTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMS0wNS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1bmN0aW9uIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2RvbS9mdW5jdGlvbi1iaW5kLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0wNS0wMyAgUm9iZXJ0IEplbm5lciAgPGplbm5lckBhcHBsZS5j
b20+CiAKICAgICAgICAgWyBtYWNPUy9pT1MgRGVidWcgXSBodHRwL3dwdC9jcnlwdG8vdW53cmFw
LXJzYS1rZXktY3Jhc2guYW55Lmh0bWwgKGxheW91dC10ZXN0KSBpcyBhIGZsYWt5IGNyYXNoCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQKaW5kZXggMmM5
ODEwNDU1MjY1YzM4ZTQzZTI4MjZhY2RmODc2NzM1YmFlZGE5Ni4uMzQ4OTM1NWVjNjUzNjQ0Zjk0
MGRmOGY1ZjY3YjAxMTRkMzVhZDE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2Z1
bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9mdW5jdGlv
bi1iaW5kLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdHMgRnVuY3Rpb24uYmluZC4K
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIG5ldyAoZGVjb2RlVVJJLmJpbmQo
KSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyAnbmV3IChkZWNvZGVVUkkuYmluZCgpKSgpJykuCitQQVNTIG5ldyAo
ZGVjb2RlVVJJLmJpbmQoKSkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBmdW5jdGlvbiBp
cyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnZGVjb2RlVVJJJykuCiBQQVNTIChuZXcg
KFN0cmluZy5iaW5kKCkpKCdmb28nKSkudG9TdHJpbmcoKSBpcyAnZm9vJwogUEFTUyByZXN1bHQg
aXMgIltvYmplY3QgV2luZG93XSAtPiB4OjEsIHk6MiIKIFBBU1MgcmVzdWx0IGlzICInYScgLT4g
eDonYicsIHk6MSIKQEAgLTI1LDcgKzI1LDcgQEAgUEFTUyAicHJvdG90eXBlIiBpbiBHIGlzIGZh
bHNlCiBQQVNTICJwcm90b3R5cGUiIGluIEggaXMgZmFsc2UKIFBBU1MgRnVuY3Rpb24uYmluZC5j
YWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogfHRoaXN8IGlzIG5vdCBh
IGZ1bmN0aW9uIGluc2lkZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC4KIFBBU1MgYWJjQXQoMSkg
aXMgImIiCi1QQVNTIG5ldyBhYmNBdCgxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBmdW5j
dGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGFiY0F0KDEpJykuCitQ
QVNTIG5ldyBhYmNBdCgxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBu
b3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnYWJjQXQnKS4KIFBBU1MgYm91bmRGdW5jdGlv
blByb3RvdHlwZUFjY2Vzc2VkIGlzIGZhbHNlCiBQQVNTIEZ1bmN0aW9uLmJpbmQubGVuZ3RoIGlz
IDEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjk3YWY2MWEzY2Y0NjdjYTM2Njg2
NTA3NDYxMDBmNmFiNzkzYmRmYy4uYjhlZTNkYTVjZmE4MTE2MGVlMTI5NWQwNjc0NDAzMWJkYTQ5
NmFkNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2NyBAQAorMjAyMS0wNS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGJvdW5kIGZ1bmN0aW9uIGNhbGxz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVz
cy9ib3VuZC1mdW5jdGlvbi1pbmxpbmluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHQpOgorICAgICAgICAqIHN0cmVzcy9ib3VuZC1m
dW5jdGlvbi1zdGFjay1vdmVyZmxvdy5qczoKKyAgICAgICAgKiBzdHJlc3MvYm91bmQtZnVuY3Rp
b24tc3RyZW5ndGgtcmVkdWN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAodDEpOgorICAgICAgICAodDIpOgorICAgICAgICAqIHN0
cmVzcy9mdW5jdGlvbi1iaW5kLWNhbGwtZnJhbWUuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6
CisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJpbmQtY2FsbGVy
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGlubGluZWQpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG8tbm90LW1pc3Mt
YWxyZWFkeS1ib3VuZC1hcmdzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRo
cm93LW1vcmUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGhyb3dh
YmxlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAqIHN0cmVz
cy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93LmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHRocm93YWJsZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvZnVuY3Rpb24tYmluZC1nZXR0ZXItY2FsbC1vc3It
ZXhpdC5qczogQWRkZWQuCisgICAgICAgIChiYXIpOgorICAgICAgICAoZm9vKToKKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlvbi1iaW5kLWlubGluZWQtb3NyLWV4aXQu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAobWF5RXhpdCk6CisgICAg
ICAgIChpbmxpbmVkKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9mdW5jdGlv
bi1iaW5kLXNldHRlci1jYWxsLW9zci1leGl0LmpzOiBBZGRlZC4KKyAgICAgICAgKGJhcik6Cisg
ICAgICAgIChmb28pOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9u
LWJpbmQtdGFpbC1jYWxsLW9zci1leGl0LmpzOiBBZGRlZC4KKyAgICAgICAgKGJhcik6CisgICAg
ICAgIChmb28pOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWJp
bmQtdGhyb3cuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGhyb3dh
YmxlKToKKyAgICAgICAgKGlubmVyKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoY2F0Y2gp
OgorICAgICAgICAqIHN0cmVzcy9zYW1wbGluZy1wcm9maWxlci1ib3VuZC1mdW5jdGlvbi1uYW1l
LmpzOgorICAgICAgICAocGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIpOgorICAgICAg
ICAqIHN0cmVzcy9zdGFjay1vdmVyZmxvdy1pbi1jdXN0b20taGFzSW5zdGFuY2UuanM6CisKIDIw
MjEtMDUtMDMgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbV0FTTS1GdW5jdGlvbi1SZWZlcmVuY2VzXSBBZGQgY2FsbF9yZWYgaW5zdHJ1Y3Rp
b24KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLWlubGluaW5nLmpz
IGIvSlNUZXN0cy9zdHJlc3MvYm91bmQtZnVuY3Rpb24taW5saW5pbmcuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2M1MDViMWZlNzIyMzllNmJjZmQ3MjA5YjUzMDMwYjgwZGMxY2IyZgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLWlubGluaW5nLmpzCkBAIC0wLDAgKzEs
MTcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMpIHsKKyAgICByZXR1cm4gYSAr
IGIgKyBjOworfQorCit2YXIgYm91bmQgPSB0ZXN0LmJpbmQoMCwgMSk7CisKK2Z1bmN0aW9uIHQo
KSB7CisgICAgcmV0dXJuIGJvdW5kKDIsIDMsIDQpOworfQorbm9JbmxpbmUodCk7Citmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHQoKSwgNik7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdGFjay1vdmVyZmxvdy5qcyBiL0pTVGVz
dHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0YWNrLW92ZXJmbG93LmpzCmluZGV4IGYxODIyZTFl
YTY5YjU2NThiYjQ3ZDgwOGMwNmNmNGQ5NzhjYzE3N2EuLjgyYWJlMzEwYjFiYzdkYmMwMTAwYTcx
YTQwZGQ0ZGZlZDEwYWY5YTUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0
aW9uLXN0YWNrLW92ZXJmbG93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9u
LXN0YWNrLW92ZXJmbG93LmpzCkBAIC04LDggKzgsOCBAQCBmdW5jdGlvbiBmb28oKQogewogfQog
Ci1mb3IgKHZhciBpID0gMDsgaSA8IDUwMDA7ICsraSkgewotICAgIGZvbyA9IGZvby5iaW5kKDEp
OworZm9yICh2YXIgaSA9IDA7IGkgPCA2MDAwOyArK2kpIHsKKyAgICBmb28gPSBmb28uYmluZCh1
bmRlZmluZWQsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSk7CiAgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KGZvbywgIm5hbWUiLCB7IHZhbHVlOiAiYmFyIiwgd3JpdGFibGU6IHRy
dWUsIGVudW1lcmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOwogfQogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdHJlbmd0aC1yZWR1Y3Rpb24uanMgYi9K
U1Rlc3RzL3N0cmVzcy9ib3VuZC1mdW5jdGlvbi1zdHJlbmd0aC1yZWR1Y3Rpb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTMzNzg2ZDJlYmY5YTU5ZDgxM2QzY2IyNTU0MmIwMTYxNmYzYzg3ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JvdW5kLWZ1bmN0aW9uLXN0cmVuZ3RoLXJlZHVjdGlv
bi5qcwpAQCAtMCwwICsxLDI3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKSB7
CisgICAgcmV0dXJuIGEgKyBiICsgYzsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgYm91bmQg
PSB0ZXN0LmJpbmQoMCwgMSk7Citub0lubGluZShib3VuZCk7CisKK2Z1bmN0aW9uIHQxKCkgewor
ICAgIHJldHVybiBib3VuZCgyLCAzLCA0KTsKK30KK25vSW5saW5lKHQxKTsKKworZnVuY3Rpb24g
dDIoKSB7CisgICAgcmV0dXJuIGJvdW5kKCdoZWxsbycpOworfQorbm9JbmxpbmUodDIpOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgc2hvdWxkQmUodDEoKSwgNik7Cisg
ICAgc2hvdWxkQmUodDIoKSwgIjFoZWxsb3VuZGVmaW5lZCIpOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC1jYWxsLWZyYW1lLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
ZnVuY3Rpb24tYmluZC1jYWxsLWZyYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkN2I4YjIwNTdjM2NjNTAy
YmZiYmFlYTBmZDJhM2I2YmQ3OWE0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9mdW5jdGlvbi1iaW5kLWNhbGwtZnJhbWUuanMKQEAgLTAsMCArMSwxNiBAQAorZnVuY3Rpb24g
dGVzdChhLCBiLCBjKQoreworICAgICR2bS5hc3NlcnRGcmFtZUFsaWduZWQoKTsKKyAgICByZXR1
cm4gYSArIGIgKyBjOworfQorCit7CisgICAgdmFyIGJvdW5kID0gdGVzdC5iaW5kKHVuZGVmaW5l
ZCwgMCwgMSwgMik7CisgICAgZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgICAgIHJldHVybiBib3Vu
ZCgpOworICAgIH0KKyAgICBub0lubGluZSh0ZXN0MSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlNDsgKytpKQorICAgICAgICB0ZXN0MSgpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZnVuY3Rpb24tYmluZC1jYWxsZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1i
aW5kLWNhbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzhlOWZlMjM0MDBiOTU2ZTMwMGQzYmExYmE2YWY3
MGNlYmRlMzEwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmlu
ZC1jYWxsZXIuanMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGlubGluZWQo
YSwgYiwgYykKK3sKKyAgICBzaG91bGRCZShpbmxpbmVkLmNhbGxlciwgdGVzdCk7Cit9CisKK3Zh
ciBib3VuZCA9IGlubGluZWQuYmluZCh1bmRlZmluZWQsIDMpLmJpbmQodW5kZWZpbmVkLCAxLCAy
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmV0dXJuIGJvdW5kKCk7Cit9Citub0lubGlu
ZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0ZXN0KCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvLW5vdC1taXNzLWFscmVh
ZHktYm91bmQtYXJncy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG8tbm90LW1p
c3MtYWxyZWFkeS1ib3VuZC1hcmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyNTc4ZjBkNDU0YWRlZTVkNTFl
YjkyODhmMzMwZmFiMThmN2ZiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9m
dW5jdGlvbi1iaW5kLWRvLW5vdC1taXNzLWFscmVhZHktYm91bmQtYXJncy5qcwpAQCAtMCwwICsx
LDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChhLCBiLCBjKQoreworICAgIHJldHVybiBh
ICsgYiArIGM7Cit9Cit2YXIgYm91bmQxID0gdGVzdC5iaW5kKHVuZGVmaW5lZCwgMCwgMSwgMik7
Cit2YXIgYm91bmQyID0gYm91bmQxLmJpbmQodW5kZWZpbmVkKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShib3VuZDIoKSwgMyk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93LW1vcmUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93LW1vcmUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTk2YWI0MTIwMzlkNGJjYTE0NDFmYWNkNjEwZjBjOTU5M2VjMWRiMAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhy
b3ctbW9yZS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGZsYWcgPSBmYWxzZTsK
K2Z1bmN0aW9uIHRocm93YWJsZSgpCit7CisgICAgaWYgKGZsYWcpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigpOworfQorbm9JbmxpbmUodGhyb3dhYmxlKTsKKworZnVuY3Rpb24gdGVzdChhLCBi
KQoreworICAgIHRocm93YWJsZSgpOworICAgIHJldHVybiBhICsgYjsKK30KKwordmFyIGJvdW5k
ID0gdGVzdC5iaW5kKHVuZGVmaW5lZCwgMSwgMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKQorICAgIHZhciBib3VuZCA9IGJvdW5kLmJpbmQodW5kZWZpbmVkKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZShib3VuZCgpLCAzKTsKK2ZsYWcgPSB0
cnVlOwordmFyIGVycm9yID0gbnVsbDsKK3RyeSB7CisgICAgYm91bmQoKTsKK30gY2F0Y2ggKGUp
IHsKKyAgICBlcnJvciA9IGU7Cit9CitzaG91bGRCZShlcnJvciAhPT0gbnVsbCwgdHJ1ZSk7Citz
aG91bGRCZShlcnJvci5zdGFjay50cmltKCkuc3BsaXQoJ1xuJykubGVuZ3RoLCAzKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZG91YmxlLXdyYXAtdGhyb3cuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU3NTVkYjRjOTQyZjA5ZGU0MjcyMTc1NDZiYTQ0ODhjMDMyMGE2MmIKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWRvdWJsZS13cmFwLXRocm93
LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rp
b24gdGhyb3dhYmxlKCkKK3sKKyAgICBpZiAoZmxhZykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCk7Cit9Citub0lubGluZSh0aHJvd2FibGUpOworCitmdW5jdGlvbiB0ZXN0KGEsIGIpCit7Cisg
ICAgdGhyb3dhYmxlKCk7CisgICAgcmV0dXJuIGEgKyBiOworfQordmFyIGJvdW5kMSA9IHRlc3Qu
YmluZCh1bmRlZmluZWQsIDEpOwordmFyIGJvdW5kMiA9IGJvdW5kMS5iaW5kKHVuZGVmaW5lZCwg
Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUoYm91bmQy
KCksIDMpOworZmxhZyA9IHRydWU7Cit2YXIgZXJyb3IgPSBudWxsOwordHJ5IHsKKyAgICBib3Vu
ZDIoKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBlcnJvciA9IGU7Cit9CitzaG91bGRCZShlcnJvciAh
PT0gbnVsbCwgdHJ1ZSk7CitzaG91bGRCZShlcnJvci5zdGFjay50cmltKCkuc3BsaXQoJ1xuJyku
bGVuZ3RoLCAzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtZ2V0
dGVyLWNhbGwtb3NyLWV4aXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLWdldHRl
ci1jYWxsLW9zci1leGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZTE1OTYwODUzM2RmY2I5M2I5MjU5MGU1
NDg2M2FmNTIwY2NmZDIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlv
bi1iaW5kLWdldHRlci1jYWxsLW9zci1leGl0LmpzCkBAIC0wLDAgKzEsNDQgQEAKK215T2JqID0g
eworICAgIHZhbDogMQorfQorCitmdW5jdGlvbiBiYXIoYSwgaWR4KQoreworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIGlmIChpZHggPT0gOTkwMCkKKyAgICAgICAgbXlPYmouZGZnT1NSID0gIlRl
c3QiOworCisgICAgaWYgKGlkeCA9PSAxOTk5MDApCisgICAgICAgIG15T2JqLmZ0bE9TUiA9ICJU
ZXN0IjsKKworICAgIHJldHVybiBteU9iai52YWwgKyBhOworfQorCit2YXIgY291bnRlciA9IDA7
CitmdW5jdGlvbiBmb28oYSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gYmFy
KGEsIGNvdW50ZXIrKyk7Cit9CisKK2JvdW5kRm9vID0gZm9vLmJpbmQobnVsbCwgNDEpOworCit2
YXIgb2JqZWN0ID0ge307CitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnZ2V0dGVyJywg
eworICAgIGdldDogYm91bmRGb28sCit9KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAyMDAwMDA7IGkrKykgeworICAgICAgICBnb3QgPSBvYmplY3QuZ2V0
dGVyOworICAgICAgICBpZiAoZ290ICE9IDQyKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiRnVu
Y3Rpb24gcmV0dXJuZWQgIiArIGdvdCArICIgYnV0IGV4cGVjdGVkIDQyISIpOworICAgIH0KK30K
Kworbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2Z1bmN0aW9uLWJpbmQtaW5saW5lZC1vc3ItZXhpdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z1bmN0
aW9uLWJpbmQtaW5saW5lZC1vc3ItZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGFjYTUwYTE1ZGI3M2Ew
NWQ1YjljYTMzNjQwNzhiNmU5M2VkNDRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZnVuY3Rpb24tYmluZC1pbmxpbmVkLW9zci1leGl0LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCit2YXIgZmxhZyA9IGZhbHNlOworZnVuY3Rpb24gbWF5RXhpdCgpCit7CisgICAgaWYg
KGZsYWcpIHsKKyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICByZXR1cm4gMjQ7CisgICAgfQor
ICAgIHJldHVybiA0MjsKK30KKworZnVuY3Rpb24gaW5saW5lZChhLCBiLCBjKQoreworICAgIHJl
dHVybiBhICsgYiArIGMgKyBtYXlFeGl0KCk7Cit9CisKK3ZhciBib3VuZCA9IGlubGluZWQuYmlu
ZCh1bmRlZmluZWQsIDEsIDIsIDMpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXR1cm4g
Ym91bmQoKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsg
KytpKQorICAgIHNob3VsZEJlKHRlc3QoKSwgNDgpOworZmxhZyA9IHRydWU7CitzaG91bGRCZSh0
ZXN0KCksIDMwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWJpbmQtc2V0
dGVyLWNhbGwtb3NyLWV4aXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXNldHRl
ci1jYWxsLW9zci1leGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MzYyMTNlY2QwNjM5YzU1MmYyODkwOWIw
MTJiMTJiYjBiZDQwY2YKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlv
bi1iaW5kLXNldHRlci1jYWxsLW9zci1leGl0LmpzCkBAIC0wLDAgKzEsNDUgQEAKK215T2JqID0g
eworICAgIHZhbDogMQorfQorCit2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIGJhcihhLCBpZHgp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKGlkeCA9PSA5OTAwKQorICAgICAgICBt
eU9iai5kZmdPU1IgPSAiVGVzdCI7CisKKyAgICBpZiAoaWR4ID09IDE5OTkwMCkKKyAgICAgICAg
bXlPYmouZnRsT1NSID0gIlRlc3QiOworCisgICAgcmV0dXJuIG15T2JqLnZhbCArIGE7Cit9CisK
K3ZhciBjb3VudGVyID0gMDsKK2Z1bmN0aW9uIGZvbyhhKQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIHJlc3VsdCA9IGJhcihhLCBjb3VudGVyKyspOworfQorCitib3VuZEZvbyA9IGZvby5i
aW5kKG51bGwsIDQxKTsKKwordmFyIG9iamVjdCA9IHt9OworT2JqZWN0LmRlZmluZVByb3BlcnR5
KG9iamVjdCwgJ3NldHRlcicsIHsKKyAgICBzZXQ6IGJvdW5kRm9vLAorfSk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjAwMDAwOyBpKyspIHsKKyAgICAg
ICAgb2JqZWN0LnNldHRlciA9IGk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJGdW5jdGlvbiByZXR1cm5lZCAiICsgZ290ICsgIiBidXQgZXhwZWN0
ZWQgNDIhIik7CisgICAgfQorfQorCitub0lubGluZSh0ZXN0KTsKKwordGVzdCgpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC10YWlsLWNhbGwtb3NyLWV4aXQuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRhaWwtY2FsbC1vc3ItZXhpdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NWIyMDlhMjNlMDllMzkwYzNmNjhjMTJkMTczMGNkMjU0Mjc0NjRkCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC10YWlsLWNhbGwtb3NyLWV4
aXQuanMKQEAgLTAsMCArMSwzOCBAQAorbXlPYmogPSB7CisgICAgdmFsOiAxCit9CisKK2Z1bmN0
aW9uIGJhcihhLCBpZHgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKGlkeCA9PSA5
OTAwKQorICAgICAgICBteU9iai5kZmdPU1IgPSAiVGVzdCI7CisKKyAgICBpZiAoaWR4ID09IDE5
OTkwMCkKKyAgICAgICAgbXlPYmouZnRsT1NSID0gIlRlc3QiOworCisgICAgcmV0dXJuIG15T2Jq
LnZhbCArIGE7Cit9CisKK2Z1bmN0aW9uIGZvbyhhLCBpZHgpCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgcmV0dXJuIGJhcihhLCBpZHgpOworfQorCitib3VuZEZvbyA9IGZvby5iaW5kKG51
bGwsIDQxKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAy
MDAwMDA7IGkrKykgeworICAgICAgICBnb3QgPSBib3VuZEZvbyhpKTsKKyAgICAgICAgaWYgKGdv
dCAhPSA0MikKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZ1bmN0aW9uIHJldHVybmVkICIgKyBn
b3QgKyAiIGJ1dCBleHBlY3RlZCA0MiEiKTsKKyAgICB9Cit9CisKK25vSW5saW5lKHRlc3QpOwor
Cit0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1iaW5kLXRocm93
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC10aHJvdy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NTNmNmZlOTk5NTU5N2ZjZGQwOTlmZDI4YWFhMDVmZDA2NmViMzU3Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tYmluZC10aHJvdy5qcwpAQCAtMCwwICsxLDM2IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKwordmFyIGZsYWcgPSBmYWxzZTsKK2Z1bmN0aW9uIHRocm93YWJsZSgpCit7Cisg
ICAgaWYgKGZsYWcpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiZXhwZWN0ZWQiKTsKK30KK25v
SW5saW5lKHRocm93YWJsZSk7CisKK2Z1bmN0aW9uIGlubmVyKCkKK3sKKyAgICB0aHJvd2FibGUo
KTsKK30KK3ZhciBib3VuZCA9IGlubmVyLmJpbmQoMSwgMiwgMyk7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGJvdW5kKCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0KCk7CisKK3ZhciBsZW5ndGggPSAwOwordHJ5IHsKKyAg
ICBmbGFnID0gdHJ1ZTsKKyAgICB0ZXN0KCk7Cit9IGNhdGNoIChlcnJvcikgeworICAgIGxlbmd0
aCA9IGVycm9yLnN0YWNrLnRyaW0oKS5zcGxpdCgnXG4nKS5sZW5ndGg7Cit9CitzaG91bGRCZShs
ZW5ndGgsIDQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXIt
Ym91bmQtZnVuY3Rpb24tbmFtZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3NhbXBsaW5nLXByb2ZpbGVy
LWJvdW5kLWZ1bmN0aW9uLW5hbWUuanMKaW5kZXggZjM3NzYyOTg5NTg1NjVkOTA3Y2IzNTYwYzZh
NzMzOTNhMDdiNjNmYS4uOTMzYTc0NDU5YzE3YTQ5ZDZmNWNiNDdmNjczMWY0MGE3ZjVhZWQxNyAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mvc2FtcGxpbmctcHJvZmlsZXItYm91bmQtZnVuY3Rp
b24tbmFtZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxlci1ib3VuZC1m
dW5jdGlvbi1uYW1lLmpzCkBAIC0yMyw2ICsyMyw2IEBAIGZ1bmN0aW9uIGJhcigpIHsKICAgICAg
ICAgYm91bmRCYXIoKTsKICAgICB9CiAKLSAgICBydW5UZXN0KGJheiwgWyJmb28iLCAiYm91bmQg
Zm9vIiwgImJheiJdKTsKLSAgICBydW5UZXN0KGJheiwgWyJiYXIiLCAiYm91bmQgYmFyIiwgImJh
eiJdKTsKKyAgICBydW5UZXN0KGJheiwgWyJmb28iLCAiYmF6Il0pOworICAgIHJ1blRlc3QoYmF6
LCBbImJhciIsICJiYXoiXSk7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdGFjay1v
dmVyZmxvdy1pbi1jdXN0b20taGFzSW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9zdGFjay1v
dmVyZmxvdy1pbi1jdXN0b20taGFzSW5zdGFuY2UuanMKaW5kZXggYzFlMmViMDY0NzJjZjhlMDkx
MDk3MTc1MGFkN2FhM2VkY2QzNzdlZS4uYzk4ZDMxNmFkNTExNjQzNzkxYzhhNzk0MjU0ZjAxOWM5
MTQ2OGEzMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4tY3Vz
dG9tLWhhc0luc3RhbmNlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93LWlu
LWN1c3RvbS1oYXNJbnN0YW5jZS5qcwpAQCAtNCw3ICs0LDcgQEAgZnVuY3Rpb24gZigpIHt9CiAK
IHZhciBmbiA9IGY7CiBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7Ci0gICAgZm4g
PSBmbi5iaW5kKCk7CisgICAgZm4gPSBmbi5iaW5kKHVuZGVmaW5lZCwgMCwgMSwgMiwgMywgNCwg
NSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYpOwogCiAgICAgLy8gRW5z
dXJlIHdlIGRvbid0IGZhbGxiYWNrIHRvIEBAaGFzSW5zdGFuY2UgZnJvbSAlRnVuY3Rpb25Qcm90
b3R5cGUlLgogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbiwgU3ltYm9sLmhhc0luc3RhbmNl
LCB7Cg==
</data>
<flag name="commit-queue"
          id="449002"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>