<?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>311437</bug_id>
          
          <creation_ts>2026-04-03 13:20:06 -0700</creation_ts>
          <short_desc>nytimes.com: wrong selection painting because of first-letter style</short_desc>
          <delta_ts>2026-04-06 06:28:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>6185</dup_id>
          
          <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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2196678</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2026-04-03 13:20:06 -0700</bug_when>
    <thetext>&lt;rdar://106060421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2196681</commentid>
    <comment_count>1</comment_count>
      <attachid>478916</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-04-03 13:28:59 -0700</bug_when>
    <thetext>Created attachment 478916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2196682</commentid>
    <comment_count>2</comment_count>
      <attachid>478917</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-04-03 13:43:26 -0700</bug_when>
    <thetext>Created attachment 478917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2196771</commentid>
    <comment_count>3</comment_count>
      <attachid>478919</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-04-03 20:51:18 -0700</bug_when>
    <thetext>Created attachment 478919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2196830</commentid>
    <comment_count>4</comment_count>
      <attachid>478920</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-04-04 03:57:20 -0700</bug_when>
    <thetext>Created attachment 478920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2196831</commentid>
    <comment_count>5</comment_count>
      <attachid>478921</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-04-04 04:16:58 -0700</bug_when>
    <thetext>Created attachment 478921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197103</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2026-04-05 15:21:38 -0700</bug_when>
    <thetext>actually this is dupe of bug 6185. Let&apos;s use that instead.

*** This bug has been marked as a duplicate of bug 6185 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>478916</attachid>
            <date>2026-04-03 13:28:59 -0700</date>
            <delta_ts>2026-04-03 13:56:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-311437-20260403132859.patch</filename>
            <type>text/plain</type>
            <size>54033</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBiN2JiNmI2MWQ1ZWNhMWE4OTBiYjE2MjI2MWYxMmFjY2YxODc0MThhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBBcHIgMjAyNiAwNTo1NzozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIG55dGltZXMu
Y29tOiB3cm9uZyBzZWxlY3Rpb24gcGFpbnRpbmcgYmVjYXVzZSBvZiBmaXJzdC1sZXR0ZXIKIHN0
eWxlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE0MzcgPHJkYXI6
Ly8xMDYwNjA0MjE+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkdpdmVuCgogIDxzdHls
ZT4KICAgIGRpdjo6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IHJlZDsgfQogIDwvc3R5bGU+CiAgPGRp
dj5IZWxsbzwvZGl2PgoKdGhlIERPTSAoaW5zaWRlIHRoZSBibG9jayBjb250YWluZXIpIGhhcyBh
IHNpbmdsZSB0ZXh0IG5vZGUgIkhlbGxvIgpidXQgV2ViS2l0IHNwbGl0cyB0aGlzIGludG8gdHdv
IHJlbmRlcmVycyB0byBiZSBhYmxlIHRvIHN0eWxlIHRoZSBmaXJzdCBsZXR0ZXIuCgogIFJlbmRl
ckJsb2NrIChkaXYpCiAgICBSZW5kZXJJbmxpbmUgKDo6Zmlyc3QtbGV0dGVyLCBhbm9ueW1vdXMp
CiAgICAgIFJlbmRlclRleHQgIkgiICAgICAgICAgICAgPC0gb2Zmc2V0cyAwLTEgKG5vIERPTSBu
b2RlKQogICAgUmVuZGVyVGV4dEZyYWdtZW50ICJlbGxvIiAgIDwtIG9mZnNldHMgMC00IChvd25z
IHRoZSBET00gdGV4dCBub2RlKQoKVGhlIGV4aXN0aW5nIGNvZGUgYXNzdW1lcyBlYWNoIERPTSBu
b2RlIG1hcHMgdG8gZXhhY3RseSBvbmUgcmVuZGVyZXIuCkV2ZXJ5IGNhbGwgdG8gbm9kZS0+cmVu
ZGVyZXIoKSBvciBQb3NpdGlvbjo6cmVuZGVyZXIoKSByZXR1cm5zIHRoZQpyZW1haW5pbmcgZnJh
Z21lbnQgLS0gdGhlIGZpcnN0LWxldHRlciByZW5kZXJlciBpcyBuZXZlciBjb25zdWx0ZWQuCgpU
aGlzIG1lYW5zIERPTSBvZmZzZXQgMCAoIkgiKSBnZXRzIGNoZWNrZWQgYWdhaW5zdCB0aGUgcmVt
YWluaW5nCmZyYWdtZW50J3MgdGV4dCBib3hlcywgd2hpY2ggc3RhcnQgYXQgImUiLiBTZWxlY3Rp
b24sIGNhcmV0IHBvc2l0aW9uaW5nLAphbmQgb2Zmc2V0IHZhbGlkYXRpb24gYWxsIGZhaWwgZm9y
IHRoZSBmaXJzdC1sZXR0ZXIgcmFuZ2UgYmVjYXVzZSB0aGUKd3JvbmcgcmVuZGVyZXIgaXMgYXNr
ZWQgYWJvdXQgb2Zmc2V0cyBpdCBkb2Vzbid0IG93bi4KClRoZSBmaXggaXMgdG8gbmV2ZXIgY29u
c3VsdCBub2RlLT5yZW5kZXJlcigpIGRpcmVjdGx5IGZvciB0ZXh0IG9mZnNldApvcGVyYXRpb25z
IG9uIGZpcnN0LWxldHRlciBjb250ZW50LiBJbnN0ZWFkLCBhbGwgY2FsbCBzaXRlcyBnbyB0aHJv
dWdoClBvc2l0aW9uOjpyZW5kZXJlckFuZE9mZnNldCgpIHdoaWNoIHJlc29sdmVzIHRoZSAxLURP
TS1ub2RlLXRvLTItcmVuZGVyZXJzCnNwbGl0IGJ5IHBpY2tpbmcgdGhlIGNvcnJlY3QgcmVuZGVy
ZXIgYW5kIGNvbnZlcnRpbmcgdG8gaXRzIGxvY2FsIG9mZnNldC4KVGhpcyBpcyB0aGUgY2VudHJh
bCBpbnZhcmlhbnQgb2YgdGhlIGZpeCAtLSBldmVyeSBwbGFjZSB0aGF0IHByZXZpb3VzbHkKY2Fs
bGVkIG5vZGUtPnJlbmRlcmVyKCkgYW5kIHVzZWQgYSBET00gb2Zmc2V0IGFnYWluc3QgaXQgbm93
IHVzZXMgdGhpcwpoZWxwZXIgKG9yIG9uZSBvZiBpdHMgd3JhcHBlcnMpIHRvIGdldCB0aGUgcmln
aHQgcmVuZGVyZXIgKyBvZmZzZXQgcGFpci4KCktleSBoZWxwZXJzIGludHJvZHVjZWQ6Ci0gUG9z
aXRpb246OnJlbmRlcmVyQW5kT2Zmc2V0KCk6IHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZv
ciByZXNvbHZpbmcKICBhIERPTSBvZmZzZXQgdG8gdGhlIGNvcnJlY3QgcmVuZGVyZXIgKyBmcmFn
bWVudC1sb2NhbCBvZmZzZXQuIFJvdXRlcyB0bwogIHRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIg
Zm9yIG9mZnNldHMgYmVsb3cgZnJhZ21lbnRTdGFydCwgb3RoZXJ3aXNlCiAgcmV0dXJucyB0aGUg
cmVtYWluaW5nIGZyYWdtZW50IHdpdGggYWRqdXN0ZWQgb2Zmc2V0LgotIFBvc2l0aW9uOjpyZXNv
bHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOiBjb252ZW5pZW5jZSB3cmFwcGVyIHRoYXQgYWxz
bwogIGNhc3RzIHRvIFJlbmRlclRleHQuCi0gZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgp
OiBjb252ZXJ0cyBmcmFnbWVudC1sb2NhbCBvZmZzZXQgYmFjayB0bwogIERPTSBvZmZzZXQuIFVz
ZWQgd2hlbiBleGl0aW5nIHJlbmRlcmVyIHNwYWNlIChjYXJldE1heE9mZnNldCwKICBjcmVhdGVQ
b3NpdGlvbldpdGhBZmZpbml0eSwgZW5kUG9zaXRpb25Gb3JMaW5lLCBwb3NpdGlvbkF0UmlnaHRC
b3VuZGFyeS0KICBPZkJpRGlSdW4sIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQpLgotIGZpcnN0TGV0
dGVyQWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KCk6IGNvbnZlcnRzIERPTSBvZmZzZXQgdG8K
ICBmcmFnbWVudC1sb2NhbC4gVXNlZCBpbiBQb3NpdGlvbjo6dXBzdHJlYW0vZG93bnN0cmVhbSB3
aGVyZSB0aGVyZSBpcyBubwogIFBvc2l0aW9uIG9iamVjdCB0byBjYWxsIHJlbmRlcmVyQW5kT2Zm
c2V0KCkgb24uCi0gY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkoKTogcHJldmVudHMgdXBzdHJl
YW0vZG93bnN0cmVhbSBmcm9tCiAgY2Fub25pY2FsaXppbmcgcG9zaXRpb25zIGFjcm9zcyB0aGUg
Zmlyc3QtbGV0dGVyIHNwbGl0LiBXaXRob3V0IHRoaXMsCiAgVmlzaWJsZVBvc2l0aW9uKG9mZnNl
dCAwKSBhbmQgVmlzaWJsZVBvc2l0aW9uKG9mZnNldCAxKSB3b3VsZCBjb2xsYXBzZQogIHRvIHRo
ZSBzYW1lIGNhbm9uaWNhbCBwb3NpdGlvbiwgbWFraW5nIHRoZSBmaXJzdCBsZXR0ZXIgdW5zZWxl
Y3RhYmxlLgogIE11c3QgcnVuIGJlZm9yZSB0aGUgaXNTdHJlYW1lciB1cGRhdGUgdG8gc2VlIHRo
ZSBwcmUtdXBkYXRlIGxhc3RWaXNpYmxlLgoKUG9zaXRpb246OmlzQ2FuZGlkYXRlLCBpc1JlbmRl
cmVkQ2hhcmFjdGVyLCByZW5kZXJzSW5EaWZmZXJlbnRQb3NpdGlvbjoKICBUaGVzZSBjaGVjayB0
ZXh0IG9mZnNldCB2YWxpZGl0eSBhZ2FpbnN0IHJlbmRlcmVyIHRleHQgYm94ZXMuIFRoZXkgbm93
CiAgdXNlIHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCkgdG8gYXNrIHRoZSBjb3JyZWN0
IHJlbmRlcmVyCiAgKGZpcnN0LWxldHRlciBvciByZW1haW5pbmcgZnJhZ21lbnQpIGluc3RlYWQg
b2YgYWx3YXlzIGFza2luZyB0aGUKICByZW1haW5pbmcgZnJhZ21lbnQgd2l0aCBhIHJhdyBET00g
b2Zmc2V0LgoKUG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldDogcmVzb2x2ZXMgdG8gdGhlIGNv
cnJlY3QgaW5saW5lIGJveCBmb3IKICBjYXJldC9zZWxlY3Rpb24gcG9zaXRpb25pbmcuIE5vdyBk
ZWxlZ2F0ZXMgdG8gcmVuZGVyZXJBbmRPZmZzZXQoKQogIGluc3RlYWQgb2YgZHVwbGljYXRpbmcg
dGhlIGZpcnN0LWxldHRlciByb3V0aW5nIGxvZ2ljLgoKUmVuZGVyZWRQb3NpdGlvbjogc3RvcmVz
IHRoZSBvcmlnaW5hbCBET00gbm9kZSAobV9ub2RlKSBmcm9tIHRoZSBQb3NpdGlvbgogIGR1cmlu
ZyBjb25zdHJ1Y3Rpb24uIFdpdGhvdXQgdGhpcywgcG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlE
aVJ1bigpCiAgcHJvZHVjZXMgYSBudWxsLW5vZGUgUG9zaXRpb24gd2hlbiB0aGUgaW5saW5lIGJv
eCBiZWxvbmdzIHRvIHRoZQogIGFub255bW91cyBmaXJzdC1sZXR0ZXIgdGV4dCwgY2F1c2luZyBh
ZGp1c3RFbmRwb2ludHNBdEJpZGlCb3VuZGFyeSgpCiAgdG8gY29sbGFwc2UgdGhlIHNlbGVjdGlv
biB3aGVuIGRyYWdnaW5nIGxlZnQgcGFzdCB0aGUgZmlyc3QgbGV0dGVyLgoKVmlzaWJsZVBvc2l0
aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGU6IHdoZW4gYmlkaSB0cmF2ZXJzYWwK
ICBsYW5kcyBvbiB0aGUgYW5vbnltb3VzIGZpcnN0LWxldHRlciB0ZXh0IGJveCwgcmVzb2x2ZXMg
dGhlIERPTSBub2RlCiAgdmlhIHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCkg
YmVmb3JlIGNyZWF0aW5nIHRoZSBQb3NpdGlvbi4KClJlbmRlclRleHRGcmFnbWVudDo6Y2FuQmVT
ZWxlY3Rpb25MZWFmOiByZXR1cm5zIHRydWUgZm9yIHJlbWFpbmluZwogIGZyYWdtZW50cyB3aXRo
IGZpcnN0LWxldHRlciwgbWF0Y2hpbmcgYmFzZSBSZW5kZXJUZXh0IGJlaGF2aW9yIHNvCiAgY3Jv
c3MtZWxlbWVudCBzZWxlY3Rpb25zIChDbWQrQSkgaW5jbHVkZSB0aGUgcmVtYWluaW5nIHRleHQu
CgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24t
Y3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sOiBBZGRl
ZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmly
c3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5n
Lmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRl
ci1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cDoKKFdlYkNvcmU6OmNyb3NzZXNGaXJzdExldHRlckJvdW5kYXJ5KToKKFdlYkNvcmU6OmZpcnN0
TGV0dGVyQWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjp1
cHN0cmVhbSBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVhbSBjb25zdCk6CihX
ZWJDb3JlOjpQb3NpdGlvbjo6aXNDYW5kaWRhdGUgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246
OmlzUmVuZGVyZWRDaGFyYWN0ZXIgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJ
bkRpZmZlcmVudFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpyZW5kZXJlckFu
ZE9mZnNldCBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6cmVzb2x2ZWRUZXh0UmVuZGVyZXJB
bmRPZmZzZXQgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldCBj
b25zdCk6CiogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmg6CiogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nLmNwcDoKKFdlYkNvcmU6OmNhcmV0TWF4T2Zmc2V0KToKKFdlYkNvcmU6
OmZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5oOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgoo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UpOgoqIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHA6CihXZWJDb3JlOjpSZW5kZXJlZFBvc2l0
aW9uOjpSZW5kZXJlZFBvc2l0aW9uKToKKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OnBvc2l0
aW9uQXRMZWZ0Qm91bmRhcnlPZkJpRGlSdW4gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyZWRQb3Np
dGlvbjo6cG9zaXRpb25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4gY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcDoKKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5v
ZGUpOgooV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKToKKFdlYkNvcmU6OlRl
eHRJdGVyYXRvcjo6ZW1pdFRleHQpOgooV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgooV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1Rl
eHRJdGVyYXRvcjo6aGFuZGxlRmlyc3RMZXR0ZXIpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwOgooV2ViQ29yZTo6cmVtYWluaW5nVGV4dEZyYWdtZW50Rm9yRmlyc3RMZXR0
ZXIpOgooV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRp
ZGF0ZSBjb25zdCk6CihXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0
aW5jdENhbmRpZGF0ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5p
dHMuY3BwOgooV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKFdlYkNvcmU6OmZpbmRFbmRP
ZlBhcmFncmFwaCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6
CihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNyZWF0ZVBvc2l0aW9uV2l0aEFmZmluaXR5IGNvbnN0
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcDoKKFdl
YkNvcmU6OlJlbmRlclRleHRGcmFnbWVudDo6Y2FuQmVTZWxlY3Rpb25MZWFmIGNvbnN0KToKLS0t
CiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwICAgICAgICAgICAgICAgfCAxMDYgKysr
KysrKysrKysrLS0tCiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCAgICAgICAgICAgICAg
ICAgfCAgIDggKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcCAgICAg
ICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCAgICAgICAgICAg
IHwgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaCAgICAgICAgICAgICAg
fCAgIDEgKwogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgICAgIHwg
IDEwICstCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwICAgfCAg
MTAgKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oICAgICB8ICAg
MSArCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgICAgICAgfCAxMjcg
KysrKysrKysrLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5o
ICAgICAgICAgfCAgIDMgLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwICAgIHwgIDIwICsrLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
ICAgICAgIHwgICA1ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cCAgICAgfCAgIDUgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQu
Y3BwICB8ICAxMSArLQogLi4uZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0IHwgIDEzICsrCiAuLi4vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0
bWwgfCAgNDMgKysrKysrCiAuLi4vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBlY3RlZC50eHQg
ICAgICAgfCAgMzMgKysrKysKIC4uLnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0
ZWQuaHRtbCB8ICAyNSArKysrCiAuLi4vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5o
dG1sICAgICAgfCAgMjUgKysrKwogLi4uL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9u
Lmh0bWwgICAgIHwgMTAxICsrKysrKysrKysrKysrCiAyMCBmaWxlcyBjaGFuZ2VkLCA0NTkgaW5z
ZXJ0aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVu
dC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1z
ZWxlY3Rpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmly
c3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggMmZiNGExNDRhMDVmLi4zYzJkYmZmNmIzMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIlJlbmRl
ckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIKICNpbmNsdWRl
ICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHVGV4dEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJUZXh0LmgiCkBAIC02NDIsNiArNjQzLDMwIEBAIHN0YXRpYyBOb2RlKiBlbmNs
b3NpbmdWaXN1YWxCb3VuZGFyeShTVVBQUkVTU19VTkNIRUNLRURfTE9DQUwgTm9kZSogbm9kZSkK
ICAgICByZXR1cm4gbm9kZTsKIH0KIAorLy8gVGhlIGZpcnN0LWxldHRlciBhbmQgcmVtYWluaW5n
IHRleHQgYXJlIHNlcGFyYXRlIHJlbmRlcmVycyBidXQgc2hhcmUgb25lIERPTQorLy8gdGV4dCBu
b2RlLiB1cHN0cmVhbS9kb3duc3RyZWFtIG11c3Qgbm90IGNyb3NzIHRoaXMgYm91bmRhcnksIGp1
c3QgbGlrZSB0aGV5CisvLyBtdXN0IG5vdCBjcm9zcyB2aXN1YWxseSBkaXN0aW5jdCBub2RlIGJv
dW5kYXJpZXMuCitzdGF0aWMgYm9vbCBjcm9zc2VzRmlyc3RMZXR0ZXJCb3VuZGFyeShjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBjdXJyZW50LCBj
b25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBwcmV2aW91c0xhc3RWaXNpYmxlKQoreworICAgIGF1dG8q
IHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRl
cmVyKTsKKyAgICBpZiAoIXRleHRGcmFnbWVudCB8fCAhdGV4dEZyYWdtZW50LT5maXJzdExldHRl
cigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBmcmFnbWVudFN0YXJ0ID0gc3Rh
dGljX2Nhc3Q8aW50Pih0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpOworICAgIGF1dG8gY3VycmVudE9m
ZnNldCA9IGN1cnJlbnQub2Zmc2V0SW5MZWFmTm9kZSgpOworICAgIGF1dG8gbGFzdE9mZnNldCA9
IHByZXZpb3VzTGFzdFZpc2libGUub2Zmc2V0SW5MZWFmTm9kZSgpOworICAgIC8vIE9uZSBvZmZz
ZXQgaXMgaW4gdGhlIGZpcnN0LWxldHRlciByYW5nZSBhbmQgdGhlIG90aGVyIGlzIG5vdC4KKyAg
ICAvLyBPZmZzZXRzIGF0IGZyYWdtZW50U3RhcnQgYmVsb25nIHRvIHRoZSByZW1haW5pbmcgZnJh
Z21lbnQsIG5vdCB0aGUgZmlyc3QtbGV0dGVyLgorICAgIHJldHVybiAoY3VycmVudE9mZnNldCA8
IGZyYWdtZW50U3RhcnQpICE9IChsYXN0T2Zmc2V0IDwgZnJhZ21lbnRTdGFydCk7Cit9CisKKy8v
IENvbnZlcnQgYSBET00gb2Zmc2V0IHRvIGZyYWdtZW50LWxvY2FsIGZvciByZW1haW5pbmcgdGV4
dCBmcmFnbWVudHMgd2l0aCBmaXJzdC1sZXR0ZXIuCitzdGF0aWMgdW5zaWduZWQgZmlyc3RMZXR0
ZXJBZGp1c3RlZEZyYWdtZW50TG9jYWxPZmZzZXQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgdW5zaWduZWQgb2Zmc2V0KQoreworICAgIGlmIChhdXRvKiB0ZXh0RnJhZ21lbnQgPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHRleHRGcmFnbWVudCAm
JiB0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkgJiYgb2Zmc2V0ID49IHRleHRGcmFnbWVudC0+
c3RhcnQoKSkKKyAgICAgICAgcmV0dXJuIG9mZnNldCAtIHRleHRGcmFnbWVudC0+c3RhcnQoKTsK
KyAgICByZXR1cm4gb2Zmc2V0OworfQorCiAvLyB1cHN0cmVhbSgpIGFuZCBkb3duc3RyZWFtKCkg
d2FudCB0byByZXR1cm4gcG9zaXRpb25zIHRoYXQgYXJlIGVpdGhlciBpbiBhCiAvLyB0ZXh0IG5v
ZGUgb3IgYXQganVzdCBiZWZvcmUgYSBub24tdGV4dCBub2RlLiAgVGhpcyBtZXRob2QgY2hlY2tz
IGZvciB0aGF0Lgogc3RhdGljIGJvb2wgaXNTdHJlYW1lcihjb25zdCBQb3NpdGlvbkl0ZXJhdG9y
JiBwb3MpCkBAIC03MTIsNiArNzM3LDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0cmVhbShF
ZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICAvLyBEb24ndCBtb3ZlIHBhc3QgdGhlIGZp
cnN0LWxldHRlciBib3VuZGFyeSB3aXRoaW4gYSB0ZXh0IG5vZGUuCisgICAgICAgIGlmIChjcm9z
c2VzRmlyc3RMZXR0ZXJCb3VuZGFyeSgqcmVuZGVyZXIsIGN1cnJlbnRQb3NpdGlvbiwgbGFzdFZp
c2libGUpKQorICAgICAgICAgICAgcmV0dXJuIGxhc3RWaXNpYmxlOworCiAgICAgICAgIC8vIHRy
YWNrIGxhc3QgdmlzaWJsZSBzdHJlYW1lciBwb3NpdGlvbgogICAgICAgICBpZiAoaXNTdHJlYW1l
cihjdXJyZW50UG9zaXRpb24pKQogICAgICAgICAgICAgbGFzdFZpc2libGUgPSBjdXJyZW50UG9z
aXRpb247CkBAIC03NDAsMTAgKzc2OSwxMCBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0o
RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICAgICAg
Ly8gcmVuZGVyIHRyZWUgd2hpY2ggY2FuIGhhdmUgYSBkaWZmZXJlbnQgbGVuZ3RoIGR1ZSB0byBj
YXNlIHRyYW5zZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgIC8vIFVudGlsIHdlIHJlc29sdmUg
dGhhdCwgZGlzYWJsZSB0aGlzIHNvIHdlIGNhbiBydW4gdGhlIGxheW91dCB0ZXN0cyEKICAgICAg
ICAgICAgICAgICAvL0FTU0VSVChjdXJyZW50T2Zmc2V0ID49IHJlbmRlcmVyLT5jYXJldE1heE9m
ZnNldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3Np
dGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgcmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCkpOworICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKGN1cnJlbnRO
b2RlLnB0cigpLCBjYXJldE1heE9mZnNldChjdXJyZW50Tm9kZSkpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gY3VycmVudFBvc2l0aW9uLm9mZnNl
dEluTGVhZk5vZGUoKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dE9mZnNldCA9IGZpcnN0TGV0dGVy
QWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KCp0ZXh0UmVuZGVyZXIsIGN1cnJlbnRQb3NpdGlv
bi5vZmZzZXRJbkxlYWZOb2RlKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0
VGV4dEJveDsgYm94OykgewogICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0ID4gYm94LT5z
dGFydCgpICYmIHRleHRPZmZzZXQgPD0gYm94LT5lbmQoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKQEAgLTgyNyw2ICs4NTYsMTAgQEAgUG9zaXRpb24gUG9z
aXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIC8vIERvbid0IG1vdmUg
cGFzdCB0aGUgZmlyc3QtbGV0dGVyIGJvdW5kYXJ5IHdpdGhpbiBhIHRleHQgbm9kZS4KKyAgICAg
ICAgaWYgKGNyb3NzZXNGaXJzdExldHRlckJvdW5kYXJ5KCpyZW5kZXJlciwgY3VycmVudFBvc2l0
aW9uLCBsYXN0VmlzaWJsZSkpCisgICAgICAgICAgICByZXR1cm4gbGFzdFZpc2libGU7CisKICAg
ICAgICAgLy8gdHJhY2sgbGFzdCB2aXNpYmxlIHN0cmVhbWVyIHBvc2l0aW9uCiAgICAgICAgIGlm
IChpc1N0cmVhbWVyKGN1cnJlbnRQb3NpdGlvbikpCiAgICAgICAgICAgICBsYXN0VmlzaWJsZSA9
IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTg0OSw3ICs4ODIsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6
ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGN1cnJlbnROb2Rl
LnB0cigpLCB0ZXh0UmVuZGVyZXItPmNhcmV0TWluT2Zmc2V0KCkpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gY3VycmVudFBvc2l0aW9uLm9mZnNl
dEluTGVhZk5vZGUoKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dE9mZnNldCA9IGZpcnN0TGV0dGVy
QWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KCp0ZXh0UmVuZGVyZXIsIGN1cnJlbnRQb3NpdGlv
bi5vZmZzZXRJbkxlYWZOb2RlKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0
VGV4dEJveDsgYm94OykgewogICAgICAgICAgICAgICAgIGlmICghYm94LT5sZW5ndGgoKSAmJiB0
ZXh0T2Zmc2V0ID09IGJveC0+c3RhcnQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1
cnJlbnRQb3NpdGlvbjsKQEAgLTk4NSw4ICsxMDE4LDEwIEBAIGJvb2wgUG9zaXRpb246OmlzQ2Fu
ZGlkYXRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuICFtX29mZnNldCAmJiBtX2FuY2hvclR5cGUg
IT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yICYmICFub2RlSXNVc2VyU2VsZWN0Tm9uZShub2RlLT5w
YXJlbnROb2RlKCkpOwogICAgIH0KIAotICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHQgPSBk
eW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuICFu
b2RlSXNVc2VyU2VsZWN0Tm9uZShub2RlLmdldCgpKSAmJiByZW5kZXJUZXh0LT5jb250YWluc0Nh
cmV0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0ID0gZHlu
YW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgYXV0byBbcmVz
b2x2ZWRUZXh0LCByZXNvbHZlZE9mZnNldF0gPSByZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNl
dCgpOworICAgICAgICByZXR1cm4gIW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUuZ2V0KCkpICYm
IHJlc29sdmVkVGV4dCAmJiByZXNvbHZlZFRleHQtPmNvbnRhaW5zQ2FyZXRPZmZzZXQocmVzb2x2
ZWRPZmZzZXQpOworICAgIH0KIAogICAgIGlmIChwb3NpdGlvbkJlZm9yZU9yQWZ0ZXJOb2RlSXND
YW5kaWRhdGUoKm5vZGUpKSB7CiAgICAgICAgIHJldHVybiAoKGF0Rmlyc3RFZGl0aW5nUG9zaXRp
b25Gb3JOb2RlKCkgJiYgbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNCZWZvcmVBbmNob3IpCkBA
IC0xMDEzLDkgKzEwNDgsMTAgQEAgYm9vbCBQb3NpdGlvbjo6aXNDYW5kaWRhdGUoKSBjb25zdAog
CiBib29sIFBvc2l0aW9uOjppc1JlbmRlcmVkQ2hhcmFjdGVyKCkgY29uc3QKIHsKLSAgICBSZWZQ
dHIgdGV4dCA9IGR5bmFtaWNEb3duY2FzdDxUZXh0PihkZXByZWNhdGVkTm9kZSgpKTsKLSAgICBD
aGVja2VkUHRyIHJlbmRlcmVyID0gdGV4dCA/IHRleHQtPnJlbmRlcmVyKCkgOiBudWxscHRyOwot
ICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+Y29udGFpbnNSZW5kZXJlZENoYXJhY3Rl
ck9mZnNldChtX29mZnNldCk7CisgICAgaWYgKCFkeW5hbWljRG93bmNhc3Q8VGV4dD4oZGVwcmVj
YXRlZE5vZGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIFtyZW5kZXJUZXh0
LCBvZmZzZXRdID0gcmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICByZXR1cm4g
cmVuZGVyVGV4dCAmJiByZW5kZXJUZXh0LT5jb250YWluc1JlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0
KG9mZnNldCk7CiB9CiAKIHN0YXRpYyBib29sIGluU2FtZUVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1l
bnQoTm9kZSogYSwgTm9kZSogYikKQEAgLTEwNjEsMTYgKzEwOTcsMTYgQEAgYm9vbCBQb3NpdGlv
bjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBj
b25zdAogICAgIGlmICghaW5TYW1lRW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChub2RlLmdldCgp
LCBwb3NpdGlvbk5vZGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIENoZWNr
ZWRQdHIgdGV4dFJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJl
cik7Ci0gICAgaWYgKHRleHRSZW5kZXJlciAmJiAhdGV4dFJlbmRlcmVyLT5jb250YWluc0NhcmV0
T2Zmc2V0KG1fb2Zmc2V0KSkKKyAgICBhdXRvIFt0ZXh0UmVuZGVyZXIsIHRoaXNPZmZzZXRdID0g
cmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICBpZiAodGV4dFJlbmRlcmVyICYm
ICF0ZXh0UmVuZGVyZXItPmNvbnRhaW5zQ2FyZXRPZmZzZXQodGhpc09mZnNldCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIENoZWNrZWRQdHIgdGV4dFBvc2l0aW9uUmVuZGVyZXIgPSBk
eW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnBvc2l0aW9uUmVuZGVyZXIpOwotICAgIGlmICh0
ZXh0UG9zaXRpb25SZW5kZXJlciAmJiAhdGV4dFBvc2l0aW9uUmVuZGVyZXItPmNvbnRhaW5zQ2Fy
ZXRPZmZzZXQocG9zaXRpb24ubV9vZmZzZXQpKQorICAgIGF1dG8gW3RleHRQb3NpdGlvblJlbmRl
cmVyLCBwb3NpdGlvbk9mZnNldF0gPSBwb3NpdGlvbi5yZXNvbHZlZFRleHRSZW5kZXJlckFuZE9m
ZnNldCgpOworICAgIGlmICh0ZXh0UG9zaXRpb25SZW5kZXJlciAmJiAhdGV4dFBvc2l0aW9uUmVu
ZGVyZXItPmNvbnRhaW5zQ2FyZXRPZmZzZXQocG9zaXRpb25PZmZzZXQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCB0aGlzUmVuZGVyZWRPZmZzZXQgPSB0ZXh0UmVuZGVy
ZXIgPyB0ZXh0UmVuZGVyZXItPmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwobV9v
ZmZzZXQpIDogbV9vZmZzZXQ7Ci0gICAgdW5zaWduZWQgcG9zaXRpb25SZW5kZXJlZE9mZnNldCA9
IHRleHRQb3NpdGlvblJlbmRlcmVyID8gdGV4dFBvc2l0aW9uUmVuZGVyZXItPmNvdW50UmVuZGVy
ZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwocG9zaXRpb24ubV9vZmZzZXQpIDogcG9zaXRpb24ubV9v
ZmZzZXQ7CisgICAgdW5zaWduZWQgdGhpc1JlbmRlcmVkT2Zmc2V0ID0gdGV4dFJlbmRlcmVyID8g
dGV4dFJlbmRlcmVyLT5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHRoaXNPZmZz
ZXQpIDogbV9vZmZzZXQ7CisgICAgdW5zaWduZWQgcG9zaXRpb25SZW5kZXJlZE9mZnNldCA9IHRl
eHRQb3NpdGlvblJlbmRlcmVyID8gdGV4dFBvc2l0aW9uUmVuZGVyZXItPmNvdW50UmVuZGVyZWRD
aGFyYWN0ZXJPZmZzZXRzVW50aWwocG9zaXRpb25PZmZzZXQpIDogcG9zaXRpb24ubV9vZmZzZXQ7
CiAKICAgICBpZiAocmVuZGVyZXIgPT0gcG9zaXRpb25SZW5kZXJlciAmJiB0aGlzUmVuZGVyZWRP
ZmZzZXQgPT0gcG9zaXRpb25SZW5kZXJlZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTE5NSwxNiArMTIzMSw1MCBAQCBzdGF0aWMgUG9zaXRpb24gdXBzdHJlYW1JZ25vcmluZ0Vk
aXRpbmdCb3VuZGFyaWVzKFBvc2l0aW9uIHBvc2l0aW9uKQogICAgIHJldHVybiBwb3NpdGlvbjsK
IH0KIAorc3RkOjpwYWlyPFJlbmRlck9iamVjdCosIHVuc2lnbmVkPiBQb3NpdGlvbjo6cmVuZGVy
ZXJBbmRPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8qIG5vZGUgPSBkZXByZWNhdGVkTm9kZSgp
OworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIHsgeyB9LCB7IH0gfTsKKyAgICBhdXRv
KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuIHsgeyB9LCB7IH0gfTsKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSBkZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpOworICAgIENoZWNrZWRQdHIgdGV4dEZyYWdtZW50ID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4oKnJlbmRlcmVyKTsKKyAgICBpZiAoIXRleHRGcmFn
bWVudCB8fCAhdGV4dEZyYWdtZW50LT5maXJzdExldHRlcigpKQorICAgICAgICByZXR1cm4geyBy
ZW5kZXJlciwgb2Zmc2V0IH07CisKKyAgICBpZiAob2Zmc2V0ID49IHRleHRGcmFnbWVudC0+c3Rh
cnQoKSkKKyAgICAgICAgcmV0dXJuIHsgcmVuZGVyZXIsIG9mZnNldCAtIHRleHRGcmFnbWVudC0+
c3RhcnQoKSB9OworCisgICAgLy8gSXQgbG9va3MgbGlrZSB3ZSBhcmUgb24gdGhlIGZpcnN0IGxl
dHRlciByZW5kZXJlci4KKyAgICBDaGVja2VkUHRyIGZpcnN0TGV0dGVyUmVuZGVyZXIgPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyVGV4dD4odGV4dEZyYWdtZW50LT5maXJzdExldHRlcigpLT5maXJz
dENoaWxkKCkpOworICAgIGlmICghZmlyc3RMZXR0ZXJSZW5kZXJlcikgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgeyB9LCB7IH0gfTsKKyAgICB9CisK
KyAgICAvLyBUaGUgZmlyc3QtbGV0dGVyIHRleHQgbWF5IG5vdCBzdGFydCBhdCBET00gb2Zmc2V0
IDAgKGUuZy4gY29sbGFwc2VkIHdoaXRlc3BhY2UgcHJlY2VkZXMgdGhlIGZpcnN0IGxldHRlciku
CisgICAgYXV0byBmaXJzdExldHRlclN0YXJ0ID0gdGV4dEZyYWdtZW50LT5zdGFydCgpIC0gZmly
c3RMZXR0ZXJSZW5kZXJlci0+dGV4dCgpLmxlbmd0aCgpOworICAgIHJldHVybiBvZmZzZXQgPj0g
Zmlyc3RMZXR0ZXJTdGFydCA/IHN0ZDo6bWFrZV9wYWlyKGZpcnN0TGV0dGVyUmVuZGVyZXIsIG9m
ZnNldCAtIGZpcnN0TGV0dGVyU3RhcnQpIDogc3RkOjptYWtlX3BhaXIobnVsbHB0ciwgMCk7Cit9
CisKK3N0ZDo6cGFpcjxSZW5kZXJUZXh0KiwgdW5zaWduZWQ+IFBvc2l0aW9uOjpyZXNvbHZlZFRl
eHRSZW5kZXJlckFuZE9mZnNldCgpIGNvbnN0Cit7CisgICAgYXV0byBbcmVuZGVyZXIsIG9mZnNl
dF0gPSByZW5kZXJlckFuZE9mZnNldCgpOworICAgIGlmIChhdXRvKiByZW5kZXJUZXh0ID0gZHlu
YW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIHsgcmVu
ZGVyVGV4dCwgb2Zmc2V0IH07CisgICAgcmV0dXJuIHsgbnVsbHB0ciwgMCB9OworfQorCiBJbmxp
bmVCb3hBbmRPZmZzZXQgUG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldChBZmZpbml0eSBhZmZp
bml0eSwgVGV4dERpcmVjdGlvbiBwcmltYXJ5RGlyZWN0aW9uKSBjb25zdAogewogICAgIGF1dG8g
Y2FyZXRPZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKSk7CiAKLSAgICBSZWZQdHIgbm9kZSA9IGRlcHJlY2F0ZWROb2RlKCk7Ci0gICAgaWYgKCFu
b2RlKQotICAgICAgICByZXR1cm4geyB7IH0sIGNhcmV0T2Zmc2V0IH07Ci0gICAgQ2hlY2tlZFB0
ciByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgYXV0byBbcmVuZGVyZXIsIHJlc29s
dmVkT2Zmc2V0XSA9IHJlbmRlcmVyQW5kT2Zmc2V0KCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuIHsgeyB9LCBjYXJldE9mZnNldCB9OworICAgIGNhcmV0T2Zmc2V0ID0gcmVz
b2x2ZWRPZmZzZXQ7CiAKICAgICBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIGJveDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uaAppbmRleCA3MjUzNzk5N2Y2NWYuLmZmOGFhNDBlNjk3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTM4LDYgKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBMZWdhY3lJbmxpbmVCb3g7CiBjbGFzcyBSZW5kZXJFbGVtZW50OworY2xhc3MgUmVu
ZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFRleHQ7CiAKIHN0cnVjdCBCb3Vu
ZGFyeVBvaW50OwpAQCAtMTAzLDYgKzEwNSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBv
ZmZzZXRGb3JQb3NpdGlvbkFmdGVyQW5jaG9yKCk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0
aGUgcmVuZGVyZXIgYW5kIGZyYWdtZW50LWxvY2FsIG9mZnNldCBmb3IgdGhpcyBwb3NpdGlvbiwg
Y29ycmVjdGx5CisgICAgLy8gaGFuZGxpbmcgZmlyc3QtbGV0dGVyIHRleHQgZnJhZ21lbnQgc3Bs
aXRzIHdoZXJlIHRoZSBET00gdGV4dCBub2RlJ3MgcmVuZGVyZXIKKyAgICAvLyBpcyB0aGUgcmVt
YWluaW5nIGZyYWdtZW50IHJhdGhlciB0aGFuIHRoZSBmaXJzdC1sZXR0ZXIgZnJhZ21lbnQuCisg
ICAgc3RkOjpwYWlyPFJlbmRlck9iamVjdCosIHVuc2lnbmVkPiByZW5kZXJlckFuZE9mZnNldCgp
IGNvbnN0OworICAgIHN0ZDo6cGFpcjxSZW5kZXJUZXh0KiwgdW5zaWduZWQ+IHJlc29sdmVkVGV4
dFJlbmRlcmVyQW5kT2Zmc2V0KCkgY29uc3Q7CisKICAgICBSZWZQdHI8Tm9kZT4gZmlyc3ROb2Rl
KCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBhcmUgY29udmVuaWVuY2UgbWV0aG9kcyB3aGljaCBh
cmUgc21hcnQgYWJvdXQgd2hldGhlciB0aGUgcG9zaXRpb24gaXMgbmVpZ2hib3IgYW5jaG9yZWQg
b3IgcGFyZW50IGFuY2hvcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b25JdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAK
aW5kZXggNDAyYjUxYTAwNjJmLi4zNjc3NmMwMTE3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb25JdGVyYXRvci5jcHAKQEAgLTE3NSw4ICsxNzUsMTIgQEAgYm9vbCBQb3NpdGlvbkl0ZXJh
dG9yOjppc0NhbmRpZGF0ZSgpIGNvbnN0CiAgICAgaWYgKHJlbmRlcmVyLT5pc0JSKCkpCiAgICAg
ICAgIHJldHVybiBQb3NpdGlvbigqdGhpcykuaXNDYW5kaWRhdGUoKTsKIAotICAgIGlmIChDaGVj
a2VkUHRyIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVy
KSkKLSAgICAgICAgcmV0dXJuICFQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5vbmUoYW5jaG9y
Tm9kZS5nZXQoKSkgJiYgcmVuZGVyVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChtX29mZnNldElu
QW5jaG9yKTsKKyAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0ID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKFBvc2l0aW9uOjpub2RlSXNV
c2VyU2VsZWN0Tm9uZShhbmNob3JOb2RlLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgYXV0byBbcmVzb2x2ZWRUZXh0LCByZXNvbHZlZE9mZnNldF0gPSBQb3NpdGlv
bigqdGhpcykucmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICAgICAgcmV0dXJu
IHJlc29sdmVkVGV4dCAmJiByZXNvbHZlZFRleHQtPmNvbnRhaW5zQ2FyZXRPZmZzZXQocmVzb2x2
ZWRPZmZzZXQpOworICAgIH0KIAogICAgIGlmIChwb3NpdGlvbkJlZm9yZU9yQWZ0ZXJOb2RlSXND
YW5kaWRhdGUoKmFuY2hvck5vZGUpKQogICAgICAgICByZXR1cm4gKGF0U3RhcnRPZk5vZGUoKSB8
fCBhdEVuZE9mTm9kZSgpKSAmJiAhUG9zaXRpb246Om5vZGVJc1VzZXJTZWxlY3ROb25lKGFuY2hv
ck5vZGUtPnBhcmVudE5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCAw
NDg3MDI5MDU5MjAuLjRkMjAwOTcyYWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3Bw
CkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUrR2V0dGVyc0lubGluZXMu
aCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJlZFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1
ZGUgIlRleHQuaCIKQEAgLTkwNCwxMSArOTA1LDE4IEBAIGludCBjYXJldE1heE9mZnNldChjb25z
dCBOb2RlJiBub2RlKQogICAgIC8vIEZvciByZW5kZXJlZCB0ZXh0IG5vZGVzLCByZXR1cm4gdGhl
IGxhc3QgcG9zaXRpb24gdGhhdCBhIGNhcmV0IGNvdWxkIG9jY3VweS4KICAgICBpZiAoYXV0byog
dGV4dCA9IGR5bmFtaWNEb3duY2FzdDxUZXh0Pihub2RlKSkgewogICAgICAgICBpZiAoQ2hlY2tl
ZFB0ciByZW5kZXJlciA9IHRleHQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVu
ZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gZmlyc3RMZXR0ZXJB
ZGp1c3RlZERPTU9mZnNldCgqcmVuZGVyZXIsIHJlbmRlcmVyLT5jYXJldE1heE9mZnNldCgpKTsK
ICAgICB9CiAgICAgcmV0dXJuIGxhc3RPZmZzZXRGb3JFZGl0aW5nKG5vZGUpOwogfQogCit1bnNp
Z25lZCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIHVuc2lnbmVkIG9mZnNldCkKK3sKKyAgICBpZiAoYXV0byogdGV4dEZyYWdtZW50ID0g
ZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpOyB0ZXh0RnJhZ21l
bnQgJiYgdGV4dEZyYWdtZW50LT5maXJzdExldHRlcigpKQorICAgICAgICByZXR1cm4gb2Zmc2V0
ICsgdGV4dEZyYWdtZW50LT5zdGFydCgpOworICAgIHJldHVybiBvZmZzZXQ7Cit9CisKIGJvb2wg
bGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBw
b3NpdGlvbikKIHsKICAgICByZXR1cm4gbGluZUJyZWFrRXhpc3RzQXRQb3NpdGlvbihwb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpLmRvd25zdHJlYW0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5o
CmluZGV4IDYxZTYxMDM1YzY1MC4uYjA4NWZkNzQ4OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuaApAQCAtNzksNiArNzksNyBAQCBOb2RlKiBwcmV2aW91c0xlYWZOb2RlKGNvbnN0IE5vZGUq
KTsKIFdFQkNPUkVfRVhQT1JUIGludCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhjb25zdCBOb2RlJik7
CiBpbnQgY2FyZXRNaW5PZmZzZXQoY29uc3QgTm9kZSYpOwogaW50IGNhcmV0TWF4T2Zmc2V0KGNv
bnN0IE5vZGUmKTsKK3Vuc2lnbmVkIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgdW5zaWduZWQgb2Zmc2V0KTsKIAogYm9vbCBoYXNFZGl0YWJsZVN0eWxl
KGNvbnN0IE5vZGUmLCBFZGl0YWJsZVR5cGUpOwogYm9vbCBpc0VkaXRhYmxlTm9kZShjb25zdCBO
b2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGI5
YjRjNTkxNWY0MC4uNDI0YjFhOTgzOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcApAQCAtMjQzNiwxMiArMjQzNiwxMCBAQCB2b2lkIEZyYW1lU2VsZWN0aW9u
Ojp1cGRhdGVBcHBlYXJhbmNlKCkKICAgICAvLyBXZSBjYW4gZ2V0IGludG8gYSBzdGF0ZSB3aGVy
ZSB0aGUgc2VsZWN0aW9uIGVuZHBvaW50cyBtYXAgdG8gdGhlIHNhbWUgVmlzaWJsZVBvc2l0aW9u
IHdoZW4gYSBzZWxlY3Rpb24gaXMgZGVsZXRlZAogICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgeWV0
IG5vdGlmeSB0aGUgRnJhbWVTZWxlY3Rpb24gb2YgdGV4dCByZW1vdmFsLgogICAgIGlmIChDaGVj
a2VkUHRyIHZpZXcgPSBkb2N1bWVudC0+cmVuZGVyVmlldygpOyBzdGFydFBvcy5pc05vdE51bGwo
KSAmJiBlbmRQb3MuaXNOb3ROdWxsKCkgJiYgc2VsZWN0aW9uLnZpc2libGVTdGFydCgpICE9IHNl
bGVjdGlvbi52aXNpYmxlRW5kKCkpIHsKLSAgICAgICAgQ2hlY2tlZFB0ciBzdGFydFJlbmRlcmVy
ID0gc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgaW50IHN0
YXJ0T2Zmc2V0ID0gc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKLSAgICAgICAg
Q2hlY2tlZFB0ciBlbmRSZW5kZXJlciA9IGVuZFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJl
cigpOwotICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7Ci0gICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA+PSAwICYmIGVuZE9mZnNldCA+PSAw
KTsKLSAgICAgICAgdmlldy0+c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVu
ZGVyZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihlbmRPZmZzZXQpIH0pOworICAgICAgICBhdXRvIFtzdGFydFJlbmRlcmVyLCBzdGFy
dE9mZnNldF0gPSBzdGFydFBvcy5yZW5kZXJlckFuZE9mZnNldCgpOworICAgICAgICBhdXRvIFtl
bmRSZW5kZXJlciwgZW5kT2Zmc2V0XSA9IGVuZFBvcy5yZW5kZXJlckFuZE9mZnNldCgpOworICAg
ICAgICBpZiAoc3RhcnRSZW5kZXJlciAmJiBlbmRSZW5kZXJlcikKKyAgICAgICAgICAgIHZpZXct
PnNlbGVjdGlvbigpLnNldCh7IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0IH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVu
ZGVyZWRQb3NpdGlvbi5jcHAKaW5kZXggY2Q1Yzc5MGM4ZGU3Li4xYWYzZjRjNDQ1ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKIAogI2luY2x1ZGUgIkNhcmV0UmVj
dENvbXB1dGF0aW9uLmgiCisjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIklubGluZVJ1
bkFuZE9mZnNldC5oIgogI2luY2x1ZGUgIk5vZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0SW5saW5lcy5oIgpAQCAtODUsNiArODYsNyBAQCBSZW5kZXJlZFBvc2l0aW9uOjpSZW5k
ZXJlZFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgQWZmaW5pdHkgYWZmaW5pdHkp
CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX25v
ZGUgPSBwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpOwogICAgIGF1dG8gYm94QW5kT2Zmc2V0ID0g
cG9zaXRpb24uaW5saW5lQm94QW5kT2Zmc2V0KGFmZmluaXR5KTsKICAgICBtX2JveCA9IGJveEFu
ZE9mZnNldC5ib3g7CiAgICAgbV9vZmZzZXQgPSBib3hBbmRPZmZzZXQub2Zmc2V0OwpAQCAtMjA2
LDcgKzIwOCw3IEBAIFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRMZWZ0Qm91
bmRhcnlPZkJpRGlSdW4oKSBjb25zdAogICAgIEFTU0VSVChhdExlZnRCb3VuZGFyeU9mQmlkaVJ1
bigpKTsKIAogICAgIGlmIChhdExlZnRtb3N0T2Zmc2V0SW5Cb3goKSkKLSAgICAgICAgcmV0dXJu
IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChtX3JlbmRlcmVyLT5ub2RlKCkp
LmdldCgpLCBtX29mZnNldCk7CisgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBv
c2l0aW9uKHByb3RlY3QobV9ub2RlLmdldCgpKS5nZXQoKSwgbV9vZmZzZXQpOwogCiAgICAgcmV0
dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChuZXh0TGVhZk9uTGluZSgp
LT5yZW5kZXJlcigpLm5vZGUoKSkuZ2V0KCksIG5leHRMZWFmT25MaW5lKCktPmxlZnRtb3N0Q2Fy
ZXRPZmZzZXQoKSk7CiB9CkBAIC0yMTUsOCArMjE3LDEwIEBAIFBvc2l0aW9uIFJlbmRlcmVkUG9z
aXRpb246OnBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoYXRSaWdodEJvdW5kYXJ5T2ZCaWRpUnVuKCkpOwogCi0gICAgaWYgKGF0UmlnaHRtb3N0
T2Zmc2V0SW5Cb3goKSkKLSAgICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRp
b24ocHJvdGVjdChtX3JlbmRlcmVyLT5ub2RlKCkpLmdldCgpLCBtX29mZnNldCk7CisgICAgaWYg
KGF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSkgeworICAgICAgICBhdXRvIG9mZnNldCA9IGZpcnN0
TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKm1fcmVuZGVyZXIsIG1fb2Zmc2V0KTsKKyAgICAgICAg
cmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChtX25vZGUuZ2V0KCkp
LmdldCgpLCBvZmZzZXQpOworICAgIH0KIAogICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2Fj
eVBvc2l0aW9uKHByb3RlY3QocHJldmlvdXNMZWFmT25MaW5lKCktPnJlbmRlcmVyKCkubm9kZSgp
KS5nZXQoKSwgcHJldmlvdXNMZWFmT25MaW5lKCktPnJpZ2h0bW9zdENhcmV0T2Zmc2V0KCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAppbmRleCA3NGJlNGU0
N2RjYjQuLmU3ZTU4MGE4MTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW5kZXJlZFBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBv
c2l0aW9uLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGF0UmlnaHRCb3Vu
ZGFyeU9mQmlkaVJ1bihTaG91bGRNYXRjaEJpZGlMZXZlbCwgdW5zaWduZWQgY2hhciBiaWRpTGV2
ZWxPZlJ1bikgY29uc3Q7CiAKICAgICBTaW5nbGVUaHJlYWRXZWFrUHRyPGNvbnN0IFJlbmRlck9i
amVjdD4gbV9yZW5kZXJlcjsKKyAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwogICAgIElubGluZUl0
ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbV9ib3g7CiAgICAgdW5zaWduZWQgbV9vZmZzZXQgeyAw
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBlZmNhMTdh
MGRhMTkuLmZiYzRmODUzMDY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcApAQCAtNjA3LDYgKzYwNyw4IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9k
ZSgpCiAgICAgQ2hlY2tlZFJlZiByZW5kZXJlciA9ICp0ZXh0Tm9kZS0+cmVuZGVyZXIoKTsKICAg
ICBtX2xhc3RUZXh0Tm9kZSA9IHRleHROb2RlLnB0cigpOwogICAgIGF1dG8gcmVuZGVyZXJUZXh0
ID0gcmVuZGVyZXJUZXh0Rm9yQmVoYXZpb3IocmVuZGVyZXIuZ2V0KCkpOworICAgIC8vIHRleHRG
cmFnbWVudCBpcyB0aGUgcmVuZGVyZXIgdGhhdCBob2xkcyB0aGUgdHJhaWxpbmcgY29udGVudCBh
bmQgaGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBsZXR0ZXIgcmVuZGVyZXIuCisgICAgQ2hl
Y2tlZFB0ciB0ZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50
PihyZW5kZXJlci5nZXQoKSk7CiAKICAgICAvLyBoYW5kbGUgcHJlLWZvcm1hdHRlZCB0ZXh0CiAg
ICAgaWYgKCFyZW5kZXJlci0+c3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewpAQCAtNjE1
LDggKzYxNyw4IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgV1RGOjptb3ZlKHRleHROb2RlKSwgbnVsbHB0ciwgcnVu
U3RhcnQsIHJ1blN0YXJ0KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQot
ICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHJlbmRlclRleHRGcmFnbWVudCAmJiAh
bV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgIW1fb2Zmc2V0KSB7Ci0gICAgICAgICAgICBoYW5kbGVU
ZXh0Tm9kZUZpcnN0TGV0dGVyKCpyZW5kZXJUZXh0RnJhZ21lbnQpOworICAgICAgICBpZiAodGV4
dEZyYWdtZW50ICYmICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiAhbV9vZmZzZXQpIHsKKyAgICAg
ICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoKnRleHRGcmFnbWVudCk7CiAgICAgICAg
ICAgICBpZiAobV9maXJzdExldHRlclRleHQpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgZmly
c3RMZXR0ZXIgPSBtX2ZpcnN0TGV0dGVyVGV4dC0+dGV4dCgpOwogICAgICAgICAgICAgICAgIGVt
aXRUZXh0KHRleHROb2RlLCAqcHJvdGVjdChtX2ZpcnN0TGV0dGVyVGV4dCksIG1fb2Zmc2V0LCBt
X29mZnNldCArIGZpcnN0TGV0dGVyLmxlbmd0aCgpKTsKQEAgLTYyNyw5ICs2MjksMTUgQEAgYm9v
bCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgfQogICAgICAgICBpZiAo
cmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYg
IW1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVzU3R5bGVW
aXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW50IHJlbmRl
cmVyVGV4dExlbmd0aCA9IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKLSAgICAgICAgaW50IGVuZCA9
ICh0ZXh0Tm9kZS5wdHIoKSA9PSBtX2VuZENvbnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElOVF9N
QVg7Ci0gICAgICAgIGludCBydW5FbmQgPSBzdGQ6Om1pbihyZW5kZXJlclRleHRMZW5ndGgsIGVu
ZCk7CisgICAgICAgIGF1dG8gcmVuZGVyZXJUZXh0TGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50Pihy
ZW5kZXJlclRleHQubGVuZ3RoKCkpOworICAgICAgICBhdXRvIGVuZCA9ICh0ZXh0Tm9kZS5wdHIo
KSA9PSBtX2VuZENvbnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7CisgICAgICAgIGlm
ICh0ZXh0RnJhZ21lbnQgJiYgdGV4dEZyYWdtZW50LT5maXJzdExldHRlcigpKSB7CisgICAgICAg
ICAgICAvLyBUaGUgcmVtYWluaW5nIHRleHQgZnJhZ21lbnQncyB0ZXh0IGlzIGZyYWdtZW50LWxv
Y2FsLiBDb252ZXJ0IERPTSBvZmZzZXRzIHRvIGZyYWdtZW50LWxvY2FsIHNvIHdlIGNhbiBjb21w
YXJlIGFnYWluc3QgdGhlIHJlbmRlcmVyJ3MgdGV4dCBsZW5ndGguCisgICAgICAgICAgICBhdXRv
IGZyYWdtZW50U3RhcnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHRleHRGcmFnbWVudC0+c3RhcnQoKSk7
CisgICAgICAgICAgICBydW5TdGFydCA9IHN0ZDo6bWF4KDAsIHJ1blN0YXJ0IC0gZnJhZ21lbnRT
dGFydCk7CisgICAgICAgICAgICBlbmQgPSBlbmQgPT0gSU5UX01BWCA/IElOVF9NQVggOiBzdGQ6
Om1heCgwLCBlbmQgLSBmcmFnbWVudFN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHJ1
bkVuZCA9IHN0ZDo6bWluKHJlbmRlcmVyVGV4dExlbmd0aCwgZW5kKTsKIAogICAgICAgICBpZiAo
cnVuU3RhcnQgPj0gcnVuRW5kKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NDAsOCAr
NjQ4LDggQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKIAogICAgIHN0ZDo6
dGllKG1fdGV4dFJ1biwgbV90ZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGUpID0gSW5saW5lSXRlcmF0
b3I6OmZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKHJlbmRlcmVyLmdldCgpKTsKIAotICAg
IGlmIChDaGVja2VkUHRyIHJlbmRlclRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5k
ZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsgcmVuZGVyVGV4dEZyYWdtZW50ICYmICFtX2hhbmRs
ZWRGaXJzdExldHRlciAmJiAhbV9vZmZzZXQpCi0gICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RM
ZXR0ZXIoKnJlbmRlclRleHRGcmFnbWVudCk7CisgICAgaWYgKHRleHRGcmFnbWVudCAmJiAhbV9o
YW5kbGVkRmlyc3RMZXR0ZXIgJiYgIW1fb2Zmc2V0KQorICAgICAgICBoYW5kbGVUZXh0Tm9kZUZp
cnN0TGV0dGVyKCp0ZXh0RnJhZ21lbnQpOwogICAgIGVsc2UgaWYgKCFtX3RleHRSdW4gJiYgcmVu
ZGVyZXJUZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhbV9iZWhhdmlvcnMuY29udGFpbnMo
VGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjY1LDEyICs2NzMsMjEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHRSdW4oKQogCiAgICAgYXV0byBbZmlyc3RUZXh0UnVuLCBvcmRlckNhY2hlXSA9
IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcihyZW5kZXJlcik7
CiAKLSAgICBhdXRvIHJlbmRlcmVyVGV4dCA9IHJlbmRlcmVyVGV4dEZvckJlaGF2aW9yKHJlbmRl
cmVyLmdldCgpKTsKLSAgICB1bnNpZ25lZCByYW5nZVN0YXJ0ID0gbV9vZmZzZXQ7Ci0gICAgYXV0
byByYW5nZUVuZCA9IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsgfTsKLSAgICBpZiAodGV4dE5v
ZGUucHRyKCkgPT0gbV9lbmRDb250YWluZXIpCi0gICAgICAgIHJhbmdlRW5kID0gbV9lbmRPZmZz
ZXQ7CisgICAgLy8gRm9yIHJlbWFpbmluZyB0ZXh0IGZyYWdtZW50cyBhZnRlciBhIGZpcnN0LWxl
dHRlciBzcGxpdCwgdGV4dCBib3ggb2Zmc2V0cyBhcmUgZnJhZ21lbnQtbG9jYWwgYnV0IG1fb2Zm
c2V0L21fZW5kT2Zmc2V0IGFyZSBET00gb2Zmc2V0cy4KKyAgICB1bnNpZ25lZCByZW1haW5pbmdG
cmFnbWVudFN0YXJ0ID0gMDsKKyAgICBpZiAoYXV0byogcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyLmdldCgpKTsgcmVuZGVyVGV4dCAmJiBy
ZW5kZXJUZXh0LT5maXJzdExldHRlcigpKQorICAgICAgICByZW1haW5pbmdGcmFnbWVudFN0YXJ0
ID0gcmVuZGVyVGV4dC0+c3RhcnQoKTsKIAorICAgIGF1dG8gdG9GcmFnbWVudExvY2FsID0gWyZd
KHVuc2lnbmVkIGRvbU9mZnNldCkgeworICAgICAgICByZXR1cm4gZG9tT2Zmc2V0ID4gcmVtYWlu
aW5nRnJhZ21lbnRTdGFydCA/IGRvbU9mZnNldCAtIHJlbWFpbmluZ0ZyYWdtZW50U3RhcnQgOiAw
OworICAgIH07CisgICAgYXV0byB0b0RPTU9mZnNldCA9IFsmXSh1bnNpZ25lZCBsb2NhbE9mZnNl
dCkgeworICAgICAgICByZXR1cm4gbG9jYWxPZmZzZXQgKyByZW1haW5pbmdGcmFnbWVudFN0YXJ0
OworICAgIH07CisKKyAgICBhdXRvIHJlbmRlcmVyVGV4dCA9IHJlbmRlcmVyVGV4dEZvckJlaGF2
aW9yKHJlbmRlcmVyLmdldCgpKTsKKyAgICBhdXRvIHJhbmdlU3RhcnQgPSB0b0ZyYWdtZW50TG9j
YWwobV9vZmZzZXQpOworICAgIGF1dG8gcmFuZ2VFbmQgPSB0ZXh0Tm9kZS5wdHIoKSA9PSBtX2Vu
ZENvbnRhaW5lciA/IHN0ZDo6bWFrZV9vcHRpb25hbCh0b0ZyYWdtZW50TG9jYWwobV9lbmRPZmZz
ZXQpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICB3aGlsZSAobV90ZXh0UnVuKSB7CiAgICAgICAgIGF1
dG8gdGV4dFJ1blN0YXJ0ID0gbV90ZXh0UnVuLT5zdGFydCgpOwogICAgICAgICBhdXRvIHRleHRS
dW5FbmQgPSB0ZXh0UnVuU3RhcnQgKyBtX3RleHRSdW4tPmxlbmd0aCgpOwpAQCAtNzA0LDcgKzcy
MSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKICAgICAgICAgICAgIC8v
IFRoaXMgZWZmZWN0aXZlbHkgdHJhbnNsYXRlcyBuZXdsaW5lcyBhbmQgdGFicyB0byBzcGFjZXMg
d2l0aG91dCBjb3B5aW5nIHRoZSB0ZXh0LgogICAgICAgICAgICAgaWYgKGlzTmV3bGluZU9yVGFi
KHJlbmRlcmVyVGV4dFtydW5TdGFydF0pKSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cignICcsIHRleHROb2RlLmNvcHlSZWYoKSwgbnVsbHB0ciwgcnVuU3RhcnQsIHJ1blN0YXJ0ICsg
MSk7Ci0gICAgICAgICAgICAgICAgbV9vZmZzZXQgPSBydW5TdGFydCArIDE7CisgICAgICAgICAg
ICAgICAgbV9vZmZzZXQgPSB0b0RPTU9mZnNldChydW5TdGFydCArIDEpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRvIHN1YnJ1bkVuZCA9IHJ1blN0YXJ0ICsgMTsK
ICAgICAgICAgICAgICAgICBmb3IgKDsgc3VicnVuRW5kIDwgcnVuRW5kOyArK3N1YnJ1bkVuZCkg
ewpAQCAtNzE2LDcgKzczMyw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RTcGFjZUNvbGxhcHNlZEJ5TmV4dE5vblRleHRS
dW4pCiAgICAgICAgICAgICAgICAgICAgICAgICArK3N1YnJ1bkVuZDsgLy8gcnVuRW5kIHN0b3Bw
ZWQgYmVmb3JlIGxhc3Qgc3BhY2UuIEluY3JlbWVudCBieSBvbmUgdG8gcmVzdG9yZSB0aGUgc3Bh
Y2UuCiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gc3VicnVu
RW5kOworICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gdG9ET01PZmZzZXQoc3VicnVuRW5kKTsK
ICAgICAgICAgICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgcmVuZGVyZXIsIHJ1blN0YXJ0LCBz
dWJydW5FbmQpOwogICAgICAgICAgICAgfQogCkBAIC0xMjAxLDggKzEyMTgsMTEgQEAgdm9pZCBU
ZXh0SXRlcmF0b3I6OmVtaXRUZXh0KFRleHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiByZW5kZXJl
ciwgaW50IHRleHRTdGFydE8KIAogICAgIG1fcG9zaXRpb25Ob2RlID0gdGV4dE5vZGU7CiAgICAg
bV9wb3NpdGlvbk9mZnNldEJhc2VOb2RlID0gbnVsbHB0cjsKLSAgICBtX3Bvc2l0aW9uU3RhcnRP
ZmZzZXQgPSB0ZXh0U3RhcnRPZmZzZXQ7Ci0gICAgbV9wb3NpdGlvbkVuZE9mZnNldCA9IHRleHRF
bmRPZmZzZXQ7CisgICAgLy8gRm9yIHJlbWFpbmluZyB0ZXh0IGZyYWdtZW50cyBhZnRlciBhIGZp
cnN0LWxldHRlciBzcGxpdCwgdGhlIHRleHQgb2Zmc2V0cyBhcmUKKyAgICAvLyBmcmFnbWVudC1s
b2NhbCBidXQgcG9zaXRpb24gb2Zmc2V0cyBuZWVkIHRvIGJlIERPTS1yZWxhdGl2ZSBmb3IgcmFu
Z2UoKSB0bworICAgIC8vIHJldHVybiBjb3JyZWN0IGJvdW5kYXJ5IHBvaW50cyAodXNlZCBieSB3
b3JkL3NlbnRlbmNlIGJvdW5kYXJ5IGRldGVjdGlvbikuCisgICAgbV9wb3NpdGlvblN0YXJ0T2Zm
c2V0ID0gZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldChyZW5kZXJlciwgdGV4dFN0YXJ0T2Zm
c2V0KTsKKyAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9m
ZnNldChyZW5kZXJlciwgdGV4dEVuZE9mZnNldCk7CiAKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSBz
dHJpbmdbdGV4dEVuZE9mZnNldCAtIDFdOwogICAgIG1fY29weWFibGVUZXh0LnNldChXVEY6Om1v
dmUoc3RyaW5nKSwgdGV4dFN0YXJ0T2Zmc2V0LCB0ZXh0RW5kT2Zmc2V0IC0gdGV4dFN0YXJ0T2Zm
c2V0KTsKQEAgLTEzNjEsNzAgKzEzODEsNDcgQEAgYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiB7CiAgICAgbV9sYXN0VGV4dE5vZGUgPSBkb3du
Y2FzdDxUZXh0PihtX25vZGUuZ2V0KCkpOwogCi0gICAgaW50IHN0YXJ0T2Zmc2V0OwotICAgIGlu
dCBvZmZzZXRJbk5vZGU7Ci0gICAgQ2hlY2tlZFB0ciByZW5kZXJlciA9IGhhbmRsZUZpcnN0TGV0
dGVyKHN0YXJ0T2Zmc2V0LCBvZmZzZXRJbk5vZGUpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAg
ICAgIHJldHVybiB0cnVlOworICAgIENoZWNrZWRSZWYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5k
ZXJUZXh0PigqbV9ub2RlLT5yZW5kZXJlcigpKTsKKyAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gKG1f
bm9kZSA9PSBtX3N0YXJ0Q29udGFpbmVyKSA/IG1fc3RhcnRPZmZzZXQgOiAwOwogCi0gICAgU3Ry
aW5nIHRleHQgPSByZW5kZXJlci0+dGV4dCgpOworICAgIGF1dG8gdGV4dCA9IHJlbmRlcmVyLT50
ZXh0KCk7CiAgICAgaWYgKCFyZW5kZXJlci0+aGFzUmVuZGVyZWRUZXh0KCkgJiYgdGV4dC5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoc3RhcnRPZmZzZXQgKyBvZmZz
ZXRJbk5vZGUgPT0gbV9vZmZzZXQpIHsKLSAgICAgICAgQVNTRVJUKCFtX3Nob3VsZEhhbmRsZUZp
cnN0TGV0dGVyKTsKKyAgICBpZiAoc3RhcnRPZmZzZXQgPT0gbV9vZmZzZXQpCiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KIAogICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSBtX29mZnNldDsK
LSAgICBtX29mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgb2Zmc2V0SW5Ob2RlOworICAgIG1fb2Zmc2V0
ID0gc3RhcnRPZmZzZXQ7CiAgICAgbV9wb3NpdGlvbk5vZGUgPSBtX25vZGU7CiAgICAgbV9wb3Np
dGlvblN0YXJ0T2Zmc2V0ID0gbV9vZmZzZXQ7CiAKLSAgICBBU1NFUlQobV9wb3NpdGlvblN0YXJ0
T2Zmc2V0IDwgbV9wb3NpdGlvbkVuZE9mZnNldCk7Ci0gICAgQVNTRVJUKG1fcG9zaXRpb25TdGFy
dE9mZnNldCAtIG9mZnNldEluTm9kZSA+PSAwKTsKLSAgICBBU1NFUlQobV9wb3NpdGlvbkVuZE9m
ZnNldCAtIG9mZnNldEluTm9kZSA+IDApOwotICAgIEFTU0VSVChtX3Bvc2l0aW9uRW5kT2Zmc2V0
IC0gb2Zmc2V0SW5Ob2RlIDw9IHN0YXRpY19jYXN0PGludD4odGV4dC5sZW5ndGgoKSkpOworICAg
IC8vIEZvciByZW1haW5pbmcgdGV4dCBmcmFnbWVudHMgYWZ0ZXIgYSBmaXJzdC1sZXR0ZXIgc3Bs
aXQsIERPTSBvZmZzZXRzIChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQsCisgICAgLy8gbV9wb3NpdGlv
bkVuZE9mZnNldCkgZGlmZmVyIGZyb20gZnJhZ21lbnQtbG9jYWwgb2Zmc2V0cyB1c2VkIHRvIGlu
ZGV4IGludG8gcmVuZGVyZXIgdGV4dC4KKyAgICAvLyBDb252ZXJ0IHRvIGZyYWdtZW50LWxvY2Fs
IGZvciB0ZXh0IGFjY2Vzcywga2VlcGluZyBET00gb2Zmc2V0cyBmb3IgcmFuZ2UoKS4KKyAgICB1
bnNpZ25lZCBmcmFnbWVudFN0YXJ0ID0gMDsKKyAgICBpZiAoYXV0byogcmVuZGVyVGV4dCA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyLmdldCgpKTsgcmVuZGVy
VGV4dCAmJiByZW5kZXJUZXh0LT5maXJzdExldHRlcigpICYmIHN0YXJ0T2Zmc2V0ID49IHN0YXRp
Y19jYXN0PGludD4ocmVuZGVyVGV4dC0+c3RhcnQoKSkpCisgICAgICAgIGZyYWdtZW50U3RhcnQg
PSByZW5kZXJUZXh0LT5zdGFydCgpOwogCi0gICAgbV9sYXN0Q2hhcmFjdGVyID0gdGV4dFttX3Bv
c2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIC0gMV07Ci0gICAgbV9jb3B5YWJsZVRleHQu
c2V0KFdURjo6bW92ZSh0ZXh0KSwgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0IC0gb2Zmc2V0SW5Ob2Rl
LCBtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gbV9wb3NpdGlvblN0YXJ0T2Zmc2V0KTsKLSAgICBtX3Rl
eHQgPSBtX2NvcHlhYmxlVGV4dC50ZXh0KCk7CisgICAgLy8gQWZ0ZXIgZWRpdGluZyBtdXRhdGlv
bnMgKGUuZy4gZGVsZXRpbmcgdGhlIGxhc3QgY2hhcmFjdGVyKSwKKyAgICAvLyBtX3Bvc2l0aW9u
RW5kT2Zmc2V0IGNhbiBleGNlZWQgdGhlIHRleHQgbm9kZSdzIGN1cnJlbnQgbGVuZ3RoIGluIERP
TSBzcGFjZS4KKyAgICBhdXRvIHRleHRMZW5ndGhJbkRPTVNwYWNlID0gc3RhdGljX2Nhc3Q8aW50
Pih0ZXh0Lmxlbmd0aCgpICsgZnJhZ21lbnRTdGFydCk7CisgICAgaWYgKG1fcG9zaXRpb25FbmRP
ZmZzZXQgPiB0ZXh0TGVuZ3RoSW5ET01TcGFjZSkKKyAgICAgICAgbV9wb3NpdGlvbkVuZE9mZnNl
dCA9IHRleHRMZW5ndGhJbkRPTVNwYWNlOwogCi0gICAgcmV0dXJuICFtX3Nob3VsZEhhbmRsZUZp
cnN0TGV0dGVyOwotfQotCi1DaGVja2VkUHRyPFJlbmRlclRleHQ+IFNpbXBsaWZpZWRCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3I6OmhhbmRsZUZpcnN0TGV0dGVyKGludCYgc3RhcnRPZmZzZXQsIGludCYg
b2Zmc2V0SW5Ob2RlKQotewotICAgIENoZWNrZWRSZWYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5k
ZXJUZXh0PigqbV9ub2RlLT5yZW5kZXJlcigpKTsKLSAgICBzdGFydE9mZnNldCA9IChtX25vZGUg
PT0gbV9zdGFydENvbnRhaW5lcikgPyBtX3N0YXJ0T2Zmc2V0IDogMDsKKyAgICBhdXRvIGxvY2Fs
U3RhcnQgPSBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgLSBmcmFnbWVudFN0YXJ0OworICAgIGF1dG8g
bG9jYWxFbmQgPSBtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gZnJhZ21lbnRTdGFydDsKIAotICAgIENo
ZWNrZWRQdHIgZnJhZ21lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Pihy
ZW5kZXJlcik7Ci0gICAgaWYgKCFmcmFnbWVudCkgewotICAgICAgICBvZmZzZXRJbk5vZGUgPSAw
OwotICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgfQotCi0gICAgaW50IG9mZnNldEFmdGVy
Rmlyc3RMZXR0ZXIgPSBmcmFnbWVudC0+c3RhcnQoKTsKLSAgICBpZiAoc3RhcnRPZmZzZXQgPj0g
b2Zmc2V0QWZ0ZXJGaXJzdExldHRlcikgewotICAgICAgICBBU1NFUlQoIW1fc2hvdWxkSGFuZGxl
Rmlyc3RMZXR0ZXIpOwotICAgICAgICBvZmZzZXRJbk5vZGUgPSBvZmZzZXRBZnRlckZpcnN0TGV0
dGVyOwotICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgfQotCi0gICAgaWYgKCFtX3Nob3Vs
ZEhhbmRsZUZpcnN0TGV0dGVyICYmIHN0YXJ0T2Zmc2V0ICsgb2Zmc2V0QWZ0ZXJGaXJzdExldHRl
ciA8IG1fb2Zmc2V0KSB7Ci0gICAgICAgIG1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSB0cnVl
OwotICAgICAgICBvZmZzZXRJbk5vZGUgPSBvZmZzZXRBZnRlckZpcnN0TGV0dGVyOwotICAgICAg
ICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgfQotCi0gICAgbV9zaG91bGRIYW5kbGVGaXJzdExldHRl
ciA9IGZhbHNlOwotICAgIG9mZnNldEluTm9kZSA9IDA7Ci0gICAgQ2hlY2tlZFB0ciBmaXJzdExl
dHRlclJlbmRlcmVyID0gZmlyc3RSZW5kZXJUZXh0SW5GaXJzdExldHRlcihwcm90ZWN0KGZyYWdt
ZW50LT5maXJzdExldHRlcigpKSk7CisgICAgQVNTRVJUKG1fcG9zaXRpb25TdGFydE9mZnNldCA8
IG1fcG9zaXRpb25FbmRPZmZzZXQpOworICAgIEFTU0VSVChsb2NhbFN0YXJ0ID49IDApOworICAg
IEFTU0VSVChsb2NhbEVuZCA+IDApOworICAgIEFTU0VSVChsb2NhbEVuZCA8PSB0ZXh0Lmxlbmd0
aCgpKTsKIAotICAgIG1fb2Zmc2V0ID0gZmlyc3RMZXR0ZXJSZW5kZXJlci0+Y2FyZXRNYXhPZmZz
ZXQoKTsKLSAgICBtX29mZnNldCArPSBjb2xsYXBzZWRTcGFjZUxlbmd0aCgqZmlyc3RMZXR0ZXJS
ZW5kZXJlciwgbV9vZmZzZXQpOworICAgIG1fbGFzdENoYXJhY3RlciA9IHRleHRbbG9jYWxFbmQg
LSAxXTsKKyAgICBtX2NvcHlhYmxlVGV4dC5zZXQoV1RGOjptb3ZlKHRleHQpLCBsb2NhbFN0YXJ0
LCBtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gbV9wb3NpdGlvblN0YXJ0T2Zmc2V0KTsKKyAgICBtX3Rl
eHQgPSBtX2NvcHlhYmxlVGV4dC50ZXh0KCk7CiAKLSAgICByZXR1cm4gZmlyc3RMZXR0ZXJSZW5k
ZXJlcjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4
dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmgKaW5kZXggNDMyMmFhYTY1ZDBlLi45ZTY1ZGZkMWVmZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMjAxLDcgKzIwMSw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgdm9pZCBleGl0Tm9kZSgpOwogICAgIGJvb2wgaGFuZGxlVGV4dE5vZGUoKTsK
LSAgICBDaGVja2VkUHRyPFJlbmRlclRleHQ+IGhhbmRsZUZpcnN0TGV0dGVyKGludCYgc3RhcnRP
ZmZzZXQsIGludCYgb2Zmc2V0SW5Ob2RlKTsKICAgICBib29sIGhhbmRsZVJlcGxhY2VkRWxlbWVu
dCgpOwogICAgIGJvb2wgaGFuZGxlTm9uVGV4dE5vZGUoKTsKICAgICB2b2lkIGVtaXRDaGFyYWN0
ZXIoY2hhcjE2X3QsIFJlZlB0cjxOb2RlPiYmLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZz
ZXQpOwpAQCAtMjM2LDggKzIzNSw2IEBAIHByaXZhdGU6CiAgICAgLy8gV2hldGhlciBtX25vZGUg
aGFzIGFkdmFuY2VkIGJleW9uZCB0aGUgaXRlcmF0aW9uIHJhbmdlIChpLmUuIG1fc3RhcnRDb250
YWluZXIpLgogICAgIGJvb2wgbV9oYXZlUGFzc2VkU3RhcnRDb250YWluZXIgeyBmYWxzZSB9Owog
Ci0gICAgLy8gU2hvdWxkIGhhbmRsZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgaW4gdGhlIG5leHQg
Y2FsbCB0byBoYW5kbGVUZXh0Tm9kZS4KLSAgICBib29sIG1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0
ZXIgeyBmYWxzZSB9OwogfTsKIAogLy8gQnVpbGRzIG9uIHRoZSB0ZXh0IGl0ZXJhdG9yLCBhZGRp
bmcgYSBjaGFyYWN0ZXIgcG9zaXRpb24gc28gd2UgY2FuIHdhbGsgb25lCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggZjVkMWVlZTU4NmM3Li44ZGZlNjM5
ODYyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAg
LTQ0LDcgKzQ0LDkgQEAKICNpbmNsdWRlICJQb3NpdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJS
YW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckJv
eE1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0SW5saW5lcy5oIgorI2luY2x1
ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtNTgsNiArNjAsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCisv
LyBUaGUgYW5vbnltb3VzIHRleHQgcmVuZGVyZXIgaW5zaWRlIDo6Zmlyc3QtbGV0dGVyIGhhcyBu
byBET00gbm9kZS4KK3N0YXRpYyBSZW5kZXJUZXh0RnJhZ21lbnQqIHJlbWFpbmluZ1RleHRGcmFn
bWVudEZvckZpcnN0TGV0dGVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCit7CisgICAg
aWYgKHJlbmRlcmVyLm5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBpZiAoYXV0byog
cGFyZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihyZW5kZXJlci5w
YXJlbnQoKSkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPmZpcnN0TGV0dGVyUmVtYWluaW5nVGV4
dCgpOworICAgIHJldHVybiB7IH07Cit9CisKIFZpc2libGVQb3NpdGlvbjo6VmlzaWJsZVBvc2l0
aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgQWZmaW5pdHkgYWZmaW5pdHkpCiAgICAgOiBt
X2RlZXBQb3NpdGlvbiB7IGNhbm9uaWNhbFBvc2l0aW9uKHBvc2l0aW9uKSB9CiB7CkBAIC0yNTMs
NyArMjY1LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIHAgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHByb3RlY3QocmVuZGVyZXItPm5v
ZGUoKSkuZ2V0KCksIG9mZnNldCk7CisgICAgICAgIHAgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBv
c2l0aW9uKHByb3RlY3QocmVuZGVyZXItPm5vZGUoKSkuZ2V0KCksIGZpcnN0TGV0dGVyQWRqdXN0
ZWRET01PZmZzZXQoKnJlbmRlcmVyLCBvZmZzZXQpKTsKIAogICAgICAgICBpZiAoKHAuaXNDYW5k
aWRhdGUoKSAmJiBwLmRvd25zdHJlYW0oKSAhPSBkb3duc3RyZWFtU3RhcnQpIHx8IHAuYXRTdGFy
dE9mVHJlZSgpIHx8IHAuYXRFbmRPZlRyZWUoKSkKICAgICAgICAgICAgIHJldHVybiBwOwpAQCAt
MzA1LDcgKzMxNyw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGlmICgocmVuZGVyZXItPmlzQmxv
Y2tMZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUoKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBv
ZmZzZXQgPT0gYm94LT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbmV4dFZpc3VhbGx5RGlzdGluY3RD
YW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKG1fZGVlcFBvc2l0aW9uKTsKIAotICAgICAgICAgICAgaWYgKCFyZW5kZXJlci0+bm9kZSgp
KSB7CisgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkgJiYgIXJlbWFpbmluZ1RleHRG
cmFnbWVudEZvckZpcnN0TGV0dGVyKCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgICAgICBib3gu
dHJhdmVyc2VMaW5lUmlnaHR3YXJkT25MaW5lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFib3gp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJl
Y3Rpb246OkxUUiA/IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9u
KSA6IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CkBA
IC00MjIsNyArNDM0LDkgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5
RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBwID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KHJlbmRl
cmVyLT5ub2RlKCkpLmdldCgpLCBvZmZzZXQpOworICAgICAgICBhdXRvKiByZW1haW5pbmdGcmFn
bWVudCA9IHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCpyZW5kZXJlcik7Cisg
ICAgICAgIGF1dG8qIG5vZGUgPSByZW1haW5pbmdGcmFnbWVudCA/IHJlbWFpbmluZ0ZyYWdtZW50
LT50ZXh0Tm9kZSgpIDogcmVuZGVyZXItPm5vZGUoKTsKKyAgICAgICAgcCA9IG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChub2RlKS5nZXQoKSwgZmlyc3RMZXR0ZXJBZGp1c3Rl
ZERPTU9mZnNldCgqcmVuZGVyZXIsIG9mZnNldCkpOwogCiAgICAgICAgIGlmICgocC5pc0NhbmRp
ZGF0ZSgpICYmIHAuZG93bnN0cmVhbSgpICE9IGRvd25zdHJlYW1TdGFydCkgfHwgcC5hdFN0YXJ0
T2ZUcmVlKCkgfHwgcC5hdEVuZE9mVHJlZSgpKQogICAgICAgICAgICAgcmV0dXJuIHA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMmQ0MjI3YWEwZjkxLi4xNzFh
OTQ5MDc0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkJvdW5kYXJ5UG9pbnRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVkZSAiRWRpdGluZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKQEAgLTg1NSw3ICs4NTYsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0
aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2ludAogICAgICAg
ICBpbnQgZW5kT2Zmc2V0ID0gZW5kVGV4dEJveC5zdGFydCgpOwogICAgICAgICBpZiAoIWVuZFRl
eHRCb3guaXNMaW5lQnJlYWsoKSkKICAgICAgICAgICAgIGVuZE9mZnNldCArPSBlbmRUZXh0Qm94
Lmxlbmd0aCgpOwotICAgICAgICBwb3MgPSBQb3NpdGlvbihlbmRUZXh0Tm9kZS5yZWxlYXNlTm9u
TnVsbCgpLCBlbmRPZmZzZXQpOworICAgICAgICBwb3MgPSBQb3NpdGlvbihlbmRUZXh0Tm9kZS5y
ZWxlYXNlTm9uTnVsbCgpLCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KGVuZFRleHRCb3gu
cmVuZGVyZXIoKSwgZW5kT2Zmc2V0KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHBvcyA9IHBvc2l0
aW9uQWZ0ZXJOb2RlKCplbmROb2RlKTsKIApAQCAtMTIzMyw3ICsxMjM0LDcgQEAgUmVmUHRyPE5v
ZGU+IGZpbmRFbmRPZlBhcmFncmFwaChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGhpZ2hlc3RSb290
LCBOb2RlKiBzdGF5SW4KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBub2RlID0gbjsKLSAgICAgICAgICAgIG9mZnNldCA9IHItPmNhcmV0TWF4T2Zmc2V0KCk7
CisgICAgICAgICAgICBvZmZzZXQgPSBjYXJldE1heE9mZnNldCgqbik7CiAgICAgICAgICAgICBu
ID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbiwgc3RheUluc2lkZUJsb2NrKTsKICAgICAgICAgfSBl
bHNlIGlmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQoKm4pIHx8IGlzUmVuZGVyZWRUYWJsZShuLmdl
dCgpKSkgewogICAgICAgICAgICAgbm9kZSA9IG47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCmluZGV4IDM1MDg0MWQwZDFhZS4uZjgyMTQ1NWYxZWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsNyBAQAog
I2luY2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIk5vZGVJbmxpbmVzLmgiCisjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIk91
dGxpbmVQYWludGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1l
bnQuaCIKQEAgLTE5MTQsNyArMTkxNSw3IEBAIFBvc2l0aW9uV2l0aEFmZmluaXR5IFJlbmRlck9i
amVjdDo6Y3JlYXRlUG9zaXRpb25XaXRoQWZmaW5pdHkoaW50IG9mZnNldCwgQWZmaW5pCiAgICAg
aWYgKFJlZlB0ciBub2RlID0gbm9uUHNldWRvTm9kZSgpKSB7CiAgICAgICAgIGlmICghbm9kZS0+
aGFzRWRpdGFibGVTdHlsZSgpKSB7CiAgICAgICAgICAgICAvLyBJZiBpdCBjYW4gYmUgZm91bmQs
IHdlIHByZWZlciBhIHZpc3VhbGx5IGVxdWl2YWxlbnQgcG9zaXRpb24gdGhhdCBpcyBlZGl0YWJs
ZS4gCi0gICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IG1ha2VEZXByZWNhdGVkTGVnYWN5
UG9zaXRpb24obm9kZS5nZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0
aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBmaXJzdExldHRl
ckFkanVzdGVkRE9NT2Zmc2V0KCp0aGlzLCBvZmZzZXQpKTsKICAgICAgICAgICAgIFBvc2l0aW9u
IGNhbmRpZGF0ZSA9IHBvc2l0aW9uLmRvd25zdHJlYW0oQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkp
OwogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5oYXNFZGl0YWJs
ZVN0eWxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uV2l0aEFmZmluaXR5KGNh
bmRpZGF0ZSwgYWZmaW5pdHkpOwpAQCAtMTkyMyw3ICsxOTI0LDcgQEAgUG9zaXRpb25XaXRoQWZm
aW5pdHkgUmVuZGVyT2JqZWN0OjpjcmVhdGVQb3NpdGlvbldpdGhBZmZpbml0eShpbnQgb2Zmc2V0
LCBBZmZpbmkKICAgICAgICAgICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZmaW5pdHkoY2Fu
ZGlkYXRlLCBhZmZpbml0eSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IEVsaW1pbmF0
ZSBsZWdhY3kgZWRpdGluZyBwb3NpdGlvbnMKLSAgICAgICAgcmV0dXJuIFBvc2l0aW9uV2l0aEFm
ZmluaXR5KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24obm9kZS5nZXQoKSwgb2Zmc2V0KSwg
YWZmaW5pdHkpOworICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZmaW5pdHkobWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zm
c2V0KCp0aGlzLCBvZmZzZXQpKSwgYWZmaW5pdHkpOwogICAgIH0KIAogICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gY3Jvc3MgdGhlIGJvdW5kYXJ5IGJldHdlZW4gZWRpdGFibGUgYW5kIG5vbi1lZGl0
YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFn
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNw
cAppbmRleCA2OTBkODEwNzFkYWMuLmY3ZjU4MmE3Y2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKQEAgLTY4LDcgKzY4LDE2IEBAIFJl
bmRlclRleHRGcmFnbWVudDo6flJlbmRlclRleHRGcmFnbWVudCgpCiAKIGJvb2wgUmVuZGVyVGV4
dEZyYWdtZW50OjpjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdAogewotICAgIHJldHVybiB0ZXh0
Tm9kZSgpICYmIHRleHROb2RlKCktPmhhc0VkaXRhYmxlU3R5bGUoKTsKKyAgICBhdXRvKiB0ZXh0
Tm9kZSA9IHRoaXMtPnRleHROb2RlKCk7CisgICAgaWYgKCF0ZXh0Tm9kZSkgeworICAgICAgICAv
LyBBbm9ueW1vdXMgZmlyc3QtbGV0dGVyIHRleHQgZnJhZ21lbnRzIGFyZSBzZWxlY3RhYmxlIHdo
ZW4gdGhlIHJlbWFpbmluZworICAgICAgICAvLyB0ZXh0IGZyYWdtZW50IGhhcyBhbiBhc3NvY2lh
dGVkIERPTSB0ZXh0IG5vZGUuCisgICAgICAgIEFTU0VSVChpczxSZW5kZXJCb3hNb2RlbE9iamVj
dD4ocGFyZW50KCkpICYmIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqcGFyZW50KCkp
LmZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIC8vIFJlbWFpbmluZyB0ZXh0IGZyYWdtZW50cyB3aXRoIGZpcnN0LWxldHRlciBhcmUg
YWx3YXlzIHNlbGVjdGFibGUsCisgICAgLy8gbWF0Y2hpbmcgdGhlIGJhc2UgUmVuZGVyVGV4dDo6
Y2FuQmVTZWxlY3Rpb25MZWFmKCkgYmVoYXZpb3IuCisgICAgcmV0dXJuIGZpcnN0TGV0dGVyKCkg
PyB0cnVlIDogdGV4dE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKTsKIH0KIAogdm9pZCBSZW5kZXJU
ZXh0RnJhZ21lbnQ6OnNldFRleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5ld1RleHQsIGJvb2wg
Zm9yY2UpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1s
ZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg0NzJm
NDAzYzgwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMyBAQAorVGVzdCB0aGF0IHNlbGVjdGlvbiBhY3Jvc3MgbXVsdGlwbGUgZWxlbWVudHMg
d2l0aCA6OmZpcnN0LWxldHRlciB3b3JrcyBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxh
Y2UoL1xuL2csICd8JykgaXMgIkZpcnN0IHBhcmFncmFwaHxTZWNvbmQgcGFyYWdyYXBoIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cbi9nLCAnfCcpIGlz
ICJzdCBwYXJhZ3JhcGh8U2Vjb25kIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKS5yZXBsYWNlKC9cbi9nLCAnfCcpIGlzICJGaXJzdCBwYXJhZ3JhcGh8UyIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorRmlyc3QgcGFyYWdyYXBo
CitTZWNvbmQgcGFyYWdyYXBoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVu
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGZiMzQ4OGQ0
NWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmly
c3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisuZmlyc3QtbGV0dGVyLXN0
eWxlZDo6Zmlyc3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJwYXJhMSIgY2xh
c3M9ImZpcnN0LWxldHRlci1zdHlsZWQiPkZpcnN0IHBhcmFncmFwaDwvZGl2PgorICAgIDxkaXYg
aWQ9InBhcmEyIiBjbGFzcz0iZmlyc3QtbGV0dGVyLXN0eWxlZCI+U2Vjb25kIHBhcmFncmFwaDwv
ZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNlbGVjdGlv
biBhY3Jvc3MgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCA6OmZpcnN0LWxldHRlciB3b3JrcyBjb3Jy
ZWN0bHkuIik7CisKK2Z1bmN0aW9uIHNlbGVjdEFjcm9zc0VsZW1lbnRzKHN0YXJ0Tm9kZSwgc3Rh
cnRPZmZzZXQsIGVuZE5vZGUsIGVuZE9mZnNldCkgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnROb2RlLCBzdGFydE9mZnNl
dCk7CisgICAgcmFuZ2Uuc2V0RW5kKGVuZE5vZGUsIGVuZE9mZnNldCk7CisgICAgdmFyIHNlbCA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAg
c2VsLmFkZFJhbmdlKHJhbmdlKTsKK30KKworLy8gVGVzdCAxOiBTZWxlY3QgYWNyb3NzIHR3byBm
aXJzdC1sZXR0ZXIgcGFyYWdyYXBocworc2VsZWN0QWNyb3NzRWxlbWVudHMocGFyYTEuZmlyc3RD
aGlsZCwgMCwgcGFyYTIuZmlyc3RDaGlsZCwgcGFyYTIuZmlyc3RDaGlsZC5sZW5ndGgpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBs
YWNlKC9cXG4vZywgJ3wnKSIsICJGaXJzdCBwYXJhZ3JhcGh8U2Vjb25kIHBhcmFncmFwaCIpOwor
CisvLyBUZXN0IDI6IFNlbGVjdCBmcm9tIG1pZGRsZSBvZiBmaXJzdCB0byBtaWRkbGUgb2Ygc2Vj
b25kCitzZWxlY3RBY3Jvc3NFbGVtZW50cyhwYXJhMS5maXJzdENoaWxkLCAzLCBwYXJhMi5maXJz
dENoaWxkLCA2KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICd8JykiLCAic3QgcGFyYWdyYXBofFNlY29uZCIp
OworCisvLyBUZXN0IDM6IFNlbGVjdCBmcm9tIGZpcnN0LWxldHRlciBvZiBmaXJzdCB0byBmaXJz
dC1sZXR0ZXIgb2Ygc2Vjb25kCitzZWxlY3RBY3Jvc3NFbGVtZW50cyhwYXJhMS5maXJzdENoaWxk
LCAwLCBwYXJhMi5maXJzdENoaWxkLCAxKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICd8JykiLCAiRmlyc3Qg
cGFyYWdyYXBofFMiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2Vs
ZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmFkMDhkOTM5YzdiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MzMgQEAKK1Rlc3QgdGhhdCBzZWxlY3Rpb24gd29ya3MgY29ycmVjdGx5IHdpdGggOjpmaXJzdC1s
ZXR0ZXIgcHNldWRvLWVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZWxsbyIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIjEyIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiXCJRdW90ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIkEiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJOZXN0ZWQiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJl
cGxhY2UoL1xuL2csICd8JykgaXMgIkZpcnN0fFNlY29uZCIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIkVkaXRhYmxlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAiMSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIjIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZWwi
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJcIlEiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hbmNob3JPZmZzZXQgaXMgMQorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
aXNDb2xsYXBzZWQgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yT2Zm
c2V0IGlzIDAKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkEiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hlbGxvCisx
MgorIlF1b3RlCitBCitOZXN0ZWQKK0ZpcnN0CitTZWNvbmQKK0VkaXRhYmxlCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24t
cGFpbnRpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQwMzkwNTM4ZDM3ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24t
cGFpbnRpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI1IEBACis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitzcGFuLmZpcnN0
LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsKKyAgICBmb250LXNpemU6IDJlbTsKK30KKzwvc3R5
bGU+Cis8ZGl2IGlkPSJ0YXJnZXQiPjxzcGFuIGNsYXNzPSJmaXJzdC1sZXR0ZXIiPkg8L3NwYW4+
ZWxsbyBXb3JsZDwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy50ZXN0UnVubmVyPy53YWl0VW50aWxE
b25lKCk7Cit3aW5kb3cudGVzdFJ1bm5lcj8uZG9udEZvcmNlUmVwYWludCgpOworCithc3luYyBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgp
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2Vs
ZWN0Tm9kZUNvbnRlbnRzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAgd2lu
ZG93LnRlc3RSdW5uZXI/Lm5vdGlmeURvbmUoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBydW5UZXN0KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWlu
dGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjZiOGJk
ZjQ2Y2I5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Zmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KK2Rpdjo6Zmlyc3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworICAgIGZvbnQtc2l6ZTog
MmVtOworfQorPC9zdHlsZT4KKzxkaXYgaWQ9InRhcmdldCI+SGVsbG8gV29ybGQ8L2Rpdj4KKzxz
Y3JpcHQ+Cit3aW5kb3cudGVzdFJ1bm5lcj8ud2FpdFVudGlsRG9uZSgpOword2luZG93LnRlc3RS
dW5uZXI/LmRvbnRGb3JjZVJlcGFpbnQoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIGF3YWl0
IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyPy5ub3Rp
ZnlEb25lKCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcnVuVGVzdCk7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmVlZGM3MmIzZmM1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsx
LDEwMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitkaXY6OmZp
cnN0LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9InRlc3QxIj5IZWxsbzwvZGl2PgorPGRpdiBpZD0idGVzdDIiPjEyPC9kaXY+
Cis8ZGl2IGlkPSJ0ZXN0MyI+IlF1b3RlPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NCI+QTwvZGl2Pgor
PGRpdiBpZD0idGVzdDUiPjxzcGFuPk5lc3RlZDwvc3Bhbj48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q2
Ij5GaXJzdDxicj5TZWNvbmQ8L2Rpdj4KKzxkaXYgaWQ9InRlc3Q3IiBjb250ZW50ZWRpdGFibGU+
RWRpdGFibGU8L2Rpdj4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+CisKKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNlbGVjdGlvbiB3b3JrcyBjb3JyZWN0bHkgd2l0aCA6OmZp
cnN0LWxldHRlciBwc2V1ZG8tZWxlbWVudC4iKTsKKworZnVuY3Rpb24gc2VsZWN0QWxsKGVsZW1l
bnQpIHsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50KTsKKyAgICB2YXIgc2VsID0gd2luZG93LmdldFNl
bGVjdGlvbigpOworICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzZWwuYWRkUmFuZ2Uo
cmFuZ2UpOworfQorCitmdW5jdGlvbiBzZWxlY3RSYW5nZShub2RlLCBzdGFydCwgZW5kKSB7Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dChub2RlLCBzdGFydCk7CisgICAgcmFuZ2Uuc2V0RW5kKG5vZGUsIGVuZCk7CisgICAgdmFyIHNl
bCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7Cisg
ICAgc2VsLmFkZFJhbmdlKHJhbmdlKTsKK30KKworLy8gVGVzdCAxOiBTZWxlY3QgYWxsIHRleHQg
aW4gZWxlbWVudCB3aXRoIGZpcnN0LWxldHRlcgorc2VsZWN0QWxsKHRlc3QxKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVsbG8i
KTsKKworLy8gVGVzdCAyOiBTaG9ydCB0ZXh0IC0gc2VsZWN0IGFsbAorc2VsZWN0QWxsKHRlc3Qy
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiMTIiKTsKKworLy8gVGVzdCAzOiBGaXJzdC1sZXR0ZXIgd2l0aCBwdW5jdHVhdGlvbiAo
Zmlyc3QtbGV0dGVyIGluY2x1ZGVzIHF1b3RlICsgbGV0dGVyKQorc2VsZWN0QWxsKHRlc3QzKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiXCJRdW90ZSIpOworCisvLyBUZXN0IDQ6IFNpbmdsZSBjaGFyYWN0ZXIgdGV4dCAoZW50aXJl
IHRleHQgaXMgZmlyc3QtbGV0dGVyKQorc2VsZWN0QWxsKHRlc3Q0KTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiQSIpOworCisvLyBU
ZXN0IDU6IEZpcnN0LWxldHRlciB3aXRoIG5lc3RlZCBpbmxpbmUKK3NlbGVjdEFsbCh0ZXN0NSk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIk5lc3RlZCIpOworCisvLyBUZXN0IDY6IE11bHRpLWxpbmUgLSBzZWxlY3QgYWxsIHNob3Vs
ZCBnZXQgYm90aCBsaW5lcworc2VsZWN0QWxsKHRlc3Q2KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICd8Jyki
LCAiRmlyc3R8U2Vjb25kIik7CisKKy8vIFRlc3QgNzogQ29udGVudGVkaXRhYmxlIHdpdGggZmly
c3QtbGV0dGVyCitzZWxlY3RBbGwodGVzdDcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJFZGl0YWJsZSIpOworCisvLyBUZXN0IDg6
IFNlbGVjdCBvbmx5IHRoZSBmaXJzdC1sZXR0ZXIgcG9ydGlvbgorc2VsZWN0UmFuZ2UodGVzdDIu
Zmlyc3RDaGlsZCwgMCwgMSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIiwgIjEiKTsKKworLy8gVGVzdCA5OiBTZWxlY3Qgb25seSB0aGUg
cmVtYWluaW5nIHBvcnRpb24gKGFmdGVyIGZpcnN0LWxldHRlcikKK3NlbGVjdFJhbmdlKHRlc3Qy
LmZpcnN0Q2hpbGQsIDEsIDIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSIsICIyIik7CisKKy8vIFRlc3QgMTA6IFNlbGVjdCByYW5nZSBz
cGFubmluZyBmaXJzdC1sZXR0ZXIgYm91bmRhcnkKK3NlbGVjdFJhbmdlKHRlc3QxLmZpcnN0Q2hp
bGQsIDAsIDMpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSIsICJIZWwiKTsKKworLy8gVGVzdCAxMTogU2VsZWN0IGZyb20gbWlkZGxlIG9m
IGZpcnN0LWxldHRlciB0ZXh0IHRvIGVuZAorc2VsZWN0UmFuZ2UodGVzdDMuZmlyc3RDaGlsZCwg
MCwgMik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIiwgIlwiUSIpOworCisvLyBUZXN0IDEyOiBDYXJldCBhdCBmaXJzdC1sZXR0ZXIgYm91
bmRhcnkgKG9mZnNldCA9IGZpcnN0LWxldHRlciBsZW5ndGgpCitzZWxlY3RSYW5nZSh0ZXN0MS5m
aXJzdENoaWxkLCAxLCAxKTsKK3Nob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xs
YXBzZWQiLCAidHJ1ZSIpOworc2hvdWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5hbmNob3JP
ZmZzZXQiLCAiMSIpOworCisvLyBUZXN0IDEzOiBDYXJldCBhdCBzdGFydCBvZiB0ZXh0IChvZmZz
ZXQgMCwgaW5zaWRlIGZpcnN0LWxldHRlcikKK3NlbGVjdFJhbmdlKHRlc3QxLmZpcnN0Q2hpbGQs
IDAsIDApOworc2hvdWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCIsICJ0
cnVlIik7CitzaG91bGRCZSgid2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hvck9mZnNldCIsICIw
Iik7CisKKy8vIFRlc3QgMTQ6IFNlbGVjdCBhbGwgb24gc2luZ2xlLWNoYXJhY3RlciBmaXJzdC1s
ZXR0ZXIgKGVudGlyZSB0ZXh0IGlzIGZpcnN0LWxldHRlcikKK3NlbGVjdFJhbmdlKHRlc3Q0LmZp
cnN0Q2hpbGQsIDAsIDEpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJBIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="500400"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>478917</attachid>
            <date>2026-04-03 13:43:26 -0700</date>
            <delta_ts>2026-04-03 20:51:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-311437-20260403134325.patch</filename>
            <type>text/plain</type>
            <size>54140</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBlODE4YzU0MzNhODRhZDc3MWNhNWIzYTlkODI4NzRhNDRkYjY0MjUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBBcHIgMjAyNiAwNTo1NzozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIG55dGltZXMu
Y29tOiB3cm9uZyBzZWxlY3Rpb24gcGFpbnRpbmcgYmVjYXVzZSBvZiBmaXJzdC1sZXR0ZXIKIHN0
eWxlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE0MzcgPHJkYXI6
Ly8xMDYwNjA0MjE+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkdpdmVuCgogIDxzdHls
ZT4KICAgIGRpdjo6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IHJlZDsgfQogIDwvc3R5bGU+CiAgPGRp
dj5IZWxsbzwvZGl2PgoKdGhlIERPTSAoaW5zaWRlIHRoZSBibG9jayBjb250YWluZXIpIGhhcyBh
IHNpbmdsZSB0ZXh0IG5vZGUgIkhlbGxvIgpidXQgV2ViS2l0IHNwbGl0cyB0aGlzIGludG8gdHdv
IHJlbmRlcmVycyB0byBiZSBhYmxlIHRvIHN0eWxlIHRoZSBmaXJzdCBsZXR0ZXIuCgogIFJlbmRl
ckJsb2NrIChkaXYpCiAgICBSZW5kZXJJbmxpbmUgKDo6Zmlyc3QtbGV0dGVyLCBhbm9ueW1vdXMp
CiAgICAgIFJlbmRlclRleHQgIkgiICAgICAgICAgICAgPC0gb2Zmc2V0cyAwLTEgKG5vIERPTSBu
b2RlKQogICAgUmVuZGVyVGV4dEZyYWdtZW50ICJlbGxvIiAgIDwtIG9mZnNldHMgMC00IChvd25z
IHRoZSBET00gdGV4dCBub2RlKQoKVGhlIGV4aXN0aW5nIGNvZGUgYXNzdW1lcyBlYWNoIERPTSBu
b2RlIG1hcHMgdG8gZXhhY3RseSBvbmUgcmVuZGVyZXIuCkV2ZXJ5IGNhbGwgdG8gbm9kZS0+cmVu
ZGVyZXIoKSBvciBQb3NpdGlvbjo6cmVuZGVyZXIoKSByZXR1cm5zIHRoZQpyZW1haW5pbmcgZnJh
Z21lbnQgLS0gdGhlIGZpcnN0LWxldHRlciByZW5kZXJlciBpcyBuZXZlciBjb25zdWx0ZWQuCgpU
aGlzIG1lYW5zIERPTSBvZmZzZXQgMCAoIkgiKSBnZXRzIGNoZWNrZWQgYWdhaW5zdCB0aGUgcmVt
YWluaW5nCmZyYWdtZW50J3MgdGV4dCBib3hlcywgd2hpY2ggc3RhcnQgYXQgImUiLiBTZWxlY3Rp
b24sIGNhcmV0IHBvc2l0aW9uaW5nLAphbmQgb2Zmc2V0IHZhbGlkYXRpb24gYWxsIGZhaWwgZm9y
IHRoZSBmaXJzdC1sZXR0ZXIgcmFuZ2UgYmVjYXVzZSB0aGUKd3JvbmcgcmVuZGVyZXIgaXMgYXNr
ZWQgYWJvdXQgb2Zmc2V0cyBpdCBkb2Vzbid0IG93bi4KClRoZSBmaXggaXMgdG8gbmV2ZXIgY29u
c3VsdCBub2RlLT5yZW5kZXJlcigpIGRpcmVjdGx5IGZvciB0ZXh0IG9mZnNldApvcGVyYXRpb25z
IG9uIGZpcnN0LWxldHRlciBjb250ZW50LiBJbnN0ZWFkLCBhbGwgY2FsbCBzaXRlcyBnbyB0aHJv
dWdoClBvc2l0aW9uOjpyZW5kZXJlckFuZE9mZnNldCgpIHdoaWNoIHJlc29sdmVzIHRoZSAxLURP
TS1ub2RlLXRvLTItcmVuZGVyZXJzCnNwbGl0IGJ5IHBpY2tpbmcgdGhlIGNvcnJlY3QgcmVuZGVy
ZXIgYW5kIGNvbnZlcnRpbmcgdG8gaXRzIGxvY2FsIG9mZnNldC4KVGhpcyBpcyB0aGUgY2VudHJh
bCBpbnZhcmlhbnQgb2YgdGhlIGZpeCAtLSBldmVyeSBwbGFjZSB0aGF0IHByZXZpb3VzbHkKY2Fs
bGVkIG5vZGUtPnJlbmRlcmVyKCkgYW5kIHVzZWQgYSBET00gb2Zmc2V0IGFnYWluc3QgaXQgbm93
IHVzZXMgdGhpcwpoZWxwZXIgKG9yIG9uZSBvZiBpdHMgd3JhcHBlcnMpIHRvIGdldCB0aGUgcmln
aHQgcmVuZGVyZXIgKyBvZmZzZXQgcGFpci4KCktleSBoZWxwZXJzIGludHJvZHVjZWQ6Ci0gUG9z
aXRpb246OnJlbmRlcmVyQW5kT2Zmc2V0KCk6IHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZv
ciByZXNvbHZpbmcKICBhIERPTSBvZmZzZXQgdG8gdGhlIGNvcnJlY3QgcmVuZGVyZXIgKyBmcmFn
bWVudC1sb2NhbCBvZmZzZXQuIFJvdXRlcyB0bwogIHRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIg
Zm9yIG9mZnNldHMgYmVsb3cgZnJhZ21lbnRTdGFydCwgb3RoZXJ3aXNlCiAgcmV0dXJucyB0aGUg
cmVtYWluaW5nIGZyYWdtZW50IHdpdGggYWRqdXN0ZWQgb2Zmc2V0LgotIFBvc2l0aW9uOjpyZXNv
bHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOiBjb252ZW5pZW5jZSB3cmFwcGVyIHRoYXQgYWxz
bwogIGNhc3RzIHRvIFJlbmRlclRleHQuCi0gZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgp
OiBjb252ZXJ0cyBmcmFnbWVudC1sb2NhbCBvZmZzZXQgYmFjayB0bwogIERPTSBvZmZzZXQuIFVz
ZWQgd2hlbiBleGl0aW5nIHJlbmRlcmVyIHNwYWNlIChjYXJldE1heE9mZnNldCwKICBjcmVhdGVQ
b3NpdGlvbldpdGhBZmZpbml0eSwgZW5kUG9zaXRpb25Gb3JMaW5lLCBwb3NpdGlvbkF0UmlnaHRC
b3VuZGFyeS0KICBPZkJpRGlSdW4sIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQpLgotIGZpcnN0TGV0
dGVyQWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KCk6IGNvbnZlcnRzIERPTSBvZmZzZXQgdG8K
ICBmcmFnbWVudC1sb2NhbC4gVXNlZCBpbiBQb3NpdGlvbjo6dXBzdHJlYW0vZG93bnN0cmVhbSB3
aGVyZSB0aGVyZSBpcyBubwogIFBvc2l0aW9uIG9iamVjdCB0byBjYWxsIHJlbmRlcmVyQW5kT2Zm
c2V0KCkgb24uCi0gY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkoKTogcHJldmVudHMgdXBzdHJl
YW0vZG93bnN0cmVhbSBmcm9tCiAgY2Fub25pY2FsaXppbmcgcG9zaXRpb25zIGFjcm9zcyB0aGUg
Zmlyc3QtbGV0dGVyIHNwbGl0LiBXaXRob3V0IHRoaXMsCiAgVmlzaWJsZVBvc2l0aW9uKG9mZnNl
dCAwKSBhbmQgVmlzaWJsZVBvc2l0aW9uKG9mZnNldCAxKSB3b3VsZCBjb2xsYXBzZQogIHRvIHRo
ZSBzYW1lIGNhbm9uaWNhbCBwb3NpdGlvbiwgbWFraW5nIHRoZSBmaXJzdCBsZXR0ZXIgdW5zZWxl
Y3RhYmxlLgogIE11c3QgcnVuIGJlZm9yZSB0aGUgaXNTdHJlYW1lciB1cGRhdGUgdG8gc2VlIHRo
ZSBwcmUtdXBkYXRlIGxhc3RWaXNpYmxlLgoKUG9zaXRpb246OmlzQ2FuZGlkYXRlLCBpc1JlbmRl
cmVkQ2hhcmFjdGVyLCByZW5kZXJzSW5EaWZmZXJlbnRQb3NpdGlvbjoKICBUaGVzZSBjaGVjayB0
ZXh0IG9mZnNldCB2YWxpZGl0eSBhZ2FpbnN0IHJlbmRlcmVyIHRleHQgYm94ZXMuIFRoZXkgbm93
CiAgdXNlIHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCkgdG8gYXNrIHRoZSBjb3JyZWN0
IHJlbmRlcmVyCiAgKGZpcnN0LWxldHRlciBvciByZW1haW5pbmcgZnJhZ21lbnQpIGluc3RlYWQg
b2YgYWx3YXlzIGFza2luZyB0aGUKICByZW1haW5pbmcgZnJhZ21lbnQgd2l0aCBhIHJhdyBET00g
b2Zmc2V0LgoKUG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldDogcmVzb2x2ZXMgdG8gdGhlIGNv
cnJlY3QgaW5saW5lIGJveCBmb3IKICBjYXJldC9zZWxlY3Rpb24gcG9zaXRpb25pbmcuIE5vdyBk
ZWxlZ2F0ZXMgdG8gcmVuZGVyZXJBbmRPZmZzZXQoKQogIGluc3RlYWQgb2YgZHVwbGljYXRpbmcg
dGhlIGZpcnN0LWxldHRlciByb3V0aW5nIGxvZ2ljLgoKUmVuZGVyZWRQb3NpdGlvbjogc3RvcmVz
IHRoZSBvcmlnaW5hbCBET00gbm9kZSAobV9ub2RlKSBmcm9tIHRoZSBQb3NpdGlvbgogIGR1cmlu
ZyBjb25zdHJ1Y3Rpb24uIFdpdGhvdXQgdGhpcywgcG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlE
aVJ1bigpCiAgcHJvZHVjZXMgYSBudWxsLW5vZGUgUG9zaXRpb24gd2hlbiB0aGUgaW5saW5lIGJv
eCBiZWxvbmdzIHRvIHRoZQogIGFub255bW91cyBmaXJzdC1sZXR0ZXIgdGV4dCwgY2F1c2luZyBh
ZGp1c3RFbmRwb2ludHNBdEJpZGlCb3VuZGFyeSgpCiAgdG8gY29sbGFwc2UgdGhlIHNlbGVjdGlv
biB3aGVuIGRyYWdnaW5nIGxlZnQgcGFzdCB0aGUgZmlyc3QgbGV0dGVyLgoKVmlzaWJsZVBvc2l0
aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGU6IHdoZW4gYmlkaSB0cmF2ZXJzYWwK
ICBsYW5kcyBvbiB0aGUgYW5vbnltb3VzIGZpcnN0LWxldHRlciB0ZXh0IGJveCwgcmVzb2x2ZXMg
dGhlIERPTSBub2RlCiAgdmlhIHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCkg
YmVmb3JlIGNyZWF0aW5nIHRoZSBQb3NpdGlvbi4KClJlbmRlclRleHRGcmFnbWVudDo6Y2FuQmVT
ZWxlY3Rpb25MZWFmOiByZXR1cm5zIHRydWUgZm9yIHJlbWFpbmluZwogIGZyYWdtZW50cyB3aXRo
IGZpcnN0LWxldHRlciwgbWF0Y2hpbmcgYmFzZSBSZW5kZXJUZXh0IGJlaGF2aW9yIHNvCiAgY3Jv
c3MtZWxlbWVudCBzZWxlY3Rpb25zIChDbWQrQSkgaW5jbHVkZSB0aGUgcmVtYWluaW5nIHRleHQu
CgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24t
Y3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sOiBBZGRl
ZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmly
c3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5n
Lmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRl
ci1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cDoKKFdlYkNvcmU6OmNyb3NzZXNGaXJzdExldHRlckJvdW5kYXJ5KToKKFdlYkNvcmU6OmZpcnN0
TGV0dGVyQWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjp1
cHN0cmVhbSBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVhbSBjb25zdCk6CihX
ZWJDb3JlOjpQb3NpdGlvbjo6aXNDYW5kaWRhdGUgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246
OmlzUmVuZGVyZWRDaGFyYWN0ZXIgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJ
bkRpZmZlcmVudFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpyZW5kZXJlckFu
ZE9mZnNldCBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6cmVzb2x2ZWRUZXh0UmVuZGVyZXJB
bmRPZmZzZXQgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldCBj
b25zdCk6CiogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmg6CiogU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwOgooV2ViQ29yZTo6UG9zaXRpb25JdGVyYXRvcjo6aXND
YW5kaWRhdGUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHA6CihX
ZWJDb3JlOjpjYXJldE1heE9mZnNldCk6CihXZWJDb3JlOjpmaXJzdExldHRlckFkanVzdGVkRE9N
T2Zmc2V0KToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojp1cGRhdGVBcHBlYXJhbmNlKToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9z
aXRpb24uY3BwOgooV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6
CihXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURp
UnVuIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRSaWdodEJv
dW5kYXJ5T2ZCaURpUnVuIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CihX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6aGFuZGxlVGV4dFJ1bik6CihXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToK
KFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KToKKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZUZpcnN0
TGV0dGVyKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5o
OgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKFdlYkNvcmU6
OnJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKToKKFdlYkNvcmU6OlZpc2libGVQ
b3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29uc3QpOgooV2ViQ29yZTo6
VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKFdlYkNvcmU6OmVuZFBv
c2l0aW9uRm9yTGluZSk6CihXZWJDb3JlOjpmaW5kRW5kT2ZQYXJhZ3JhcGgpOgoqIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpjcmVhdGVQb3NpdGlvbldpdGhBZmZpbml0eSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJUZXh0RnJhZ21l
bnQ6OmNhbkJlU2VsZWN0aW9uTGVhZiBjb25zdCk6Ci0tLQogU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmNwcCAgICAgICAgICAgICAgIHwgMTA2ICsrKysrKysrKysrKy0tLQogU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmggICAgICAgICAgICAgICAgIHwgICA4ICsrCiBTb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAgICAgICAgfCAgIDggKy0KIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgICAgICAgICAgICB8ICAxMCArLQogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmggICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwICAgICB8ICAxMCArLQogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCAgIHwgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaCAgICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwICAgICAgIHwgMTI3ICsrKysrKysrKy0tLS0tLS0tLQogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCAgICAgICAgIHwgICAzIC0KIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCAgICB8ICAyMCArKy0KIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCAgICAgICB8ICAgNSArLQogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgICAgIHwgICA1ICstCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCAgfCAgMTEgKy0KIC4uLmV0dGVy
LXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4cGVjdGVkLnR4dCB8ICAxMyArKwogLi4uL2ZpcnN0
LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sIHwgIDQzICsrKysrKwogLi4uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0ICAgICAgIHwgIDMzICsrKysrCiAuLi5z
dC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLWV4cGVjdGVkLmh0bWwgfCAgMjUgKysrKwogLi4u
L2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmcuaHRtbCAgICAgIHwgIDI1ICsrKysKIC4u
Li9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sICAgICB8IDEwMSArKysrKysr
KysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwgNDU5IGluc2VydGlvbnMoKyksIDEwNiBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9m
aXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0CiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNl
bGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4cGVjdGVkLnR4dAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxl
dHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFp
bnRpbmcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmlu
ZGV4IDJmYjRhMTQ0YTA1Zi4uM2MyZGJmZjZiMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
QEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1
ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVy
cy5oIgogI2luY2x1ZGUgIlNWR1RleHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpAQCAt
NjQyLDYgKzY0MywzMCBAQCBzdGF0aWMgTm9kZSogZW5jbG9zaW5nVmlzdWFsQm91bmRhcnkoU1VQ
UFJFU1NfVU5DSEVDS0VEX0xPQ0FMIE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAK
Ky8vIFRoZSBmaXJzdC1sZXR0ZXIgYW5kIHJlbWFpbmluZyB0ZXh0IGFyZSBzZXBhcmF0ZSByZW5k
ZXJlcnMgYnV0IHNoYXJlIG9uZSBET00KKy8vIHRleHQgbm9kZS4gdXBzdHJlYW0vZG93bnN0cmVh
bSBtdXN0IG5vdCBjcm9zcyB0aGlzIGJvdW5kYXJ5LCBqdXN0IGxpa2UgdGhleQorLy8gbXVzdCBu
b3QgY3Jvc3MgdmlzdWFsbHkgZGlzdGluY3Qgbm9kZSBib3VuZGFyaWVzLgorc3RhdGljIGJvb2wg
Y3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwg
Y29uc3QgUG9zaXRpb25JdGVyYXRvciYgY3VycmVudCwgY29uc3QgUG9zaXRpb25JdGVyYXRvciYg
cHJldmlvdXNMYXN0VmlzaWJsZSkKK3sKKyAgICBhdXRvKiB0ZXh0RnJhZ21lbnQgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7CisgICAgaWYgKCF0ZXh0RnJh
Z21lbnQgfHwgIXRleHRGcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGF1dG8gZnJhZ21lbnRTdGFydCA9IHN0YXRpY19jYXN0PGludD4odGV4dEZyYWdt
ZW50LT5zdGFydCgpKTsKKyAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBjdXJyZW50Lm9mZnNldElu
TGVhZk5vZGUoKTsKKyAgICBhdXRvIGxhc3RPZmZzZXQgPSBwcmV2aW91c0xhc3RWaXNpYmxlLm9m
ZnNldEluTGVhZk5vZGUoKTsKKyAgICAvLyBPbmUgb2Zmc2V0IGlzIGluIHRoZSBmaXJzdC1sZXR0
ZXIgcmFuZ2UgYW5kIHRoZSBvdGhlciBpcyBub3QuCisgICAgLy8gT2Zmc2V0cyBhdCBmcmFnbWVu
dFN0YXJ0IGJlbG9uZyB0byB0aGUgcmVtYWluaW5nIGZyYWdtZW50LCBub3QgdGhlIGZpcnN0LWxl
dHRlci4KKyAgICByZXR1cm4gKGN1cnJlbnRPZmZzZXQgPCBmcmFnbWVudFN0YXJ0KSAhPSAobGFz
dE9mZnNldCA8IGZyYWdtZW50U3RhcnQpOworfQorCisvLyBDb252ZXJ0IGEgRE9NIG9mZnNldCB0
byBmcmFnbWVudC1sb2NhbCBmb3IgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIHdpdGggZmlyc3Qt
bGV0dGVyLgorc3RhdGljIHVuc2lnbmVkIGZpcnN0TGV0dGVyQWRqdXN0ZWRGcmFnbWVudExvY2Fs
T2Zmc2V0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2lnbmVkIG9mZnNldCkKK3sK
KyAgICBpZiAoYXV0byogdGV4dEZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRG
cmFnbWVudD4ocmVuZGVyZXIpOyB0ZXh0RnJhZ21lbnQgJiYgdGV4dEZyYWdtZW50LT5maXJzdExl
dHRlcigpICYmIG9mZnNldCA+PSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpCisgICAgICAgIHJldHVy
biBvZmZzZXQgLSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30K
KwogLy8gdXBzdHJlYW0oKSBhbmQgZG93bnN0cmVhbSgpIHdhbnQgdG8gcmV0dXJuIHBvc2l0aW9u
cyB0aGF0IGFyZSBlaXRoZXIgaW4gYQogLy8gdGV4dCBub2RlIG9yIGF0IGp1c3QgYmVmb3JlIGEg
bm9uLXRleHQgbm9kZS4gIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgdGhhdC4KIHN0YXRpYyBib29s
IGlzU3RyZWFtZXIoY29uc3QgUG9zaXRpb25JdGVyYXRvciYgcG9zKQpAQCAtNzEyLDYgKzczNywx
MCBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdS
dWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgLy8gRG9uJ3QgbW92ZSBwYXN0IHRoZSBmaXJzdC1sZXR0ZXIgYm91bmRhcnkgd2l0
aGluIGEgdGV4dCBub2RlLgorICAgICAgICBpZiAoY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnko
KnJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24sIGxhc3RWaXNpYmxlKSkKKyAgICAgICAgICAgIHJl
dHVybiBsYXN0VmlzaWJsZTsKKwogICAgICAgICAvLyB0cmFjayBsYXN0IHZpc2libGUgc3RyZWFt
ZXIgcG9zaXRpb24KICAgICAgICAgaWYgKGlzU3RyZWFtZXIoY3VycmVudFBvc2l0aW9uKSkKICAg
ICAgICAgICAgIGxhc3RWaXNpYmxlID0gY3VycmVudFBvc2l0aW9uOwpAQCAtNzQwLDEwICs3Njks
MTAgQEAgUG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5n
UnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgICAgIC8vIHJlbmRlciB0cmVlIHdoaWNoIGNh
biBoYXZlIGEgZGlmZmVyZW50IGxlbmd0aCBkdWUgdG8gY2FzZSB0cmFuc2Zvcm1hdGlvbi4KICAg
ICAgICAgICAgICAgICAvLyBVbnRpbCB3ZSByZXNvbHZlIHRoYXQsIGRpc2FibGUgdGhpcyBzbyB3
ZSBjYW4gcnVuIHRoZSBsYXlvdXQgdGVzdHMhCiAgICAgICAgICAgICAgICAgLy9BU1NFUlQoY3Vy
cmVudE9mZnNldCA+PSByZW5kZXJlci0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY3VycmVudE5vZGUucHRyKCks
IHJlbmRlcmVyLT5jYXJldE1heE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgY2FyZXRNYXhPZmZz
ZXQoY3VycmVudE5vZGUpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5zaWduZWQg
dGV4dE9mZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCk7CisgICAgICAg
ICAgICBhdXRvIHRleHRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRnJhZ21lbnRMb2NhbE9m
ZnNldCgqdGV4dFJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpKTsK
ICAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDspIHsKICAgICAg
ICAgICAgICAgICBpZiAodGV4dE9mZnNldCA+IGJveC0+c3RhcnQoKSAmJiB0ZXh0T2Zmc2V0IDw9
IGJveC0+ZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247
CkBAIC04MjcsNiArODU2LDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpkb3duc3RyZWFtKEVkaXRp
bmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAorICAgICAgICAvLyBEb24ndCBtb3ZlIHBhc3QgdGhlIGZpcnN0LWxldHRlciBi
b3VuZGFyeSB3aXRoaW4gYSB0ZXh0IG5vZGUuCisgICAgICAgIGlmIChjcm9zc2VzRmlyc3RMZXR0
ZXJCb3VuZGFyeSgqcmVuZGVyZXIsIGN1cnJlbnRQb3NpdGlvbiwgbGFzdFZpc2libGUpKQorICAg
ICAgICAgICAgcmV0dXJuIGxhc3RWaXNpYmxlOworCiAgICAgICAgIC8vIHRyYWNrIGxhc3Qgdmlz
aWJsZSBzdHJlYW1lciBwb3NpdGlvbgogICAgICAgICBpZiAoaXNTdHJlYW1lcihjdXJyZW50UG9z
aXRpb24pKQogICAgICAgICAgICAgbGFzdFZpc2libGUgPSBjdXJyZW50UG9zaXRpb247CkBAIC04
NDksNyArODgyLDcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5k
YXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VD
b250YWluZXJPZmZzZXRQb3NpdGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgdGV4dFJlbmRlcmVyLT5j
YXJldE1pbk9mZnNldCgpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5zaWduZWQg
dGV4dE9mZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCk7CisgICAgICAg
ICAgICBhdXRvIHRleHRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRnJhZ21lbnRMb2NhbE9m
ZnNldCgqdGV4dFJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpKTsK
ICAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDspIHsKICAgICAg
ICAgICAgICAgICBpZiAoIWJveC0+bGVuZ3RoKCkgJiYgdGV4dE9mZnNldCA9PSBib3gtPnN0YXJ0
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CkBAIC05ODUs
OCArMTAxOCwxMCBAQCBib29sIFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAg
IHJldHVybiAhbV9vZmZzZXQgJiYgbV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFuY2hv
ciAmJiAhbm9kZUlzVXNlclNlbGVjdE5vbmUobm9kZS0+cGFyZW50Tm9kZSgpKTsKICAgICB9CiAK
LSAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRl
eHQ+KCpyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiAhbm9kZUlzVXNlclNlbGVjdE5vbmUobm9k
ZS5nZXQoKSkgJiYgcmVuZGVyVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChtX29mZnNldCk7Cisg
ICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0
PigqcmVuZGVyZXIpKSB7CisgICAgICAgIGF1dG8gW3Jlc29sdmVkVGV4dCwgcmVzb2x2ZWRPZmZz
ZXRdID0gcmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuICFu
b2RlSXNVc2VyU2VsZWN0Tm9uZShub2RlLmdldCgpKSAmJiByZXNvbHZlZFRleHQgJiYgcmVzb2x2
ZWRUZXh0LT5jb250YWluc0NhcmV0T2Zmc2V0KHJlc29sdmVkT2Zmc2V0KTsKKyAgICB9CiAKICAg
ICBpZiAocG9zaXRpb25CZWZvcmVPckFmdGVyTm9kZUlzQ2FuZGlkYXRlKCpub2RlKSkgewogICAg
ICAgICByZXR1cm4gKChhdEZpcnN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpICYmIG1fYW5jaG9y
VHlwZSA9PSBQb3NpdGlvbklzQmVmb3JlQW5jaG9yKQpAQCAtMTAxMyw5ICsxMDQ4LDEwIEBAIGJv
b2wgUG9zaXRpb246OmlzQ2FuZGlkYXRlKCkgY29uc3QKIAogYm9vbCBQb3NpdGlvbjo6aXNSZW5k
ZXJlZENoYXJhY3RlcigpIGNvbnN0CiB7Ci0gICAgUmVmUHRyIHRleHQgPSBkeW5hbWljRG93bmNh
c3Q8VGV4dD4oZGVwcmVjYXRlZE5vZGUoKSk7Ci0gICAgQ2hlY2tlZFB0ciByZW5kZXJlciA9IHRl
eHQgPyB0ZXh0LT5yZW5kZXJlcigpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gcmVuZGVyZXIgJiYg
cmVuZGVyZXItPmNvbnRhaW5zUmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXQobV9vZmZzZXQpOworICAg
IGlmICghZHluYW1pY0Rvd25jYXN0PFRleHQ+KGRlcHJlY2F0ZWROb2RlKCkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgYXV0byBbcmVuZGVyVGV4dCwgb2Zmc2V0XSA9IHJlc29sdmVkVGV4
dFJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgcmV0dXJuIHJlbmRlclRleHQgJiYgcmVuZGVyVGV4
dC0+Y29udGFpbnNSZW5kZXJlZENoYXJhY3Rlck9mZnNldChvZmZzZXQpOwogfQogCiBzdGF0aWMg
Ym9vbCBpblNhbWVFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KE5vZGUqIGEsIE5vZGUqIGIpCkBA
IC0xMDYxLDE2ICsxMDk3LDE2IEBAIGJvb2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBv
c2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICBpZiAoIWluU2FtZUVu
Y2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQobm9kZS5nZXQoKSwgcG9zaXRpb25Ob2RlLmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBDaGVja2VkUHRyIHRleHRSZW5kZXJlciA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpOwotICAgIGlmICh0ZXh0UmVuZGVy
ZXIgJiYgIXRleHRSZW5kZXJlci0+Y29udGFpbnNDYXJldE9mZnNldChtX29mZnNldCkpCisgICAg
YXV0byBbdGV4dFJlbmRlcmVyLCB0aGlzT2Zmc2V0XSA9IHJlc29sdmVkVGV4dFJlbmRlcmVyQW5k
T2Zmc2V0KCk7CisgICAgaWYgKHRleHRSZW5kZXJlciAmJiAhdGV4dFJlbmRlcmVyLT5jb250YWlu
c0NhcmV0T2Zmc2V0KHRoaXNPZmZzZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBD
aGVja2VkUHRyIHRleHRQb3NpdGlvblJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRl
eHQ+KCpwb3NpdGlvblJlbmRlcmVyKTsKLSAgICBpZiAodGV4dFBvc2l0aW9uUmVuZGVyZXIgJiYg
IXRleHRQb3NpdGlvblJlbmRlcmVyLT5jb250YWluc0NhcmV0T2Zmc2V0KHBvc2l0aW9uLm1fb2Zm
c2V0KSkKKyAgICBhdXRvIFt0ZXh0UG9zaXRpb25SZW5kZXJlciwgcG9zaXRpb25PZmZzZXRdID0g
cG9zaXRpb24ucmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICBpZiAodGV4dFBv
c2l0aW9uUmVuZGVyZXIgJiYgIXRleHRQb3NpdGlvblJlbmRlcmVyLT5jb250YWluc0NhcmV0T2Zm
c2V0KHBvc2l0aW9uT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWdu
ZWQgdGhpc1JlbmRlcmVkT2Zmc2V0ID0gdGV4dFJlbmRlcmVyID8gdGV4dFJlbmRlcmVyLT5jb3Vu
dFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKG1fb2Zmc2V0KSA6IG1fb2Zmc2V0OwotICAg
IHVuc2lnbmVkIHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPSB0ZXh0UG9zaXRpb25SZW5kZXJlciA/
IHRleHRQb3NpdGlvblJlbmRlcmVyLT5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGls
KHBvc2l0aW9uLm1fb2Zmc2V0KSA6IHBvc2l0aW9uLm1fb2Zmc2V0OworICAgIHVuc2lnbmVkIHRo
aXNSZW5kZXJlZE9mZnNldCA9IHRleHRSZW5kZXJlciA/IHRleHRSZW5kZXJlci0+Y291bnRSZW5k
ZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbCh0aGlzT2Zmc2V0KSA6IG1fb2Zmc2V0OworICAgIHVu
c2lnbmVkIHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPSB0ZXh0UG9zaXRpb25SZW5kZXJlciA/IHRl
eHRQb3NpdGlvblJlbmRlcmVyLT5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHBv
c2l0aW9uT2Zmc2V0KSA6IHBvc2l0aW9uLm1fb2Zmc2V0OwogCiAgICAgaWYgKHJlbmRlcmVyID09
IHBvc2l0aW9uUmVuZGVyZXIgJiYgdGhpc1JlbmRlcmVkT2Zmc2V0ID09IHBvc2l0aW9uUmVuZGVy
ZWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExOTUsMTYgKzEyMzEsNTAgQEAg
c3RhdGljIFBvc2l0aW9uIHVwc3RyZWFtSWdub3JpbmdFZGl0aW5nQm91bmRhcmllcyhQb3NpdGlv
biBwb3NpdGlvbikKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKK3N0ZDo6cGFpcjxSZW5kZXJP
YmplY3QqLCB1bnNpZ25lZD4gUG9zaXRpb246OnJlbmRlcmVyQW5kT2Zmc2V0KCkgY29uc3QKK3sK
KyAgICBhdXRvKiBub2RlID0gZGVwcmVjYXRlZE5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybiB7IHsgfSwgeyB9IH07CisgICAgYXV0byogcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7IHsgfSwgeyB9IH07
CisgICAgdW5zaWduZWQgb2Zmc2V0ID0gZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICBD
aGVja2VkUHRyIHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21l
bnQ+KCpyZW5kZXJlcik7CisgICAgaWYgKCF0ZXh0RnJhZ21lbnQgfHwgIXRleHRGcmFnbWVudC0+
Zmlyc3RMZXR0ZXIoKSkKKyAgICAgICAgcmV0dXJuIHsgcmVuZGVyZXIsIG9mZnNldCB9OworCisg
ICAgaWYgKG9mZnNldCA+PSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpCisgICAgICAgIHJldHVybiB7
IHJlbmRlcmVyLCBvZmZzZXQgLSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkgfTsKKworICAgIC8vIEl0
IGxvb2tzIGxpa2Ugd2UgYXJlIG9uIHRoZSBmaXJzdCBsZXR0ZXIgcmVuZGVyZXIuCisgICAgQ2hl
Y2tlZFB0ciBmaXJzdExldHRlclJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+
KHRleHRGcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKS0+Zmlyc3RDaGlsZCgpKTsKKyAgICBpZiAoIWZp
cnN0TGV0dGVyUmVuZGVyZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiB7IHsgfSwgeyB9IH07CisgICAgfQorCisgICAgLy8gVGhlIGZpcnN0LWxldHRl
ciB0ZXh0IG1heSBub3Qgc3RhcnQgYXQgRE9NIG9mZnNldCAwIChlLmcuIGNvbGxhcHNlZCB3aGl0
ZXNwYWNlIHByZWNlZGVzIHRoZSBmaXJzdCBsZXR0ZXIpLgorICAgIGF1dG8gZmlyc3RMZXR0ZXJT
dGFydCA9IHRleHRGcmFnbWVudC0+c3RhcnQoKSAtIGZpcnN0TGV0dGVyUmVuZGVyZXItPnRleHQo
KS5sZW5ndGgoKTsKKyAgICByZXR1cm4gb2Zmc2V0ID49IGZpcnN0TGV0dGVyU3RhcnQgPyBzdGQ6
Om1ha2VfcGFpcihmaXJzdExldHRlclJlbmRlcmVyLCBvZmZzZXQgLSBmaXJzdExldHRlclN0YXJ0
KSA6IHN0ZDo6bWFrZV9wYWlyKG51bGxwdHIsIDApOworfQorCitzdGQ6OnBhaXI8UmVuZGVyVGV4
dCosIHVuc2lnbmVkPiBQb3NpdGlvbjo6cmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKSBj
b25zdAoreworICAgIGF1dG8gW3JlbmRlcmVyLCBvZmZzZXRdID0gcmVuZGVyZXJBbmRPZmZzZXQo
KTsKKyAgICBpZiAoYXV0byogcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0
PihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiB7IHJlbmRlclRleHQsIG9mZnNldCB9OworICAg
IHJldHVybiB7IG51bGxwdHIsIDAgfTsKK30KKwogSW5saW5lQm94QW5kT2Zmc2V0IFBvc2l0aW9u
OjppbmxpbmVCb3hBbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJlY3Rpb24gcHJp
bWFyeURpcmVjdGlvbikgY29uc3QKIHsKICAgICBhdXRvIGNhcmV0T2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCi0gICAgUmVmUHRyIG5v
ZGUgPSBkZXByZWNhdGVkTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIHsg
eyB9LCBjYXJldE9mZnNldCB9OwotICAgIENoZWNrZWRQdHIgcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJlcigpOworICAgIGF1dG8gW3JlbmRlcmVyLCByZXNvbHZlZE9mZnNldF0gPSByZW5kZXJlckFu
ZE9mZnNldCgpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiB7IHsgfSwgY2Fy
ZXRPZmZzZXQgfTsKKyAgICBjYXJldE9mZnNldCA9IHJlc29sdmVkT2Zmc2V0OwogCiAgICAgSW5s
aW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBib3g7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5k
ZXggNzI1Mzc5OTdmNjVmLi5mZjhhYTQwZTY5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0z
OCw2ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGVnYWN5SW5saW5lQm94
OwogY2xhc3MgUmVuZGVyRWxlbWVudDsKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRl
clRleHQ7CiBjbGFzcyBUZXh0OwogCiBzdHJ1Y3QgQm91bmRhcnlQb2ludDsKQEAgLTEwMyw2ICsx
MDUsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25BZnRlckFu
Y2hvcigpOwogICAgIH0KIAorICAgIC8vIFJldHVybnMgdGhlIHJlbmRlcmVyIGFuZCBmcmFnbWVu
dC1sb2NhbCBvZmZzZXQgZm9yIHRoaXMgcG9zaXRpb24sIGNvcnJlY3RseQorICAgIC8vIGhhbmRs
aW5nIGZpcnN0LWxldHRlciB0ZXh0IGZyYWdtZW50IHNwbGl0cyB3aGVyZSB0aGUgRE9NIHRleHQg
bm9kZSdzIHJlbmRlcmVyCisgICAgLy8gaXMgdGhlIHJlbWFpbmluZyBmcmFnbWVudCByYXRoZXIg
dGhhbiB0aGUgZmlyc3QtbGV0dGVyIGZyYWdtZW50LgorICAgIHN0ZDo6cGFpcjxSZW5kZXJPYmpl
Y3QqLCB1bnNpZ25lZD4gcmVuZGVyZXJBbmRPZmZzZXQoKSBjb25zdDsKKyAgICBzdGQ6OnBhaXI8
UmVuZGVyVGV4dCosIHVuc2lnbmVkPiByZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpIGNv
bnN0OworCiAgICAgUmVmUHRyPE5vZGU+IGZpcnN0Tm9kZSgpIGNvbnN0OwogCiAgICAgLy8gVGhl
c2UgYXJlIGNvbnZlbmllbmNlIG1ldGhvZHMgd2hpY2ggYXJlIHNtYXJ0IGFib3V0IHdoZXRoZXIg
dGhlIHBvc2l0aW9uIGlzIG5laWdoYm9yIGFuY2hvcmVkIG9yIHBhcmVudCBhbmNob3JlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCmluZGV4IDQwMmI1MWEwMDYyZi4uMzY3
NzZjMDExNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCkBAIC0x
NzUsOCArMTc1LDEyIEBAIGJvb2wgUG9zaXRpb25JdGVyYXRvcjo6aXNDYW5kaWRhdGUoKSBjb25z
dAogICAgIGlmIChyZW5kZXJlci0+aXNCUigpKQogICAgICAgICByZXR1cm4gUG9zaXRpb24oKnRo
aXMpLmlzQ2FuZGlkYXRlKCk7CiAKLSAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0ID0gZHlu
YW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiAhUG9z
aXRpb246Om5vZGVJc1VzZXJTZWxlY3ROb25lKGFuY2hvck5vZGUuZ2V0KCkpICYmIHJlbmRlclRl
eHQtPmNvbnRhaW5zQ2FyZXRPZmZzZXQobV9vZmZzZXRJbkFuY2hvcik7CisgICAgaWYgKENoZWNr
ZWRQdHIgcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIp
KSB7CisgICAgICAgIGlmIChQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5vbmUoYW5jaG9yTm9k
ZS5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8gW3Jlc29s
dmVkVGV4dCwgcmVzb2x2ZWRPZmZzZXRdID0gUG9zaXRpb24oKnRoaXMpLnJlc29sdmVkVGV4dFJl
bmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiByZXNvbHZlZFRleHQgJiYgcmVzb2x2
ZWRUZXh0LT5jb250YWluc0NhcmV0T2Zmc2V0KHJlc29sdmVkT2Zmc2V0KTsKKyAgICB9CiAKICAg
ICBpZiAocG9zaXRpb25CZWZvcmVPckFmdGVyTm9kZUlzQ2FuZGlkYXRlKCphbmNob3JOb2RlKSkK
ICAgICAgICAgcmV0dXJuIChhdFN0YXJ0T2ZOb2RlKCkgfHwgYXRFbmRPZk5vZGUoKSkgJiYgIVBv
c2l0aW9uOjpub2RlSXNVc2VyU2VsZWN0Tm9uZShhbmNob3JOb2RlLT5wYXJlbnROb2RlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggMDQ4NzAyOTA1OTIwLi40ZDIwMDk3MmFk
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlK0dldHRlcnNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFi
bGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCisjaW5j
bHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC05MDQsMTEg
KzkwNSwxOCBAQCBpbnQgY2FyZXRNYXhPZmZzZXQoY29uc3QgTm9kZSYgbm9kZSkKICAgICAvLyBG
b3IgcmVuZGVyZWQgdGV4dCBub2RlcywgcmV0dXJuIHRoZSBsYXN0IHBvc2l0aW9uIHRoYXQgYSBj
YXJldCBjb3VsZCBvY2N1cHkuCiAgICAgaWYgKGF1dG8qIHRleHQgPSBkeW5hbWljRG93bmNhc3Q8
VGV4dD4obm9kZSkpIHsKICAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyZXIgPSB0ZXh0LT5y
ZW5kZXJlcigpKQotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5jYXJldE1heE9mZnNldCgp
OworICAgICAgICAgICAgcmV0dXJuIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKnJlbmRl
cmVyLCByZW5kZXJlci0+Y2FyZXRNYXhPZmZzZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBsYXN0
T2Zmc2V0Rm9yRWRpdGluZyhub2RlKTsKIH0KIAordW5zaWduZWQgZmlyc3RMZXR0ZXJBZGp1c3Rl
ZERPTU9mZnNldChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1bnNpZ25lZCBvZmZzZXQp
Cit7CisgICAgaWYgKGF1dG8qIHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJU
ZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsgdGV4dEZyYWdtZW50ICYmIHRleHRGcmFnbWVudC0+Zmly
c3RMZXR0ZXIoKSkKKyAgICAgICAgcmV0dXJuIG9mZnNldCArIHRleHRGcmFnbWVudC0+c3RhcnQo
KTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCiBib29sIGxpbmVCcmVha0V4aXN0c0F0VmlzaWJs
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgcmV0dXJu
IGxpbmVCcmVha0V4aXN0c0F0UG9zaXRpb24ocG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kb3du
c3RyZWFtKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAppbmRleCA2MWU2MTAzNWM2NTAuLmIw
ODVmZDc0ODliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTc5LDYgKzc5LDcgQEAg
Tm9kZSogcHJldmlvdXNMZWFmTm9kZShjb25zdCBOb2RlKik7CiBXRUJDT1JFX0VYUE9SVCBpbnQg
bGFzdE9mZnNldEZvckVkaXRpbmcoY29uc3QgTm9kZSYpOwogaW50IGNhcmV0TWluT2Zmc2V0KGNv
bnN0IE5vZGUmKTsKIGludCBjYXJldE1heE9mZnNldChjb25zdCBOb2RlJik7Cit1bnNpZ25lZCBm
aXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KGNvbnN0IFJlbmRlck9iamVjdCYsIHVuc2lnbmVk
IG9mZnNldCk7CiAKIGJvb2wgaGFzRWRpdGFibGVTdHlsZShjb25zdCBOb2RlJiwgRWRpdGFibGVU
eXBlKTsKIGJvb2wgaXNFZGl0YWJsZU5vZGUoY29uc3QgTm9kZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBiOWI0YzU5MTVmNDAuLjQyNGIxYTk4Mzhj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTI0MzYs
MTIgKzI0MzYsMTAgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiAg
ICAgLy8gV2UgY2FuIGdldCBpbnRvIGEgc3RhdGUgd2hlcmUgdGhlIHNlbGVjdGlvbiBlbmRwb2lu
dHMgbWFwIHRvIHRoZSBzYW1lIFZpc2libGVQb3NpdGlvbiB3aGVuIGEgc2VsZWN0aW9uIGlzIGRl
bGV0ZWQKICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IHlldCBub3RpZnkgdGhlIEZyYW1lU2VsZWN0
aW9uIG9mIHRleHQgcmVtb3ZhbC4KICAgICBpZiAoQ2hlY2tlZFB0ciB2aWV3ID0gZG9jdW1lbnQt
PnJlbmRlclZpZXcoKTsgc3RhcnRQb3MuaXNOb3ROdWxsKCkgJiYgZW5kUG9zLmlzTm90TnVsbCgp
ICYmIHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSAhPSBzZWxlY3Rpb24udmlzaWJsZUVuZCgpKSB7
Ci0gICAgICAgIENoZWNrZWRQdHIgc3RhcnRSZW5kZXJlciA9IHN0YXJ0UG9zLmRlcHJlY2F0ZWRO
b2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0UG9zLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgICAgIENoZWNrZWRQdHIgZW5kUmVuZGVyZXIg
PSBlbmRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgaW50IGVuZE9m
ZnNldCA9IGVuZFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgICAgICBBU1NFUlQo
c3RhcnRPZmZzZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0gMCk7Ci0gICAgICAgIHZpZXctPnNlbGVj
dGlvbigpLnNldCh7IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RhcnRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kT2Zmc2V0KSB9KTsK
KyAgICAgICAgYXV0byBbc3RhcnRSZW5kZXJlciwgc3RhcnRPZmZzZXRdID0gc3RhcnRQb3MucmVu
ZGVyZXJBbmRPZmZzZXQoKTsKKyAgICAgICAgYXV0byBbZW5kUmVuZGVyZXIsIGVuZE9mZnNldF0g
PSBlbmRQb3MucmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICAgICAgaWYgKHN0YXJ0UmVuZGVyZXIg
JiYgZW5kUmVuZGVyZXIpCisgICAgICAgICAgICB2aWV3LT5zZWxlY3Rpb24oKS5zZXQoeyBzdGFy
dFJlbmRlcmVyLCBlbmRSZW5kZXJlciwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCB9KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCmluZGV4
IGNkNWM3OTBjOGRlNy4uMWFmM2Y0YzQ0NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVuZGVyZWRQb3NpdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJl
ZFBvc2l0aW9uLmgiCiAKICNpbmNsdWRlICJDYXJldFJlY3RDb21wdXRhdGlvbi5oIgorI2luY2x1
ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRl
ICJOb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIKQEAgLTg1
LDYgKzg2LDcgQEAgUmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbihjb25zdCBQb3Np
dGlvbiYgcG9zaXRpb24sIEFmZmluaXR5IGFmZmluaXR5KQogICAgIGlmIChwb3NpdGlvbi5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9ub2RlID0gcG9zaXRpb24uZGVwcmVjYXRl
ZE5vZGUoKTsKICAgICBhdXRvIGJveEFuZE9mZnNldCA9IHBvc2l0aW9uLmlubGluZUJveEFuZE9m
ZnNldChhZmZpbml0eSk7CiAgICAgbV9ib3ggPSBib3hBbmRPZmZzZXQuYm94OwogICAgIG1fb2Zm
c2V0ID0gYm94QW5kT2Zmc2V0Lm9mZnNldDsKQEAgLTIwNiw3ICsyMDgsNyBAQCBQb3NpdGlvbiBS
ZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QK
ICAgICBBU1NFUlQoYXRMZWZ0Qm91bmRhcnlPZkJpZGlSdW4oKSk7CiAKICAgICBpZiAoYXRMZWZ0
bW9zdE9mZnNldEluQm94KCkpCi0gICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBv
c2l0aW9uKHByb3RlY3QobV9yZW5kZXJlci0+bm9kZSgpKS5nZXQoKSwgbV9vZmZzZXQpOworICAg
ICAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG1fbm9kZS5n
ZXQoKSkuZ2V0KCksIG1fb2Zmc2V0KTsKIAogICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2Fj
eVBvc2l0aW9uKHByb3RlY3QobmV4dExlYWZPbkxpbmUoKS0+cmVuZGVyZXIoKS5ub2RlKCkpLmdl
dCgpLCBuZXh0TGVhZk9uTGluZSgpLT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpOwogfQpAQCAtMjE1
LDggKzIxNywxMCBAQCBQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0UmlnaHRC
b3VuZGFyeU9mQmlEaVJ1bigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGF0UmlnaHRCb3VuZGFyeU9m
QmlkaVJ1bigpKTsKIAotICAgIGlmIChhdFJpZ2h0bW9zdE9mZnNldEluQm94KCkpCi0gICAgICAg
IHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHByb3RlY3QobV9yZW5kZXJlci0+
bm9kZSgpKS5nZXQoKSwgbV9vZmZzZXQpOworICAgIGlmIChhdFJpZ2h0bW9zdE9mZnNldEluQm94
KCkpIHsKKyAgICAgICAgYXV0byBvZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0
KCptX3JlbmRlcmVyLCBtX29mZnNldCk7CisgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExl
Z2FjeVBvc2l0aW9uKHByb3RlY3QobV9ub2RlLmdldCgpKS5nZXQoKSwgb2Zmc2V0KTsKKyAgICB9
CiAKICAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KHByZXZp
b3VzTGVhZk9uTGluZSgpLT5yZW5kZXJlcigpLm5vZGUoKSkuZ2V0KCksIHByZXZpb3VzTGVhZk9u
TGluZSgpLT5yaWdodG1vc3RDYXJldE9mZnNldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW5kZXJlZFBvc2l0aW9uLmgKaW5kZXggNzRiZTRlNDdkY2I0Li5lN2U1ODBhODE1NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCkBAIC04OSw2ICs4OSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhdFJpZ2h0Qm91bmRhcnlPZkJpZGlSdW4oU2hvdWxkTWF0
Y2hCaWRpTGV2ZWwsIHVuc2lnbmVkIGNoYXIgYmlkaUxldmVsT2ZSdW4pIGNvbnN0OwogCiAgICAg
U2luZ2xlVGhyZWFkV2Vha1B0cjxjb25zdCBSZW5kZXJPYmplY3Q+IG1fcmVuZGVyZXI7CisgICAg
UmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9y
IG1fYm94OwogICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggZWZjYTE3YTBkYTE5Li45ZWIyM2JkOGY3NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTYwNyw2ICs2MDcsOCBA
QCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgIENoZWNrZWRSZWYgcmVu
ZGVyZXIgPSAqdGV4dE5vZGUtPnJlbmRlcmVyKCk7CiAgICAgbV9sYXN0VGV4dE5vZGUgPSB0ZXh0
Tm9kZS5wdHIoKTsKICAgICBhdXRvIHJlbmRlcmVyVGV4dCA9IHJlbmRlcmVyVGV4dEZvckJlaGF2
aW9yKHJlbmRlcmVyLmdldCgpKTsKKyAgICAvLyB0ZXh0RnJhZ21lbnQgaXMgdGhlIHJlbmRlcmVy
IHRoYXQgaG9sZHMgdGhlIHRyYWlsaW5nIGNvbnRlbnQgYW5kIGhhcyBhIHJlZmVyZW5jZSB0byB0
aGUgZmlyc3QgbGV0dGVyIHJlbmRlcmVyLgorICAgIENoZWNrZWRQdHIgdGV4dEZyYWdtZW50ID0g
ZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIuZ2V0KCkpOwogCiAg
ICAgLy8gaGFuZGxlIHByZS1mb3JtYXR0ZWQgdGV4dAogICAgIGlmICghcmVuZGVyZXItPnN0eWxl
KCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKQEAgLTYxNSw4ICs2MTcsOCBAQCBib29sIFRleHRJ
dGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICAgICAgZW1pdENoYXJhY3RlcignICcs
IFdURjo6bW92ZSh0ZXh0Tm9kZSksIG51bGxwdHIsIHJ1blN0YXJ0LCBydW5TdGFydCk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKENoZWNrZWRQdHIg
cmVuZGVyVGV4dEZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4o
cmVuZGVyZXIpOyByZW5kZXJUZXh0RnJhZ21lbnQgJiYgIW1faGFuZGxlZEZpcnN0TGV0dGVyICYm
ICFtX29mZnNldCkgewotICAgICAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcigqcmVu
ZGVyVGV4dEZyYWdtZW50KTsKKyAgICAgICAgaWYgKHRleHRGcmFnbWVudCAmJiAhbV9oYW5kbGVk
Rmlyc3RMZXR0ZXIgJiYgIW1fb2Zmc2V0KSB7CisgICAgICAgICAgICBoYW5kbGVUZXh0Tm9kZUZp
cnN0TGV0dGVyKCp0ZXh0RnJhZ21lbnQpOwogICAgICAgICAgICAgaWYgKG1fZmlyc3RMZXR0ZXJU
ZXh0KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGZpcnN0TGV0dGVyID0gbV9maXJzdExldHRl
clRleHQtPnRleHQoKTsKICAgICAgICAgICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgKnByb3Rl
Y3QobV9maXJzdExldHRlclRleHQpLCBtX29mZnNldCwgbV9vZmZzZXQgKyBmaXJzdExldHRlci5s
ZW5ndGgoKSk7CkBAIC02MjcsOSArNjI5LDE1IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0Tm9kZSgpCiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFtX2JlaGF2aW9ycy5jb250YWlucyhU
ZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGludCByZW5kZXJlclRleHRMZW5ndGggPSByZW5kZXJl
clRleHQubGVuZ3RoKCk7Ci0gICAgICAgIGludCBlbmQgPSAodGV4dE5vZGUucHRyKCkgPT0gbV9l
bmRDb250YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFYOwotICAgICAgICBpbnQgcnVuRW5k
ID0gc3RkOjptaW4ocmVuZGVyZXJUZXh0TGVuZ3RoLCBlbmQpOworICAgICAgICBhdXRvIHJlbmRl
cmVyVGV4dExlbmd0aCA9IHN0YXRpY19jYXN0PGludD4ocmVuZGVyZXJUZXh0Lmxlbmd0aCgpKTsK
KyAgICAgICAgYXV0byBlbmQgPSAodGV4dE5vZGUucHRyKCkgPT0gbV9lbmRDb250YWluZXIpID8g
bV9lbmRPZmZzZXQgOiBJTlRfTUFYOworICAgICAgICBpZiAodGV4dEZyYWdtZW50ICYmIHRleHRG
cmFnbWVudC0+Zmlyc3RMZXR0ZXIoKSkgeworICAgICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyB0
ZXh0IGZyYWdtZW50J3MgdGV4dCBpcyBmcmFnbWVudC1sb2NhbC4gQ29udmVydCBET00gb2Zmc2V0
cyB0byBmcmFnbWVudC1sb2NhbCBzbyB3ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IHRoZSByZW5kZXJl
cidzIHRleHQgbGVuZ3RoLgorICAgICAgICAgICAgYXV0byBmcmFnbWVudFN0YXJ0ID0gc3RhdGlj
X2Nhc3Q8aW50Pih0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpOworICAgICAgICAgICAgcnVuU3RhcnQg
PSBzdGQ6Om1heCgwLCBydW5TdGFydCAtIGZyYWdtZW50U3RhcnQpOworICAgICAgICAgICAgZW5k
ID0gZW5kID09IElOVF9NQVggPyBJTlRfTUFYIDogc3RkOjptYXgoMCwgZW5kIC0gZnJhZ21lbnRT
dGFydCk7CisgICAgICAgIH0KKyAgICAgICAgYXV0byBydW5FbmQgPSBzdGQ6Om1pbihyZW5kZXJl
clRleHRMZW5ndGgsIGVuZCk7CiAKICAgICAgICAgaWYgKHJ1blN0YXJ0ID49IHJ1bkVuZCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjQwLDggKzY0OCw4IEBAIGJvb2wgVGV4dEl0ZXJh
dG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAKICAgICBzdGQ6OnRpZShtX3RleHRSdW4sIG1fdGV4dFJ1
bkxvZ2ljYWxPcmRlckNhY2hlKSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2lj
YWxPcmRlckZvcihyZW5kZXJlci5nZXQoKSk7CiAKLSAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJU
ZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJl
cik7IHJlbmRlclRleHRGcmFnbWVudCAmJiAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgIW1fb2Zm
c2V0KQotICAgICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKCpyZW5kZXJUZXh0RnJhZ21l
bnQpOworICAgIGlmICh0ZXh0RnJhZ21lbnQgJiYgIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmICFt
X29mZnNldCkKKyAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcigqdGV4dEZyYWdtZW50
KTsKICAgICBlbHNlIGlmICghbV90ZXh0UnVuICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSkgewog
ICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUgJiYgIW1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpJ
Z25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY2
NSwxMiArNjczLDIxIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKIAogICAg
IGF1dG8gW2ZpcnN0VGV4dFJ1biwgb3JkZXJDYWNoZV0gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RU
ZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IocmVuZGVyZXIpOwogCi0gICAgYXV0byByZW5kZXJlclRl
eHQgPSByZW5kZXJlclRleHRGb3JCZWhhdmlvcihyZW5kZXJlci5nZXQoKSk7Ci0gICAgdW5zaWdu
ZWQgcmFuZ2VTdGFydCA9IG1fb2Zmc2V0OwotICAgIGF1dG8gcmFuZ2VFbmQgPSBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiB7IH07Ci0gICAgaWYgKHRleHROb2RlLnB0cigpID09IG1fZW5kQ29udGFp
bmVyKQotICAgICAgICByYW5nZUVuZCA9IG1fZW5kT2Zmc2V0OworICAgIC8vIEZvciByZW1haW5p
bmcgdGV4dCBmcmFnbWVudHMgYWZ0ZXIgYSBmaXJzdC1sZXR0ZXIgc3BsaXQsIHRleHQgYm94IG9m
ZnNldHMgYXJlIGZyYWdtZW50LWxvY2FsIGJ1dCBtX29mZnNldC9tX2VuZE9mZnNldCBhcmUgRE9N
IG9mZnNldHMuCisgICAgdW5zaWduZWQgcmVtYWluaW5nRnJhZ21lbnRTdGFydCA9IDA7CisgICAg
aWYgKGF1dG8qIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50
PihyZW5kZXJlci5nZXQoKSk7IHJlbmRlclRleHQgJiYgcmVuZGVyVGV4dC0+Zmlyc3RMZXR0ZXIo
KSkKKyAgICAgICAgcmVtYWluaW5nRnJhZ21lbnRTdGFydCA9IHJlbmRlclRleHQtPnN0YXJ0KCk7
CiAKKyAgICBhdXRvIHRvRnJhZ21lbnRMb2NhbCA9IFsmXSh1bnNpZ25lZCBkb21PZmZzZXQpIHsK
KyAgICAgICAgcmV0dXJuIGRvbU9mZnNldCA+IHJlbWFpbmluZ0ZyYWdtZW50U3RhcnQgPyBkb21P
ZmZzZXQgLSByZW1haW5pbmdGcmFnbWVudFN0YXJ0IDogMDsKKyAgICB9OworICAgIGF1dG8gdG9E
T01PZmZzZXQgPSBbJl0odW5zaWduZWQgbG9jYWxPZmZzZXQpIHsKKyAgICAgICAgcmV0dXJuIGxv
Y2FsT2Zmc2V0ICsgcmVtYWluaW5nRnJhZ21lbnRTdGFydDsKKyAgICB9OworCisgICAgYXV0byBy
ZW5kZXJlclRleHQgPSByZW5kZXJlclRleHRGb3JCZWhhdmlvcihyZW5kZXJlci5nZXQoKSk7Cisg
ICAgYXV0byByYW5nZVN0YXJ0ID0gdG9GcmFnbWVudExvY2FsKG1fb2Zmc2V0KTsKKyAgICBhdXRv
IHJhbmdlRW5kID0gdGV4dE5vZGUucHRyKCkgPT0gbV9lbmRDb250YWluZXIgPyBzdGQ6Om1ha2Vf
b3B0aW9uYWwodG9GcmFnbWVudExvY2FsKG1fZW5kT2Zmc2V0KSkgOiBzdGQ6Om51bGxvcHQ7CiAg
ICAgd2hpbGUgKG1fdGV4dFJ1bikgewogICAgICAgICBhdXRvIHRleHRSdW5TdGFydCA9IG1fdGV4
dFJ1bi0+c3RhcnQoKTsKICAgICAgICAgYXV0byB0ZXh0UnVuRW5kID0gdGV4dFJ1blN0YXJ0ICsg
bV90ZXh0UnVuLT5sZW5ndGgoKTsKQEAgLTcwNCw3ICs3MjEsNyBAQCB2b2lkIFRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dFJ1bigpCiAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHRyYW5z
bGF0ZXMgbmV3bGluZXMgYW5kIHRhYnMgdG8gc3BhY2VzIHdpdGhvdXQgY29weWluZyB0aGUgdGV4
dC4KICAgICAgICAgICAgIGlmIChpc05ld2xpbmVPclRhYihyZW5kZXJlclRleHRbcnVuU3RhcnRd
KSkgewogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyAnLCB0ZXh0Tm9kZS5jb3B5UmVm
KCksIG51bGxwdHIsIHJ1blN0YXJ0LCBydW5TdGFydCArIDEpOwotICAgICAgICAgICAgICAgIG1f
b2Zmc2V0ID0gcnVuU3RhcnQgKyAxOworICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gdG9ET01P
ZmZzZXQocnVuU3RhcnQgKyAxKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgYXV0byBzdWJydW5FbmQgPSBydW5TdGFydCArIDE7CiAgICAgICAgICAgICAgICAgZm9yICg7
IHN1YnJ1bkVuZCA8IHJ1bkVuZDsgKytzdWJydW5FbmQpIHsKQEAgLTcxNiw3ICs3MzMsNyBAQCB2
b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dFJ1bigpCiAgICAgICAgICAgICAgICAgICAgIGlm
IChsYXN0U3BhY2VDb2xsYXBzZWRCeU5leHROb25UZXh0UnVuKQogICAgICAgICAgICAgICAgICAg
ICAgICAgKytzdWJydW5FbmQ7IC8vIHJ1bkVuZCBzdG9wcGVkIGJlZm9yZSBsYXN0IHNwYWNlLiBJ
bmNyZW1lbnQgYnkgb25lIHRvIHJlc3RvcmUgdGhlIHNwYWNlLgogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBtX29mZnNldCA9IHN1YnJ1bkVuZDsKKyAgICAgICAgICAgICAgICBt
X29mZnNldCA9IHRvRE9NT2Zmc2V0KHN1YnJ1bkVuZCk7CiAgICAgICAgICAgICAgICAgZW1pdFRl
eHQodGV4dE5vZGUsIHJlbmRlcmVyLCBydW5TdGFydCwgc3VicnVuRW5kKTsKICAgICAgICAgICAg
IH0KIApAQCAtMTIwMSw4ICsxMjE4LDExIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChU
ZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0U3RhcnRPCiAKICAg
ICBtX3Bvc2l0aW9uTm9kZSA9IHRleHROb2RlOwogICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9k
ZSA9IG51bGxwdHI7Ci0gICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0ID0gdGV4dFN0YXJ0T2Zmc2V0
OwotICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSB0ZXh0RW5kT2Zmc2V0OworICAgIC8vIEZvciBy
ZW1haW5pbmcgdGV4dCBmcmFnbWVudHMgYWZ0ZXIgYSBmaXJzdC1sZXR0ZXIgc3BsaXQsIHRoZSB0
ZXh0IG9mZnNldHMgYXJlCisgICAgLy8gZnJhZ21lbnQtbG9jYWwgYnV0IHBvc2l0aW9uIG9mZnNl
dHMgbmVlZCB0byBiZSBET00tcmVsYXRpdmUgZm9yIHJhbmdlKCkgdG8KKyAgICAvLyByZXR1cm4g
Y29ycmVjdCBib3VuZGFyeSBwb2ludHMgKHVzZWQgYnkgd29yZC9zZW50ZW5jZSBib3VuZGFyeSBk
ZXRlY3Rpb24pLgorICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IGZpcnN0TGV0dGVyQWRqdXN0
ZWRET01PZmZzZXQocmVuZGVyZXIsIHRleHRTdGFydE9mZnNldCk7CisgICAgbV9wb3NpdGlvbkVu
ZE9mZnNldCA9IGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQocmVuZGVyZXIsIHRleHRFbmRP
ZmZzZXQpOwogCiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gc3RyaW5nW3RleHRFbmRPZmZzZXQgLSAx
XTsKICAgICBtX2NvcHlhYmxlVGV4dC5zZXQoV1RGOjptb3ZlKHN0cmluZyksIHRleHRTdGFydE9m
ZnNldCwgdGV4dEVuZE9mZnNldCAtIHRleHRTdGFydE9mZnNldCk7CkBAIC0xMzYxLDcwICsxMzgx
LDQ3IEBAIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5v
ZGUoKQogewogICAgIG1fbGFzdFRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4obV9ub2RlLmdldCgp
KTsKIAotICAgIGludCBzdGFydE9mZnNldDsKLSAgICBpbnQgb2Zmc2V0SW5Ob2RlOwotICAgIENo
ZWNrZWRQdHIgcmVuZGVyZXIgPSBoYW5kbGVGaXJzdExldHRlcihzdGFydE9mZnNldCwgb2Zmc2V0
SW5Ob2RlKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBD
aGVja2VkUmVmIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fbm9kZS0+cmVuZGVy
ZXIoKSk7CisgICAgYXV0byBzdGFydE9mZnNldCA9IChtX25vZGUgPT0gbV9zdGFydENvbnRhaW5l
cikgPyBtX3N0YXJ0T2Zmc2V0IDogMDsKIAotICAgIFN0cmluZyB0ZXh0ID0gcmVuZGVyZXItPnRl
eHQoKTsKKyAgICBhdXRvIHRleHQgPSByZW5kZXJlci0+dGV4dCgpOwogICAgIGlmICghcmVuZGVy
ZXItPmhhc1JlbmRlcmVkVGV4dCgpICYmIHRleHQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ICsgb2Zmc2V0SW5Ob2RlID09IG1fb2Zmc2V0KSB7
Ci0gICAgICAgIEFTU0VSVCghbV9zaG91bGRIYW5kbGVGaXJzdExldHRlcik7CisgICAgaWYgKHN0
YXJ0T2Zmc2V0ID09IG1fb2Zmc2V0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CiAKICAg
ICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gbV9vZmZzZXQ7Ci0gICAgbV9vZmZzZXQgPSBzdGFydE9m
ZnNldCArIG9mZnNldEluTm9kZTsKKyAgICBtX29mZnNldCA9IHN0YXJ0T2Zmc2V0OwogICAgIG1f
cG9zaXRpb25Ob2RlID0gbV9ub2RlOwogICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IG1fb2Zm
c2V0OwogCi0gICAgQVNTRVJUKG1fcG9zaXRpb25TdGFydE9mZnNldCA8IG1fcG9zaXRpb25FbmRP
ZmZzZXQpOwotICAgIEFTU0VSVChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgLSBvZmZzZXRJbk5vZGUg
Pj0gMCk7Ci0gICAgQVNTRVJUKG1fcG9zaXRpb25FbmRPZmZzZXQgLSBvZmZzZXRJbk5vZGUgPiAw
KTsKLSAgICBBU1NFUlQobV9wb3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSA8PSBzdGF0
aWNfY2FzdDxpbnQ+KHRleHQubGVuZ3RoKCkpKTsKKyAgICAvLyBGb3IgcmVtYWluaW5nIHRleHQg
ZnJhZ21lbnRzIGFmdGVyIGEgZmlyc3QtbGV0dGVyIHNwbGl0LCBET00gb2Zmc2V0cyAobV9wb3Np
dGlvblN0YXJ0T2Zmc2V0LAorICAgIC8vIG1fcG9zaXRpb25FbmRPZmZzZXQpIGRpZmZlciBmcm9t
IGZyYWdtZW50LWxvY2FsIG9mZnNldHMgdXNlZCB0byBpbmRleCBpbnRvIHJlbmRlcmVyIHRleHQu
CisgICAgLy8gQ29udmVydCB0byBmcmFnbWVudC1sb2NhbCBmb3IgdGV4dCBhY2Nlc3MsIGtlZXBp
bmcgRE9NIG9mZnNldHMgZm9yIHJhbmdlKCkuCisgICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydCA9
IDA7CisgICAgaWYgKGF1dG8qIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4
dEZyYWdtZW50PihyZW5kZXJlci5nZXQoKSk7IHJlbmRlclRleHQgJiYgcmVuZGVyVGV4dC0+Zmly
c3RMZXR0ZXIoKSAmJiBzdGFydE9mZnNldCA+PSBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclRleHQt
PnN0YXJ0KCkpKQorICAgICAgICBmcmFnbWVudFN0YXJ0ID0gcmVuZGVyVGV4dC0+c3RhcnQoKTsK
IAotICAgIG1fbGFzdENoYXJhY3RlciA9IHRleHRbbV9wb3NpdGlvbkVuZE9mZnNldCAtIG9mZnNl
dEluTm9kZSAtIDFdOwotICAgIG1fY29weWFibGVUZXh0LnNldChXVEY6Om1vdmUodGV4dCksIG1f
cG9zaXRpb25TdGFydE9mZnNldCAtIG9mZnNldEluTm9kZSwgbV9wb3NpdGlvbkVuZE9mZnNldCAt
IG1fcG9zaXRpb25TdGFydE9mZnNldCk7Ci0gICAgbV90ZXh0ID0gbV9jb3B5YWJsZVRleHQudGV4
dCgpOworICAgIC8vIEFmdGVyIGVkaXRpbmcgbXV0YXRpb25zIChlLmcuIGRlbGV0aW5nIHRoZSBs
YXN0IGNoYXJhY3RlciksCisgICAgLy8gbV9wb3NpdGlvbkVuZE9mZnNldCBjYW4gZXhjZWVkIHRo
ZSB0ZXh0IG5vZGUncyBjdXJyZW50IGxlbmd0aCBpbiBET00gc3BhY2UuCisgICAgYXV0byB0ZXh0
TGVuZ3RoSW5ET01TcGFjZSA9IHN0YXRpY19jYXN0PGludD4odGV4dC5sZW5ndGgoKSArIGZyYWdt
ZW50U3RhcnQpOworICAgIGlmIChtX3Bvc2l0aW9uRW5kT2Zmc2V0ID4gdGV4dExlbmd0aEluRE9N
U3BhY2UpCisgICAgICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSB0ZXh0TGVuZ3RoSW5ET01TcGFj
ZTsKIAotICAgIHJldHVybiAhbV9zaG91bGRIYW5kbGVGaXJzdExldHRlcjsKLX0KLQotQ2hlY2tl
ZFB0cjxSZW5kZXJUZXh0PiBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVG
aXJzdExldHRlcihpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIG9mZnNldEluTm9kZSkKLXsKLSAgICBD
aGVja2VkUmVmIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fbm9kZS0+cmVuZGVy
ZXIoKSk7Ci0gICAgc3RhcnRPZmZzZXQgPSAobV9ub2RlID09IG1fc3RhcnRDb250YWluZXIpID8g
bV9zdGFydE9mZnNldCA6IDA7CisgICAgaW50IGxvY2FsU3RhcnQgPSBtX3Bvc2l0aW9uU3RhcnRP
ZmZzZXQgLSBmcmFnbWVudFN0YXJ0OworICAgIGludCBsb2NhbEVuZCA9IG1fcG9zaXRpb25FbmRP
ZmZzZXQgLSBmcmFnbWVudFN0YXJ0OwogCi0gICAgQ2hlY2tlZFB0ciBmcmFnbWVudCA9IGR5bmFt
aWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsKLSAgICBpZiAoIWZyYWdt
ZW50KSB7Ci0gICAgICAgIG9mZnNldEluTm9kZSA9IDA7Ci0gICAgICAgIHJldHVybiByZW5kZXJl
cjsKLSAgICB9Ci0KLSAgICBpbnQgb2Zmc2V0QWZ0ZXJGaXJzdExldHRlciA9IGZyYWdtZW50LT5z
dGFydCgpOwotICAgIGlmIChzdGFydE9mZnNldCA+PSBvZmZzZXRBZnRlckZpcnN0TGV0dGVyKSB7
Ci0gICAgICAgIEFTU0VSVCghbV9zaG91bGRIYW5kbGVGaXJzdExldHRlcik7Ci0gICAgICAgIG9m
ZnNldEluTm9kZSA9IG9mZnNldEFmdGVyRmlyc3RMZXR0ZXI7Ci0gICAgICAgIHJldHVybiByZW5k
ZXJlcjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgJiYgc3Rh
cnRPZmZzZXQgKyBvZmZzZXRBZnRlckZpcnN0TGV0dGVyIDwgbV9vZmZzZXQpIHsKLSAgICAgICAg
bV9zaG91bGRIYW5kbGVGaXJzdExldHRlciA9IHRydWU7Ci0gICAgICAgIG9mZnNldEluTm9kZSA9
IG9mZnNldEFmdGVyRmlyc3RMZXR0ZXI7Ci0gICAgICAgIHJldHVybiByZW5kZXJlcjsKLSAgICB9
Ci0KLSAgICBtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyID0gZmFsc2U7Ci0gICAgb2Zmc2V0SW5O
b2RlID0gMDsKLSAgICBDaGVja2VkUHRyIGZpcnN0TGV0dGVyUmVuZGVyZXIgPSBmaXJzdFJlbmRl
clRleHRJbkZpcnN0TGV0dGVyKHByb3RlY3QoZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpKTsKKyAg
ICBBU1NFUlQobV9wb3NpdGlvblN0YXJ0T2Zmc2V0IDwgbV9wb3NpdGlvbkVuZE9mZnNldCk7Cisg
ICAgQVNTRVJUKGxvY2FsU3RhcnQgPj0gMCk7CisgICAgQVNTRVJUKGxvY2FsRW5kID4gMCk7Cisg
ICAgQVNTRVJUKGxvY2FsRW5kIDw9IHN0YXRpY19jYXN0PGludD4odGV4dC5sZW5ndGgoKSkpOwog
Ci0gICAgbV9vZmZzZXQgPSBmaXJzdExldHRlclJlbmRlcmVyLT5jYXJldE1heE9mZnNldCgpOwot
ICAgIG1fb2Zmc2V0ICs9IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKCpmaXJzdExldHRlclJlbmRlcmVy
LCBtX29mZnNldCk7CisgICAgbV9sYXN0Q2hhcmFjdGVyID0gdGV4dFtsb2NhbEVuZCAtIDFdOwor
ICAgIG1fY29weWFibGVUZXh0LnNldChXVEY6Om1vdmUodGV4dCksIGxvY2FsU3RhcnQsIG1fcG9z
aXRpb25FbmRPZmZzZXQgLSBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQpOworICAgIG1fdGV4dCA9IG1f
Y29weWFibGVUZXh0LnRleHQoKTsKIAotICAgIHJldHVybiBmaXJzdExldHRlclJlbmRlcmVyOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0
b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuaAppbmRleCA0MzIyYWFhNjVkMGUuLjllNjVkZmQxZWZkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yMDEsNyArMjAxLDYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICB2b2lkIGV4aXROb2RlKCk7CiAgICAgYm9vbCBoYW5kbGVUZXh0Tm9kZSgpOwotICAgIENo
ZWNrZWRQdHI8UmVuZGVyVGV4dD4gaGFuZGxlRmlyc3RMZXR0ZXIoaW50JiBzdGFydE9mZnNldCwg
aW50JiBvZmZzZXRJbk5vZGUpOwogICAgIGJvb2wgaGFuZGxlUmVwbGFjZWRFbGVtZW50KCk7CiAg
ICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZvaWQgZW1pdENoYXJhY3RlcihjaGFy
MTZfdCwgUmVmUHRyPE5vZGU+JiYsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7CkBA
IC0yMzYsOCArMjM1LDYgQEAgcHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIG1fbm9kZSBoYXMgYWR2
YW5jZWQgYmV5b25kIHRoZSBpdGVyYXRpb24gcmFuZ2UgKGkuZS4gbV9zdGFydENvbnRhaW5lciku
CiAgICAgYm9vbCBtX2hhdmVQYXNzZWRTdGFydENvbnRhaW5lciB7IGZhbHNlIH07CiAKLSAgICAv
LyBTaG91bGQgaGFuZGxlIGZpcnN0LWxldHRlciByZW5kZXJlciBpbiB0aGUgbmV4dCBjYWxsIHRv
IGhhbmRsZVRleHROb2RlLgotICAgIGJvb2wgbV9zaG91bGRIYW5kbGVGaXJzdExldHRlciB7IGZh
bHNlIH07CiB9OwogCiAvLyBCdWlsZHMgb24gdGhlIHRleHQgaXRlcmF0b3IsIGFkZGluZyBhIGNo
YXJhY3RlciBwb3NpdGlvbiBzbyB3ZSBjYW4gd2FsayBvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBmNWQxZWVlNTg2YzcuLjhkZmU2Mzk4NjI0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNDQsNyAr
NDQsOSBAQAogI2luY2x1ZGUgIlBvc2l0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlJhbmdlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxP
YmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVu
ZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJU
ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC01OCw2ICs2MCwxNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKKy8vIFRoZSBh
bm9ueW1vdXMgdGV4dCByZW5kZXJlciBpbnNpZGUgOjpmaXJzdC1sZXR0ZXIgaGFzIG5vIERPTSBu
b2RlLgorc3RhdGljIFJlbmRlclRleHRGcmFnbWVudCogcmVtYWluaW5nVGV4dEZyYWdtZW50Rm9y
Rmlyc3RMZXR0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAgICBpZiAocmVu
ZGVyZXIubm9kZSgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGlmIChhdXRvKiBwYXJlbnQg
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyLnBhcmVudCgp
KSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+Zmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCk7Cisg
ICAgcmV0dXJuIHsgfTsKK30KKwogVmlzaWJsZVBvc2l0aW9uOjpWaXNpYmxlUG9zaXRpb24oY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSkKICAgICA6IG1fZGVlcFBv
c2l0aW9uIHsgY2Fub25pY2FsUG9zaXRpb24ocG9zaXRpb24pIH0KIHsKQEAgLTI1Myw3ICsyNjUs
NyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKCkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgcCA9
IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChyZW5kZXJlci0+bm9kZSgpKS5n
ZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgcCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24o
cHJvdGVjdChyZW5kZXJlci0+bm9kZSgpKS5nZXQoKSwgZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9m
ZnNldCgqcmVuZGVyZXIsIG9mZnNldCkpOwogCiAgICAgICAgIGlmICgocC5pc0NhbmRpZGF0ZSgp
ICYmIHAuZG93bnN0cmVhbSgpICE9IGRvd25zdHJlYW1TdGFydCkgfHwgcC5hdFN0YXJ0T2ZUcmVl
KCkgfHwgcC5hdEVuZE9mVHJlZSgpKQogICAgICAgICAgICAgcmV0dXJuIHA7CkBAIC0zMDUsNyAr
MzE3LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RD
YW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgaWYgKChyZW5kZXJlci0+aXNCbG9ja0xldmVs
UmVwbGFjZWRPckF0b21pY0lubGluZSgpIHx8IHJlbmRlcmVyLT5pc0JSKCkpICYmIG9mZnNldCA9
PSBib3gtPmxlZnRtb3N0Q2FyZXRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gYm94
LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0
ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9k
ZWVwUG9zaXRpb24pOwogCi0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKKyAg
ICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSAmJiAhcmVtYWluaW5nVGV4dEZyYWdtZW50
Rm9yRmlyc3RMZXR0ZXIoKnJlbmRlcmVyKSkgewogICAgICAgICAgICAgICAgIGJveC50cmF2ZXJz
ZUxpbmVSaWdodHdhcmRPbkxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJveCkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6
TFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJl
dmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKQEAgLTQyMiw3
ICs0MzQsOSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIHAgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHByb3RlY3QocmVuZGVyZXItPm5v
ZGUoKSkuZ2V0KCksIG9mZnNldCk7CisgICAgICAgIGF1dG8qIHJlbWFpbmluZ0ZyYWdtZW50ID0g
cmVtYWluaW5nVGV4dEZyYWdtZW50Rm9yRmlyc3RMZXR0ZXIoKnJlbmRlcmVyKTsKKyAgICAgICAg
YXV0byogbm9kZSA9IHJlbWFpbmluZ0ZyYWdtZW50ID8gcmVtYWluaW5nRnJhZ21lbnQtPnRleHRO
b2RlKCkgOiByZW5kZXJlci0+bm9kZSgpOworICAgICAgICBwID0gbWFrZURlcHJlY2F0ZWRMZWdh
Y3lQb3NpdGlvbihwcm90ZWN0KG5vZGUpLmdldCgpLCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zm
c2V0KCpyZW5kZXJlciwgb2Zmc2V0KSk7CiAKICAgICAgICAgaWYgKChwLmlzQ2FuZGlkYXRlKCkg
JiYgcC5kb3duc3RyZWFtKCkgIT0gZG93bnN0cmVhbVN0YXJ0KSB8fCBwLmF0U3RhcnRPZlRyZWUo
KSB8fCBwLmF0RW5kT2ZUcmVlKCkpCiAgICAgICAgICAgICByZXR1cm4gcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCAyZDQyMjdhYTBmOTEuLjE3MWE5NDkwNzQx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiQm91bmRhcnlQb2ludElubGluZXMuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0aW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgpA
QCAtODU1LDcgKzg1Niw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb25Gb3JM
aW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaW50CiAgICAgICAgIGludCBl
bmRPZmZzZXQgPSBlbmRUZXh0Qm94LnN0YXJ0KCk7CiAgICAgICAgIGlmICghZW5kVGV4dEJveC5p
c0xpbmVCcmVhaygpKQogICAgICAgICAgICAgZW5kT2Zmc2V0ICs9IGVuZFRleHRCb3gubGVuZ3Ro
KCk7Ci0gICAgICAgIHBvcyA9IFBvc2l0aW9uKGVuZFRleHROb2RlLnJlbGVhc2VOb25OdWxsKCks
IGVuZE9mZnNldCk7CisgICAgICAgIHBvcyA9IFBvc2l0aW9uKGVuZFRleHROb2RlLnJlbGVhc2VO
b25OdWxsKCksIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoZW5kVGV4dEJveC5yZW5kZXJl
cigpLCBlbmRPZmZzZXQpKTsKICAgICB9IGVsc2UKICAgICAgICAgcG9zID0gcG9zaXRpb25BZnRl
ck5vZGUoKmVuZE5vZGUpOwogCkBAIC0xMjMzLDcgKzEyMzQsNyBAQCBSZWZQdHI8Tm9kZT4gZmlu
ZEVuZE9mUGFyYWdyYXBoKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogaGlnaGVzdFJvb3QsIE5vZGUq
IHN0YXlJbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5v
ZGUgPSBuOwotICAgICAgICAgICAgb2Zmc2V0ID0gci0+Y2FyZXRNYXhPZmZzZXQoKTsKKyAgICAg
ICAgICAgIG9mZnNldCA9IGNhcmV0TWF4T2Zmc2V0KCpuKTsKICAgICAgICAgICAgIG4gPSBOb2Rl
VHJhdmVyc2FsOjpuZXh0KCpuLCBzdGF5SW5zaWRlQmxvY2spOwogICAgICAgICB9IGVsc2UgaWYg
KGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbikgfHwgaXNSZW5kZXJlZFRhYmxlKG4uZ2V0KCkpKSB7
CiAgICAgICAgICAgICBub2RlID0gbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggMzUwODQxZDBkMWFlLi5mODIxNDU1ZjFlZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVk
ZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
Tm9kZUlubGluZXMuaCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVkZSAiT3V0bGluZVBh
aW50ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgpA
QCAtMTkxNCw3ICsxOTE1LDcgQEAgUG9zaXRpb25XaXRoQWZmaW5pdHkgUmVuZGVyT2JqZWN0Ojpj
cmVhdGVQb3NpdGlvbldpdGhBZmZpbml0eShpbnQgb2Zmc2V0LCBBZmZpbmkKICAgICBpZiAoUmVm
UHRyIG5vZGUgPSBub25Qc2V1ZG9Ob2RlKCkpIHsKICAgICAgICAgaWYgKCFub2RlLT5oYXNFZGl0
YWJsZVN0eWxlKCkpIHsKICAgICAgICAgICAgIC8vIElmIGl0IGNhbiBiZSBmb3VuZCwgd2UgcHJl
ZmVyIGEgdmlzdWFsbHkgZXF1aXZhbGVudCBwb3NpdGlvbiB0aGF0IGlzIGVkaXRhYmxlLiAKLSAg
ICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlv
bihub2RlLmdldCgpLCBvZmZzZXQpOworICAgICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBt
YWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5vZGUuZ2V0KCksIGZpcnN0TGV0dGVyQWRqdXN0
ZWRET01PZmZzZXQoKnRoaXMsIG9mZnNldCkpOwogICAgICAgICAgICAgUG9zaXRpb24gY2FuZGlk
YXRlID0gcG9zaXRpb24uZG93bnN0cmVhbShDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAg
ICAgICAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPmhhc0VkaXRhYmxlU3R5bGUo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZmaW5pdHkoY2FuZGlkYXRl
LCBhZmZpbml0eSk7CkBAIC0xOTIzLDcgKzE5MjQsNyBAQCBQb3NpdGlvbldpdGhBZmZpbml0eSBS
ZW5kZXJPYmplY3Q6OmNyZWF0ZVBvc2l0aW9uV2l0aEFmZmluaXR5KGludCBvZmZzZXQsIEFmZmlu
aQogICAgICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbldpdGhBZmZpbml0eShjYW5kaWRhdGUs
IGFmZmluaXR5KTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogRWxpbWluYXRlIGxlZ2Fj
eSBlZGl0aW5nIHBvc2l0aW9ucwotICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZmaW5pdHko
bWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBvZmZzZXQpLCBhZmZpbml0
eSk7CisgICAgICAgIHJldHVybiBQb3NpdGlvbldpdGhBZmZpbml0eShtYWtlRGVwcmVjYXRlZExl
Z2FjeVBvc2l0aW9uKG5vZGUuZ2V0KCksIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKnRo
aXMsIG9mZnNldCkpLCBhZmZpbml0eSk7CiAgICAgfQogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBjcm9zcyB0aGUgYm91bmRhcnkgYmV0d2VlbiBlZGl0YWJsZSBhbmQgbm9uLWVkaXRhYmxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCmluZGV4
IDY5MGQ4MTA3MWRhYy4uZjdmNTgyYTdjZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcApAQCAtNjgsNyArNjgsMTYgQEAgUmVuZGVyVGV4
dEZyYWdtZW50Ojp+UmVuZGVyVGV4dEZyYWdtZW50KCkKIAogYm9vbCBSZW5kZXJUZXh0RnJhZ21l
bnQ6OmNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRleHROb2RlKCkg
JiYgdGV4dE5vZGUoKS0+aGFzRWRpdGFibGVTdHlsZSgpOworICAgIGF1dG8qIHRleHROb2RlID0g
dGhpcy0+dGV4dE5vZGUoKTsKKyAgICBpZiAoIXRleHROb2RlKSB7CisgICAgICAgIC8vIEFub255
bW91cyBmaXJzdC1sZXR0ZXIgdGV4dCBmcmFnbWVudHMgYXJlIHNlbGVjdGFibGUgd2hlbiB0aGUg
cmVtYWluaW5nCisgICAgICAgIC8vIHRleHQgZnJhZ21lbnQgaGFzIGFuIGFzc29jaWF0ZWQgRE9N
IHRleHQgbm9kZS4KKyAgICAgICAgQVNTRVJUKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0PihwYXJl
bnQoKSkgJiYgZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpwYXJlbnQoKSkuZmlyc3RM
ZXR0ZXJSZW1haW5pbmdUZXh0KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
Ly8gUmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIHdpdGggZmlyc3QtbGV0dGVyIGFyZSBhbHdheXMg
c2VsZWN0YWJsZSwKKyAgICAvLyBtYXRjaGluZyB0aGUgYmFzZSBSZW5kZXJUZXh0OjpjYW5CZVNl
bGVjdGlvbkxlYWYoKSBiZWhhdmlvci4KKyAgICByZXR1cm4gZmlyc3RMZXR0ZXIoKSA/IHRydWUg
OiB0ZXh0Tm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpOwogfQogCiB2b2lkIFJlbmRlclRleHRGcmFn
bWVudDo6c2V0VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgbmV3VGV4dCwgYm9vbCBmb3JjZSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1z
ZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODQ3MmY0MDNjODA4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3Qt
bGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEz
IEBACitUZXN0IHRoYXQgc2VsZWN0aW9uIGFjcm9zcyBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIDo6
Zmlyc3QtbGV0dGVyIHdvcmtzIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXG4v
ZywgJ3wnKSBpcyAiRmlyc3QgcGFyYWdyYXBofFNlY29uZCBwYXJhZ3JhcGgiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1xuL2csICd8JykgaXMgInN0IHBh
cmFncmFwaHxTZWNvbmQiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJl
cGxhY2UoL1xuL2csICd8JykgaXMgIkZpcnN0IHBhcmFncmFwaHxTIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitGaXJzdCBwYXJhZ3JhcGgKK1NlY29u
ZCBwYXJhZ3JhcGgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kZmIzNDg4ZDQ1ZjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0
ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy5maXJzdC1sZXR0ZXItc3R5bGVkOjpm
aXJzdC1sZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9InBhcmExIiBjbGFzcz0iZmly
c3QtbGV0dGVyLXN0eWxlZCI+Rmlyc3QgcGFyYWdyYXBoPC9kaXY+CisgICAgPGRpdiBpZD0icGFy
YTIiIGNsYXNzPSJmaXJzdC1sZXR0ZXItc3R5bGVkIj5TZWNvbmQgcGFyYWdyYXBoPC9kaXY+Cis8
L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc2VsZWN0aW9uIGFjcm9z
cyBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIDo6Zmlyc3QtbGV0dGVyIHdvcmtzIGNvcnJlY3RseS4i
KTsKKworZnVuY3Rpb24gc2VsZWN0QWNyb3NzRWxlbWVudHMoc3RhcnROb2RlLCBzdGFydE9mZnNl
dCwgZW5kTm9kZSwgZW5kT2Zmc2V0KSB7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChzdGFydE5vZGUsIHN0YXJ0T2Zmc2V0KTsKKyAg
ICByYW5nZS5zZXRFbmQoZW5kTm9kZSwgZW5kT2Zmc2V0KTsKKyAgICB2YXIgc2VsID0gd2luZG93
LmdldFNlbGVjdGlvbigpOworICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzZWwuYWRk
UmFuZ2UocmFuZ2UpOworfQorCisvLyBUZXN0IDE6IFNlbGVjdCBhY3Jvc3MgdHdvIGZpcnN0LWxl
dHRlciBwYXJhZ3JhcGhzCitzZWxlY3RBY3Jvc3NFbGVtZW50cyhwYXJhMS5maXJzdENoaWxkLCAw
LCBwYXJhMi5maXJzdENoaWxkLCBwYXJhMi5maXJzdENoaWxkLmxlbmd0aCk7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1xc
bi9nLCAnfCcpIiwgIkZpcnN0IHBhcmFncmFwaHxTZWNvbmQgcGFyYWdyYXBoIik7CisKKy8vIFRl
c3QgMjogU2VsZWN0IGZyb20gbWlkZGxlIG9mIGZpcnN0IHRvIG1pZGRsZSBvZiBzZWNvbmQKK3Nl
bGVjdEFjcm9zc0VsZW1lbnRzKHBhcmExLmZpcnN0Q2hpbGQsIDMsIHBhcmEyLmZpcnN0Q2hpbGQs
IDYpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKS5yZXBsYWNlKC9cXG4vZywgJ3wnKSIsICJzdCBwYXJhZ3JhcGh8U2Vjb25kIik7CisKKy8v
IFRlc3QgMzogU2VsZWN0IGZyb20gZmlyc3QtbGV0dGVyIG9mIGZpcnN0IHRvIGZpcnN0LWxldHRl
ciBvZiBzZWNvbmQKK3NlbGVjdEFjcm9zc0VsZW1lbnRzKHBhcmExLmZpcnN0Q2hpbGQsIDAsIHBh
cmEyLmZpcnN0Q2hpbGQsIDEpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywgJ3wnKSIsICJGaXJzdCBwYXJhZ3Jh
cGh8UyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWQw
OGQ5MzljN2IwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAor
VGVzdCB0aGF0IHNlbGVjdGlvbiB3b3JrcyBjb3JyZWN0bHkgd2l0aCA6OmZpcnN0LWxldHRlciBw
c2V1ZG8tZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkhlbGxvIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiMTIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICJcIlF1b3RlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiQSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
Ik5lc3RlZCIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgv
XG4vZywgJ3wnKSBpcyAiRmlyc3R8U2Vjb25kIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAiRWRpdGFibGUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICIxIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
MiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkhlbCIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIlwiUSIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIGlzIHRydWUKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLmFuY2hvck9mZnNldCBpcyAxCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxh
cHNlZCBpcyB0cnVlCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hbmNob3JPZmZzZXQgaXMg
MAorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiQSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVsbG8KKzEyCisiUXVv
dGUKK0EKK05lc3RlZAorRmlyc3QKK1NlY29uZAorRWRpdGFibGUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGlu
Zy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0
dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZDAzOTA1MzhkMzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGlu
Zy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK3NwYW4uZmlyc3QtbGV0dGVy
IHsKKyAgICBjb2xvcjogcmVkOworICAgIGZvbnQtc2l6ZTogMmVtOworfQorPC9zdHlsZT4KKzxk
aXYgaWQ9InRhcmdldCI+PHNwYW4gY2xhc3M9ImZpcnN0LWxldHRlciI+SDwvc3Bhbj5lbGxvIFdv
cmxkPC9kaXY+Cis8c2NyaXB0Pgord2luZG93LnRlc3RSdW5uZXI/LndhaXRVbnRpbERvbmUoKTsK
K3dpbmRvdy50ZXN0UnVubmVyPy5kb250Rm9yY2VSZXBhaW50KCk7CisKK2FzeW5jIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2Rl
Q29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB3aW5kb3cudGVz
dFJ1bm5lcj8ubm90aWZ5RG9uZSgpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIHJ1blRlc3QpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNmI4YmRmNDZjYjkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1s
ZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorZGl2
OjpmaXJzdC1sZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7CisgICAgZm9udC1zaXplOiAyZW07Cit9
Cis8L3N0eWxlPgorPGRpdiBpZD0idGFyZ2V0Ij5IZWxsbyBXb3JsZDwvZGl2PgorPHNjcmlwdD4K
K3dpbmRvdy50ZXN0UnVubmVyPy53YWl0VW50aWxEb25lKCk7Cit3aW5kb3cudGVzdFJ1bm5lcj8u
ZG9udEZvcmNlUmVwYWludCgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGF3
YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92
ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAgYXdhaXQgVUlIZWxw
ZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAgd2luZG93LnRlc3RSdW5uZXI/Lm5vdGlmeURvbmUo
KTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBydW5UZXN0KTsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0
dGVyLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3Qt
bGV0dGVyLXNlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uZWVkYzcyYjNmYzViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTAxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2Rpdjo6Zmlyc3QtbGV0
dGVyIHsKKyAgICBjb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0idGVzdDEiPkhlbGxvPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0MiI+MTI8L2Rpdj4KKzxkaXYg
aWQ9InRlc3QzIj4iUXVvdGU8L2Rpdj4KKzxkaXYgaWQ9InRlc3Q0Ij5BPC9kaXY+Cis8ZGl2IGlk
PSJ0ZXN0NSI+PHNwYW4+TmVzdGVkPC9zcGFuPjwvZGl2PgorPGRpdiBpZD0idGVzdDYiPkZpcnN0
PGJyPlNlY29uZDwvZGl2PgorPGRpdiBpZD0idGVzdDciIGNvbnRlbnRlZGl0YWJsZT5FZGl0YWJs
ZTwvZGl2PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0IHRoYXQgc2VsZWN0aW9uIHdvcmtzIGNvcnJlY3RseSB3aXRoIDo6Zmlyc3QtbGV0
dGVyIHBzZXVkby1lbGVtZW50LiIpOworCitmdW5jdGlvbiBzZWxlY3RBbGwoZWxlbWVudCkgewor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0
Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7CisgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7
Cit9CisKK2Z1bmN0aW9uIHNlbGVjdFJhbmdlKG5vZGUsIHN0YXJ0LCBlbmQpIHsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KG5vZGUs
IHN0YXJ0KTsKKyAgICByYW5nZS5zZXRFbmQobm9kZSwgZW5kKTsKKyAgICB2YXIgc2VsID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpOworICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzZWwu
YWRkUmFuZ2UocmFuZ2UpOworfQorCisvLyBUZXN0IDE6IFNlbGVjdCBhbGwgdGV4dCBpbiBlbGVt
ZW50IHdpdGggZmlyc3QtbGV0dGVyCitzZWxlY3RBbGwodGVzdDEpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJIZWxsbyIpOworCisv
LyBUZXN0IDI6IFNob3J0IHRleHQgLSBzZWxlY3QgYWxsCitzZWxlY3RBbGwodGVzdDIpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIx
MiIpOworCisvLyBUZXN0IDM6IEZpcnN0LWxldHRlciB3aXRoIHB1bmN0dWF0aW9uIChmaXJzdC1s
ZXR0ZXIgaW5jbHVkZXMgcXVvdGUgKyBsZXR0ZXIpCitzZWxlY3RBbGwodGVzdDMpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJcIlF1
b3RlIik7CisKKy8vIFRlc3QgNDogU2luZ2xlIGNoYXJhY3RlciB0ZXh0IChlbnRpcmUgdGV4dCBp
cyBmaXJzdC1sZXR0ZXIpCitzZWxlY3RBbGwodGVzdDQpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJBIik7CisKKy8vIFRlc3QgNTog
Rmlyc3QtbGV0dGVyIHdpdGggbmVzdGVkIGlubGluZQorc2VsZWN0QWxsKHRlc3Q1KTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiTmVz
dGVkIik7CisKKy8vIFRlc3QgNjogTXVsdGktbGluZSAtIHNlbGVjdCBhbGwgc2hvdWxkIGdldCBi
b3RoIGxpbmVzCitzZWxlY3RBbGwodGVzdDYpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywgJ3wnKSIsICJGaXJz
dHxTZWNvbmQiKTsKKworLy8gVGVzdCA3OiBDb250ZW50ZWRpdGFibGUgd2l0aCBmaXJzdC1sZXR0
ZXIKK3NlbGVjdEFsbCh0ZXN0Nyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkVkaXRhYmxlIik7CisKKy8vIFRlc3QgODogU2VsZWN0
IG9ubHkgdGhlIGZpcnN0LWxldHRlciBwb3J0aW9uCitzZWxlY3RSYW5nZSh0ZXN0Mi5maXJzdENo
aWxkLCAwLCAxKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAiMSIpOworCisvLyBUZXN0IDk6IFNlbGVjdCBvbmx5IHRoZSByZW1haW5p
bmcgcG9ydGlvbiAoYWZ0ZXIgZmlyc3QtbGV0dGVyKQorc2VsZWN0UmFuZ2UodGVzdDIuZmlyc3RD
aGlsZCwgMSwgMik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIjIiKTsKKworLy8gVGVzdCAxMDogU2VsZWN0IHJhbmdlIHNwYW5uaW5n
IGZpcnN0LWxldHRlciBib3VuZGFyeQorc2VsZWN0UmFuZ2UodGVzdDEuZmlyc3RDaGlsZCwgMCwg
Myk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIkhlbCIpOworCisvLyBUZXN0IDExOiBTZWxlY3QgZnJvbSBtaWRkbGUgb2YgZmlyc3Qt
bGV0dGVyIHRleHQgdG8gZW5kCitzZWxlY3RSYW5nZSh0ZXN0My5maXJzdENoaWxkLCAwLCAyKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiXCJRIik7CisKKy8vIFRlc3QgMTI6IENhcmV0IGF0IGZpcnN0LWxldHRlciBib3VuZGFyeSAo
b2Zmc2V0ID0gZmlyc3QtbGV0dGVyIGxlbmd0aCkKK3NlbGVjdFJhbmdlKHRlc3QxLmZpcnN0Q2hp
bGQsIDEsIDEpOworc2hvdWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCIs
ICJ0cnVlIik7CitzaG91bGRCZSgid2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hvck9mZnNldCIs
ICIxIik7CisKKy8vIFRlc3QgMTM6IENhcmV0IGF0IHN0YXJ0IG9mIHRleHQgKG9mZnNldCAwLCBp
bnNpZGUgZmlyc3QtbGV0dGVyKQorc2VsZWN0UmFuZ2UodGVzdDEuZmlyc3RDaGlsZCwgMCwgMCk7
CitzaG91bGRCZSgid2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIiwgInRydWUiKTsK
K3Nob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yT2Zmc2V0IiwgIjAiKTsKKwor
Ly8gVGVzdCAxNDogU2VsZWN0IGFsbCBvbiBzaW5nbGUtY2hhcmFjdGVyIGZpcnN0LWxldHRlciAo
ZW50aXJlIHRleHQgaXMgZmlyc3QtbGV0dGVyKQorc2VsZWN0UmFuZ2UodGVzdDQuZmlyc3RDaGls
ZCwgMCwgMSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIkEiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>478919</attachid>
            <date>2026-04-03 20:51:18 -0700</date>
            <delta_ts>2026-04-04 03:57:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-311437-20260403205116.patch</filename>
            <type>text/plain</type>
            <size>59425</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA5ZGQzNmFiM2YzMjNiNzMzZTliNDgxZDQzZTY4NTBjODQyNzljZjIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBBcHIgMjAyNiAwNTo1NzozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIG55dGltZXMu
Y29tOiB3cm9uZyBzZWxlY3Rpb24gcGFpbnRpbmcgYmVjYXVzZSBvZiBmaXJzdC1sZXR0ZXIKIHN0
eWxlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE0MzcgPHJkYXI6
Ly8xMDYwNjA0MjE+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkdpdmVuCgogIDxzdHls
ZT4KICAgIGRpdjo6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IHJlZDsgfQogIDwvc3R5bGU+CiAgPGRp
dj5IZWxsbzwvZGl2PgoKdGhlIERPTSAoaW5zaWRlIHRoZSBibG9jayBjb250YWluZXIpIGhhcyBh
IHNpbmdsZSB0ZXh0IG5vZGUgIkhlbGxvIgpidXQgV2ViS2l0IHNwbGl0cyB0aGlzIGludG8gdHdv
IHJlbmRlcmVycyB0byBiZSBhYmxlIHRvIHN0eWxlIHRoZSBmaXJzdCBsZXR0ZXIuCgogIFJlbmRl
ckJsb2NrIChkaXYpCiAgICBSZW5kZXJJbmxpbmUgKDo6Zmlyc3QtbGV0dGVyLCBhbm9ueW1vdXMp
CiAgICAgIFJlbmRlclRleHQgIkgiICAgICAgICAgICAgPC0gb2Zmc2V0cyAwLTEgKG5vIERPTSBu
b2RlKQogICAgUmVuZGVyVGV4dEZyYWdtZW50ICJlbGxvIiAgIDwtIG9mZnNldHMgMC00IChvd25z
IHRoZSBET00gdGV4dCBub2RlKQoKVGhlIGV4aXN0aW5nIGNvZGUgYXNzdW1lcyBlYWNoIERPTSBu
b2RlIG1hcHMgdG8gZXhhY3RseSBvbmUgcmVuZGVyZXIuCkV2ZXJ5IGNhbGwgdG8gbm9kZS0+cmVu
ZGVyZXIoKSBvciBQb3NpdGlvbjo6cmVuZGVyZXIoKSByZXR1cm5zIHRoZQpyZW1haW5pbmcgZnJh
Z21lbnQgLS0gdGhlIGZpcnN0LWxldHRlciByZW5kZXJlciBpcyBuZXZlciBjb25zdWx0ZWQuCgpU
aGlzIG1lYW5zIERPTSBvZmZzZXQgMCAoIkgiKSBnZXRzIGNoZWNrZWQgYWdhaW5zdCB0aGUgcmVt
YWluaW5nCmZyYWdtZW50J3MgdGV4dCBib3hlcywgd2hpY2ggc3RhcnQgYXQgImUiLiBTZWxlY3Rp
b24sIGNhcmV0IHBvc2l0aW9uaW5nLAphbmQgb2Zmc2V0IHZhbGlkYXRpb24gYWxsIGZhaWwgZm9y
IHRoZSBmaXJzdC1sZXR0ZXIgcmFuZ2UgYmVjYXVzZSB0aGUKd3JvbmcgcmVuZGVyZXIgaXMgYXNr
ZWQgYWJvdXQgb2Zmc2V0cyBpdCBkb2Vzbid0IG93bi4KClRoZSBmaXggaXMgdG8gbmV2ZXIgY29u
c3VsdCBub2RlLT5yZW5kZXJlcigpIGRpcmVjdGx5IGZvciB0ZXh0IG9mZnNldApvcGVyYXRpb25z
IG9uIGZpcnN0LWxldHRlciBjb250ZW50LiBJbnN0ZWFkLCBhbGwgY2FsbCBzaXRlcyBnbyB0aHJv
dWdoClBvc2l0aW9uOjpyZW5kZXJlckFuZE9mZnNldCgpIHdoaWNoIHJlc29sdmVzIHRoZSAxLURP
TS1ub2RlLXRvLTItcmVuZGVyZXJzCnNwbGl0IGJ5IHBpY2tpbmcgdGhlIGNvcnJlY3QgcmVuZGVy
ZXIgYW5kIGNvbnZlcnRpbmcgdG8gaXRzIGxvY2FsIG9mZnNldC4KVGhpcyBpcyB0aGUgY2VudHJh
bCBpbnZhcmlhbnQgb2YgdGhlIGZpeCAtLSBldmVyeSBwbGFjZSB0aGF0IHByZXZpb3VzbHkKY2Fs
bGVkIG5vZGUtPnJlbmRlcmVyKCkgYW5kIHVzZWQgYSBET00gb2Zmc2V0IGFnYWluc3QgaXQgbm93
IHVzZXMgdGhpcwpoZWxwZXIgKG9yIG9uZSBvZiBpdHMgd3JhcHBlcnMpIHRvIGdldCB0aGUgcmln
aHQgcmVuZGVyZXIgKyBvZmZzZXQgcGFpci4KCktleSBoZWxwZXJzIGludHJvZHVjZWQ6Ci0gUG9z
aXRpb246OnJlbmRlcmVyQW5kT2Zmc2V0KCk6IHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZv
ciByZXNvbHZpbmcKICBhIERPTSBvZmZzZXQgdG8gdGhlIGNvcnJlY3QgcmVuZGVyZXIgKyBmcmFn
bWVudC1sb2NhbCBvZmZzZXQuIFJvdXRlcyB0bwogIHRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIg
Zm9yIG9mZnNldHMgYmVsb3cgZnJhZ21lbnRTdGFydCwgb3RoZXJ3aXNlCiAgcmV0dXJucyB0aGUg
cmVtYWluaW5nIGZyYWdtZW50IHdpdGggYWRqdXN0ZWQgb2Zmc2V0LgotIFBvc2l0aW9uOjpyZXNv
bHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOiBjb252ZW5pZW5jZSB3cmFwcGVyIHRoYXQgYWxz
bwogIGNhc3RzIHRvIFJlbmRlclRleHQuCi0gZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgp
OiBjb252ZXJ0cyBmcmFnbWVudC1sb2NhbCBvZmZzZXQgYmFjayB0bwogIERPTSBvZmZzZXQuIFVz
ZWQgd2hlbiBleGl0aW5nIHJlbmRlcmVyIHNwYWNlIChjYXJldE1heE9mZnNldCwKICBjcmVhdGVQ
b3NpdGlvbldpdGhBZmZpbml0eSwgZW5kUG9zaXRpb25Gb3JMaW5lLCBwb3NpdGlvbkF0UmlnaHRC
b3VuZGFyeS0KICBPZkJpRGlSdW4sIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQpLgotIGZpcnN0TGV0
dGVyQWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KCk6IGNvbnZlcnRzIERPTSBvZmZzZXQgdG8K
ICBmcmFnbWVudC1sb2NhbC4gVXNlZCBpbiBQb3NpdGlvbjo6dXBzdHJlYW0vZG93bnN0cmVhbSB3
aGVyZSB0aGVyZSBpcyBubwogIFBvc2l0aW9uIG9iamVjdCB0byBjYWxsIHJlbmRlcmVyQW5kT2Zm
c2V0KCkgb24uCi0gY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkoKTogcHJldmVudHMgdXBzdHJl
YW0vZG93bnN0cmVhbSBmcm9tCiAgY2Fub25pY2FsaXppbmcgcG9zaXRpb25zIGFjcm9zcyB0aGUg
Zmlyc3QtbGV0dGVyIHNwbGl0LiBXaXRob3V0IHRoaXMsCiAgVmlzaWJsZVBvc2l0aW9uKG9mZnNl
dCAwKSBhbmQgVmlzaWJsZVBvc2l0aW9uKG9mZnNldCAxKSB3b3VsZCBjb2xsYXBzZQogIHRvIHRo
ZSBzYW1lIGNhbm9uaWNhbCBwb3NpdGlvbiwgbWFraW5nIHRoZSBmaXJzdCBsZXR0ZXIgdW5zZWxl
Y3RhYmxlLgogIE11c3QgcnVuIGJlZm9yZSB0aGUgaXNTdHJlYW1lciB1cGRhdGUgdG8gc2VlIHRo
ZSBwcmUtdXBkYXRlIGxhc3RWaXNpYmxlLgoKUG9zaXRpb246OmlzQ2FuZGlkYXRlLCBpc1JlbmRl
cmVkQ2hhcmFjdGVyLCByZW5kZXJzSW5EaWZmZXJlbnRQb3NpdGlvbjoKICBUaGVzZSBjaGVjayB0
ZXh0IG9mZnNldCB2YWxpZGl0eSBhZ2FpbnN0IHJlbmRlcmVyIHRleHQgYm94ZXMuIFRoZXkgbm93
CiAgdXNlIHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCkgdG8gYXNrIHRoZSBjb3JyZWN0
IHJlbmRlcmVyCiAgKGZpcnN0LWxldHRlciBvciByZW1haW5pbmcgZnJhZ21lbnQpIGluc3RlYWQg
b2YgYWx3YXlzIGFza2luZyB0aGUKICByZW1haW5pbmcgZnJhZ21lbnQgd2l0aCBhIHJhdyBET00g
b2Zmc2V0LgoKUG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldDogcmVzb2x2ZXMgdG8gdGhlIGNv
cnJlY3QgaW5saW5lIGJveCBmb3IKICBjYXJldC9zZWxlY3Rpb24gcG9zaXRpb25pbmcuIE5vdyBk
ZWxlZ2F0ZXMgdG8gcmVuZGVyZXJBbmRPZmZzZXQoKQogIGluc3RlYWQgb2YgZHVwbGljYXRpbmcg
dGhlIGZpcnN0LWxldHRlciByb3V0aW5nIGxvZ2ljLgoKUmVuZGVyZWRQb3NpdGlvbjogc3RvcmVz
IHRoZSBvcmlnaW5hbCBET00gbm9kZSAobV9ub2RlKSBmcm9tIHRoZSBQb3NpdGlvbgogIGR1cmlu
ZyBjb25zdHJ1Y3Rpb24uIFdpdGhvdXQgdGhpcywgcG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlE
aVJ1bigpCiAgcHJvZHVjZXMgYSBudWxsLW5vZGUgUG9zaXRpb24gd2hlbiB0aGUgaW5saW5lIGJv
eCBiZWxvbmdzIHRvIHRoZQogIGFub255bW91cyBmaXJzdC1sZXR0ZXIgdGV4dCwgY2F1c2luZyBh
ZGp1c3RFbmRwb2ludHNBdEJpZGlCb3VuZGFyeSgpCiAgdG8gY29sbGFwc2UgdGhlIHNlbGVjdGlv
biB3aGVuIGRyYWdnaW5nIGxlZnQgcGFzdCB0aGUgZmlyc3QgbGV0dGVyLgoKVmlzaWJsZVBvc2l0
aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGU6IHdoZW4gYmlkaSB0cmF2ZXJzYWwK
ICBsYW5kcyBvbiB0aGUgYW5vbnltb3VzIGZpcnN0LWxldHRlciB0ZXh0IGJveCwgcmVzb2x2ZXMg
dGhlIERPTSBub2RlCiAgdmlhIHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCkg
YmVmb3JlIGNyZWF0aW5nIHRoZSBQb3NpdGlvbi4KClJlbmRlclRleHRGcmFnbWVudDo6Y2FuQmVT
ZWxlY3Rpb25MZWFmOiByZXR1cm5zIHRydWUgZm9yIHJlbWFpbmluZwogIGZyYWdtZW50cyB3aXRo
IGZpcnN0LWxldHRlciwgbWF0Y2hpbmcgYmFzZSBSZW5kZXJUZXh0IGJlaGF2aW9yIHNvCiAgY3Jv
c3MtZWxlbWVudCBzZWxlY3Rpb25zIChDbWQrQSkgaW5jbHVkZSB0aGUgcmVtYWluaW5nIHRleHQu
CgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24t
Y3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sOiBBZGRl
ZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmly
c3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5n
Lmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRl
ci1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJh
dG9yL2ZpcnN0LWxldHRlci13b3JkLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0
cy9mYXN0L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVj
dGVkLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwOgooV2ViQ29yZTo6Y3Jv
c3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkpOgooV2ViQ29yZTo6Zmlyc3RMZXR0ZXJBZGp1c3RlZEZy
YWdtZW50TG9jYWxPZmZzZXQpOgooV2ViQ29yZTo6UG9zaXRpb246OnVwc3RyZWFtIGNvbnN0KToK
KFdlYkNvcmU6OlBvc2l0aW9uOjpkb3duc3RyZWFtIGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0aW9u
OjpoYXNSZW5kZXJlZE5vbkFub255bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodCk6CihXZWJDb3Jl
OjpQb3NpdGlvbjo6aXNDYW5kaWRhdGUgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OmlzUmVu
ZGVyZWRDaGFyYWN0ZXIgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJbkRpZmZl
cmVudFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpyZW5kZXJlckFuZE9mZnNl
dCBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6cmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZz
ZXQgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldCBjb25zdCk6
CiogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmg6CiogU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uSXRlcmF0b3IuY3BwOgooV2ViQ29yZTo6UG9zaXRpb25JdGVyYXRvcjo6aXNDYW5kaWRh
dGUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHA6CihXZWJDb3Jl
OjpjYXJldE1heE9mZnNldCk6CihXZWJDb3JlOjpmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0
KToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaDoKKiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp1cGRh
dGVBcHBlYXJhbmNlKToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24u
Y3BwOgooV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6CihXZWJD
b3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuIGNv
bnN0KToKKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5
T2ZCaURpUnVuIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRp
b24uaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CihXZWJDb3Jl
OjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dFJ1bik6CihXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToKKFdlYkNv
cmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKFdl
YkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZUZpcnN0TGV0dGVy
KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oOgoqIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKFdlYkNvcmU6OnJlbWFp
bmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKToKKFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
bjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29uc3QpOgooV2ViQ29yZTo6VmlzaWJs
ZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29uc3QpOgoqIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKFdlYkNvcmU6OmVuZFBvc2l0aW9u
Rm9yTGluZSk6CihXZWJDb3JlOjpmaW5kRW5kT2ZQYXJhZ3JhcGgpOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjcmVh
dGVQb3NpdGlvbldpdGhBZmZpbml0eSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRGcmFnbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJUZXh0RnJhZ21lbnQ6OmNh
bkJlU2VsZWN0aW9uTGVhZiBjb25zdCk6Ci0tLQogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcCAgICAgICAgICAgICAgIHwgMTE4ICsrKysrKysrKysrKystLS0KIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5oICAgICAgICAgICAgICAgICB8ICAgOCArKwogU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwICAgICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwICAgICAgICAgICAgfCAgMTAgKy0KIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZy5oICAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCAgICAgfCAgMTAgKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgICB8ICAxMCArLQogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW5kZXJlZFBvc2l0aW9uLmggICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcCAgICAgICB8IDEzMiArKysrKysrKystLS0tLS0tLS0KIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggICAgICAgICB8ICAgMyAtCiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgICAgfCAgMjggKysrLQogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwICAgICAgIHwgICA1ICstCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCAgICAgfCAgIDUgKy0KIC4uLi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwICB8ICAxMSArLQogLi4uZXR0ZXItc2Vs
ZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0IHwgIDEzICsrCiAuLi4vZmlyc3QtbGV0
dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwgfCAgNDMgKysrKysrCiAuLi4vZmlyc3Qt
bGV0dGVyLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgICAgICAgfCAgMzMgKysrKysKIC4uLnN0LWxl
dHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbCB8ICAyNSArKysrCiAuLi4vZmly
c3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sICAgICAgfCAgMjUgKysrKwogLi4uL3Nl
bGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLmh0bWwgICAgIHwgMTAxICsrKysrKysrKysr
KysrCiAuLi4vZmlyc3QtbGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0ZWQudHh0ICAgfCAgIDYg
Ky0KIC4uLmVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dCB8ICAgMiAr
LQogMjIgZmlsZXMgY2hhbmdlZCwgNDgzIGluc2VydGlvbnMoKyksIDExNSBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1s
ZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlv
bi1jcm9zcy1lbGVtZW50Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4cGVjdGVkLnR4dAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1z
ZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmcu
aHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDJm
YjRhMTQ0YTA1Zi4uNTgyZmE0MmFiNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTU0
LDYgKzU0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlJl
bmRlclRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgog
I2luY2x1ZGUgIlNWR1RleHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpAQCAtNjQyLDYg
KzY0MywzMCBAQCBzdGF0aWMgTm9kZSogZW5jbG9zaW5nVmlzdWFsQm91bmRhcnkoU1VQUFJFU1Nf
VU5DSEVDS0VEX0xPQ0FMIE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKKy8vIFRo
ZSBmaXJzdC1sZXR0ZXIgYW5kIHJlbWFpbmluZyB0ZXh0IGFyZSBzZXBhcmF0ZSByZW5kZXJlcnMg
YnV0IHNoYXJlIG9uZSBET00KKy8vIHRleHQgbm9kZS4gdXBzdHJlYW0vZG93bnN0cmVhbSBtdXN0
IG5vdCBjcm9zcyB0aGlzIGJvdW5kYXJ5LCBqdXN0IGxpa2UgdGhleQorLy8gbXVzdCBub3QgY3Jv
c3MgdmlzdWFsbHkgZGlzdGluY3Qgbm9kZSBib3VuZGFyaWVzLgorc3RhdGljIGJvb2wgY3Jvc3Nl
c0ZpcnN0TGV0dGVyQm91bmRhcnkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3Qg
UG9zaXRpb25JdGVyYXRvciYgY3VycmVudCwgY29uc3QgUG9zaXRpb25JdGVyYXRvciYgcHJldmlv
dXNMYXN0VmlzaWJsZSkKK3sKKyAgICBhdXRvKiB0ZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7CisgICAgaWYgKCF0ZXh0RnJhZ21lbnQg
fHwgIXRleHRGcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGF1dG8gZnJhZ21lbnRTdGFydCA9IHN0YXRpY19jYXN0PGludD4odGV4dEZyYWdtZW50LT5z
dGFydCgpKTsKKyAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBjdXJyZW50Lm9mZnNldEluTGVhZk5v
ZGUoKTsKKyAgICBhdXRvIGxhc3RPZmZzZXQgPSBwcmV2aW91c0xhc3RWaXNpYmxlLm9mZnNldElu
TGVhZk5vZGUoKTsKKyAgICAvLyBPbmUgb2Zmc2V0IGlzIGluIHRoZSBmaXJzdC1sZXR0ZXIgcmFu
Z2UgYW5kIHRoZSBvdGhlciBpcyBub3QuCisgICAgLy8gT2Zmc2V0cyBhdCBmcmFnbWVudFN0YXJ0
IGJlbG9uZyB0byB0aGUgcmVtYWluaW5nIGZyYWdtZW50LCBub3QgdGhlIGZpcnN0LWxldHRlci4K
KyAgICByZXR1cm4gKGN1cnJlbnRPZmZzZXQgPCBmcmFnbWVudFN0YXJ0KSAhPSAobGFzdE9mZnNl
dCA8IGZyYWdtZW50U3RhcnQpOworfQorCisvLyBDb252ZXJ0IGEgRE9NIG9mZnNldCB0byBmcmFn
bWVudC1sb2NhbCBmb3IgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIHdpdGggZmlyc3QtbGV0dGVy
Lgorc3RhdGljIHVuc2lnbmVkIGZpcnN0TGV0dGVyQWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2lnbmVkIG9mZnNldCkKK3sKKyAgICBp
ZiAoYXV0byogdGV4dEZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVu
dD4ocmVuZGVyZXIpOyB0ZXh0RnJhZ21lbnQgJiYgdGV4dEZyYWdtZW50LT5maXJzdExldHRlcigp
ICYmIG9mZnNldCA+PSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpCisgICAgICAgIHJldHVybiBvZmZz
ZXQgLSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogLy8g
dXBzdHJlYW0oKSBhbmQgZG93bnN0cmVhbSgpIHdhbnQgdG8gcmV0dXJuIHBvc2l0aW9ucyB0aGF0
IGFyZSBlaXRoZXIgaW4gYQogLy8gdGV4dCBub2RlIG9yIGF0IGp1c3QgYmVmb3JlIGEgbm9uLXRl
eHQgbm9kZS4gIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgdGhhdC4KIHN0YXRpYyBib29sIGlzU3Ry
ZWFtZXIoY29uc3QgUG9zaXRpb25JdGVyYXRvciYgcG9zKQpAQCAtNzEyLDYgKzczNywxMCBAQCBQ
b3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1
bGUpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKKyAgICAg
ICAgLy8gRG9uJ3QgbW92ZSBwYXN0IHRoZSBmaXJzdC1sZXR0ZXIgYm91bmRhcnkgd2l0aGluIGEg
dGV4dCBub2RlLgorICAgICAgICBpZiAoY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkoKnJlbmRl
cmVyLCBjdXJyZW50UG9zaXRpb24sIGxhc3RWaXNpYmxlKSkKKyAgICAgICAgICAgIHJldHVybiBs
YXN0VmlzaWJsZTsKKwogICAgICAgICAvLyB0cmFjayBsYXN0IHZpc2libGUgc3RyZWFtZXIgcG9z
aXRpb24KICAgICAgICAgaWYgKGlzU3RyZWFtZXIoY3VycmVudFBvc2l0aW9uKSkKICAgICAgICAg
ICAgIGxhc3RWaXNpYmxlID0gY3VycmVudFBvc2l0aW9uOwpAQCAtNzQwLDEwICs3NjksMTAgQEAg
UG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBy
dWxlKSBjb25zdAogICAgICAgICAgICAgICAgIC8vIHJlbmRlciB0cmVlIHdoaWNoIGNhbiBoYXZl
IGEgZGlmZmVyZW50IGxlbmd0aCBkdWUgdG8gY2FzZSB0cmFuc2Zvcm1hdGlvbi4KICAgICAgICAg
ICAgICAgICAvLyBVbnRpbCB3ZSByZXNvbHZlIHRoYXQsIGRpc2FibGUgdGhpcyBzbyB3ZSBjYW4g
cnVuIHRoZSBsYXlvdXQgdGVzdHMhCiAgICAgICAgICAgICAgICAgLy9BU1NFUlQoY3VycmVudE9m
ZnNldCA+PSByZW5kZXJlci0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY3VycmVudE5vZGUucHRyKCksIHJlbmRl
cmVyLT5jYXJldE1heE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgY2FyZXRNYXhPZmZzZXQoY3Vy
cmVudE5vZGUpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5zaWduZWQgdGV4dE9m
ZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCk7CisgICAgICAgICAgICBh
dXRvIHRleHRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRnJhZ21lbnRMb2NhbE9mZnNldCgq
dGV4dFJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpKTsKICAgICAg
ICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDspIHsKICAgICAgICAgICAg
ICAgICBpZiAodGV4dE9mZnNldCA+IGJveC0+c3RhcnQoKSAmJiB0ZXh0T2Zmc2V0IDw9IGJveC0+
ZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CkBAIC04
MjcsNiArODU2LDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpkb3duc3RyZWFtKEVkaXRpbmdCb3Vu
ZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAorICAgICAgICAvLyBEb24ndCBtb3ZlIHBhc3QgdGhlIGZpcnN0LWxldHRlciBib3VuZGFy
eSB3aXRoaW4gYSB0ZXh0IG5vZGUuCisgICAgICAgIGlmIChjcm9zc2VzRmlyc3RMZXR0ZXJCb3Vu
ZGFyeSgqcmVuZGVyZXIsIGN1cnJlbnRQb3NpdGlvbiwgbGFzdFZpc2libGUpKQorICAgICAgICAg
ICAgcmV0dXJuIGxhc3RWaXNpYmxlOworCiAgICAgICAgIC8vIHRyYWNrIGxhc3QgdmlzaWJsZSBz
dHJlYW1lciBwb3NpdGlvbgogICAgICAgICBpZiAoaXNTdHJlYW1lcihjdXJyZW50UG9zaXRpb24p
KQogICAgICAgICAgICAgbGFzdFZpc2libGUgPSBjdXJyZW50UG9zaXRpb247CkBAIC04NDksNyAr
ODgyLDcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VDb250YWlu
ZXJPZmZzZXRQb3NpdGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgdGV4dFJlbmRlcmVyLT5jYXJldE1p
bk9mZnNldCgpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5zaWduZWQgdGV4dE9m
ZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCk7CisgICAgICAgICAgICBh
dXRvIHRleHRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRnJhZ21lbnRMb2NhbE9mZnNldCgq
dGV4dFJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpKTsKICAgICAg
ICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDspIHsKICAgICAgICAgICAg
ICAgICBpZiAoIWJveC0+bGVuZ3RoKCkgJiYgdGV4dE9mZnNldCA9PSBib3gtPnN0YXJ0KCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CkBAIC04OTgsNyArOTMx
LDEzIEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNX
aXRoSGVpZ2h0KGNvbnN0IFJlbmRlckVsZW1lbnQmCiAgICAgYXV0byBpc0hvcml6b250YWwgPSBy
ZW5kZXJlci5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIENoZWNrZWRQdHIgc3RvcCA9
IHJlbmRlcmVyLm5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbigpOwogICAgIGZvciAoQ2hlY2tl
ZFB0ciBkZXNjZW5kYW50ID0gcmVuZGVyZXIuZmlyc3RDaGlsZCgpOyBkZXNjZW5kYW50ICYmIGRl
c2NlbmRhbnQgIT0gc3RvcDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblByZU9yZGVy
KCkpIHsKLSAgICAgICAgaWYgKCFkZXNjZW5kYW50LT5ub25Qc2V1ZG9Ob2RlKCkpCisgICAgICAg
IGF1dG8gc2hvdWxkU2tpcCA9IFsmXSB7CisgICAgICAgICAgICBpZiAoZGVzY2VuZGFudC0+bm9u
UHNldWRvTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IENoZWNrZWRQdHIgcmVuZGVyRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJFbGVtZW50
PigqZGVzY2VuZGFudCk7CisgICAgICAgICAgICByZXR1cm4gIXJlbmRlckVsZW1lbnQgfHwgIXJl
bmRlckVsZW1lbnQtPmlzRmlyc3RMZXR0ZXIoKTsKKyAgICAgICAgfTsKKyAgICAgICAgaWYgKHNo
b3VsZFNraXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gYm91bmRp
bmdCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdKGF1dG8gcmVjdCkgewpAQCAtOTE2LDcgKzk1NSw3IEBA
IGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNXaXRoSGVp
Z2h0KGNvbnN0IFJlbmRlckVsZW1lbnQmCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJJbmxpbmUgPSBkeW5hbWljRG93bmNhc3Q8
UmVuZGVySW5saW5lPigqZGVzY2VuZGFudCkpIHsKLSAgICAgICAgICAgIGlmIChpc0VtcHR5SW5s
aW5lKCpyZW5kZXJJbmxpbmUpICYmIGJvdW5kaW5nQm94TG9naWNhbEhlaWdodChyZW5kZXJJbmxp
bmUtPmxpbmVzQm91bmRpbmdCb3goKSkpCisgICAgICAgICAgICBpZiAoKHJlbmRlcklubGluZS0+
aXNGaXJzdExldHRlcigpIHx8IGlzRW1wdHlJbmxpbmUoKnJlbmRlcklubGluZSkpICYmIGJvdW5k
aW5nQm94TG9naWNhbEhlaWdodChyZW5kZXJJbmxpbmUtPmxpbmVzQm91bmRpbmdCb3goKSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQpAQCAtOTg1LDggKzEwMjQsMTAgQEAgYm9vbCBQb3NpdGlvbjo6aXNDYW5kaWRhdGUoKSBj
b25zdAogICAgICAgICByZXR1cm4gIW1fb2Zmc2V0ICYmIG1fYW5jaG9yVHlwZSAhPSBQb3NpdGlv
bklzQWZ0ZXJBbmNob3IgJiYgIW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUtPnBhcmVudE5vZGUo
KSk7CiAgICAgfQogCi0gICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gIW5vZGVJc1VzZXJT
ZWxlY3ROb25lKG5vZGUuZ2V0KCkpICYmIHJlbmRlclRleHQtPmNvbnRhaW5zQ2FyZXRPZmZzZXQo
bV9vZmZzZXQpOworICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkgeworICAgICAgICBhdXRvIFtyZXNvbHZlZFRleHQs
IHJlc29sdmVkT2Zmc2V0XSA9IHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAg
ICAgIHJldHVybiAhbm9kZUlzVXNlclNlbGVjdE5vbmUobm9kZS5nZXQoKSkgJiYgcmVzb2x2ZWRU
ZXh0ICYmIHJlc29sdmVkVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChyZXNvbHZlZE9mZnNldCk7
CisgICAgfQogCiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlT3JBZnRlck5vZGVJc0NhbmRpZGF0ZSgq
bm9kZSkpIHsKICAgICAgICAgcmV0dXJuICgoYXRGaXJzdEVkaXRpbmdQb3NpdGlvbkZvck5vZGUo
KSAmJiBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0JlZm9yZUFuY2hvcikKQEAgLTEwMTMsOSAr
MTA1NCwxMCBAQCBib29sIFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgpIGNvbnN0CiAKIGJvb2wgUG9z
aXRpb246OmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSBjb25zdAogewotICAgIFJlZlB0ciB0ZXh0ID0g
ZHluYW1pY0Rvd25jYXN0PFRleHQ+KGRlcHJlY2F0ZWROb2RlKCkpOwotICAgIENoZWNrZWRQdHIg
cmVuZGVyZXIgPSB0ZXh0ID8gdGV4dC0+cmVuZGVyZXIoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJu
IHJlbmRlcmVyICYmIHJlbmRlcmVyLT5jb250YWluc1JlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0KG1f
b2Zmc2V0KTsKKyAgICBpZiAoIWR5bmFtaWNEb3duY2FzdDxUZXh0PihkZXByZWNhdGVkTm9kZSgp
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gW3JlbmRlclRleHQsIG9mZnNldF0g
PSByZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOworICAgIHJldHVybiByZW5kZXJUZXh0
ICYmIHJlbmRlclRleHQtPmNvbnRhaW5zUmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXQob2Zmc2V0KTsK
IH0KIAogc3RhdGljIGJvb2wgaW5TYW1lRW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChOb2RlKiBh
LCBOb2RlKiBiKQpAQCAtMTA2MSwxNiArMTEwMywxNiBAQCBib29sIFBvc2l0aW9uOjpyZW5kZXJz
SW5EaWZmZXJlbnRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CiAgICAg
aWYgKCFpblNhbWVFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KG5vZGUuZ2V0KCksIHBvc2l0aW9u
Tm9kZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQ2hlY2tlZFB0ciB0ZXh0
UmVuZGVyZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKTsKLSAgICBp
ZiAodGV4dFJlbmRlcmVyICYmICF0ZXh0UmVuZGVyZXItPmNvbnRhaW5zQ2FyZXRPZmZzZXQobV9v
ZmZzZXQpKQorICAgIGF1dG8gW3RleHRSZW5kZXJlciwgdGhpc09mZnNldF0gPSByZXNvbHZlZFRl
eHRSZW5kZXJlckFuZE9mZnNldCgpOworICAgIGlmICh0ZXh0UmVuZGVyZXIgJiYgIXRleHRSZW5k
ZXJlci0+Y29udGFpbnNDYXJldE9mZnNldCh0aGlzT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgQ2hlY2tlZFB0ciB0ZXh0UG9zaXRpb25SZW5kZXJlciA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcik7Ci0gICAgaWYgKHRleHRQb3NpdGlv
blJlbmRlcmVyICYmICF0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y29udGFpbnNDYXJldE9mZnNldChw
b3NpdGlvbi5tX29mZnNldCkpCisgICAgYXV0byBbdGV4dFBvc2l0aW9uUmVuZGVyZXIsIHBvc2l0
aW9uT2Zmc2V0XSA9IHBvc2l0aW9uLnJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCk7Cisg
ICAgaWYgKHRleHRQb3NpdGlvblJlbmRlcmVyICYmICF0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y29u
dGFpbnNDYXJldE9mZnNldChwb3NpdGlvbk9mZnNldCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHVuc2lnbmVkIHRoaXNSZW5kZXJlZE9mZnNldCA9IHRleHRSZW5kZXJlciA/IHRleHRS
ZW5kZXJlci0+Y291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChtX29mZnNldCkgOiBt
X29mZnNldDsKLSAgICB1bnNpZ25lZCBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0ID0gdGV4dFBvc2l0
aW9uUmVuZGVyZXIgPyB0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y291bnRSZW5kZXJlZENoYXJhY3Rl
ck9mZnNldHNVbnRpbChwb3NpdGlvbi5tX29mZnNldCkgOiBwb3NpdGlvbi5tX29mZnNldDsKKyAg
ICB1bnNpZ25lZCB0aGlzUmVuZGVyZWRPZmZzZXQgPSB0ZXh0UmVuZGVyZXIgPyB0ZXh0UmVuZGVy
ZXItPmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwodGhpc09mZnNldCkgOiBtX29m
ZnNldDsKKyAgICB1bnNpZ25lZCBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0ID0gdGV4dFBvc2l0aW9u
UmVuZGVyZXIgPyB0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y291bnRSZW5kZXJlZENoYXJhY3Rlck9m
ZnNldHNVbnRpbChwb3NpdGlvbk9mZnNldCkgOiBwb3NpdGlvbi5tX29mZnNldDsKIAogICAgIGlm
IChyZW5kZXJlciA9PSBwb3NpdGlvblJlbmRlcmVyICYmIHRoaXNSZW5kZXJlZE9mZnNldCA9PSBw
b3NpdGlvblJlbmRlcmVkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTk1LDE2
ICsxMjM3LDUyIEBAIHN0YXRpYyBQb3NpdGlvbiB1cHN0cmVhbUlnbm9yaW5nRWRpdGluZ0JvdW5k
YXJpZXMoUG9zaXRpb24gcG9zaXRpb24pCiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQogCitzdGQ6
OnBhaXI8UmVuZGVyT2JqZWN0KiwgdW5zaWduZWQ+IFBvc2l0aW9uOjpyZW5kZXJlckFuZE9mZnNl
dCgpIGNvbnN0Cit7CisgICAgYXV0byogbm9kZSA9IGRlcHJlY2F0ZWROb2RlKCk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm4geyB7IH0sIHsgfSB9OworICAgIGF1dG8qIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4g
eyB7IH0sIHsgfSB9OworICAgIHVuc2lnbmVkIG9mZnNldCA9IGRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7CisgICAgQ2hlY2tlZFB0ciB0ZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVyVGV4dEZyYWdtZW50PigqcmVuZGVyZXIpOworICAgIGlmICghdGV4dEZyYWdtZW50IHx8ICF0
ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpCisgICAgICAgIHJldHVybiB7IHJlbmRlcmVyLCBv
ZmZzZXQgfTsKKworICAgIC8vIFdoZW4gdGhlIHJlbWFpbmluZyBmcmFnbWVudCBpcyBlbXB0eSAo
ZW50aXJlIHRleHQgaXMgdGhlIGZpcnN0IGxldHRlciksCisgICAgLy8gcm91dGUgdG8gdGhlIGZp
cnN0LWxldHRlciByZW5kZXJlcidzIGVuZCBwb3NpdGlvbiBzbyAiYWZ0ZXIgdGhlIGxhc3QgY2hh
cmFjdGVyIiBpcyBhIHZhbGlkIGNhcmV0IHBvc2l0aW9uLgorICAgIGlmIChvZmZzZXQgPj0gdGV4
dEZyYWdtZW50LT5zdGFydCgpICYmIHRleHRGcmFnbWVudC0+dGV4dCgpLmxlbmd0aCgpKQorICAg
ICAgICByZXR1cm4geyByZW5kZXJlciwgb2Zmc2V0IC0gdGV4dEZyYWdtZW50LT5zdGFydCgpIH07
CisKKyAgICAvLyBJdCBsb29rcyBsaWtlIHdlIGFyZSBvbiB0aGUgZmlyc3QgbGV0dGVyIHJlbmRl
cmVyLgorICAgIENoZWNrZWRQdHIgZmlyc3RMZXR0ZXJSZW5kZXJlciA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJUZXh0Pih0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPmZpcnN0Q2hpbGQoKSk7
CisgICAgaWYgKCFmaXJzdExldHRlclJlbmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4geyB7IH0sIHsgfSB9OworICAgIH0KKworICAgIC8vIFRo
ZSBmaXJzdC1sZXR0ZXIgdGV4dCBtYXkgbm90IHN0YXJ0IGF0IERPTSBvZmZzZXQgMCAoZS5nLiBj
b2xsYXBzZWQgd2hpdGVzcGFjZSBwcmVjZWRlcyB0aGUgZmlyc3QgbGV0dGVyKS4KKyAgICBhdXRv
IGZpcnN0TGV0dGVyU3RhcnQgPSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkgLSBmaXJzdExldHRlclJl
bmRlcmVyLT50ZXh0KCkubGVuZ3RoKCk7CisgICAgcmV0dXJuIG9mZnNldCA+PSBmaXJzdExldHRl
clN0YXJ0ID8gc3RkOjptYWtlX3BhaXIoZmlyc3RMZXR0ZXJSZW5kZXJlciwgb2Zmc2V0IC0gZmly
c3RMZXR0ZXJTdGFydCkgOiBzdGQ6Om1ha2VfcGFpcihudWxscHRyLCAwKTsKK30KKworc3RkOjpw
YWlyPFJlbmRlclRleHQqLCB1bnNpZ25lZD4gUG9zaXRpb246OnJlc29sdmVkVGV4dFJlbmRlcmVy
QW5kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvIFtyZW5kZXJlciwgb2Zmc2V0XSA9IHJlbmRl
cmVyQW5kT2Zmc2V0KCk7CisgICAgaWYgKGF1dG8qIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQorICAgICAgICByZXR1cm4geyByZW5kZXJUZXh0LCBv
ZmZzZXQgfTsKKyAgICByZXR1cm4geyBudWxscHRyLCAwIH07Cit9CisKIElubGluZUJveEFuZE9m
ZnNldCBQb3NpdGlvbjo6aW5saW5lQm94QW5kT2Zmc2V0KEFmZmluaXR5IGFmZmluaXR5LCBUZXh0
RGlyZWN0aW9uIHByaW1hcnlEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYXV0byBjYXJldE9mZnNl
dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIAot
ICAgIFJlZlB0ciBub2RlID0gZGVwcmVjYXRlZE5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAg
ICAgIHJldHVybiB7IHsgfSwgY2FyZXRPZmZzZXQgfTsKLSAgICBDaGVja2VkUHRyIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIFtyZW5kZXJlciwgcmVzb2x2ZWRPZmZzZXRd
ID0gcmVuZGVyZXJBbmRPZmZzZXQoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm4geyB7IH0sIGNhcmV0T2Zmc2V0IH07CisgICAgY2FyZXRPZmZzZXQgPSByZXNvbHZlZE9mZnNl
dDsKIAogICAgIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgYm94OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oCmluZGV4IDcyNTM3OTk3ZjY1Zi4uZmY4YWE0MGU2OTcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uaApAQCAtMzgsNiArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExl
Z2FjeUlubGluZUJveDsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CitjbGFzcyBSZW5kZXJPYmplY3Q7
CitjbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgVGV4dDsKIAogc3RydWN0IEJvdW5kYXJ5UG9pbnQ7
CkBAIC0xMDMsNiArMTA1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9mZnNldEZvclBv
c2l0aW9uQWZ0ZXJBbmNob3IoKTsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5zIHRoZSByZW5kZXJl
ciBhbmQgZnJhZ21lbnQtbG9jYWwgb2Zmc2V0IGZvciB0aGlzIHBvc2l0aW9uLCBjb3JyZWN0bHkK
KyAgICAvLyBoYW5kbGluZyBmaXJzdC1sZXR0ZXIgdGV4dCBmcmFnbWVudCBzcGxpdHMgd2hlcmUg
dGhlIERPTSB0ZXh0IG5vZGUncyByZW5kZXJlcgorICAgIC8vIGlzIHRoZSByZW1haW5pbmcgZnJh
Z21lbnQgcmF0aGVyIHRoYW4gdGhlIGZpcnN0LWxldHRlciBmcmFnbWVudC4KKyAgICBzdGQ6OnBh
aXI8UmVuZGVyT2JqZWN0KiwgdW5zaWduZWQ+IHJlbmRlcmVyQW5kT2Zmc2V0KCkgY29uc3Q7Cisg
ICAgc3RkOjpwYWlyPFJlbmRlclRleHQqLCB1bnNpZ25lZD4gcmVzb2x2ZWRUZXh0UmVuZGVyZXJB
bmRPZmZzZXQoKSBjb25zdDsKKwogICAgIFJlZlB0cjxOb2RlPiBmaXJzdE5vZGUoKSBjb25zdDsK
IAogICAgIC8vIFRoZXNlIGFyZSBjb252ZW5pZW5jZSBtZXRob2RzIHdoaWNoIGFyZSBzbWFydCBh
Ym91dCB3aGV0aGVyIHRoZSBwb3NpdGlvbiBpcyBuZWlnaGJvciBhbmNob3JlZCBvciBwYXJlbnQg
YW5jaG9yZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAppbmRleCA0MDJi
NTFhMDA2MmYuLjM2Nzc2YzAxMTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJh
dG9yLmNwcApAQCAtMTc1LDggKzE3NSwxMiBAQCBib29sIFBvc2l0aW9uSXRlcmF0b3I6OmlzQ2Fu
ZGlkYXRlKCkgY29uc3QKICAgICBpZiAocmVuZGVyZXItPmlzQlIoKSkKICAgICAgICAgcmV0dXJu
IFBvc2l0aW9uKCp0aGlzKS5pc0NhbmRpZGF0ZSgpOwogCi0gICAgaWYgKENoZWNrZWRQdHIgcmVu
ZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKQotICAgICAg
ICByZXR1cm4gIVBvc2l0aW9uOjpub2RlSXNVc2VyU2VsZWN0Tm9uZShhbmNob3JOb2RlLmdldCgp
KSAmJiByZW5kZXJUZXh0LT5jb250YWluc0NhcmV0T2Zmc2V0KG1fb2Zmc2V0SW5BbmNob3IpOwor
ICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4
dD4oKnJlbmRlcmVyKSkgeworICAgICAgICBpZiAoUG9zaXRpb246Om5vZGVJc1VzZXJTZWxlY3RO
b25lKGFuY2hvck5vZGUuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBhdXRvIFtyZXNvbHZlZFRleHQsIHJlc29sdmVkT2Zmc2V0XSA9IFBvc2l0aW9uKCp0aGlzKS5y
ZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOworICAgICAgICByZXR1cm4gcmVzb2x2ZWRU
ZXh0ICYmIHJlc29sdmVkVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChyZXNvbHZlZE9mZnNldCk7
CisgICAgfQogCiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlT3JBZnRlck5vZGVJc0NhbmRpZGF0ZSgq
YW5jaG9yTm9kZSkpCiAgICAgICAgIHJldHVybiAoYXRTdGFydE9mTm9kZSgpIHx8IGF0RW5kT2ZO
b2RlKCkpICYmICFQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5vbmUoYW5jaG9yTm9kZS0+cGFy
ZW50Tm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDA0ODcwMjkwNTky
MC4uNGQyMDA5NzJhZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTY2LDYg
KzY2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZStHZXR0ZXJzSW5saW5lcy5oIgogI2luY2x1
ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlbmRl
cmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5o
IgpAQCAtOTA0LDExICs5MDUsMTggQEAgaW50IGNhcmV0TWF4T2Zmc2V0KGNvbnN0IE5vZGUmIG5v
ZGUpCiAgICAgLy8gRm9yIHJlbmRlcmVkIHRleHQgbm9kZXMsIHJldHVybiB0aGUgbGFzdCBwb3Np
dGlvbiB0aGF0IGEgY2FyZXQgY291bGQgb2NjdXB5LgogICAgIGlmIChhdXRvKiB0ZXh0ID0gZHlu
YW1pY0Rvd25jYXN0PFRleHQ+KG5vZGUpKSB7CiAgICAgICAgIGlmIChDaGVja2VkUHRyIHJlbmRl
cmVyID0gdGV4dC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+Y2Fy
ZXRNYXhPZmZzZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdExldHRlckFkanVzdGVkRE9N
T2Zmc2V0KCpyZW5kZXJlciwgcmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCkpOwogICAgIH0KICAg
ICByZXR1cm4gbGFzdE9mZnNldEZvckVkaXRpbmcobm9kZSk7CiB9CiAKK3Vuc2lnbmVkIGZpcnN0
TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5z
aWduZWQgb2Zmc2V0KQoreworICAgIGlmIChhdXRvKiB0ZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93
bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHRleHRGcmFnbWVudCAmJiB0ZXh0
RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyB0ZXh0RnJh
Z21lbnQtPnN0YXJ0KCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogYm9vbCBsaW5lQnJlYWtF
eGlzdHNBdFZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQog
ewogICAgIHJldHVybiBsaW5lQnJlYWtFeGlzdHNBdFBvc2l0aW9uKHBvc2l0aW9uLmRlZXBFcXVp
dmFsZW50KCkuZG93bnN0cmVhbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKaW5kZXggNjFl
NjEwMzVjNjUwLi5iMDg1ZmQ3NDg5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCkBAIC03
OSw2ICs3OSw3IEBAIE5vZGUqIHByZXZpb3VzTGVhZk5vZGUoY29uc3QgTm9kZSopOwogV0VCQ09S
RV9FWFBPUlQgaW50IGxhc3RPZmZzZXRGb3JFZGl0aW5nKGNvbnN0IE5vZGUmKTsKIGludCBjYXJl
dE1pbk9mZnNldChjb25zdCBOb2RlJik7CiBpbnQgY2FyZXRNYXhPZmZzZXQoY29uc3QgTm9kZSYp
OwordW5zaWduZWQgZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldChjb25zdCBSZW5kZXJPYmpl
Y3QmLCB1bnNpZ25lZCBvZmZzZXQpOwogCiBib29sIGhhc0VkaXRhYmxlU3R5bGUoY29uc3QgTm9k
ZSYsIEVkaXRhYmxlVHlwZSk7CiBib29sIGlzRWRpdGFibGVOb2RlKGNvbnN0IE5vZGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYjliNGM1OTE1ZjQw
Li40MjRiMWE5ODM4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCkBAIC0yNDM2LDEyICsyNDM2LDEwIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFw
cGVhcmFuY2UoKQogICAgIC8vIFdlIGNhbiBnZXQgaW50byBhIHN0YXRlIHdoZXJlIHRoZSBzZWxl
Y3Rpb24gZW5kcG9pbnRzIG1hcCB0byB0aGUgc2FtZSBWaXNpYmxlUG9zaXRpb24gd2hlbiBhIHNl
bGVjdGlvbiBpcyBkZWxldGVkCiAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB5ZXQgbm90aWZ5IHRo
ZSBGcmFtZVNlbGVjdGlvbiBvZiB0ZXh0IHJlbW92YWwuCiAgICAgaWYgKENoZWNrZWRQdHIgdmll
dyA9IGRvY3VtZW50LT5yZW5kZXJWaWV3KCk7IHN0YXJ0UG9zLmlzTm90TnVsbCgpICYmIGVuZFBv
cy5pc05vdE51bGwoKSAmJiBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgIT0gc2VsZWN0aW9uLnZp
c2libGVFbmQoKSkgewotICAgICAgICBDaGVja2VkUHRyIHN0YXJ0UmVuZGVyZXIgPSBzdGFydFBv
cy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgICAgICBpbnQgc3RhcnRPZmZzZXQg
PSBzdGFydFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgICAgICBDaGVja2VkUHRy
IGVuZFJlbmRlcmVyID0gZW5kUG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAg
ICAgIGludCBlbmRPZmZzZXQgPSBlbmRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKLSAg
ICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ID49IDAgJiYgZW5kT2Zmc2V0ID49IDApOwotICAgICAg
ICB2aWV3LT5zZWxlY3Rpb24oKS5zZXQoeyBzdGFydFJlbmRlcmVyLCBlbmRSZW5kZXJlciwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVu
ZE9mZnNldCkgfSk7CisgICAgICAgIGF1dG8gW3N0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0XSA9
IHN0YXJ0UG9zLnJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgICAgIGF1dG8gW2VuZFJlbmRlcmVy
LCBlbmRPZmZzZXRdID0gZW5kUG9zLnJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgICAgIGlmIChz
dGFydFJlbmRlcmVyICYmIGVuZFJlbmRlcmVyKQorICAgICAgICAgICAgdmlldy0+c2VsZWN0aW9u
KCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bmRlcmVkUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0
aW9uLmNwcAppbmRleCBjZDVjNzkwYzhkZTcuLjFhZjNmNGM0NDU4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogCiAjaW5jbHVkZSAiQ2FyZXRSZWN0Q29tcHV0YXRp
b24uaCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0
LmgiCiAjaW5jbHVkZSAiTm9kZUlubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxp
bmVzLmgiCkBAIC04NSw2ICs4Niw3IEBAIFJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRp
b24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSkKICAgICBpZiAo
cG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fbm9kZSA9IHBvc2l0
aW9uLmRlcHJlY2F0ZWROb2RlKCk7CiAgICAgYXV0byBib3hBbmRPZmZzZXQgPSBwb3NpdGlvbi5p
bmxpbmVCb3hBbmRPZmZzZXQoYWZmaW5pdHkpOwogICAgIG1fYm94ID0gYm94QW5kT2Zmc2V0LmJv
eDsKICAgICBtX29mZnNldCA9IGJveEFuZE9mZnNldC5vZmZzZXQ7CkBAIC0yMDYsNyArMjA4LDcg
QEAgUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlE
aVJ1bigpIGNvbnN0CiAgICAgQVNTRVJUKGF0TGVmdEJvdW5kYXJ5T2ZCaWRpUnVuKCkpOwogCiAg
ICAgaWYgKGF0TGVmdG1vc3RPZmZzZXRJbkJveCgpKQotICAgICAgICByZXR1cm4gbWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG1fcmVuZGVyZXItPm5vZGUoKSkuZ2V0KCksIG1f
b2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJv
dGVjdChtX25vZGUuZ2V0KCkpLmdldCgpLCBtX29mZnNldCk7CiAKICAgICByZXR1cm4gbWFrZURl
cHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG5leHRMZWFmT25MaW5lKCktPnJlbmRlcmVy
KCkubm9kZSgpKS5nZXQoKSwgbmV4dExlYWZPbkxpbmUoKS0+bGVmdG1vc3RDYXJldE9mZnNldCgp
KTsKIH0KQEAgLTIxNSw4ICsyMTcsMTAgQEAgUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9z
aXRpb25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdAogewogICAgIEFTU0VSVChhdFJp
Z2h0Qm91bmRhcnlPZkJpZGlSdW4oKSk7CiAKLSAgICBpZiAoYXRSaWdodG1vc3RPZmZzZXRJbkJv
eCgpKQotICAgICAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0
KG1fcmVuZGVyZXItPm5vZGUoKSkuZ2V0KCksIG1fb2Zmc2V0KTsKKyAgICBpZiAoYXRSaWdodG1v
c3RPZmZzZXRJbkJveCgpKSB7CisgICAgICAgIGF1dG8gb2Zmc2V0ID0gZmlyc3RMZXR0ZXJBZGp1
c3RlZERPTU9mZnNldCgqbV9yZW5kZXJlciwgbV9vZmZzZXQpOworICAgICAgICByZXR1cm4gbWFr
ZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG1fbm9kZS5nZXQoKSkuZ2V0KCksIG9m
ZnNldCk7CisgICAgfQogCiAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24o
cHJvdGVjdChwcmV2aW91c0xlYWZPbkxpbmUoKS0+cmVuZGVyZXIoKS5ub2RlKCkpLmdldCgpLCBw
cmV2aW91c0xlYWZPbkxpbmUoKS0+cmlnaHRtb3N0Q2FyZXRPZmZzZXQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCmluZGV4IDc0YmU0ZTQ3ZGNiNC4uZTdl
NTgwYTgxNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9z
aXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaApA
QCAtODksNiArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYXRSaWdodEJvdW5kYXJ5T2ZCaWRp
UnVuKFNob3VsZE1hdGNoQmlkaUxldmVsLCB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbE9mUnVuKSBj
b25zdDsKIAogICAgIFNpbmdsZVRocmVhZFdlYWtQdHI8Y29uc3QgUmVuZGVyT2JqZWN0PiBtX3Jl
bmRlcmVyOworICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgSW5saW5lSXRlcmF0b3I6Okxl
YWZCb3hJdGVyYXRvciBtX2JveDsKICAgICB1bnNpZ25lZCBtX29mZnNldCB7IDAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGVmY2ExN2EwZGExOS4uZWJh
MTI2ODM3MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC02
MDcsNiArNjA3LDggQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICBD
aGVja2VkUmVmIHJlbmRlcmVyID0gKnRleHROb2RlLT5yZW5kZXJlcigpOwogICAgIG1fbGFzdFRl
eHROb2RlID0gdGV4dE5vZGUucHRyKCk7CiAgICAgYXV0byByZW5kZXJlclRleHQgPSByZW5kZXJl
clRleHRGb3JCZWhhdmlvcihyZW5kZXJlci5nZXQoKSk7CisgICAgLy8gdGV4dEZyYWdtZW50IGlz
IHRoZSByZW5kZXJlciB0aGF0IGhvbGRzIHRoZSB0cmFpbGluZyBjb250ZW50IGFuZCBoYXMgYSBy
ZWZlcmVuY2UgdG8gdGhlIGZpcnN0IGxldHRlciByZW5kZXJlci4KKyAgICBDaGVja2VkUHRyIHRl
eHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVy
LmdldCgpKTsKIAogICAgIC8vIGhhbmRsZSBwcmUtZm9ybWF0dGVkIHRleHQKICAgICBpZiAoIXJl
bmRlcmVyLT5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CkBAIC02MTUsOCArNjE3LDgg
QEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJyAnLCBXVEY6Om1vdmUodGV4dE5vZGUpLCBudWxscHRyLCBydW5TdGFydCwgcnVu
U3RhcnQpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGlm
IChDaGVja2VkUHRyIHJlbmRlclRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJU
ZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsgcmVuZGVyVGV4dEZyYWdtZW50ICYmICFtX2hhbmRsZWRG
aXJzdExldHRlciAmJiAhbV9vZmZzZXQpIHsKLSAgICAgICAgICAgIGhhbmRsZVRleHROb2RlRmly
c3RMZXR0ZXIoKnJlbmRlclRleHRGcmFnbWVudCk7CisgICAgICAgIGlmICh0ZXh0RnJhZ21lbnQg
JiYgIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmICFtX29mZnNldCkgeworICAgICAgICAgICAgaGFu
ZGxlVGV4dE5vZGVGaXJzdExldHRlcigqdGV4dEZyYWdtZW50KTsKICAgICAgICAgICAgIGlmICht
X2ZpcnN0TGV0dGVyVGV4dCkgewogICAgICAgICAgICAgICAgIFN0cmluZyBmaXJzdExldHRlciA9
IG1fZmlyc3RMZXR0ZXJUZXh0LT50ZXh0KCk7CiAgICAgICAgICAgICAgICAgZW1pdFRleHQodGV4
dE5vZGUsICpwcm90ZWN0KG1fZmlyc3RMZXR0ZXJUZXh0KSwgbV9vZmZzZXQsIG1fb2Zmc2V0ICsg
Zmlyc3RMZXR0ZXIubGVuZ3RoKCkpOwpAQCAtNjI3LDkgKzYyOSwxNSBAQCBib29sIFRleHRJdGVy
YXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICB9CiAgICAgICAgIGlmIChyZW5kZXJlci0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhbV9iZWhhdmlv
cnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2liaWxpdHkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpbnQgcmVuZGVyZXJUZXh0TGVu
Z3RoID0gcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwotICAgICAgICBpbnQgZW5kID0gKHRleHROb2Rl
LnB0cigpID09IG1fZW5kQ29udGFpbmVyKSA/IG1fZW5kT2Zmc2V0IDogSU5UX01BWDsKLSAgICAg
ICAgaW50IHJ1bkVuZCA9IHN0ZDo6bWluKHJlbmRlcmVyVGV4dExlbmd0aCwgZW5kKTsKKyAgICAg
ICAgYXV0byByZW5kZXJlclRleHRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlcmVyVGV4
dC5sZW5ndGgoKSk7CisgICAgICAgIGF1dG8gZW5kID0gKHRleHROb2RlLnB0cigpID09IG1fZW5k
Q29udGFpbmVyKSA/IG1fZW5kT2Zmc2V0IDogSU5UX01BWDsKKyAgICAgICAgaWYgKHRleHRGcmFn
bWVudCAmJiB0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpIHsKKyAgICAgICAgICAgIC8vIFRo
ZSByZW1haW5pbmcgdGV4dCBmcmFnbWVudCdzIHRleHQgaXMgZnJhZ21lbnQtbG9jYWwuIENvbnZl
cnQgRE9NIG9mZnNldHMgdG8gZnJhZ21lbnQtbG9jYWwgc28gd2UgY2FuIGNvbXBhcmUgYWdhaW5z
dCB0aGUgcmVuZGVyZXIncyB0ZXh0IGxlbmd0aC4KKyAgICAgICAgICAgIGF1dG8gZnJhZ21lbnRT
dGFydCA9IHN0YXRpY19jYXN0PGludD4odGV4dEZyYWdtZW50LT5zdGFydCgpKTsKKyAgICAgICAg
ICAgIHJ1blN0YXJ0ID0gc3RkOjptYXgoMCwgcnVuU3RhcnQgLSBmcmFnbWVudFN0YXJ0KTsKKyAg
ICAgICAgICAgIGVuZCA9IGVuZCA9PSBJTlRfTUFYID8gSU5UX01BWCA6IHN0ZDo6bWF4KDAsIGVu
ZCAtIGZyYWdtZW50U3RhcnQpOworICAgICAgICB9CisgICAgICAgIGF1dG8gcnVuRW5kID0gc3Rk
OjptaW4ocmVuZGVyZXJUZXh0TGVuZ3RoLCBlbmQpOwogCiAgICAgICAgIGlmIChydW5TdGFydCA+
PSBydW5FbmQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY0MCw4ICs2NDgsOCBAQCBi
b29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogCiAgICAgc3RkOjp0aWUobV90ZXh0
UnVuLCBtX3RleHRSdW5Mb2dpY2FsT3JkZXJDYWNoZSkgPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RU
ZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IocmVuZGVyZXIuZ2V0KCkpOwogCi0gICAgaWYgKENoZWNr
ZWRQdHIgcmVuZGVyVGV4dEZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFn
bWVudD4ocmVuZGVyZXIpOyByZW5kZXJUZXh0RnJhZ21lbnQgJiYgIW1faGFuZGxlZEZpcnN0TGV0
dGVyICYmICFtX29mZnNldCkKLSAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcigqcmVu
ZGVyVGV4dEZyYWdtZW50KTsKKyAgICBpZiAodGV4dEZyYWdtZW50ICYmICFtX2hhbmRsZWRGaXJz
dExldHRlciAmJiAhbV9vZmZzZXQpCisgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIo
KnRleHRGcmFnbWVudCk7CiAgICAgZWxzZSBpZiAoIW1fdGV4dFJ1biAmJiByZW5kZXJlclRleHQu
bGVuZ3RoKCkpIHsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0
b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC02NjUsMTIgKzY3MywyMSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4
dFJ1bigpCiAKICAgICBhdXRvIFtmaXJzdFRleHRSdW4sIG9yZGVyQ2FjaGVdID0gSW5saW5lSXRl
cmF0b3I6OmZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKHJlbmRlcmVyKTsKIAotICAgIGF1
dG8gcmVuZGVyZXJUZXh0ID0gcmVuZGVyZXJUZXh0Rm9yQmVoYXZpb3IocmVuZGVyZXIuZ2V0KCkp
OwotICAgIHVuc2lnbmVkIHJhbmdlU3RhcnQgPSBtX29mZnNldDsKLSAgICBhdXRvIHJhbmdlRW5k
ID0gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4geyB9OwotICAgIGlmICh0ZXh0Tm9kZS5wdHIoKSA9
PSBtX2VuZENvbnRhaW5lcikKLSAgICAgICAgcmFuZ2VFbmQgPSBtX2VuZE9mZnNldDsKKyAgICAv
LyBGb3IgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIGFmdGVyIGEgZmlyc3QtbGV0dGVyIHNwbGl0
LCB0ZXh0IGJveCBvZmZzZXRzIGFyZSBmcmFnbWVudC1sb2NhbCBidXQgbV9vZmZzZXQvbV9lbmRP
ZmZzZXQgYXJlIERPTSBvZmZzZXRzLgorICAgIHVuc2lnbmVkIHJlbWFpbmluZ0ZyYWdtZW50U3Rh
cnQgPSAwOworICAgIGlmIChhdXRvKiByZW5kZXJUZXh0ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRl
clRleHRGcmFnbWVudD4ocmVuZGVyZXIuZ2V0KCkpOyByZW5kZXJUZXh0ICYmIHJlbmRlclRleHQt
PmZpcnN0TGV0dGVyKCkpCisgICAgICAgIHJlbWFpbmluZ0ZyYWdtZW50U3RhcnQgPSByZW5kZXJU
ZXh0LT5zdGFydCgpOworCisgICAgYXV0byB0b0ZyYWdtZW50TG9jYWwgPSBbJl0odW5zaWduZWQg
ZG9tT2Zmc2V0KSB7CisgICAgICAgIHJldHVybiBkb21PZmZzZXQgPiByZW1haW5pbmdGcmFnbWVu
dFN0YXJ0ID8gZG9tT2Zmc2V0IC0gcmVtYWluaW5nRnJhZ21lbnRTdGFydCA6IDA7CisgICAgfTsK
KyAgICBhdXRvIHRvRE9NT2Zmc2V0ID0gWyZdKHVuc2lnbmVkIGxvY2FsT2Zmc2V0KSB7CisgICAg
ICAgIHJldHVybiBsb2NhbE9mZnNldCArIHJlbWFpbmluZ0ZyYWdtZW50U3RhcnQ7CisgICAgfTsK
IAorICAgIGF1dG8gcmVuZGVyZXJUZXh0ID0gcmVuZGVyZXJUZXh0Rm9yQmVoYXZpb3IocmVuZGVy
ZXIuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2VTdGFydCA9IHRvRnJhZ21lbnRMb2NhbChtX29mZnNl
dCk7CisgICAgYXV0byByYW5nZUVuZCA9IHRleHROb2RlLnB0cigpID09IG1fZW5kQ29udGFpbmVy
ID8gc3RkOjptYWtlX29wdGlvbmFsKHRvRnJhZ21lbnRMb2NhbChtX2VuZE9mZnNldCkpIDogc3Rk
OjpudWxsb3B0OwogICAgIHdoaWxlIChtX3RleHRSdW4pIHsKICAgICAgICAgYXV0byB0ZXh0UnVu
U3RhcnQgPSBtX3RleHRSdW4tPnN0YXJ0KCk7CiAgICAgICAgIGF1dG8gdGV4dFJ1bkVuZCA9IHRl
eHRSdW5TdGFydCArIG1fdGV4dFJ1bi0+bGVuZ3RoKCk7CkBAIC03MDQsNyArNzIxLDcgQEAgdm9p
ZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogICAgICAgICAgICAgLy8gVGhpcyBlZmZl
Y3RpdmVseSB0cmFuc2xhdGVzIG5ld2xpbmVzIGFuZCB0YWJzIHRvIHNwYWNlcyB3aXRob3V0IGNv
cHlpbmcgdGhlIHRleHQuCiAgICAgICAgICAgICBpZiAoaXNOZXdsaW5lT3JUYWIocmVuZGVyZXJU
ZXh0W3J1blN0YXJ0XSkpIHsKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4
dE5vZGUuY29weVJlZigpLCBudWxscHRyLCBydW5TdGFydCwgcnVuU3RhcnQgKyAxKTsKLSAgICAg
ICAgICAgICAgICBtX29mZnNldCA9IHJ1blN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBtX29m
ZnNldCA9IHRvRE9NT2Zmc2V0KHJ1blN0YXJ0ICsgMSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIGF1dG8gc3VicnVuRW5kID0gcnVuU3RhcnQgKyAxOwogICAgICAgICAg
ICAgICAgIGZvciAoOyBzdWJydW5FbmQgPCBydW5FbmQ7ICsrc3VicnVuRW5kKSB7CkBAIC03MTYs
NyArNzMzLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogICAgICAgICAg
ICAgICAgICAgICBpZiAobGFzdFNwYWNlQ29sbGFwc2VkQnlOZXh0Tm9uVGV4dFJ1bikKICAgICAg
ICAgICAgICAgICAgICAgICAgICsrc3VicnVuRW5kOyAvLyBydW5FbmQgc3RvcHBlZCBiZWZvcmUg
bGFzdCBzcGFjZS4gSW5jcmVtZW50IGJ5IG9uZSB0byByZXN0b3JlIHRoZSBzcGFjZS4KICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9vZmZzZXQgPSBzdWJydW5FbmQ7CisgICAg
ICAgICAgICAgICAgbV9vZmZzZXQgPSB0b0RPTU9mZnNldChzdWJydW5FbmQpOwogICAgICAgICAg
ICAgICAgIGVtaXRUZXh0KHRleHROb2RlLCByZW5kZXJlciwgcnVuU3RhcnQsIHN1YnJ1bkVuZCk7
CiAgICAgICAgICAgICB9CiAKQEAgLTEyMDEsOCArMTIxOCwxMSBAQCB2b2lkIFRleHRJdGVyYXRv
cjo6ZW1pdFRleHQoVGV4dCYgdGV4dE5vZGUsIFJlbmRlclRleHQmIHJlbmRlcmVyLCBpbnQgdGV4
dFN0YXJ0TwogCiAgICAgbV9wb3NpdGlvbk5vZGUgPSB0ZXh0Tm9kZTsKICAgICBtX3Bvc2l0aW9u
T2Zmc2V0QmFzZU5vZGUgPSBudWxscHRyOwotICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IHRl
eHRTdGFydE9mZnNldDsKLSAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gdGV4dEVuZE9mZnNldDsK
KyAgICAvLyBGb3IgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIGFmdGVyIGEgZmlyc3QtbGV0dGVy
IHNwbGl0LCB0aGUgdGV4dCBvZmZzZXRzIGFyZQorICAgIC8vIGZyYWdtZW50LWxvY2FsIGJ1dCBw
b3NpdGlvbiBvZmZzZXRzIG5lZWQgdG8gYmUgRE9NLXJlbGF0aXZlIGZvciByYW5nZSgpIHRvCisg
ICAgLy8gcmV0dXJuIGNvcnJlY3QgYm91bmRhcnkgcG9pbnRzICh1c2VkIGJ5IHdvcmQvc2VudGVu
Y2UgYm91bmRhcnkgZGV0ZWN0aW9uKS4KKyAgICBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPSBmaXJz
dExldHRlckFkanVzdGVkRE9NT2Zmc2V0KHJlbmRlcmVyLCB0ZXh0U3RhcnRPZmZzZXQpOworICAg
IG1fcG9zaXRpb25FbmRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KHJlbmRl
cmVyLCB0ZXh0RW5kT2Zmc2V0KTsKIAogICAgIG1fbGFzdENoYXJhY3RlciA9IHN0cmluZ1t0ZXh0
RW5kT2Zmc2V0IC0gMV07CiAgICAgbV9jb3B5YWJsZVRleHQuc2V0KFdURjo6bW92ZShzdHJpbmcp
LCB0ZXh0U3RhcnRPZmZzZXQsIHRleHRFbmRPZmZzZXQgLSB0ZXh0U3RhcnRPZmZzZXQpOwpAQCAt
MTM2MSw3MCArMTM4MSw1MiBAQCBib29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHROb2RlKCkKIHsKICAgICBtX2xhc3RUZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+
KG1fbm9kZS5nZXQoKSk7CiAKLSAgICBpbnQgc3RhcnRPZmZzZXQ7Ci0gICAgaW50IG9mZnNldElu
Tm9kZTsKLSAgICBDaGVja2VkUHRyIHJlbmRlcmVyID0gaGFuZGxlRmlyc3RMZXR0ZXIoc3RhcnRP
ZmZzZXQsIG9mZnNldEluTm9kZSk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgQ2hlY2tlZFJlZiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpt
X25vZGUtPnJlbmRlcmVyKCkpOworICAgIGF1dG8gc3RhcnRPZmZzZXQgPSAobV9ub2RlID09IG1f
c3RhcnRDb250YWluZXIpID8gbV9zdGFydE9mZnNldCA6IDA7CiAKLSAgICBTdHJpbmcgdGV4dCA9
IHJlbmRlcmVyLT50ZXh0KCk7CisgICAgYXV0byB0ZXh0ID0gcmVuZGVyZXItPnRleHQoKTsKICAg
ICBpZiAoIXJlbmRlcmVyLT5oYXNSZW5kZXJlZFRleHQoKSAmJiB0ZXh0Lmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChzdGFydE9mZnNldCArIG9mZnNldEluTm9kZSA9
PSBtX29mZnNldCkgewotICAgICAgICBBU1NFUlQoIW1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIp
OworICAgIGlmIChzdGFydE9mZnNldCA9PSBtX29mZnNldCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAvLyBOb3RoaW5nIHRvIGVtaXQgd2hlbiB0aGUgcmVuZGVyZXIgdGV4dCBpcyBlbXB0
eSAoZS5nLiB0aGUgcmVtYWluaW5nIHRleHQKKyAgICAvLyBmcmFnbWVudCBhZnRlciBhIGZpcnN0
LWxldHRlciBzcGxpdCBjb3ZlcnMgbm8gY2hhcmFjdGVycykuCisgICAgaWYgKCF0ZXh0Lmxlbmd0
aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CiAKICAgICBtX3Bvc2l0aW9uRW5kT2Zm
c2V0ID0gbV9vZmZzZXQ7Ci0gICAgbV9vZmZzZXQgPSBzdGFydE9mZnNldCArIG9mZnNldEluTm9k
ZTsKKyAgICBtX29mZnNldCA9IHN0YXJ0T2Zmc2V0OwogICAgIG1fcG9zaXRpb25Ob2RlID0gbV9u
b2RlOwogICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IG1fb2Zmc2V0OwogCi0gICAgQVNTRVJU
KG1fcG9zaXRpb25TdGFydE9mZnNldCA8IG1fcG9zaXRpb25FbmRPZmZzZXQpOwotICAgIEFTU0VS
VChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgLSBvZmZzZXRJbk5vZGUgPj0gMCk7Ci0gICAgQVNTRVJU
KG1fcG9zaXRpb25FbmRPZmZzZXQgLSBvZmZzZXRJbk5vZGUgPiAwKTsKLSAgICBBU1NFUlQobV9w
b3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSA8PSBzdGF0aWNfY2FzdDxpbnQ+KHRleHQu
bGVuZ3RoKCkpKTsKLQotICAgIG1fbGFzdENoYXJhY3RlciA9IHRleHRbbV9wb3NpdGlvbkVuZE9m
ZnNldCAtIG9mZnNldEluTm9kZSAtIDFdOwotICAgIG1fY29weWFibGVUZXh0LnNldChXVEY6Om1v
dmUodGV4dCksIG1fcG9zaXRpb25TdGFydE9mZnNldCAtIG9mZnNldEluTm9kZSwgbV9wb3NpdGlv
bkVuZE9mZnNldCAtIG1fcG9zaXRpb25TdGFydE9mZnNldCk7Ci0gICAgbV90ZXh0ID0gbV9jb3B5
YWJsZVRleHQudGV4dCgpOwotCi0gICAgcmV0dXJuICFtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVy
OwotfQorICAgIC8vIEZvciByZW1haW5pbmcgdGV4dCBmcmFnbWVudHMgYWZ0ZXIgYSBmaXJzdC1s
ZXR0ZXIgc3BsaXQsIERPTSBvZmZzZXRzIChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQsCisgICAgLy8g
bV9wb3NpdGlvbkVuZE9mZnNldCkgZGlmZmVyIGZyb20gZnJhZ21lbnQtbG9jYWwgb2Zmc2V0cyB1
c2VkIHRvIGluZGV4IGludG8gcmVuZGVyZXIgdGV4dC4KKyAgICAvLyBDb252ZXJ0IHRvIGZyYWdt
ZW50LWxvY2FsIGZvciB0ZXh0IGFjY2Vzcywga2VlcGluZyBET00gb2Zmc2V0cyBmb3IgcmFuZ2Uo
KS4KKyAgICB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0ID0gMDsKKyAgICBpZiAoYXV0byogcmVuZGVy
VGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyLmdldCgp
KTsgcmVuZGVyVGV4dCAmJiByZW5kZXJUZXh0LT5maXJzdExldHRlcigpICYmIHN0YXJ0T2Zmc2V0
ID49IHN0YXRpY19jYXN0PGludD4ocmVuZGVyVGV4dC0+c3RhcnQoKSkpCisgICAgICAgIGZyYWdt
ZW50U3RhcnQgPSByZW5kZXJUZXh0LT5zdGFydCgpOwogCi1DaGVja2VkUHRyPFJlbmRlclRleHQ+
IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZUZpcnN0TGV0dGVyKGludCYg
c3RhcnRPZmZzZXQsIGludCYgb2Zmc2V0SW5Ob2RlKQotewotICAgIENoZWNrZWRSZWYgcmVuZGVy
ZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9ub2RlLT5yZW5kZXJlcigpKTsKLSAgICBzdGFy
dE9mZnNldCA9IChtX25vZGUgPT0gbV9zdGFydENvbnRhaW5lcikgPyBtX3N0YXJ0T2Zmc2V0IDog
MDsKKyAgICAvLyBBZnRlciBlZGl0aW5nIG11dGF0aW9ucyAoZS5nLiBkZWxldGluZyB0aGUgbGFz
dCBjaGFyYWN0ZXIpLAorICAgIC8vIG1fcG9zaXRpb25FbmRPZmZzZXQgY2FuIGV4Y2VlZCB0aGUg
dGV4dCBub2RlJ3MgY3VycmVudCBsZW5ndGggaW4gRE9NIHNwYWNlLgorICAgIGF1dG8gdGV4dExl
bmd0aEluRE9NU3BhY2UgPSBzdGF0aWNfY2FzdDxpbnQ+KHRleHQubGVuZ3RoKCkgKyBmcmFnbWVu
dFN0YXJ0KTsKKyAgICBpZiAobV9wb3NpdGlvbkVuZE9mZnNldCA+IHRleHRMZW5ndGhJbkRPTVNw
YWNlKQorICAgICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gdGV4dExlbmd0aEluRE9NU3BhY2U7
CiAKLSAgICBDaGVja2VkUHRyIGZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRG
cmFnbWVudD4ocmVuZGVyZXIpOwotICAgIGlmICghZnJhZ21lbnQpIHsKLSAgICAgICAgb2Zmc2V0
SW5Ob2RlID0gMDsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwotICAgIH0KKyAgICBpbnQgbG9j
YWxTdGFydCA9IG1fcG9zaXRpb25TdGFydE9mZnNldCAtIGZyYWdtZW50U3RhcnQ7CisgICAgaW50
IGxvY2FsRW5kID0gbV9wb3NpdGlvbkVuZE9mZnNldCAtIGZyYWdtZW50U3RhcnQ7CiAKLSAgICBp
bnQgb2Zmc2V0QWZ0ZXJGaXJzdExldHRlciA9IGZyYWdtZW50LT5zdGFydCgpOwotICAgIGlmIChz
dGFydE9mZnNldCA+PSBvZmZzZXRBZnRlckZpcnN0TGV0dGVyKSB7Ci0gICAgICAgIEFTU0VSVCgh
bV9zaG91bGRIYW5kbGVGaXJzdExldHRlcik7Ci0gICAgICAgIG9mZnNldEluTm9kZSA9IG9mZnNl
dEFmdGVyRmlyc3RMZXR0ZXI7Ci0gICAgICAgIHJldHVybiByZW5kZXJlcjsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgJiYgc3RhcnRPZmZzZXQgKyBvZmZzZXRB
ZnRlckZpcnN0TGV0dGVyIDwgbV9vZmZzZXQpIHsKLSAgICAgICAgbV9zaG91bGRIYW5kbGVGaXJz
dExldHRlciA9IHRydWU7Ci0gICAgICAgIG9mZnNldEluTm9kZSA9IG9mZnNldEFmdGVyRmlyc3RM
ZXR0ZXI7Ci0gICAgICAgIHJldHVybiByZW5kZXJlcjsKLSAgICB9Ci0KLSAgICBtX3Nob3VsZEhh
bmRsZUZpcnN0TGV0dGVyID0gZmFsc2U7Ci0gICAgb2Zmc2V0SW5Ob2RlID0gMDsKLSAgICBDaGVj
a2VkUHRyIGZpcnN0TGV0dGVyUmVuZGVyZXIgPSBmaXJzdFJlbmRlclRleHRJbkZpcnN0TGV0dGVy
KHByb3RlY3QoZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpKTsKKyAgICBBU1NFUlQobV9wb3NpdGlv
blN0YXJ0T2Zmc2V0IDwgbV9wb3NpdGlvbkVuZE9mZnNldCk7CisgICAgQVNTRVJUKGxvY2FsU3Rh
cnQgPj0gMCk7CisgICAgQVNTRVJUKGxvY2FsRW5kID4gMCk7CisgICAgQVNTRVJUKGxvY2FsRW5k
IDw9IHN0YXRpY19jYXN0PGludD4odGV4dC5sZW5ndGgoKSkpOwogCi0gICAgbV9vZmZzZXQgPSBm
aXJzdExldHRlclJlbmRlcmVyLT5jYXJldE1heE9mZnNldCgpOwotICAgIG1fb2Zmc2V0ICs9IGNv
bGxhcHNlZFNwYWNlTGVuZ3RoKCpmaXJzdExldHRlclJlbmRlcmVyLCBtX29mZnNldCk7CisgICAg
bV9sYXN0Q2hhcmFjdGVyID0gdGV4dFtsb2NhbEVuZCAtIDFdOworICAgIG1fY29weWFibGVUZXh0
LnNldChXVEY6Om1vdmUodGV4dCksIGxvY2FsU3RhcnQsIG1fcG9zaXRpb25FbmRPZmZzZXQgLSBt
X3Bvc2l0aW9uU3RhcnRPZmZzZXQpOworICAgIG1fdGV4dCA9IG1fY29weWFibGVUZXh0LnRleHQo
KTsKIAotICAgIHJldHVybiBmaXJzdExldHRlclJlbmRlcmVyOworICAgIHJldHVybiB0cnVlOwog
fQogCiBib29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2Vk
RWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCA0MzIyYWFh
NjVkMGUuLjllNjVkZmQxZWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5o
CkBAIC0yMDEsNyArMjAxLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGV4aXROb2Rl
KCk7CiAgICAgYm9vbCBoYW5kbGVUZXh0Tm9kZSgpOwotICAgIENoZWNrZWRQdHI8UmVuZGVyVGV4
dD4gaGFuZGxlRmlyc3RMZXR0ZXIoaW50JiBzdGFydE9mZnNldCwgaW50JiBvZmZzZXRJbk5vZGUp
OwogICAgIGJvb2wgaGFuZGxlUmVwbGFjZWRFbGVtZW50KCk7CiAgICAgYm9vbCBoYW5kbGVOb25U
ZXh0Tm9kZSgpOwogICAgIHZvaWQgZW1pdENoYXJhY3RlcihjaGFyMTZfdCwgUmVmUHRyPE5vZGU+
JiYsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7CkBAIC0yMzYsOCArMjM1LDYgQEAg
cHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIG1fbm9kZSBoYXMgYWR2YW5jZWQgYmV5b25kIHRoZSBp
dGVyYXRpb24gcmFuZ2UgKGkuZS4gbV9zdGFydENvbnRhaW5lcikuCiAgICAgYm9vbCBtX2hhdmVQ
YXNzZWRTdGFydENvbnRhaW5lciB7IGZhbHNlIH07CiAKLSAgICAvLyBTaG91bGQgaGFuZGxlIGZp
cnN0LWxldHRlciByZW5kZXJlciBpbiB0aGUgbmV4dCBjYWxsIHRvIGhhbmRsZVRleHROb2RlLgot
ICAgIGJvb2wgbV9zaG91bGRIYW5kbGVGaXJzdExldHRlciB7IGZhbHNlIH07CiB9OwogCiAvLyBC
dWlsZHMgb24gdGhlIHRleHQgaXRlcmF0b3IsIGFkZGluZyBhIGNoYXJhY3RlciBwb3NpdGlvbiBz
byB3ZSBjYW4gd2FsayBvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcAppbmRleCBmNWQxZWVlNTg2YzcuLjc4ZDEwOGM2ZGMxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNDQsNyArNDQsOSBAQAogI2luY2x1ZGUg
IlBvc2l0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
QmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50Lmgi
CiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCkBAIC01OCw2ICs2MCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKKy8vIFRoZSBhbm9ueW1vdXMgdGV4dCByZW5k
ZXJlciBpbnNpZGUgOjpmaXJzdC1sZXR0ZXIgaGFzIG5vIERPTSBub2RlLgorc3RhdGljIFJlbmRl
clRleHRGcmFnbWVudCogcmVtYWluaW5nVGV4dEZyYWdtZW50Rm9yRmlyc3RMZXR0ZXIoY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAgICBpZiAocmVuZGVyZXIubm9kZSgpKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIGlmIChhdXRvKiBwYXJlbnQgPSBkeW5hbWljRG93bmNhc3Q8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyLnBhcmVudCgpKSkKKyAgICAgICAgcmV0dXJu
IHBhcmVudC0+Zmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCk7CisgICAgcmV0dXJuIHsgfTsKK30K
KwogVmlzaWJsZVBvc2l0aW9uOjpWaXNpYmxlUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0
aW9uLCBBZmZpbml0eSBhZmZpbml0eSkKICAgICA6IG1fZGVlcFBvc2l0aW9uIHsgY2Fub25pY2Fs
UG9zaXRpb24ocG9zaXRpb24pIH0KIHsKQEAgLTE0MCw3ICsxNTIsNyBAQCBQb3NpdGlvbiBWaXNp
YmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAg
ICAgICAgIGlmICgocmVuZGVyZXItPmlzQmxvY2tMZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUo
KSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQgPT0gYm94LT5yaWdodG1vc3RDYXJldE9m
ZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikg
OiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAKLSAgICAg
ICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSkgeworICAgICAgICAgICAgaWYgKCFyZW5kZXJl
ci0+bm9kZSgpICYmICFyZW1haW5pbmdUZXh0RnJhZ21lbnRGb3JGaXJzdExldHRlcigqcmVuZGVy
ZXIpKSB7CiAgICAgICAgICAgICAgICAgYm94LnRyYXZlcnNlTGluZUxlZnR3YXJkT25MaW5lKCk7
CiAgICAgICAgICAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBw
cmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IHByZXZpb3VzVmlzdWFsbHlE
aXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENh
bmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CkBAIC0xODIsOCArMTk0LDggQEAgUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAg
ICAgICAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFwcmV2aW91c0JveCkgewogICAgICAgICAgICAgICAgICAgICBhdXRv
IGxvZ2ljYWxTdGFydCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSCi0g
ICAgICAgICAgICAgICAgICAgICAgICA/IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJ
bkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKQotICAgICAg
ICAgICAgICAgICAgICAgICAgOiBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2lj
YWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKQorICAgICAgICAgICAgICAgICAgICAgICAg
OiBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihib3gtPmxpbmVC
b3goKSwgb3JkZXJDYWNoZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsU3RhcnQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9IGxvZ2ljYWxTdGFydDsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKQEAgLTI1Myw3ICsy
NjUsOSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
cCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChyZW5kZXJlci0+bm9kZSgp
KS5nZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgYXV0byogcmVtYWluaW5nRnJhZ21lbnQgPSByZW1h
aW5pbmdUZXh0RnJhZ21lbnRGb3JGaXJzdExldHRlcigqcmVuZGVyZXIpOworICAgICAgICBhdXRv
KiBub2RlID0gcmVtYWluaW5nRnJhZ21lbnQgPyByZW1haW5pbmdGcmFnbWVudC0+dGV4dE5vZGUo
KSA6IHJlbmRlcmVyLT5ub2RlKCk7CisgICAgICAgIHAgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBv
c2l0aW9uKHByb3RlY3Qobm9kZSkuZ2V0KCksIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQo
KnJlbmRlcmVyLCBvZmZzZXQpKTsKIAogICAgICAgICBpZiAoKHAuaXNDYW5kaWRhdGUoKSAmJiBw
LmRvd25zdHJlYW0oKSAhPSBkb3duc3RyZWFtU3RhcnQpIHx8IHAuYXRTdGFydE9mVHJlZSgpIHx8
IHAuYXRFbmRPZlRyZWUoKSkKICAgICAgICAgICAgIHJldHVybiBwOwpAQCAtMzA1LDcgKzMxOSw3
IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKCkgY29uc3QKICAgICAgICAgICAgIGlmICgocmVuZGVyZXItPmlzQmxvY2tMZXZlbFJlcGxh
Y2VkT3JBdG9taWNJbmxpbmUoKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQgPT0gYm94
LT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGJveC0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9k
ZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBv
c2l0aW9uKTsKIAotICAgICAgICAgICAgaWYgKCFyZW5kZXJlci0+bm9kZSgpKSB7CisgICAgICAg
ICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkgJiYgIXJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZp
cnN0TGV0dGVyKCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgICAgICBib3gudHJhdmVyc2VMaW5l
UmlnaHR3YXJkT25MaW5lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFib3gpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/
IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IHByZXZpb3Vz
VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CkBAIC00MjIsNyArNDM2
LDkgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5k
aWRhdGUoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBw
ID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KHJlbmRlcmVyLT5ub2RlKCkp
LmdldCgpLCBvZmZzZXQpOworICAgICAgICBhdXRvKiByZW1haW5pbmdGcmFnbWVudCA9IHJlbWFp
bmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCpyZW5kZXJlcik7CisgICAgICAgIGF1dG8q
IG5vZGUgPSByZW1haW5pbmdGcmFnbWVudCA/IHJlbWFpbmluZ0ZyYWdtZW50LT50ZXh0Tm9kZSgp
IDogcmVuZGVyZXItPm5vZGUoKTsKKyAgICAgICAgcCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24ocHJvdGVjdChub2RlKS5nZXQoKSwgZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgq
cmVuZGVyZXIsIG9mZnNldCkpOwogCiAgICAgICAgIGlmICgocC5pc0NhbmRpZGF0ZSgpICYmIHAu
ZG93bnN0cmVhbSgpICE9IGRvd25zdHJlYW1TdGFydCkgfHwgcC5hdFN0YXJ0T2ZUcmVlKCkgfHwg
cC5hdEVuZE9mVHJlZSgpKQogICAgICAgICAgICAgcmV0dXJuIHA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMmQ0MjI3YWEwZjkxLi4xNzFhOTQ5MDc0MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIkJvdW5kYXJ5UG9pbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVkZSAiRWRpdGluZ0lubGluZXMuaCIKICNp
bmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKQEAgLTg1
NSw3ICs4NTYsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uRm9yTGluZShj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRwb2ludAogICAgICAgICBpbnQgZW5kT2Zm
c2V0ID0gZW5kVGV4dEJveC5zdGFydCgpOwogICAgICAgICBpZiAoIWVuZFRleHRCb3guaXNMaW5l
QnJlYWsoKSkKICAgICAgICAgICAgIGVuZE9mZnNldCArPSBlbmRUZXh0Qm94Lmxlbmd0aCgpOwot
ICAgICAgICBwb3MgPSBQb3NpdGlvbihlbmRUZXh0Tm9kZS5yZWxlYXNlTm9uTnVsbCgpLCBlbmRP
ZmZzZXQpOworICAgICAgICBwb3MgPSBQb3NpdGlvbihlbmRUZXh0Tm9kZS5yZWxlYXNlTm9uTnVs
bCgpLCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KGVuZFRleHRCb3gucmVuZGVyZXIoKSwg
ZW5kT2Zmc2V0KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHBvcyA9IHBvc2l0aW9uQWZ0ZXJOb2Rl
KCplbmROb2RlKTsKIApAQCAtMTIzMyw3ICsxMjM0LDcgQEAgUmVmUHRyPE5vZGU+IGZpbmRFbmRP
ZlBhcmFncmFwaChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGhpZ2hlc3RSb290LCBOb2RlKiBzdGF5
SW4KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBub2RlID0g
bjsKLSAgICAgICAgICAgIG9mZnNldCA9IHItPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAg
ICBvZmZzZXQgPSBjYXJldE1heE9mZnNldCgqbik7CiAgICAgICAgICAgICBuID0gTm9kZVRyYXZl
cnNhbDo6bmV4dCgqbiwgc3RheUluc2lkZUJsb2NrKTsKICAgICAgICAgfSBlbHNlIGlmIChlZGl0
aW5nSWdub3Jlc0NvbnRlbnQoKm4pIHx8IGlzUmVuZGVyZWRUYWJsZShuLmdldCgpKSkgewogICAg
ICAgICAgICAgbm9kZSA9IG47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDM1MDg0MWQwZDFhZS4uZjgyMTQ1NWYxZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIkxv
Y2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5oIgogI2luY2x1ZGUgIk5vZGVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIk91dGxpbmVQYWludGVy
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKQEAgLTE5
MTQsNyArMTkxNSw3IEBAIFBvc2l0aW9uV2l0aEFmZmluaXR5IFJlbmRlck9iamVjdDo6Y3JlYXRl
UG9zaXRpb25XaXRoQWZmaW5pdHkoaW50IG9mZnNldCwgQWZmaW5pCiAgICAgaWYgKFJlZlB0ciBu
b2RlID0gbm9uUHNldWRvTm9kZSgpKSB7CiAgICAgICAgIGlmICghbm9kZS0+aGFzRWRpdGFibGVT
dHlsZSgpKSB7CiAgICAgICAgICAgICAvLyBJZiBpdCBjYW4gYmUgZm91bmQsIHdlIHByZWZlciBh
IHZpc3VhbGx5IGVxdWl2YWxlbnQgcG9zaXRpb24gdGhhdCBpcyBlZGl0YWJsZS4gCi0gICAgICAg
ICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24obm9k
ZS5nZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gbWFrZURl
cHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBmaXJzdExldHRlckFkanVzdGVkRE9N
T2Zmc2V0KCp0aGlzLCBvZmZzZXQpKTsKICAgICAgICAgICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9
IHBvc2l0aW9uLmRvd25zdHJlYW0oQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICAg
ICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5oYXNFZGl0YWJsZVN0eWxlKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uV2l0aEFmZmluaXR5KGNhbmRpZGF0ZSwgYWZm
aW5pdHkpOwpAQCAtMTkyMyw3ICsxOTI0LDcgQEAgUG9zaXRpb25XaXRoQWZmaW5pdHkgUmVuZGVy
T2JqZWN0OjpjcmVhdGVQb3NpdGlvbldpdGhBZmZpbml0eShpbnQgb2Zmc2V0LCBBZmZpbmkKICAg
ICAgICAgICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZmaW5pdHkoY2FuZGlkYXRlLCBhZmZp
bml0eSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IEVsaW1pbmF0ZSBsZWdhY3kgZWRp
dGluZyBwb3NpdGlvbnMKLSAgICAgICAgcmV0dXJuIFBvc2l0aW9uV2l0aEFmZmluaXR5KG1ha2VE
ZXByZWNhdGVkTGVnYWN5UG9zaXRpb24obm9kZS5nZXQoKSwgb2Zmc2V0KSwgYWZmaW5pdHkpOwor
ICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZmaW5pdHkobWFrZURlcHJlY2F0ZWRMZWdhY3lQ
b3NpdGlvbihub2RlLmdldCgpLCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KCp0aGlzLCBv
ZmZzZXQpKSwgYWZmaW5pdHkpOwogICAgIH0KIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY3Jv
c3MgdGhlIGJvdW5kYXJ5IGJldHdlZW4gZWRpdGFibGUgYW5kIG5vbi1lZGl0YWJsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAppbmRleCA2OTBk
ODEwNzFkYWMuLmY3ZjU4MmE3Y2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRGcmFnbWVudC5jcHAKQEAgLTY4LDcgKzY4LDE2IEBAIFJlbmRlclRleHRGcmFn
bWVudDo6flJlbmRlclRleHRGcmFnbWVudCgpCiAKIGJvb2wgUmVuZGVyVGV4dEZyYWdtZW50Ojpj
YW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdAogewotICAgIHJldHVybiB0ZXh0Tm9kZSgpICYmIHRl
eHROb2RlKCktPmhhc0VkaXRhYmxlU3R5bGUoKTsKKyAgICBhdXRvKiB0ZXh0Tm9kZSA9IHRoaXMt
PnRleHROb2RlKCk7CisgICAgaWYgKCF0ZXh0Tm9kZSkgeworICAgICAgICAvLyBBbm9ueW1vdXMg
Zmlyc3QtbGV0dGVyIHRleHQgZnJhZ21lbnRzIGFyZSBzZWxlY3RhYmxlIHdoZW4gdGhlIHJlbWFp
bmluZworICAgICAgICAvLyB0ZXh0IGZyYWdtZW50IGhhcyBhbiBhc3NvY2lhdGVkIERPTSB0ZXh0
IG5vZGUuCisgICAgICAgIEFTU0VSVChpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocGFyZW50KCkp
ICYmIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqcGFyZW50KCkpLmZpcnN0TGV0dGVy
UmVtYWluaW5nVGV4dCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIC8vIFJl
bWFpbmluZyB0ZXh0IGZyYWdtZW50cyB3aXRoIGZpcnN0LWxldHRlciBhcmUgYWx3YXlzIHNlbGVj
dGFibGUsCisgICAgLy8gbWF0Y2hpbmcgdGhlIGJhc2UgUmVuZGVyVGV4dDo6Y2FuQmVTZWxlY3Rp
b25MZWFmKCkgYmVoYXZpb3IuCisgICAgcmV0dXJuIGZpcnN0TGV0dGVyKCkgPyB0cnVlIDogdGV4
dE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0RnJhZ21lbnQ6
OnNldFRleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5ld1RleHQsIGJvb2wgZm9yY2UpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0
aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg0NzJmNDAzYzgwOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRl
ci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAor
VGVzdCB0aGF0IHNlbGVjdGlvbiBhY3Jvc3MgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCA6OmZpcnN0
LWxldHRlciB3b3JrcyBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1xuL2csICd8
JykgaXMgIkZpcnN0IHBhcmFncmFwaHxTZWNvbmQgcGFyYWdyYXBoIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cbi9nLCAnfCcpIGlzICJzdCBwYXJhZ3Jh
cGh8U2Vjb25kIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNl
KC9cbi9nLCAnfCcpIGlzICJGaXJzdCBwYXJhZ3JhcGh8UyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorRmlyc3QgcGFyYWdyYXBoCitTZWNvbmQgcGFy
YWdyYXBoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1s
ZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGZiMzQ4OGQ0NWYxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNl
bGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisuZmlyc3QtbGV0dGVyLXN0eWxlZDo6Zmlyc3Qt
bGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJwYXJhMSIgY2xhc3M9ImZpcnN0LWxl
dHRlci1zdHlsZWQiPkZpcnN0IHBhcmFncmFwaDwvZGl2PgorICAgIDxkaXYgaWQ9InBhcmEyIiBj
bGFzcz0iZmlyc3QtbGV0dGVyLXN0eWxlZCI+U2Vjb25kIHBhcmFncmFwaDwvZGl2PgorPC9kaXY+
CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNlbGVjdGlvbiBhY3Jvc3MgbXVs
dGlwbGUgZWxlbWVudHMgd2l0aCA6OmZpcnN0LWxldHRlciB3b3JrcyBjb3JyZWN0bHkuIik7CisK
K2Z1bmN0aW9uIHNlbGVjdEFjcm9zc0VsZW1lbnRzKHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXQsIGVu
ZE5vZGUsIGVuZE9mZnNldCkgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnROb2RlLCBzdGFydE9mZnNldCk7CisgICAgcmFu
Z2Uuc2V0RW5kKGVuZE5vZGUsIGVuZE9mZnNldCk7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKTsKKyAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgc2VsLmFkZFJhbmdl
KHJhbmdlKTsKK30KKworLy8gVGVzdCAxOiBTZWxlY3QgYWNyb3NzIHR3byBmaXJzdC1sZXR0ZXIg
cGFyYWdyYXBocworc2VsZWN0QWNyb3NzRWxlbWVudHMocGFyYTEuZmlyc3RDaGlsZCwgMCwgcGFy
YTIuZmlyc3RDaGlsZCwgcGFyYTIuZmlyc3RDaGlsZC5sZW5ndGgpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywg
J3wnKSIsICJGaXJzdCBwYXJhZ3JhcGh8U2Vjb25kIHBhcmFncmFwaCIpOworCisvLyBUZXN0IDI6
IFNlbGVjdCBmcm9tIG1pZGRsZSBvZiBmaXJzdCB0byBtaWRkbGUgb2Ygc2Vjb25kCitzZWxlY3RB
Y3Jvc3NFbGVtZW50cyhwYXJhMS5maXJzdENoaWxkLCAzLCBwYXJhMi5maXJzdENoaWxkLCA2KTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCku
cmVwbGFjZSgvXFxuL2csICd8JykiLCAic3QgcGFyYWdyYXBofFNlY29uZCIpOworCisvLyBUZXN0
IDM6IFNlbGVjdCBmcm9tIGZpcnN0LWxldHRlciBvZiBmaXJzdCB0byBmaXJzdC1sZXR0ZXIgb2Yg
c2Vjb25kCitzZWxlY3RBY3Jvc3NFbGVtZW50cyhwYXJhMS5maXJzdENoaWxkLCAwLCBwYXJhMi5m
aXJzdENoaWxkLCAxKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICd8JykiLCAiRmlyc3QgcGFyYWdyYXBofFMi
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFkMDhkOTM5
YzdiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1Rlc3Qg
dGhhdCBzZWxlY3Rpb24gd29ya3MgY29ycmVjdGx5IHdpdGggOjpmaXJzdC1sZXR0ZXIgcHNldWRv
LWVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZWxsbyIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIjEyIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiXCJRdW90ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIkEiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJOZXN0
ZWQiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1xuL2cs
ICd8JykgaXMgIkZpcnN0fFNlY29uZCIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIkVkaXRhYmxlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSBpcyAiMSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIjIiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZWwiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJcIlEiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
bmNob3JPZmZzZXQgaXMgMQorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQg
aXMgdHJ1ZQorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yT2Zmc2V0IGlzIDAKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkEiCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hlbGxvCisxMgorIlF1b3RlCitB
CitOZXN0ZWQKK0ZpcnN0CitTZWNvbmQKK0VkaXRhYmxlCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1z
ZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmQwMzkwNTM4ZDM3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI1IEBACis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitzcGFuLmZpcnN0LWxldHRlciB7Cisg
ICAgY29sb3I6IHJlZDsKKyAgICBmb250LXNpemU6IDJlbTsKK30KKzwvc3R5bGU+Cis8ZGl2IGlk
PSJ0YXJnZXQiPjxzcGFuIGNsYXNzPSJmaXJzdC1sZXR0ZXIiPkg8L3NwYW4+ZWxsbyBXb3JsZDwv
ZGl2PgorPHNjcmlwdD4KK3dpbmRvdy50ZXN0UnVubmVyPy53YWl0VW50aWxEb25lKCk7Cit3aW5k
b3cudGVzdFJ1bm5lcj8uZG9udEZvcmNlUmVwYWludCgpOworCithc3luYyBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRl
bnRzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7Cisg
ICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAgd2luZG93LnRlc3RSdW5u
ZXI/Lm5vdGlmeURvbmUoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBy
dW5UZXN0KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjZiOGJkZjQ2Y2I5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVy
LXNlbGVjdGlvbi1wYWludGluZy5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2Rpdjo6Zmly
c3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworICAgIGZvbnQtc2l6ZTogMmVtOworfQorPC9z
dHlsZT4KKzxkaXYgaWQ9InRhcmdldCI+SGVsbG8gV29ybGQ8L2Rpdj4KKzxzY3JpcHQ+Cit3aW5k
b3cudGVzdFJ1bm5lcj8ud2FpdFVudGlsRG9uZSgpOword2luZG93LnRlc3RSdW5uZXI/LmRvbnRG
b3JjZVJlcGFpbnQoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBhd2FpdCBV
SUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0IikpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxS
YW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICAg
IGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIGF3YWl0IFVJSGVscGVyLnJl
bmRlcmluZ1VwZGF0ZSgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyPy5ub3RpZnlEb25lKCk7Cit9
CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcnVuVGVzdCk7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1z
ZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRl
ci1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmVlZGM3MmIzZmM1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDEwMSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitkaXY6OmZpcnN0LWxldHRlciB7
CisgICAgY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
InRlc3QxIj5IZWxsbzwvZGl2PgorPGRpdiBpZD0idGVzdDIiPjEyPC9kaXY+Cis8ZGl2IGlkPSJ0
ZXN0MyI+IlF1b3RlPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NCI+QTwvZGl2PgorPGRpdiBpZD0idGVz
dDUiPjxzcGFuPk5lc3RlZDwvc3Bhbj48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q2Ij5GaXJzdDxicj5T
ZWNvbmQ8L2Rpdj4KKzxkaXYgaWQ9InRlc3Q3IiBjb250ZW50ZWRpdGFibGU+RWRpdGFibGU8L2Rp
dj4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGVzdCB0aGF0IHNlbGVjdGlvbiB3b3JrcyBjb3JyZWN0bHkgd2l0aCA6OmZpcnN0LWxldHRlciBw
c2V1ZG8tZWxlbWVudC4iKTsKKworZnVuY3Rpb24gc2VsZWN0QWxsKGVsZW1lbnQpIHsKKyAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVD
b250ZW50cyhlbGVtZW50KTsKKyAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwor
ICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpOworfQor
CitmdW5jdGlvbiBzZWxlY3RSYW5nZShub2RlLCBzdGFydCwgZW5kKSB7CisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChub2RlLCBzdGFy
dCk7CisgICAgcmFuZ2Uuc2V0RW5kKG5vZGUsIGVuZCk7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKKyAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgc2VsLmFkZFJh
bmdlKHJhbmdlKTsKK30KKworLy8gVGVzdCAxOiBTZWxlY3QgYWxsIHRleHQgaW4gZWxlbWVudCB3
aXRoIGZpcnN0LWxldHRlcgorc2VsZWN0QWxsKHRlc3QxKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVsbG8iKTsKKworLy8gVGVz
dCAyOiBTaG9ydCB0ZXh0IC0gc2VsZWN0IGFsbAorc2VsZWN0QWxsKHRlc3QyKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiMTIiKTsK
KworLy8gVGVzdCAzOiBGaXJzdC1sZXR0ZXIgd2l0aCBwdW5jdHVhdGlvbiAoZmlyc3QtbGV0dGVy
IGluY2x1ZGVzIHF1b3RlICsgbGV0dGVyKQorc2VsZWN0QWxsKHRlc3QzKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiXCJRdW90ZSIp
OworCisvLyBUZXN0IDQ6IFNpbmdsZSBjaGFyYWN0ZXIgdGV4dCAoZW50aXJlIHRleHQgaXMgZmly
c3QtbGV0dGVyKQorc2VsZWN0QWxsKHRlc3Q0KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiQSIpOworCisvLyBUZXN0IDU6IEZpcnN0
LWxldHRlciB3aXRoIG5lc3RlZCBpbmxpbmUKK3NlbGVjdEFsbCh0ZXN0NSk7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIk5lc3RlZCIp
OworCisvLyBUZXN0IDY6IE11bHRpLWxpbmUgLSBzZWxlY3QgYWxsIHNob3VsZCBnZXQgYm90aCBs
aW5lcworc2VsZWN0QWxsKHRlc3Q2KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICd8JykiLCAiRmlyc3R8U2Vj
b25kIik7CisKKy8vIFRlc3QgNzogQ29udGVudGVkaXRhYmxlIHdpdGggZmlyc3QtbGV0dGVyCitz
ZWxlY3RBbGwodGVzdDcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJFZGl0YWJsZSIpOworCisvLyBUZXN0IDg6IFNlbGVjdCBvbmx5
IHRoZSBmaXJzdC1sZXR0ZXIgcG9ydGlvbgorc2VsZWN0UmFuZ2UodGVzdDIuZmlyc3RDaGlsZCwg
MCwgMSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIiwgIjEiKTsKKworLy8gVGVzdCA5OiBTZWxlY3Qgb25seSB0aGUgcmVtYWluaW5nIHBv
cnRpb24gKGFmdGVyIGZpcnN0LWxldHRlcikKK3NlbGVjdFJhbmdlKHRlc3QyLmZpcnN0Q2hpbGQs
IDEsIDIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSIsICIyIik7CisKKy8vIFRlc3QgMTA6IFNlbGVjdCByYW5nZSBzcGFubmluZyBmaXJz
dC1sZXR0ZXIgYm91bmRhcnkKK3NlbGVjdFJhbmdlKHRlc3QxLmZpcnN0Q2hpbGQsIDAsIDMpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJIZWwiKTsKKworLy8gVGVzdCAxMTogU2VsZWN0IGZyb20gbWlkZGxlIG9mIGZpcnN0LWxldHRl
ciB0ZXh0IHRvIGVuZAorc2VsZWN0UmFuZ2UodGVzdDMuZmlyc3RDaGlsZCwgMCwgMik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIlwi
USIpOworCisvLyBUZXN0IDEyOiBDYXJldCBhdCBmaXJzdC1sZXR0ZXIgYm91bmRhcnkgKG9mZnNl
dCA9IGZpcnN0LWxldHRlciBsZW5ndGgpCitzZWxlY3RSYW5nZSh0ZXN0MS5maXJzdENoaWxkLCAx
LCAxKTsKK3Nob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQiLCAidHJ1
ZSIpOworc2hvdWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5hbmNob3JPZmZzZXQiLCAiMSIp
OworCisvLyBUZXN0IDEzOiBDYXJldCBhdCBzdGFydCBvZiB0ZXh0IChvZmZzZXQgMCwgaW5zaWRl
IGZpcnN0LWxldHRlcikKK3NlbGVjdFJhbmdlKHRlc3QxLmZpcnN0Q2hpbGQsIDAsIDApOworc2hv
dWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCIsICJ0cnVlIik7CitzaG91
bGRCZSgid2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hvck9mZnNldCIsICIwIik7CisKKy8vIFRl
c3QgMTQ6IFNlbGVjdCBhbGwgb24gc2luZ2xlLWNoYXJhY3RlciBmaXJzdC1sZXR0ZXIgKGVudGly
ZSB0ZXh0IGlzIGZpcnN0LWxldHRlcikKK3NlbGVjdFJhbmdlKHRlc3Q0LmZpcnN0Q2hpbGQsIDAs
IDEpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICJBIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9maXJzdC1sZXR0ZXItd29yZC1ib3VuZGFy
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvZmlyc3Qt
bGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0ZWQudHh0CmluZGV4IGM1MmYyYWQ1NjEyZC4uZGM5
OWZjYzhjMWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3Iv
Zmlyc3QtbGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvdGV4dC1pdGVyYXRvci9maXJzdC1sZXR0ZXItd29yZC1ib3VuZGFyeS1leHBlY3Rl
ZC50eHQKQEAgLTIsOSArMiw5IEBAIFRoaXMgdGVzdHMgbW92aW5nIGNhcmV0IGFyb3VuZCBhIHdv
cmQgd2l0aCBhIGZpcnN0LWxldHRlciBydWxlLiBXZWJLaXQgc2hvdWxkIG5vCiAKICBoZWxsbyB3
b3JsZCcKIHdoaXRlLXNwYWNlOiBub3JtYWw7Ci1GQUlMOiBtb3ZpbmcgZm9yd2FyZCBieSB3b3Jk
IGZyb20gb2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCAxMCBidXQgZXhwZWN0ZWQgNgorUEFT
UzogbW92aW5nIGZvcndhcmQgYnkgd29yZCBmcm9tIG9mZnNldCA0IHB1dCBjYXJldCBhdCBvZmZz
ZXQgNgogUEFTUzogbW92aW5nIGJhY2t3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2Fy
ZXQgYXQgb2Zmc2V0IDEKIHdoaXRlLXNwYWNlOiBwcmU7Ci1GQUlMOiBtb3ZpbmcgZm9yd2FyZCBi
eSB3b3JkIGZyb20gb2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCAxMCBidXQgZXhwZWN0ZWQg
NgotUEFTUzogbW92aW5nIGJhY2t3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2FyZXQg
YXQgb2Zmc2V0IDEKK1BBU1M6IG1vdmluZyBmb3J3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBw
dXQgY2FyZXQgYXQgb2Zmc2V0IDYKK0ZBSUw6IG1vdmluZyBiYWNrd2FyZCBieSB3b3JkIGZyb20g
b2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCAwIGJ1dCBleHBlY3RlZCAxCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9maXJzdC1sZXR0ZXItcGFydGlhbC1pbnZhbGlkYXRp
b24tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZpcnN0LWxldHRl
ci1wYXJ0aWFsLWludmFsaWRhdGlvbi1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggMTYwYjBkM2Iw
YTA0Li4yYjE3ODBhYjM1YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9maXJz
dC1sZXR0ZXItcGFydGlhbC1pbnZhbGlkYXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC9maXJzdC1sZXR0ZXItcGFydGlhbC1pbnZhbGlkYXRpb24tY3Jh
c2gtZXhwZWN0ZWQudHh0CkBAIC0xICsxIEBACi1QQVNTIGlmIG5vIGNyYXNoIG9yIGFzQUFBQXJ0
CitQQVNTIGlmIG5vIGNyYXNoIG9yIGFzc2VBQUFBCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>478920</attachid>
            <date>2026-04-04 03:57:20 -0700</date>
            <delta_ts>2026-04-04 04:16:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-311437-20260404035719.patch</filename>
            <type>text/plain</type>
            <size>61251</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBmMGU1NjZjMDIxYzJhNGFhMmQ4ZjMwZWE4MGQ5MTM2YjliNjZmYWYwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBBcHIgMjAyNiAwNTo1NzozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIG55dGltZXMu
Y29tOiB3cm9uZyBzZWxlY3Rpb24gcGFpbnRpbmcgYmVjYXVzZSBvZiBmaXJzdC1sZXR0ZXIKIHN0
eWxlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE0MzcgPHJkYXI6
Ly8xMDYwNjA0MjE+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkdpdmVuCgogIDxzdHls
ZT4KICAgIGRpdjo6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IHJlZDsgfQogIDwvc3R5bGU+CiAgPGRp
dj5IZWxsbzwvZGl2PgoKdGhlIERPTSAoaW5zaWRlIHRoZSBibG9jayBjb250YWluZXIpIGhhcyBh
IHNpbmdsZSB0ZXh0IG5vZGUgIkhlbGxvIgpidXQgV2ViS2l0IHNwbGl0cyB0aGlzIGludG8gdHdv
IHJlbmRlcmVycyB0byBiZSBhYmxlIHRvIHN0eWxlIHRoZSBmaXJzdCBsZXR0ZXIuCgogIFJlbmRl
ckJsb2NrIChkaXYpCiAgICBSZW5kZXJJbmxpbmUgKDo6Zmlyc3QtbGV0dGVyLCBhbm9ueW1vdXMp
CiAgICAgIFJlbmRlclRleHQgIkgiICAgICAgICAgICAgPC0gb2Zmc2V0cyAwLTEgKG5vIERPTSBu
b2RlKQogICAgUmVuZGVyVGV4dEZyYWdtZW50ICJlbGxvIiAgIDwtIG9mZnNldHMgMC00IChvd25z
IHRoZSBET00gdGV4dCBub2RlKQoKVGhlIGV4aXN0aW5nIGNvZGUgYXNzdW1lcyBlYWNoIERPTSBu
b2RlIG1hcHMgdG8gZXhhY3RseSBvbmUgcmVuZGVyZXIuCkV2ZXJ5IGNhbGwgdG8gbm9kZS0+cmVu
ZGVyZXIoKSBvciBQb3NpdGlvbjo6cmVuZGVyZXIoKSByZXR1cm5zIHRoZQpyZW1haW5pbmcgZnJh
Z21lbnQgLSB0aGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIGlzIG5ldmVyIGNvbnN1bHRlZC4KClRo
aXMgbWVhbnMgRE9NIG9mZnNldCAwICgiSCIpIGdldHMgY2hlY2tlZCBhZ2FpbnN0IHRoZSByZW1h
aW5pbmcKZnJhZ21lbnQncyB0ZXh0IGJveGVzLCB3aGljaCBzdGFydCBhdCAiZSIuIFNlbGVjdGlv
biwgY2FyZXQgcG9zaXRpb25pbmcsCmFuZCBvZmZzZXQgdmFsaWRhdGlvbiBhbGwgZmFpbCBmb3Ig
dGhlIGZpcnN0LWxldHRlciByYW5nZSBiZWNhdXNlIHRoZQp3cm9uZyByZW5kZXJlciBpcyBhc2tl
ZCBhYm91dCBvZmZzZXRzIGl0IGRvZXNuJ3Qgb3duLgoKVGhlIGZpeCBpcyB0byBuZXZlciBjb25z
dWx0IG5vZGUtPnJlbmRlcmVyKCkgZGlyZWN0bHkgZm9yIHRleHQgb2Zmc2V0Cm9wZXJhdGlvbnMg
b24gZmlyc3QtbGV0dGVyIGNvbnRlbnQuIEluc3RlYWQsIGFsbCBjYWxsIHNpdGVzIGdvIHRocm91
Z2gKUG9zaXRpb246OnJlbmRlcmVyQW5kT2Zmc2V0KCkgd2hpY2ggcmVzb2x2ZXMgdGhlIDEtRE9N
LW5vZGUtdG8tMi1yZW5kZXJlcnMKc3BsaXQgYnkgcGlja2luZyB0aGUgY29ycmVjdCByZW5kZXJl
ciBhbmQgY29udmVydGluZyB0byBpdHMgbG9jYWwgb2Zmc2V0LgpUaGlzIGlzIHRoZSBjZW50cmFs
IGludmFyaWFudCBvZiB0aGUgZml4IC0gZXZlcnkgcGxhY2UgdGhhdCBwcmV2aW91c2x5CmNhbGxl
ZCBub2RlLT5yZW5kZXJlcigpIGFuZCB1c2VkIGEgRE9NIG9mZnNldCBhZ2FpbnN0IGl0IG5vdyB1
c2VzIHRoaXMKaGVscGVyIChvciBvbmUgb2YgaXRzIHdyYXBwZXJzKSB0byBnZXQgdGhlIHJpZ2h0
IHJlbmRlcmVyICsgb2Zmc2V0IHBhaXIuCgpLZXkgaGVscGVycyBpbnRyb2R1Y2VkOgotIFBvc2l0
aW9uOjpyZW5kZXJlckFuZE9mZnNldCgpOiB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3Ig
cmVzb2x2aW5nCiAgYSBET00gb2Zmc2V0IHRvIHRoZSBjb3JyZWN0IHJlbmRlcmVyICsgZnJhZ21l
bnQtbG9jYWwgb2Zmc2V0LiBSb3V0ZXMgdG8KICB0aGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIGZv
ciBvZmZzZXRzIGJlbG93IGZyYWdtZW50U3RhcnQsIG90aGVyd2lzZQogIHJldHVybnMgdGhlIHJl
bWFpbmluZyBmcmFnbWVudCB3aXRoIGFkanVzdGVkIG9mZnNldC4KLSBQb3NpdGlvbjo6cmVzb2x2
ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTogY29udmVuaWVuY2Ugd3JhcHBlciB0aGF0IGFsc28K
ICBjYXN0cyB0byBSZW5kZXJUZXh0LgotIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKTog
Y29udmVydHMgZnJhZ21lbnQtbG9jYWwgb2Zmc2V0IGJhY2sgdG8KICBET00gb2Zmc2V0LiBVc2Vk
IHdoZW4gZXhpdGluZyByZW5kZXJlciBzcGFjZSAoY2FyZXRNYXhPZmZzZXQsCiAgY3JlYXRlUG9z
aXRpb25XaXRoQWZmaW5pdHksIGVuZFBvc2l0aW9uRm9yTGluZSwgcG9zaXRpb25BdFJpZ2h0Qm91
bmRhcnktCiAgT2ZCaURpUnVuLCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KS4KLSBmaXJzdExldHRl
ckFkanVzdGVkRnJhZ21lbnRMb2NhbE9mZnNldCgpOiBjb252ZXJ0cyBET00gb2Zmc2V0IHRvCiAg
ZnJhZ21lbnQtbG9jYWwuIFVzZWQgaW4gUG9zaXRpb246OnVwc3RyZWFtL2Rvd25zdHJlYW0gd2hl
cmUgdGhlcmUgaXMgbm8KICBQb3NpdGlvbiBvYmplY3QgdG8gY2FsbCByZW5kZXJlckFuZE9mZnNl
dCgpIG9uLgotIGNyb3NzZXNGaXJzdExldHRlckJvdW5kYXJ5KCk6IHByZXZlbnRzIHVwc3RyZWFt
L2Rvd25zdHJlYW0gZnJvbQogIGNhbm9uaWNhbGl6aW5nIHBvc2l0aW9ucyBhY3Jvc3MgdGhlIGZp
cnN0LWxldHRlciBzcGxpdC4gV2l0aG91dCB0aGlzLAogIFZpc2libGVQb3NpdGlvbihvZmZzZXQg
MCkgYW5kIFZpc2libGVQb3NpdGlvbihvZmZzZXQgMSkgd291bGQgY29sbGFwc2UKICB0byB0aGUg
c2FtZSBjYW5vbmljYWwgcG9zaXRpb24sIG1ha2luZyB0aGUgZmlyc3QgbGV0dGVyIHVuc2VsZWN0
YWJsZS4KICBNdXN0IHJ1biBiZWZvcmUgdGhlIGlzU3RyZWFtZXIgdXBkYXRlIHRvIHNlZSB0aGUg
cHJlLXVwZGF0ZSBsYXN0VmlzaWJsZS4KClBvc2l0aW9uOjppc0NhbmRpZGF0ZSwgaXNSZW5kZXJl
ZENoYXJhY3RlciwgcmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb246CiAgVGhlc2UgY2hlY2sgdGV4
dCBvZmZzZXQgdmFsaWRpdHkgYWdhaW5zdCByZW5kZXJlciB0ZXh0IGJveGVzLiBUaGV5IG5vdwog
IHVzZSByZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpIHRvIGFzayB0aGUgY29ycmVjdCBy
ZW5kZXJlcgogIChmaXJzdC1sZXR0ZXIgb3IgcmVtYWluaW5nIGZyYWdtZW50KSBpbnN0ZWFkIG9m
IGFsd2F5cyBhc2tpbmcgdGhlCiAgcmVtYWluaW5nIGZyYWdtZW50IHdpdGggYSByYXcgRE9NIG9m
ZnNldC4KClBvc2l0aW9uOjppbmxpbmVCb3hBbmRPZmZzZXQ6IHJlc29sdmVzIHRvIHRoZSBjb3Jy
ZWN0IGlubGluZSBib3ggZm9yCiAgY2FyZXQvc2VsZWN0aW9uIHBvc2l0aW9uaW5nLiBOb3cgZGVs
ZWdhdGVzIHRvIHJlbmRlcmVyQW5kT2Zmc2V0KCkKICBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRo
ZSBmaXJzdC1sZXR0ZXIgcm91dGluZyBsb2dpYy4KClJlbmRlcmVkUG9zaXRpb246IHN0b3JlcyB0
aGUgb3JpZ2luYWwgRE9NIG5vZGUgKG1fbm9kZSkgZnJvbSB0aGUgUG9zaXRpb24KICBkdXJpbmcg
Y29uc3RydWN0aW9uLiBXaXRob3V0IHRoaXMsIHBvc2l0aW9uQXRMZWZ0Qm91bmRhcnlPZkJpRGlS
dW4oKQogIHByb2R1Y2VzIGEgbnVsbC1ub2RlIFBvc2l0aW9uIHdoZW4gdGhlIGlubGluZSBib3gg
YmVsb25ncyB0byB0aGUKICBhbm9ueW1vdXMgZmlyc3QtbGV0dGVyIHRleHQsIGNhdXNpbmcgYWRq
dXN0RW5kcG9pbnRzQXRCaWRpQm91bmRhcnkoKQogIHRvIGNvbGxhcHNlIHRoZSBzZWxlY3Rpb24g
d2hlbiBkcmFnZ2luZyBsZWZ0IHBhc3QgdGhlIGZpcnN0IGxldHRlci4KClZpc2libGVQb3NpdGlv
bjo6cmlnaHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlOiB3aGVuIGJpZGkgdHJhdmVyc2FsCiAg
bGFuZHMgb24gdGhlIGFub255bW91cyBmaXJzdC1sZXR0ZXIgdGV4dCBib3gsIHJlc29sdmVzIHRo
ZSBET00gbm9kZQogIHZpYSByZW1haW5pbmdUZXh0RnJhZ21lbnRGb3JGaXJzdExldHRlcigpIGJl
Zm9yZSBjcmVhdGluZyB0aGUgUG9zaXRpb24uCgpSZW5kZXJUZXh0RnJhZ21lbnQ6OmNhbkJlU2Vs
ZWN0aW9uTGVhZjogcmV0dXJucyB0cnVlIGZvciByZW1haW5pbmcKICBmcmFnbWVudHMgd2l0aCBm
aXJzdC1sZXR0ZXIsIG1hdGNoaW5nIGJhc2UgUmVuZGVyVGV4dCBiZWhhdmlvciBzbwogIGNyb3Nz
LWVsZW1lbnQgc2VsZWN0aW9ucyAoQ21kK0EpIGluY2x1ZGUgdGhlIHJlbWFpbmluZyB0ZXh0LgoK
KiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNy
b3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbDogQWRkZWQu
CiogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0
LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5o
dG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXIt
c2VsZWN0aW9uLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRv
ci9maXJzdC1sZXR0ZXItd29yZC1ib3VuZGFyeS1leHBlY3RlZC50eHQ6CiAgUHJvZ3Jlc3Npb24u
IExhc3QgdGVzdCBjYXNlIGlzIHByZS1leGlzdGluZyBidWcgYW5kIGl0IG5ldmVyIHJlYWxseSBQ
QVNTZWQgLXRoZSBvZmYtYnktb25lIGVycm9yIG1hZGUgaXQgKGluY29ycmVjdGx5KSBQQVNTLgoK
KiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxpZGF0aW9u
LWNyYXNoLWV4cGVjdGVkLnR4dDoKICBQcm9ncmVzc2lvbi4gV2UgbWF0Y2ggb3RoZXIgZW5naW5l
cyBub3cuCgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
ZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dDoKKiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAy
LWV4cGVjdGVkLnR4dDoKICBQcm9ncmVzc2lvbi4gQ29udGVudCBpcyBzZWxlY3RlZCBub3cgYWNy
b3NzIDxsaT5zIHdpdGggZmlyc3QtbGV0dGVyLgoKKiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwOgotLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgICAgICAgICAgICAg
ICB8IDExOCArKysrKysrKysrKystLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oICAg
ICAgICAgICAgICAgICB8ICAgOCArKwogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0
b3IuY3BwICAgICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3Bw
ICAgICAgICAgICAgfCAgMTAgKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oICAg
ICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcCAgICAgfCAgMTAgKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlv
bi5jcHAgICB8ICAxMCArLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9u
LmggICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCAg
ICAgICB8IDEzNCArKysrKysrKystLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmggICAgICAgICB8ICAgMyAtCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVQb3NpdGlvbi5jcHAgICAgfCAgMjggKysrLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlVW5pdHMuY3BwICAgICAgIHwgICA1ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcCAgICAgfCAgIDUgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0RnJhZ21lbnQuY3BwICB8ICAxMSArLQogLi4uZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1l
bnQtZXhwZWN0ZWQudHh0IHwgIDEzICsrCiAuLi4vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9z
cy1lbGVtZW50Lmh0bWwgfCAgNDMgKysrKysrCiAuLi4vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQgICAgICAgfCAgMzMgKysrKysKIC4uLnN0LWxldHRlci1zZWxlY3Rpb24tcGFp
bnRpbmctZXhwZWN0ZWQuaHRtbCB8ICAyNSArKysrCiAuLi4vZmlyc3QtbGV0dGVyLXNlbGVjdGlv
bi1wYWludGluZy5odG1sICAgICAgfCAgMjUgKysrKwogLi4uL3NlbGVjdGlvbi9maXJzdC1sZXR0
ZXItc2VsZWN0aW9uLmh0bWwgICAgIHwgMTAxICsrKysrKysrKysrKysKIC4uLi9maXJzdC1sZXR0
ZXItd29yZC1ib3VuZGFyeS1leHBlY3RlZC50eHQgICB8ICAgNiArLQogLi4uZXItcGFydGlhbC1p
bnZhbGlkYXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0IHwgICAyICstCiAuLi4vc2VsZWN0aW9uL2V4
dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQgfCAgIDIgKy0KIC4uLi9zZWxlY3Rpb24vZXh0
ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dCB8ICAgMiArLQogLi4uL3NlbGVjdGlvbi9leHRl
bmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0IHwgICAyICstCiAyNSBmaWxlcyBjaGFuZ2VkLCA0
ODcgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3Mt
ZWxlbWVudC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxl
dHRlci1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBl
Y3RlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5o
dG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggMmZiNGExNDRhMDVmLi41ODJmYTQyYWI3
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUg
IlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIKICNp
bmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHVGV4dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC02NDIsNiArNjQzLDMwIEBAIHN0YXRpYyBOb2Rl
KiBlbmNsb3NpbmdWaXN1YWxCb3VuZGFyeShTVVBQUkVTU19VTkNIRUNLRURfTE9DQUwgTm9kZSog
bm9kZSkKICAgICByZXR1cm4gbm9kZTsKIH0KIAorLy8gVGhlIGZpcnN0LWxldHRlciBhbmQgcmVt
YWluaW5nIHRleHQgYXJlIHNlcGFyYXRlIHJlbmRlcmVycyBidXQgc2hhcmUgb25lIERPTQorLy8g
dGV4dCBub2RlLiB1cHN0cmVhbS9kb3duc3RyZWFtIG11c3Qgbm90IGNyb3NzIHRoaXMgYm91bmRh
cnksIGp1c3QgbGlrZSB0aGV5CisvLyBtdXN0IG5vdCBjcm9zcyB2aXN1YWxseSBkaXN0aW5jdCBu
b2RlIGJvdW5kYXJpZXMuCitzdGF0aWMgYm9vbCBjcm9zc2VzRmlyc3RMZXR0ZXJCb3VuZGFyeShj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBjdXJy
ZW50LCBjb25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBwcmV2aW91c0xhc3RWaXNpYmxlKQoreworICAg
IGF1dG8qIHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+
KHJlbmRlcmVyKTsKKyAgICBpZiAoIXRleHRGcmFnbWVudCB8fCAhdGV4dEZyYWdtZW50LT5maXJz
dExldHRlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBmcmFnbWVudFN0YXJ0
ID0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpOworICAgIGF1dG8gY3Vy
cmVudE9mZnNldCA9IGN1cnJlbnQub2Zmc2V0SW5MZWFmTm9kZSgpOworICAgIGF1dG8gbGFzdE9m
ZnNldCA9IHByZXZpb3VzTGFzdFZpc2libGUub2Zmc2V0SW5MZWFmTm9kZSgpOworICAgIC8vIE9u
ZSBvZmZzZXQgaXMgaW4gdGhlIGZpcnN0LWxldHRlciByYW5nZSBhbmQgdGhlIG90aGVyIGlzIG5v
dC4KKyAgICAvLyBPZmZzZXRzIGF0IGZyYWdtZW50U3RhcnQgYmVsb25nIHRvIHRoZSByZW1haW5p
bmcgZnJhZ21lbnQsIG5vdCB0aGUgZmlyc3QtbGV0dGVyLgorICAgIHJldHVybiAoY3VycmVudE9m
ZnNldCA8IGZyYWdtZW50U3RhcnQpICE9IChsYXN0T2Zmc2V0IDwgZnJhZ21lbnRTdGFydCk7Cit9
CisKKy8vIENvbnZlcnQgYSBET00gb2Zmc2V0IHRvIGZyYWdtZW50LWxvY2FsIGZvciByZW1haW5p
bmcgdGV4dCBmcmFnbWVudHMgd2l0aCBmaXJzdC1sZXR0ZXIuCitzdGF0aWMgdW5zaWduZWQgZmly
c3RMZXR0ZXJBZGp1c3RlZEZyYWdtZW50TG9jYWxPZmZzZXQoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgdW5zaWduZWQgb2Zmc2V0KQoreworICAgIGlmIChhdXRvKiB0ZXh0RnJhZ21lbnQg
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHRleHRGcmFn
bWVudCAmJiB0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkgJiYgb2Zmc2V0ID49IHRleHRGcmFn
bWVudC0+c3RhcnQoKSkKKyAgICAgICAgcmV0dXJuIG9mZnNldCAtIHRleHRGcmFnbWVudC0+c3Rh
cnQoKTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCiAvLyB1cHN0cmVhbSgpIGFuZCBkb3duc3Ry
ZWFtKCkgd2FudCB0byByZXR1cm4gcG9zaXRpb25zIHRoYXQgYXJlIGVpdGhlciBpbiBhCiAvLyB0
ZXh0IG5vZGUgb3IgYXQganVzdCBiZWZvcmUgYSBub24tdGV4dCBub2RlLiAgVGhpcyBtZXRob2Qg
Y2hlY2tzIGZvciB0aGF0Lgogc3RhdGljIGJvb2wgaXNTdHJlYW1lcihjb25zdCBQb3NpdGlvbkl0
ZXJhdG9yJiBwb3MpCkBAIC03MTIsNiArNzM3LDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0
cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICAvLyBEb24ndCBtb3ZlIHBhc3Qg
dGhlIGZpcnN0LWxldHRlciBib3VuZGFyeSB3aXRoaW4gYSB0ZXh0IG5vZGUuCisgICAgICAgIGlm
IChjcm9zc2VzRmlyc3RMZXR0ZXJCb3VuZGFyeSgqcmVuZGVyZXIsIGN1cnJlbnRQb3NpdGlvbiwg
bGFzdFZpc2libGUpKQorICAgICAgICAgICAgcmV0dXJuIGxhc3RWaXNpYmxlOworCiAgICAgICAg
IC8vIHRyYWNrIGxhc3QgdmlzaWJsZSBzdHJlYW1lciBwb3NpdGlvbgogICAgICAgICBpZiAoaXNT
dHJlYW1lcihjdXJyZW50UG9zaXRpb24pKQogICAgICAgICAgICAgbGFzdFZpc2libGUgPSBjdXJy
ZW50UG9zaXRpb247CkBAIC03NDAsMTAgKzc2OSwxMCBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBz
dHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAg
ICAgICAgLy8gcmVuZGVyIHRyZWUgd2hpY2ggY2FuIGhhdmUgYSBkaWZmZXJlbnQgbGVuZ3RoIGR1
ZSB0byBjYXNlIHRyYW5zZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgIC8vIFVudGlsIHdlIHJl
c29sdmUgdGhhdCwgZGlzYWJsZSB0aGlzIHNvIHdlIGNhbiBydW4gdGhlIGxheW91dCB0ZXN0cyEK
ICAgICAgICAgICAgICAgICAvL0FTU0VSVChjdXJyZW50T2Zmc2V0ID49IHJlbmRlcmVyLT5jYXJl
dE1heE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdh
Y3lQb3NpdGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgcmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCkp
OworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKGN1
cnJlbnROb2RlLnB0cigpLCBjYXJldE1heE9mZnNldChjdXJyZW50Tm9kZSkpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gY3VycmVudFBvc2l0aW9u
Lm9mZnNldEluTGVhZk5vZGUoKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dE9mZnNldCA9IGZpcnN0
TGV0dGVyQWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KCp0ZXh0UmVuZGVyZXIsIGN1cnJlbnRQ
b3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9
IGZpcnN0VGV4dEJveDsgYm94OykgewogICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0ID4g
Ym94LT5zdGFydCgpICYmIHRleHRPZmZzZXQgPD0gYm94LT5lbmQoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKQEAgLTgyNyw2ICs4NTYsMTAgQEAgUG9zaXRp
b24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUp
IGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIC8vIERvbid0
IG1vdmUgcGFzdCB0aGUgZmlyc3QtbGV0dGVyIGJvdW5kYXJ5IHdpdGhpbiBhIHRleHQgbm9kZS4K
KyAgICAgICAgaWYgKGNyb3NzZXNGaXJzdExldHRlckJvdW5kYXJ5KCpyZW5kZXJlciwgY3VycmVu
dFBvc2l0aW9uLCBsYXN0VmlzaWJsZSkpCisgICAgICAgICAgICByZXR1cm4gbGFzdFZpc2libGU7
CisKICAgICAgICAgLy8gdHJhY2sgbGFzdCB2aXNpYmxlIHN0cmVhbWVyIHBvc2l0aW9uCiAgICAg
ICAgIGlmIChpc1N0cmVhbWVyKGN1cnJlbnRQb3NpdGlvbikpCiAgICAgICAgICAgICBsYXN0Vmlz
aWJsZSA9IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTg0OSw3ICs4ODIsNyBAQCBQb3NpdGlvbiBQb3Np
dGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QK
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGN1cnJl
bnROb2RlLnB0cigpLCB0ZXh0UmVuZGVyZXItPmNhcmV0TWluT2Zmc2V0KCkpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gY3VycmVudFBvc2l0aW9u
Lm9mZnNldEluTGVhZk5vZGUoKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dE9mZnNldCA9IGZpcnN0
TGV0dGVyQWRqdXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KCp0ZXh0UmVuZGVyZXIsIGN1cnJlbnRQ
b3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9
IGZpcnN0VGV4dEJveDsgYm94OykgewogICAgICAgICAgICAgICAgIGlmICghYm94LT5sZW5ndGgo
KSAmJiB0ZXh0T2Zmc2V0ID09IGJveC0+c3RhcnQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnRQb3NpdGlvbjsKQEAgLTg5OCw3ICs5MzEsMTMgQEAgYm9vbCBQb3NpdGlvbjo6
aGFzUmVuZGVyZWROb25Bbm9ueW1vdXNEZXNjZW5kYW50c1dpdGhIZWlnaHQoY29uc3QgUmVuZGVy
RWxlbWVudCYKICAgICBhdXRvIGlzSG9yaXpvbnRhbCA9IHJlbmRlcmVyLmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCk7CiAgICAgQ2hlY2tlZFB0ciBzdG9wID0gcmVuZGVyZXIubmV4dEluUHJlT3Jk
ZXJBZnRlckNoaWxkcmVuKCk7CiAgICAgZm9yIChDaGVja2VkUHRyIGRlc2NlbmRhbnQgPSByZW5k
ZXJlci5maXJzdENoaWxkKCk7IGRlc2NlbmRhbnQgJiYgZGVzY2VuZGFudCAhPSBzdG9wOyBkZXNj
ZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3JkZXIoKSkgewotICAgICAgICBpZiAoIWRl
c2NlbmRhbnQtPm5vblBzZXVkb05vZGUoKSkKKyAgICAgICAgYXV0byBzaG91bGRTa2lwID0gWyZd
IHsKKyAgICAgICAgICAgIGlmIChkZXNjZW5kYW50LT5ub25Qc2V1ZG9Ob2RlKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgQ2hlY2tlZFB0ciByZW5kZXJFbGVt
ZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpkZXNjZW5kYW50KTsKKyAgICAg
ICAgICAgIHJldHVybiAhcmVuZGVyRWxlbWVudCB8fCAhcmVuZGVyRWxlbWVudC0+aXNGaXJzdExl
dHRlcigpOworICAgICAgICB9OworICAgICAgICBpZiAoc2hvdWxkU2tpcCgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBib3VuZGluZ0JveExvZ2ljYWxIZWlnaHQgPSBb
Jl0oYXV0byByZWN0KSB7CkBAIC05MTYsNyArOTU1LDcgQEAgYm9vbCBQb3NpdGlvbjo6aGFzUmVu
ZGVyZWROb25Bbm9ueW1vdXNEZXNjZW5kYW50c1dpdGhIZWlnaHQoY29uc3QgUmVuZGVyRWxlbWVu
dCYKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChDaGVja2Vk
UHRyIHJlbmRlcklubGluZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpkZXNjZW5k
YW50KSkgewotICAgICAgICAgICAgaWYgKGlzRW1wdHlJbmxpbmUoKnJlbmRlcklubGluZSkgJiYg
Ym91bmRpbmdCb3hMb2dpY2FsSGVpZ2h0KHJlbmRlcklubGluZS0+bGluZXNCb3VuZGluZ0JveCgp
KSkKKyAgICAgICAgICAgIGlmICgocmVuZGVySW5saW5lLT5pc0ZpcnN0TGV0dGVyKCkgfHwgaXNF
bXB0eUlubGluZSgqcmVuZGVySW5saW5lKSkgJiYgYm91bmRpbmdCb3hMb2dpY2FsSGVpZ2h0KHJl
bmRlcklubGluZS0+bGluZXNCb3VuZGluZ0JveCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC05ODUsOCArMTAyNCwx
MCBAQCBib29sIFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiAh
bV9vZmZzZXQgJiYgbV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFuY2hvciAmJiAhbm9k
ZUlzVXNlclNlbGVjdE5vbmUobm9kZS0+cGFyZW50Tm9kZSgpKTsKICAgICB9CiAKLSAgICBpZiAo
Q2hlY2tlZFB0ciByZW5kZXJUZXh0ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5k
ZXJlcikpCi0gICAgICAgIHJldHVybiAhbm9kZUlzVXNlclNlbGVjdE5vbmUobm9kZS5nZXQoKSkg
JiYgcmVuZGVyVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChtX29mZnNldCk7CisgICAgaWYgKENo
ZWNrZWRQdHIgcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVy
ZXIpKSB7CisgICAgICAgIGF1dG8gW3Jlc29sdmVkVGV4dCwgcmVzb2x2ZWRPZmZzZXRdID0gcmVz
b2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuICFub2RlSXNVc2Vy
U2VsZWN0Tm9uZShub2RlLmdldCgpKSAmJiByZXNvbHZlZFRleHQgJiYgcmVzb2x2ZWRUZXh0LT5j
b250YWluc0NhcmV0T2Zmc2V0KHJlc29sdmVkT2Zmc2V0KTsKKyAgICB9CiAKICAgICBpZiAocG9z
aXRpb25CZWZvcmVPckFmdGVyTm9kZUlzQ2FuZGlkYXRlKCpub2RlKSkgewogICAgICAgICByZXR1
cm4gKChhdEZpcnN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpICYmIG1fYW5jaG9yVHlwZSA9PSBQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yKQpAQCAtMTAxMyw5ICsxMDU0LDEwIEBAIGJvb2wgUG9zaXRp
b246OmlzQ2FuZGlkYXRlKCkgY29uc3QKIAogYm9vbCBQb3NpdGlvbjo6aXNSZW5kZXJlZENoYXJh
Y3RlcigpIGNvbnN0CiB7Ci0gICAgUmVmUHRyIHRleHQgPSBkeW5hbWljRG93bmNhc3Q8VGV4dD4o
ZGVwcmVjYXRlZE5vZGUoKSk7Ci0gICAgQ2hlY2tlZFB0ciByZW5kZXJlciA9IHRleHQgPyB0ZXh0
LT5yZW5kZXJlcigpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXIt
PmNvbnRhaW5zUmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXQobV9vZmZzZXQpOworICAgIGlmICghZHlu
YW1pY0Rvd25jYXN0PFRleHQ+KGRlcHJlY2F0ZWROb2RlKCkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYXV0byBbcmVuZGVyVGV4dCwgb2Zmc2V0XSA9IHJlc29sdmVkVGV4dFJlbmRlcmVy
QW5kT2Zmc2V0KCk7CisgICAgcmV0dXJuIHJlbmRlclRleHQgJiYgcmVuZGVyVGV4dC0+Y29udGFp
bnNSZW5kZXJlZENoYXJhY3Rlck9mZnNldChvZmZzZXQpOwogfQogCiBzdGF0aWMgYm9vbCBpblNh
bWVFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KE5vZGUqIGEsIE5vZGUqIGIpCkBAIC0xMDYxLDE2
ICsxMTAzLDE2IEBAIGJvb2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKGNv
bnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICBpZiAoIWluU2FtZUVuY2xvc2luZ0Js
b2NrRmxvd0VsZW1lbnQobm9kZS5nZXQoKSwgcG9zaXRpb25Ob2RlLmdldCgpKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBDaGVja2VkUHRyIHRleHRSZW5kZXJlciA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpOwotICAgIGlmICh0ZXh0UmVuZGVyZXIgJiYgIXRl
eHRSZW5kZXJlci0+Y29udGFpbnNDYXJldE9mZnNldChtX29mZnNldCkpCisgICAgYXV0byBbdGV4
dFJlbmRlcmVyLCB0aGlzT2Zmc2V0XSA9IHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCk7
CisgICAgaWYgKHRleHRSZW5kZXJlciAmJiAhdGV4dFJlbmRlcmVyLT5jb250YWluc0NhcmV0T2Zm
c2V0KHRoaXNPZmZzZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDaGVja2VkUHRy
IHRleHRQb3NpdGlvblJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KCpwb3Np
dGlvblJlbmRlcmVyKTsKLSAgICBpZiAodGV4dFBvc2l0aW9uUmVuZGVyZXIgJiYgIXRleHRQb3Np
dGlvblJlbmRlcmVyLT5jb250YWluc0NhcmV0T2Zmc2V0KHBvc2l0aW9uLm1fb2Zmc2V0KSkKKyAg
ICBhdXRvIFt0ZXh0UG9zaXRpb25SZW5kZXJlciwgcG9zaXRpb25PZmZzZXRdID0gcG9zaXRpb24u
cmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICBpZiAodGV4dFBvc2l0aW9uUmVu
ZGVyZXIgJiYgIXRleHRQb3NpdGlvblJlbmRlcmVyLT5jb250YWluc0NhcmV0T2Zmc2V0KHBvc2l0
aW9uT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgdGhpc1Jl
bmRlcmVkT2Zmc2V0ID0gdGV4dFJlbmRlcmVyID8gdGV4dFJlbmRlcmVyLT5jb3VudFJlbmRlcmVk
Q2hhcmFjdGVyT2Zmc2V0c1VudGlsKG1fb2Zmc2V0KSA6IG1fb2Zmc2V0OwotICAgIHVuc2lnbmVk
IHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPSB0ZXh0UG9zaXRpb25SZW5kZXJlciA/IHRleHRQb3Np
dGlvblJlbmRlcmVyLT5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHBvc2l0aW9u
Lm1fb2Zmc2V0KSA6IHBvc2l0aW9uLm1fb2Zmc2V0OworICAgIHVuc2lnbmVkIHRoaXNSZW5kZXJl
ZE9mZnNldCA9IHRleHRSZW5kZXJlciA/IHRleHRSZW5kZXJlci0+Y291bnRSZW5kZXJlZENoYXJh
Y3Rlck9mZnNldHNVbnRpbCh0aGlzT2Zmc2V0KSA6IG1fb2Zmc2V0OworICAgIHVuc2lnbmVkIHBv
c2l0aW9uUmVuZGVyZWRPZmZzZXQgPSB0ZXh0UG9zaXRpb25SZW5kZXJlciA/IHRleHRQb3NpdGlv
blJlbmRlcmVyLT5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHBvc2l0aW9uT2Zm
c2V0KSA6IHBvc2l0aW9uLm1fb2Zmc2V0OwogCiAgICAgaWYgKHJlbmRlcmVyID09IHBvc2l0aW9u
UmVuZGVyZXIgJiYgdGhpc1JlbmRlcmVkT2Zmc2V0ID09IHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExOTUsMTYgKzEyMzcsNTIgQEAgc3RhdGljIFBv
c2l0aW9uIHVwc3RyZWFtSWdub3JpbmdFZGl0aW5nQm91bmRhcmllcyhQb3NpdGlvbiBwb3NpdGlv
bikKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKK3N0ZDo6cGFpcjxSZW5kZXJPYmplY3QqLCB1
bnNpZ25lZD4gUG9zaXRpb246OnJlbmRlcmVyQW5kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRv
KiBub2RlID0gZGVwcmVjYXRlZE5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVy
biB7IHsgfSwgeyB9IH07CisgICAgYXV0byogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7IHsgfSwgeyB9IH07CisgICAgdW5z
aWduZWQgb2Zmc2V0ID0gZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICBDaGVja2VkUHRy
IHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KCpyZW5k
ZXJlcik7CisgICAgaWYgKCF0ZXh0RnJhZ21lbnQgfHwgIXRleHRGcmFnbWVudC0+Zmlyc3RMZXR0
ZXIoKSkKKyAgICAgICAgcmV0dXJuIHsgcmVuZGVyZXIsIG9mZnNldCB9OworCisgICAgLy8gV2hl
biB0aGUgcmVtYWluaW5nIGZyYWdtZW50IGlzIGVtcHR5IChlbnRpcmUgdGV4dCBpcyB0aGUgZmly
c3QgbGV0dGVyKSwKKyAgICAvLyByb3V0ZSB0byB0aGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyJ3Mg
ZW5kIHBvc2l0aW9uIHNvICJhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIiIGlzIGEgdmFsaWQgY2Fy
ZXQgcG9zaXRpb24uCisgICAgaWYgKG9mZnNldCA+PSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkgJiYg
dGV4dEZyYWdtZW50LT50ZXh0KCkubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiB7IHJlbmRlcmVy
LCBvZmZzZXQgLSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkgfTsKKworICAgIC8vIEl0IGxvb2tzIGxp
a2Ugd2UgYXJlIG9uIHRoZSBmaXJzdCBsZXR0ZXIgcmVuZGVyZXIuCisgICAgQ2hlY2tlZFB0ciBm
aXJzdExldHRlclJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KHRleHRGcmFn
bWVudC0+Zmlyc3RMZXR0ZXIoKS0+Zmlyc3RDaGlsZCgpKTsKKyAgICBpZiAoIWZpcnN0TGV0dGVy
UmVuZGVyZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biB7IHsgfSwgeyB9IH07CisgICAgfQorCisgICAgLy8gVGhlIGZpcnN0LWxldHRlciB0ZXh0IG1h
eSBub3Qgc3RhcnQgYXQgRE9NIG9mZnNldCAwIChlLmcuIGNvbGxhcHNlZCB3aGl0ZXNwYWNlIHBy
ZWNlZGVzIHRoZSBmaXJzdCBsZXR0ZXIpLgorICAgIGF1dG8gZmlyc3RMZXR0ZXJTdGFydCA9IHRl
eHRGcmFnbWVudC0+c3RhcnQoKSAtIGZpcnN0TGV0dGVyUmVuZGVyZXItPnRleHQoKS5sZW5ndGgo
KTsKKyAgICByZXR1cm4gb2Zmc2V0ID49IGZpcnN0TGV0dGVyU3RhcnQgPyBzdGQ6Om1ha2VfcGFp
cihmaXJzdExldHRlclJlbmRlcmVyLCBvZmZzZXQgLSBmaXJzdExldHRlclN0YXJ0KSA6IHN0ZDo6
bWFrZV9wYWlyKG51bGxwdHIsIDApOworfQorCitzdGQ6OnBhaXI8UmVuZGVyVGV4dCosIHVuc2ln
bmVkPiBQb3NpdGlvbjo6cmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKSBjb25zdAorewor
ICAgIGF1dG8gW3JlbmRlcmVyLCBvZmZzZXRdID0gcmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICBp
ZiAoYXV0byogcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJl
cikpCisgICAgICAgIHJldHVybiB7IHJlbmRlclRleHQsIG9mZnNldCB9OworICAgIHJldHVybiB7
IG51bGxwdHIsIDAgfTsKK30KKwogSW5saW5lQm94QW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVC
b3hBbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJlY3Rpb24gcHJpbWFyeURpcmVj
dGlvbikgY29uc3QKIHsKICAgICBhdXRvIGNhcmV0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCi0gICAgUmVmUHRyIG5vZGUgPSBkZXBy
ZWNhdGVkTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIHsgeyB9LCBjYXJl
dE9mZnNldCB9OwotICAgIENoZWNrZWRQdHIgcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwor
ICAgIGF1dG8gW3JlbmRlcmVyLCByZXNvbHZlZE9mZnNldF0gPSByZW5kZXJlckFuZE9mZnNldCgp
OwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiB7IHsgfSwgY2FyZXRPZmZzZXQg
fTsKKyAgICBjYXJldE9mZnNldCA9IHJlc29sdmVkT2Zmc2V0OwogCiAgICAgSW5saW5lSXRlcmF0
b3I6OkxlYWZCb3hJdGVyYXRvciBib3g7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggNzI1Mzc5
OTdmNjVmLi5mZjhhYTQwZTY5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0zOCw2ICszOCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGVnYWN5SW5saW5lQm94OwogY2xhc3Mg
UmVuZGVyRWxlbWVudDsKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlclRleHQ7CiBj
bGFzcyBUZXh0OwogCiBzdHJ1Y3QgQm91bmRhcnlQb2ludDsKQEAgLTEwMyw2ICsxMDUsMTIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25BZnRlckFuY2hvcigpOwog
ICAgIH0KIAorICAgIC8vIFJldHVybnMgdGhlIHJlbmRlcmVyIGFuZCBmcmFnbWVudC1sb2NhbCBv
ZmZzZXQgZm9yIHRoaXMgcG9zaXRpb24sIGNvcnJlY3RseQorICAgIC8vIGhhbmRsaW5nIGZpcnN0
LWxldHRlciB0ZXh0IGZyYWdtZW50IHNwbGl0cyB3aGVyZSB0aGUgRE9NIHRleHQgbm9kZSdzIHJl
bmRlcmVyCisgICAgLy8gaXMgdGhlIHJlbWFpbmluZyBmcmFnbWVudCByYXRoZXIgdGhhbiB0aGUg
Zmlyc3QtbGV0dGVyIGZyYWdtZW50LgorICAgIHN0ZDo6cGFpcjxSZW5kZXJPYmplY3QqLCB1bnNp
Z25lZD4gcmVuZGVyZXJBbmRPZmZzZXQoKSBjb25zdDsKKyAgICBzdGQ6OnBhaXI8UmVuZGVyVGV4
dCosIHVuc2lnbmVkPiByZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpIGNvbnN0OworCiAg
ICAgUmVmUHRyPE5vZGU+IGZpcnN0Tm9kZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgYXJlIGNv
bnZlbmllbmNlIG1ldGhvZHMgd2hpY2ggYXJlIHNtYXJ0IGFib3V0IHdoZXRoZXIgdGhlIHBvc2l0
aW9uIGlzIG5laWdoYm9yIGFuY2hvcmVkIG9yIHBhcmVudCBhbmNob3JlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCmluZGV4IDQwMmI1MWEwMDYyZi4uMzY3NzZjMDExNzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCkBAIC0xNzUsOCArMTc1
LDEyIEBAIGJvb2wgUG9zaXRpb25JdGVyYXRvcjo6aXNDYW5kaWRhdGUoKSBjb25zdAogICAgIGlm
IChyZW5kZXJlci0+aXNCUigpKQogICAgICAgICByZXR1cm4gUG9zaXRpb24oKnRoaXMpLmlzQ2Fu
ZGlkYXRlKCk7CiAKLSAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0ID0gZHluYW1pY0Rvd25j
YXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiAhUG9zaXRpb246Om5v
ZGVJc1VzZXJTZWxlY3ROb25lKGFuY2hvck5vZGUuZ2V0KCkpICYmIHJlbmRlclRleHQtPmNvbnRh
aW5zQ2FyZXRPZmZzZXQobV9vZmZzZXRJbkFuY2hvcik7CisgICAgaWYgKENoZWNrZWRQdHIgcmVu
ZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKSB7CisgICAg
ICAgIGlmIChQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5vbmUoYW5jaG9yTm9kZS5nZXQoKSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8gW3Jlc29sdmVkVGV4dCwg
cmVzb2x2ZWRPZmZzZXRdID0gUG9zaXRpb24oKnRoaXMpLnJlc29sdmVkVGV4dFJlbmRlcmVyQW5k
T2Zmc2V0KCk7CisgICAgICAgIHJldHVybiByZXNvbHZlZFRleHQgJiYgcmVzb2x2ZWRUZXh0LT5j
b250YWluc0NhcmV0T2Zmc2V0KHJlc29sdmVkT2Zmc2V0KTsKKyAgICB9CiAKICAgICBpZiAocG9z
aXRpb25CZWZvcmVPckFmdGVyTm9kZUlzQ2FuZGlkYXRlKCphbmNob3JOb2RlKSkKICAgICAgICAg
cmV0dXJuIChhdFN0YXJ0T2ZOb2RlKCkgfHwgYXRFbmRPZk5vZGUoKSkgJiYgIVBvc2l0aW9uOjpu
b2RlSXNVc2VyU2VsZWN0Tm9uZShhbmNob3JOb2RlLT5wYXJlbnROb2RlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZy5jcHAKaW5kZXggMDQ4NzAyOTA1OTIwLi40ZDIwMDk3MmFkOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIlJl
bmRlclN0eWxlK0dldHRlcnNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCisjaW5jbHVkZSAiUmVu
ZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC05MDQsMTEgKzkwNSwxOCBA
QCBpbnQgY2FyZXRNYXhPZmZzZXQoY29uc3QgTm9kZSYgbm9kZSkKICAgICAvLyBGb3IgcmVuZGVy
ZWQgdGV4dCBub2RlcywgcmV0dXJuIHRoZSBsYXN0IHBvc2l0aW9uIHRoYXQgYSBjYXJldCBjb3Vs
ZCBvY2N1cHkuCiAgICAgaWYgKGF1dG8qIHRleHQgPSBkeW5hbWljRG93bmNhc3Q8VGV4dD4obm9k
ZSkpIHsKICAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyZXIgPSB0ZXh0LT5yZW5kZXJlcigp
KQotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5jYXJldE1heE9mZnNldCgpOworICAgICAg
ICAgICAgcmV0dXJuIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKnJlbmRlcmVyLCByZW5k
ZXJlci0+Y2FyZXRNYXhPZmZzZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBsYXN0T2Zmc2V0Rm9y
RWRpdGluZyhub2RlKTsKIH0KIAordW5zaWduZWQgZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNl
dChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1bnNpZ25lZCBvZmZzZXQpCit7CisgICAg
aWYgKGF1dG8qIHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21l
bnQ+KHJlbmRlcmVyKTsgdGV4dEZyYWdtZW50ICYmIHRleHRGcmFnbWVudC0+Zmlyc3RMZXR0ZXIo
KSkKKyAgICAgICAgcmV0dXJuIG9mZnNldCArIHRleHRGcmFnbWVudC0+c3RhcnQoKTsKKyAgICBy
ZXR1cm4gb2Zmc2V0OworfQorCiBib29sIGxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgcmV0dXJuIGxpbmVCcmVh
a0V4aXN0c0F0UG9zaXRpb24ocG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAppbmRleCA2MWU2MTAzNWM2NTAuLmIwODVmZDc0ODli
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTc5LDYgKzc5LDcgQEAgTm9kZSogcHJl
dmlvdXNMZWFmTm9kZShjb25zdCBOb2RlKik7CiBXRUJDT1JFX0VYUE9SVCBpbnQgbGFzdE9mZnNl
dEZvckVkaXRpbmcoY29uc3QgTm9kZSYpOwogaW50IGNhcmV0TWluT2Zmc2V0KGNvbnN0IE5vZGUm
KTsKIGludCBjYXJldE1heE9mZnNldChjb25zdCBOb2RlJik7Cit1bnNpZ25lZCBmaXJzdExldHRl
ckFkanVzdGVkRE9NT2Zmc2V0KGNvbnN0IFJlbmRlck9iamVjdCYsIHVuc2lnbmVkIG9mZnNldCk7
CiAKIGJvb2wgaGFzRWRpdGFibGVTdHlsZShjb25zdCBOb2RlJiwgRWRpdGFibGVUeXBlKTsKIGJv
b2wgaXNFZGl0YWJsZU5vZGUoY29uc3QgTm9kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcAppbmRleCBiOWI0YzU5MTVmNDAuLjQyNGIxYTk4MzhjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTI0MzYsMTIgKzI0MzYs
MTAgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiAgICAgLy8gV2Ug
Y2FuIGdldCBpbnRvIGEgc3RhdGUgd2hlcmUgdGhlIHNlbGVjdGlvbiBlbmRwb2ludHMgbWFwIHRv
IHRoZSBzYW1lIFZpc2libGVQb3NpdGlvbiB3aGVuIGEgc2VsZWN0aW9uIGlzIGRlbGV0ZWQKICAg
ICAvLyBiZWNhdXNlIHdlIGRvbid0IHlldCBub3RpZnkgdGhlIEZyYW1lU2VsZWN0aW9uIG9mIHRl
eHQgcmVtb3ZhbC4KICAgICBpZiAoQ2hlY2tlZFB0ciB2aWV3ID0gZG9jdW1lbnQtPnJlbmRlclZp
ZXcoKTsgc3RhcnRQb3MuaXNOb3ROdWxsKCkgJiYgZW5kUG9zLmlzTm90TnVsbCgpICYmIHNlbGVj
dGlvbi52aXNpYmxlU3RhcnQoKSAhPSBzZWxlY3Rpb24udmlzaWJsZUVuZCgpKSB7Ci0gICAgICAg
IENoZWNrZWRQdHIgc3RhcnRSZW5kZXJlciA9IHN0YXJ0UG9zLmRlcHJlY2F0ZWROb2RlKCktPnJl
bmRlcmVyKCk7Ci0gICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0UG9zLmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCk7Ci0gICAgICAgIENoZWNrZWRQdHIgZW5kUmVuZGVyZXIgPSBlbmRQb3Mu
ZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgaW50IGVuZE9mZnNldCA9IGVu
ZFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgICAgICBBU1NFUlQoc3RhcnRPZmZz
ZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0gMCk7Ci0gICAgICAgIHZpZXctPnNlbGVjdGlvbigpLnNl
dCh7IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Rh
cnRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kT2Zmc2V0KSB9KTsKKyAgICAgICAg
YXV0byBbc3RhcnRSZW5kZXJlciwgc3RhcnRPZmZzZXRdID0gc3RhcnRQb3MucmVuZGVyZXJBbmRP
ZmZzZXQoKTsKKyAgICAgICAgYXV0byBbZW5kUmVuZGVyZXIsIGVuZE9mZnNldF0gPSBlbmRQb3Mu
cmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICAgICAgaWYgKHN0YXJ0UmVuZGVyZXIgJiYgZW5kUmVu
ZGVyZXIpCisgICAgICAgICAgICB2aWV3LT5zZWxlY3Rpb24oKS5zZXQoeyBzdGFydFJlbmRlcmVy
LCBlbmRSZW5kZXJlciwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCB9KTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCmluZGV4IGNkNWM3OTBj
OGRlNy4uMWFmM2Y0YzQ0NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bmRlcmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQ
b3NpdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJlZFBvc2l0aW9u
LmgiCiAKICNpbmNsdWRlICJDYXJldFJlY3RDb21wdXRhdGlvbi5oIgorI2luY2x1ZGUgIkVkaXRp
bmcuaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJOb2RlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIKQEAgLTg1LDYgKzg2LDcg
QEAgUmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9z
aXRpb24sIEFmZmluaXR5IGFmZmluaXR5KQogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgbV9ub2RlID0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKTsK
ICAgICBhdXRvIGJveEFuZE9mZnNldCA9IHBvc2l0aW9uLmlubGluZUJveEFuZE9mZnNldChhZmZp
bml0eSk7CiAgICAgbV9ib3ggPSBib3hBbmRPZmZzZXQuYm94OwogICAgIG1fb2Zmc2V0ID0gYm94
QW5kT2Zmc2V0Lm9mZnNldDsKQEAgLTIwNiw3ICsyMDgsNyBAQCBQb3NpdGlvbiBSZW5kZXJlZFBv
c2l0aW9uOjpwb3NpdGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QKICAgICBBU1NF
UlQoYXRMZWZ0Qm91bmRhcnlPZkJpZGlSdW4oKSk7CiAKICAgICBpZiAoYXRMZWZ0bW9zdE9mZnNl
dEluQm94KCkpCi0gICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHBy
b3RlY3QobV9yZW5kZXJlci0+bm9kZSgpKS5nZXQoKSwgbV9vZmZzZXQpOworICAgICAgICByZXR1
cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG1fbm9kZS5nZXQoKSkuZ2V0
KCksIG1fb2Zmc2V0KTsKIAogICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9u
KHByb3RlY3QobmV4dExlYWZPbkxpbmUoKS0+cmVuZGVyZXIoKS5ub2RlKCkpLmdldCgpLCBuZXh0
TGVhZk9uTGluZSgpLT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpOwogfQpAQCAtMjE1LDggKzIxNywx
MCBAQCBQb3NpdGlvbiBSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0UmlnaHRCb3VuZGFyeU9m
QmlEaVJ1bigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGF0UmlnaHRCb3VuZGFyeU9mQmlkaVJ1bigp
KTsKIAotICAgIGlmIChhdFJpZ2h0bW9zdE9mZnNldEluQm94KCkpCi0gICAgICAgIHJldHVybiBt
YWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHByb3RlY3QobV9yZW5kZXJlci0+bm9kZSgpKS5n
ZXQoKSwgbV9vZmZzZXQpOworICAgIGlmIChhdFJpZ2h0bW9zdE9mZnNldEluQm94KCkpIHsKKyAg
ICAgICAgYXV0byBvZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KCptX3JlbmRl
cmVyLCBtX29mZnNldCk7CisgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0
aW9uKHByb3RlY3QobV9ub2RlLmdldCgpKS5nZXQoKSwgb2Zmc2V0KTsKKyAgICB9CiAKICAgICBy
ZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KHByZXZpb3VzTGVhZk9u
TGluZSgpLT5yZW5kZXJlcigpLm5vZGUoKSkuZ2V0KCksIHByZXZpb3VzTGVhZk9uTGluZSgpLT5y
aWdodG1vc3RDYXJldE9mZnNldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJl
ZFBvc2l0aW9uLmgKaW5kZXggNzRiZTRlNDdkY2I0Li5lN2U1ODBhODE1NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCkBAIC04OSw2ICs4OSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBhdFJpZ2h0Qm91bmRhcnlPZkJpZGlSdW4oU2hvdWxkTWF0Y2hCaWRpTGV2
ZWwsIHVuc2lnbmVkIGNoYXIgYmlkaUxldmVsT2ZSdW4pIGNvbnN0OwogCiAgICAgU2luZ2xlVGhy
ZWFkV2Vha1B0cjxjb25zdCBSZW5kZXJPYmplY3Q+IG1fcmVuZGVyZXI7CisgICAgUmVmUHRyPE5v
ZGU+IG1fbm9kZTsKICAgICBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yIG1fYm94Owog
ICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKaW5kZXggZWZjYTE3YTBkYTE5Li4yMDYxN2VkM2U5MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTYwNyw2ICs2MDcsOCBAQCBib29sIFRl
eHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgIENoZWNrZWRSZWYgcmVuZGVyZXIgPSAq
dGV4dE5vZGUtPnJlbmRlcmVyKCk7CiAgICAgbV9sYXN0VGV4dE5vZGUgPSB0ZXh0Tm9kZS5wdHIo
KTsKICAgICBhdXRvIHJlbmRlcmVyVGV4dCA9IHJlbmRlcmVyVGV4dEZvckJlaGF2aW9yKHJlbmRl
cmVyLmdldCgpKTsKKyAgICAvLyB0ZXh0RnJhZ21lbnQgaXMgdGhlIHJlbmRlcmVyIHRoYXQgaG9s
ZHMgdGhlIHRyYWlsaW5nIGNvbnRlbnQgYW5kIGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3Qg
bGV0dGVyIHJlbmRlcmVyLgorICAgIENoZWNrZWRQdHIgdGV4dEZyYWdtZW50ID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIuZ2V0KCkpOwogCiAgICAgLy8gaGFu
ZGxlIHByZS1mb3JtYXR0ZWQgdGV4dAogICAgIGlmICghcmVuZGVyZXItPnN0eWxlKCkuY29sbGFw
c2VXaGl0ZVNwYWNlKCkpIHsKQEAgLTYxNSw4ICs2MTcsOCBAQCBib29sIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICAgICAgZW1pdENoYXJhY3RlcignICcsIFdURjo6bW92
ZSh0ZXh0Tm9kZSksIG51bGxwdHIsIHJ1blN0YXJ0LCBydW5TdGFydCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyVGV4
dEZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIp
OyByZW5kZXJUZXh0RnJhZ21lbnQgJiYgIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmICFtX29mZnNl
dCkgewotICAgICAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcigqcmVuZGVyVGV4dEZy
YWdtZW50KTsKKyAgICAgICAgaWYgKHRleHRGcmFnbWVudCAmJiAhbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgJiYgIW1fb2Zmc2V0KSB7CisgICAgICAgICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVy
KCp0ZXh0RnJhZ21lbnQpOwogICAgICAgICAgICAgaWYgKG1fZmlyc3RMZXR0ZXJUZXh0KSB7CiAg
ICAgICAgICAgICAgICAgU3RyaW5nIGZpcnN0TGV0dGVyID0gbV9maXJzdExldHRlclRleHQtPnRl
eHQoKTsKICAgICAgICAgICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgKnByb3RlY3QobV9maXJz
dExldHRlclRleHQpLCBtX29mZnNldCwgbV9vZmZzZXQgKyBmaXJzdExldHRlci5sZW5ndGgoKSk7
CkBAIC02MjcsOSArNjI5LDE1IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgp
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0SXRlcmF0
b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGludCByZW5kZXJlclRleHRMZW5ndGggPSByZW5kZXJlclRleHQubGVu
Z3RoKCk7Ci0gICAgICAgIGludCBlbmQgPSAodGV4dE5vZGUucHRyKCkgPT0gbV9lbmRDb250YWlu
ZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFYOwotICAgICAgICBpbnQgcnVuRW5kID0gc3RkOjpt
aW4ocmVuZGVyZXJUZXh0TGVuZ3RoLCBlbmQpOworICAgICAgICBhdXRvIHJlbmRlcmVyVGV4dExl
bmd0aCA9IHN0YXRpY19jYXN0PGludD4ocmVuZGVyZXJUZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAg
YXV0byBlbmQgPSAodGV4dE5vZGUucHRyKCkgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRPZmZz
ZXQgOiBJTlRfTUFYOworICAgICAgICBpZiAodGV4dEZyYWdtZW50ICYmIHRleHRGcmFnbWVudC0+
Zmlyc3RMZXR0ZXIoKSkgeworICAgICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyB0ZXh0IGZyYWdt
ZW50J3MgdGV4dCBpcyBmcmFnbWVudC1sb2NhbC4gQ29udmVydCBET00gb2Zmc2V0cyB0byBmcmFn
bWVudC1sb2NhbCBzbyB3ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IHRoZSByZW5kZXJlcidzIHRleHQg
bGVuZ3RoLgorICAgICAgICAgICAgYXV0byBmcmFnbWVudFN0YXJ0ID0gc3RhdGljX2Nhc3Q8aW50
Pih0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpOworICAgICAgICAgICAgcnVuU3RhcnQgPSBzdGQ6Om1h
eCgwLCBydW5TdGFydCAtIGZyYWdtZW50U3RhcnQpOworICAgICAgICAgICAgZW5kID0gZW5kID09
IElOVF9NQVggPyBJTlRfTUFYIDogc3RkOjptYXgoMCwgZW5kIC0gZnJhZ21lbnRTdGFydCk7Cisg
ICAgICAgIH0KKyAgICAgICAgYXV0byBydW5FbmQgPSBzdGQ6Om1pbihyZW5kZXJlclRleHRMZW5n
dGgsIGVuZCk7CiAKICAgICAgICAgaWYgKHJ1blN0YXJ0ID49IHJ1bkVuZCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNjQwLDggKzY0OCw4IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Tm9kZSgpCiAKICAgICBzdGQ6OnRpZShtX3RleHRSdW4sIG1fdGV4dFJ1bkxvZ2ljYWxP
cmRlckNhY2hlKSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZv
cihyZW5kZXJlci5nZXQoKSk7CiAKLSAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0RnJhZ21l
bnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHJlbmRl
clRleHRGcmFnbWVudCAmJiAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgIW1fb2Zmc2V0KQotICAg
ICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKCpyZW5kZXJUZXh0RnJhZ21lbnQpOworICAg
IGlmICh0ZXh0RnJhZ21lbnQgJiYgIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmICFtX29mZnNldCkK
KyAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcigqdGV4dEZyYWdtZW50KTsKICAgICBl
bHNlIGlmICghbV90ZXh0UnVuICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSkgewogICAgICAgICBp
ZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUg
JiYgIW1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVzU3R5
bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY2NSwxMiArNjcz
LDIxIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKIAogICAgIGF1dG8gW2Zp
cnN0VGV4dFJ1biwgb3JkZXJDYWNoZV0gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94SW5M
b2dpY2FsT3JkZXJGb3IocmVuZGVyZXIpOwogCi0gICAgYXV0byByZW5kZXJlclRleHQgPSByZW5k
ZXJlclRleHRGb3JCZWhhdmlvcihyZW5kZXJlci5nZXQoKSk7Ci0gICAgdW5zaWduZWQgcmFuZ2VT
dGFydCA9IG1fb2Zmc2V0OwotICAgIGF1dG8gcmFuZ2VFbmQgPSBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiB7IH07Ci0gICAgaWYgKHRleHROb2RlLnB0cigpID09IG1fZW5kQ29udGFpbmVyKQotICAg
ICAgICByYW5nZUVuZCA9IG1fZW5kT2Zmc2V0OworICAgIC8vIEZvciByZW1haW5pbmcgdGV4dCBm
cmFnbWVudHMgYWZ0ZXIgYSBmaXJzdC1sZXR0ZXIgc3BsaXQsIHRleHQgYm94IG9mZnNldHMgYXJl
IGZyYWdtZW50LWxvY2FsIGJ1dCBtX29mZnNldC9tX2VuZE9mZnNldCBhcmUgRE9NIG9mZnNldHMu
CisgICAgdW5zaWduZWQgcmVtYWluaW5nRnJhZ21lbnRTdGFydCA9IDA7CisgICAgaWYgKGF1dG8q
IHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJl
ci5nZXQoKSk7IHJlbmRlclRleHQgJiYgcmVuZGVyVGV4dC0+Zmlyc3RMZXR0ZXIoKSkKKyAgICAg
ICAgcmVtYWluaW5nRnJhZ21lbnRTdGFydCA9IHJlbmRlclRleHQtPnN0YXJ0KCk7CisKKyAgICBh
dXRvIHRvRnJhZ21lbnRMb2NhbCA9IFsmXSh1bnNpZ25lZCBkb21PZmZzZXQpIHsKKyAgICAgICAg
cmV0dXJuIGRvbU9mZnNldCA+IHJlbWFpbmluZ0ZyYWdtZW50U3RhcnQgPyBkb21PZmZzZXQgLSBy
ZW1haW5pbmdGcmFnbWVudFN0YXJ0IDogMDsKKyAgICB9OworICAgIGF1dG8gdG9ET01PZmZzZXQg
PSBbJl0odW5zaWduZWQgbG9jYWxPZmZzZXQpIHsKKyAgICAgICAgcmV0dXJuIGxvY2FsT2Zmc2V0
ICsgcmVtYWluaW5nRnJhZ21lbnRTdGFydDsKKyAgICB9OwogCisgICAgYXV0byByZW5kZXJlclRl
eHQgPSByZW5kZXJlclRleHRGb3JCZWhhdmlvcihyZW5kZXJlci5nZXQoKSk7CisgICAgYXV0byBy
YW5nZVN0YXJ0ID0gdG9GcmFnbWVudExvY2FsKG1fb2Zmc2V0KTsKKyAgICBhdXRvIHJhbmdlRW5k
ID0gdGV4dE5vZGUucHRyKCkgPT0gbV9lbmRDb250YWluZXIgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwo
dG9GcmFnbWVudExvY2FsKG1fZW5kT2Zmc2V0KSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgd2hpbGUg
KG1fdGV4dFJ1bikgewogICAgICAgICBhdXRvIHRleHRSdW5TdGFydCA9IG1fdGV4dFJ1bi0+c3Rh
cnQoKTsKICAgICAgICAgYXV0byB0ZXh0UnVuRW5kID0gdGV4dFJ1blN0YXJ0ICsgbV90ZXh0UnVu
LT5sZW5ndGgoKTsKQEAgLTcwNCw3ICs3MjEsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dFJ1bigpCiAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHRyYW5zbGF0ZXMgbmV3
bGluZXMgYW5kIHRhYnMgdG8gc3BhY2VzIHdpdGhvdXQgY29weWluZyB0aGUgdGV4dC4KICAgICAg
ICAgICAgIGlmIChpc05ld2xpbmVPclRhYihyZW5kZXJlclRleHRbcnVuU3RhcnRdKSkgewogICAg
ICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyAnLCB0ZXh0Tm9kZS5jb3B5UmVmKCksIG51bGxw
dHIsIHJ1blN0YXJ0LCBydW5TdGFydCArIDEpOwotICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0g
cnVuU3RhcnQgKyAxOworICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gdG9ET01PZmZzZXQocnVu
U3RhcnQgKyAxKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byBz
dWJydW5FbmQgPSBydW5TdGFydCArIDE7CiAgICAgICAgICAgICAgICAgZm9yICg7IHN1YnJ1bkVu
ZCA8IHJ1bkVuZDsgKytzdWJydW5FbmQpIHsKQEAgLTcxNiwxMyArNzMzLDEzIEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RT
cGFjZUNvbGxhcHNlZEJ5TmV4dE5vblRleHRSdW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAr
K3N1YnJ1bkVuZDsgLy8gcnVuRW5kIHN0b3BwZWQgYmVmb3JlIGxhc3Qgc3BhY2UuIEluY3JlbWVu
dCBieSBvbmUgdG8gcmVzdG9yZSB0aGUgc3BhY2UuCiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIG1fb2Zmc2V0ID0gc3VicnVuRW5kOworICAgICAgICAgICAgICAgIG1fb2Zmc2V0
ID0gdG9ET01PZmZzZXQoc3VicnVuRW5kKTsKICAgICAgICAgICAgICAgICBlbWl0VGV4dCh0ZXh0
Tm9kZSwgcmVuZGVyZXIsIHJ1blN0YXJ0LCBzdWJydW5FbmQpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZG9pbmcgYSBzdWJydW4gdGhhdCBkb2Vzbid0IGdvIHRv
IHRoZSBlbmQgb2YgdGhlIHRleHQgYm94LAogICAgICAgICAgICAgLy8gY29tZSBiYWNrIGFnYWlu
IHRvIGZpbmlzaCBoYW5kbGluZyB0aGlzIHRleHQgYm94OyBkb24ndCBhZHZhbmNlIHRvIHRoZSBu
ZXh0IG9uZS4KLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3NpdGlv
bkVuZE9mZnNldCkgPCB0ZXh0UnVuRW5kKQorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3Bvc2l0aW9uRW5kT2Zmc2V0KSA8IHRvRE9NT2Zmc2V0KHRleHRSdW5FbmQpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgLy8gQWR2YW5jZSBhbmQgcmV0
dXJuCkBAIC0xMjAxLDggKzEyMTgsMTEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KFRl
eHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRTdGFydE8KIAogICAg
IG1fcG9zaXRpb25Ob2RlID0gdGV4dE5vZGU7CiAgICAgbV9wb3NpdGlvbk9mZnNldEJhc2VOb2Rl
ID0gbnVsbHB0cjsKLSAgICBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPSB0ZXh0U3RhcnRPZmZzZXQ7
Ci0gICAgbV9wb3NpdGlvbkVuZE9mZnNldCA9IHRleHRFbmRPZmZzZXQ7CisgICAgLy8gRm9yIHJl
bWFpbmluZyB0ZXh0IGZyYWdtZW50cyBhZnRlciBhIGZpcnN0LWxldHRlciBzcGxpdCwgdGhlIHRl
eHQgb2Zmc2V0cyBhcmUKKyAgICAvLyBmcmFnbWVudC1sb2NhbCBidXQgcG9zaXRpb24gb2Zmc2V0
cyBuZWVkIHRvIGJlIERPTS1yZWxhdGl2ZSBmb3IgcmFuZ2UoKSB0bworICAgIC8vIHJldHVybiBj
b3JyZWN0IGJvdW5kYXJ5IHBvaW50cyAodXNlZCBieSB3b3JkL3NlbnRlbmNlIGJvdW5kYXJ5IGRl
dGVjdGlvbikuCisgICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0ID0gZmlyc3RMZXR0ZXJBZGp1c3Rl
ZERPTU9mZnNldChyZW5kZXJlciwgdGV4dFN0YXJ0T2Zmc2V0KTsKKyAgICBtX3Bvc2l0aW9uRW5k
T2Zmc2V0ID0gZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldChyZW5kZXJlciwgdGV4dEVuZE9m
ZnNldCk7CiAKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSBzdHJpbmdbdGV4dEVuZE9mZnNldCAtIDFd
OwogICAgIG1fY29weWFibGVUZXh0LnNldChXVEY6Om1vdmUoc3RyaW5nKSwgdGV4dFN0YXJ0T2Zm
c2V0LCB0ZXh0RW5kT2Zmc2V0IC0gdGV4dFN0YXJ0T2Zmc2V0KTsKQEAgLTEzNjEsNzAgKzEzODEs
NTIgQEAgYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9k
ZSgpCiB7CiAgICAgbV9sYXN0VGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PihtX25vZGUuZ2V0KCkp
OwogCi0gICAgaW50IHN0YXJ0T2Zmc2V0OwotICAgIGludCBvZmZzZXRJbk5vZGU7Ci0gICAgQ2hl
Y2tlZFB0ciByZW5kZXJlciA9IGhhbmRsZUZpcnN0TGV0dGVyKHN0YXJ0T2Zmc2V0LCBvZmZzZXRJ
bk5vZGUpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIENo
ZWNrZWRSZWYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9ub2RlLT5yZW5kZXJl
cigpKTsKKyAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gKG1fbm9kZSA9PSBtX3N0YXJ0Q29udGFpbmVy
KSA/IG1fc3RhcnRPZmZzZXQgOiAwOwogCi0gICAgU3RyaW5nIHRleHQgPSByZW5kZXJlci0+dGV4
dCgpOworICAgIGF1dG8gdGV4dCA9IHJlbmRlcmVyLT50ZXh0KCk7CiAgICAgaWYgKCFyZW5kZXJl
ci0+aGFzUmVuZGVyZWRUZXh0KCkgJiYgdGV4dC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAoc3RhcnRPZmZzZXQgKyBvZmZzZXRJbk5vZGUgPT0gbV9vZmZzZXQpIHsK
LSAgICAgICAgQVNTRVJUKCFtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyKTsKKyAgICBpZiAoc3Rh
cnRPZmZzZXQgPT0gbV9vZmZzZXQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gTm90
aGluZyB0byBlbWl0IHdoZW4gdGhlIHJlbmRlcmVyIHRleHQgaXMgZW1wdHkgKGUuZy4gdGhlIHJl
bWFpbmluZyB0ZXh0CisgICAgLy8gZnJhZ21lbnQgYWZ0ZXIgYSBmaXJzdC1sZXR0ZXIgc3BsaXQg
Y292ZXJzIG5vIGNoYXJhY3RlcnMpLgorICAgIGlmICghdGV4dC5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQogCiAgICAgbV9wb3NpdGlvbkVuZE9mZnNldCA9IG1fb2Zmc2V0
OwotICAgIG1fb2Zmc2V0ID0gc3RhcnRPZmZzZXQgKyBvZmZzZXRJbk5vZGU7CisgICAgbV9vZmZz
ZXQgPSBzdGFydE9mZnNldDsKICAgICBtX3Bvc2l0aW9uTm9kZSA9IG1fbm9kZTsKICAgICBtX3Bv
c2l0aW9uU3RhcnRPZmZzZXQgPSBtX29mZnNldDsKIAotICAgIEFTU0VSVChtX3Bvc2l0aW9uU3Rh
cnRPZmZzZXQgPCBtX3Bvc2l0aW9uRW5kT2Zmc2V0KTsKLSAgICBBU1NFUlQobV9wb3NpdGlvblN0
YXJ0T2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlID49IDApOwotICAgIEFTU0VSVChtX3Bvc2l0aW9uRW5k
T2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlID4gMCk7Ci0gICAgQVNTRVJUKG1fcG9zaXRpb25FbmRPZmZz
ZXQgLSBvZmZzZXRJbk5vZGUgPD0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0Lmxlbmd0aCgpKSk7Ci0K
LSAgICBtX2xhc3RDaGFyYWN0ZXIgPSB0ZXh0W21fcG9zaXRpb25FbmRPZmZzZXQgLSBvZmZzZXRJ
bk5vZGUgLSAxXTsKLSAgICBtX2NvcHlhYmxlVGV4dC5zZXQoV1RGOjptb3ZlKHRleHQpLCBtX3Bv
c2l0aW9uU3RhcnRPZmZzZXQgLSBvZmZzZXRJbk5vZGUsIG1fcG9zaXRpb25FbmRPZmZzZXQgLSBt
X3Bvc2l0aW9uU3RhcnRPZmZzZXQpOwotICAgIG1fdGV4dCA9IG1fY29weWFibGVUZXh0LnRleHQo
KTsKLQotICAgIHJldHVybiAhbV9zaG91bGRIYW5kbGVGaXJzdExldHRlcjsKLX0KKyAgICAvLyBG
b3IgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIGFmdGVyIGEgZmlyc3QtbGV0dGVyIHNwbGl0LCBE
T00gb2Zmc2V0cyAobV9wb3NpdGlvblN0YXJ0T2Zmc2V0LAorICAgIC8vIG1fcG9zaXRpb25FbmRP
ZmZzZXQpIGRpZmZlciBmcm9tIGZyYWdtZW50LWxvY2FsIG9mZnNldHMgdXNlZCB0byBpbmRleCBp
bnRvIHJlbmRlcmVyIHRleHQuCisgICAgLy8gQ29udmVydCB0byBmcmFnbWVudC1sb2NhbCBmb3Ig
dGV4dCBhY2Nlc3MsIGtlZXBpbmcgRE9NIG9mZnNldHMgZm9yIHJhbmdlKCkuCisgICAgdW5zaWdu
ZWQgZnJhZ21lbnRTdGFydCA9IDA7CisgICAgaWYgKGF1dG8qIHJlbmRlclRleHQgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlci5nZXQoKSk7IHJlbmRlclRleHQg
JiYgcmVuZGVyVGV4dC0+Zmlyc3RMZXR0ZXIoKSAmJiBzdGFydE9mZnNldCA+PSBzdGF0aWNfY2Fz
dDxpbnQ+KHJlbmRlclRleHQtPnN0YXJ0KCkpKQorICAgICAgICBmcmFnbWVudFN0YXJ0ID0gcmVu
ZGVyVGV4dC0+c3RhcnQoKTsKIAotQ2hlY2tlZFB0cjxSZW5kZXJUZXh0PiBTaW1wbGlmaWVkQmFj
a3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVGaXJzdExldHRlcihpbnQmIHN0YXJ0T2Zmc2V0LCBp
bnQmIG9mZnNldEluTm9kZSkKLXsKLSAgICBDaGVja2VkUmVmIHJlbmRlcmVyID0gZG93bmNhc3Q8
UmVuZGVyVGV4dD4oKm1fbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgc3RhcnRPZmZzZXQgPSAobV9u
b2RlID09IG1fc3RhcnRDb250YWluZXIpID8gbV9zdGFydE9mZnNldCA6IDA7CisgICAgLy8gQWZ0
ZXIgZWRpdGluZyBtdXRhdGlvbnMgKGUuZy4gZGVsZXRpbmcgdGhlIGxhc3QgY2hhcmFjdGVyKSwK
KyAgICAvLyBtX3Bvc2l0aW9uRW5kT2Zmc2V0IGNhbiBleGNlZWQgdGhlIHRleHQgbm9kZSdzIGN1
cnJlbnQgbGVuZ3RoIGluIERPTSBzcGFjZS4KKyAgICBhdXRvIHRleHRMZW5ndGhJbkRPTVNwYWNl
ID0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0Lmxlbmd0aCgpICsgZnJhZ21lbnRTdGFydCk7CisgICAg
aWYgKG1fcG9zaXRpb25FbmRPZmZzZXQgPiB0ZXh0TGVuZ3RoSW5ET01TcGFjZSkKKyAgICAgICAg
bV9wb3NpdGlvbkVuZE9mZnNldCA9IHRleHRMZW5ndGhJbkRPTVNwYWNlOwogCi0gICAgQ2hlY2tl
ZFB0ciBmcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRl
cmVyKTsKLSAgICBpZiAoIWZyYWdtZW50KSB7Ci0gICAgICAgIG9mZnNldEluTm9kZSA9IDA7Ci0g
ICAgICAgIHJldHVybiByZW5kZXJlcjsKLSAgICB9CisgICAgaW50IGxvY2FsU3RhcnQgPSBtX3Bv
c2l0aW9uU3RhcnRPZmZzZXQgLSBmcmFnbWVudFN0YXJ0OworICAgIGludCBsb2NhbEVuZCA9IG1f
cG9zaXRpb25FbmRPZmZzZXQgLSBmcmFnbWVudFN0YXJ0OwogCi0gICAgaW50IG9mZnNldEFmdGVy
Rmlyc3RMZXR0ZXIgPSBmcmFnbWVudC0+c3RhcnQoKTsKLSAgICBpZiAoc3RhcnRPZmZzZXQgPj0g
b2Zmc2V0QWZ0ZXJGaXJzdExldHRlcikgewotICAgICAgICBBU1NFUlQoIW1fc2hvdWxkSGFuZGxl
Rmlyc3RMZXR0ZXIpOwotICAgICAgICBvZmZzZXRJbk5vZGUgPSBvZmZzZXRBZnRlckZpcnN0TGV0
dGVyOwotICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgfQotCi0gICAgaWYgKCFtX3Nob3Vs
ZEhhbmRsZUZpcnN0TGV0dGVyICYmIHN0YXJ0T2Zmc2V0ICsgb2Zmc2V0QWZ0ZXJGaXJzdExldHRl
ciA8IG1fb2Zmc2V0KSB7Ci0gICAgICAgIG1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSB0cnVl
OwotICAgICAgICBvZmZzZXRJbk5vZGUgPSBvZmZzZXRBZnRlckZpcnN0TGV0dGVyOwotICAgICAg
ICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgfQotCi0gICAgbV9zaG91bGRIYW5kbGVGaXJzdExldHRl
ciA9IGZhbHNlOwotICAgIG9mZnNldEluTm9kZSA9IDA7Ci0gICAgQ2hlY2tlZFB0ciBmaXJzdExl
dHRlclJlbmRlcmVyID0gZmlyc3RSZW5kZXJUZXh0SW5GaXJzdExldHRlcihwcm90ZWN0KGZyYWdt
ZW50LT5maXJzdExldHRlcigpKSk7CisgICAgQVNTRVJUKG1fcG9zaXRpb25TdGFydE9mZnNldCA8
IG1fcG9zaXRpb25FbmRPZmZzZXQpOworICAgIEFTU0VSVChsb2NhbFN0YXJ0ID49IDApOworICAg
IEFTU0VSVChsb2NhbEVuZCA+IDApOworICAgIEFTU0VSVChsb2NhbEVuZCA8PSBzdGF0aWNfY2Fz
dDxpbnQ+KHRleHQubGVuZ3RoKCkpKTsKIAotICAgIG1fb2Zmc2V0ID0gZmlyc3RMZXR0ZXJSZW5k
ZXJlci0+Y2FyZXRNYXhPZmZzZXQoKTsKLSAgICBtX29mZnNldCArPSBjb2xsYXBzZWRTcGFjZUxl
bmd0aCgqZmlyc3RMZXR0ZXJSZW5kZXJlciwgbV9vZmZzZXQpOworICAgIG1fbGFzdENoYXJhY3Rl
ciA9IHRleHRbbG9jYWxFbmQgLSAxXTsKKyAgICBtX2NvcHlhYmxlVGV4dC5zZXQoV1RGOjptb3Zl
KHRleHQpLCBsb2NhbFN0YXJ0LCBtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gbV9wb3NpdGlvblN0YXJ0
T2Zmc2V0KTsKKyAgICBtX3RleHQgPSBtX2NvcHlhYmxlVGV4dC50ZXh0KCk7CiAKLSAgICByZXR1
cm4gZmlyc3RMZXR0ZXJSZW5kZXJlcjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBTaW1w
bGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggNDMyMmFhYTY1ZDBlLi45ZTY1ZGZk
MWVmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMjAxLDcgKzIw
MSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBleGl0Tm9kZSgpOwogICAgIGJvb2wg
aGFuZGxlVGV4dE5vZGUoKTsKLSAgICBDaGVja2VkUHRyPFJlbmRlclRleHQ+IGhhbmRsZUZpcnN0
TGV0dGVyKGludCYgc3RhcnRPZmZzZXQsIGludCYgb2Zmc2V0SW5Ob2RlKTsKICAgICBib29sIGhh
bmRsZVJlcGxhY2VkRWxlbWVudCgpOwogICAgIGJvb2wgaGFuZGxlTm9uVGV4dE5vZGUoKTsKICAg
ICB2b2lkIGVtaXRDaGFyYWN0ZXIoY2hhcjE2X3QsIFJlZlB0cjxOb2RlPiYmLCBpbnQgc3RhcnRP
ZmZzZXQsIGludCBlbmRPZmZzZXQpOwpAQCAtMjM2LDggKzIzNSw2IEBAIHByaXZhdGU6CiAgICAg
Ly8gV2hldGhlciBtX25vZGUgaGFzIGFkdmFuY2VkIGJleW9uZCB0aGUgaXRlcmF0aW9uIHJhbmdl
IChpLmUuIG1fc3RhcnRDb250YWluZXIpLgogICAgIGJvb2wgbV9oYXZlUGFzc2VkU3RhcnRDb250
YWluZXIgeyBmYWxzZSB9OwogCi0gICAgLy8gU2hvdWxkIGhhbmRsZSBmaXJzdC1sZXR0ZXIgcmVu
ZGVyZXIgaW4gdGhlIG5leHQgY2FsbCB0byBoYW5kbGVUZXh0Tm9kZS4KLSAgICBib29sIG1fc2hv
dWxkSGFuZGxlRmlyc3RMZXR0ZXIgeyBmYWxzZSB9OwogfTsKIAogLy8gQnVpbGRzIG9uIHRoZSB0
ZXh0IGl0ZXJhdG9yLCBhZGRpbmcgYSBjaGFyYWN0ZXIgcG9zaXRpb24gc28gd2UgY2FuIHdhbGsg
b25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggZjVk
MWVlZTU4NmM3Li43OGQxMDhjNmRjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVQb3NpdGlvbi5jcHAKQEAgLTQ0LDcgKzQ0LDkgQEAKICNpbmNsdWRlICJQb3NpdGlvbklubGlu
ZXMuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgor
I2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
SW5saW5lcy5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNp
bXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5o
IgpAQCAtNTgsNiArNjAsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCisvLyBUaGUgYW5vbnltb3VzIHRleHQgcmVuZGVyZXIgaW5zaWRlIDo6
Zmlyc3QtbGV0dGVyIGhhcyBubyBET00gbm9kZS4KK3N0YXRpYyBSZW5kZXJUZXh0RnJhZ21lbnQq
IHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIpCit7CisgICAgaWYgKHJlbmRlcmVyLm5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICBpZiAoYXV0byogcGFyZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveE1vZGVs
T2JqZWN0PihyZW5kZXJlci5wYXJlbnQoKSkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPmZpcnN0
TGV0dGVyUmVtYWluaW5nVGV4dCgpOworICAgIHJldHVybiB7IH07Cit9CisKIFZpc2libGVQb3Np
dGlvbjo6VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgQWZmaW5pdHkg
YWZmaW5pdHkpCiAgICAgOiBtX2RlZXBQb3NpdGlvbiB7IGNhbm9uaWNhbFBvc2l0aW9uKHBvc2l0
aW9uKSB9CiB7CkBAIC0xNDAsNyArMTUyLDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjps
ZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoKHJl
bmRlcmVyLT5pc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkgfHwgcmVuZGVyZXIt
PmlzQlIoKSkgJiYgb2Zmc2V0ID09IGJveC0+cmlnaHRtb3N0Q2FyZXRPZmZzZXQoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBwcmV2aW91
c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogbmV4dFZpc3VhbGx5
RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwogCi0gICAgICAgICAgICBpZiAoIXJl
bmRlcmVyLT5ub2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSAmJiAh
cmVtYWluaW5nVGV4dEZyYWdtZW50Rm9yRmlyc3RMZXR0ZXIoKnJlbmRlcmVyKSkgewogICAgICAg
ICAgICAgICAgIGJveC50cmF2ZXJzZUxpbmVMZWZ0d2FyZE9uTGluZSgpOwogICAgICAgICAgICAg
ICAgIGlmICghYm94KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRh
dGUobV9kZWVwUG9zaXRpb24pIDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVw
UG9zaXRpb24pOwpAQCAtMTgyLDggKzE5NCw4IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6
bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgaWYgKGJv
eC0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURpcmVjdGlvbikgewogICAgICAgICAgICAgICAgIGlm
ICghcHJldmlvdXNCb3gpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsU3RhcnQg
PSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUgotICAgICAgICAgICAgICAg
ICAgICAgICAgPyBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJX
aXRoTm9kZShib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDogSW5saW5lSXRlcmF0b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXJXaXRoTm9k
ZShib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSk7CisgICAgICAgICAgICAgICAgICAgICAgICA/
IElubGluZUl0ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcihib3gtPmxpbmVC
b3goKSwgb3JkZXJDYWNoZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogSW5saW5lSXRlcmF0
b3I6Omxhc3RMZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoYm94LT5saW5lQm94KCksIG9yZGVyQ2Fj
aGUpOwogICAgICAgICAgICAgICAgICAgICBpZiAobG9naWNhbFN0YXJ0KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBib3ggPSBsb2dpY2FsU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CkBAIC0yNTMsNyArMjY1LDkgQEAgUG9zaXRp
b24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHAgPSBtYWtlRGVwcmVj
YXRlZExlZ2FjeVBvc2l0aW9uKHByb3RlY3QocmVuZGVyZXItPm5vZGUoKSkuZ2V0KCksIG9mZnNl
dCk7CisgICAgICAgIGF1dG8qIHJlbWFpbmluZ0ZyYWdtZW50ID0gcmVtYWluaW5nVGV4dEZyYWdt
ZW50Rm9yRmlyc3RMZXR0ZXIoKnJlbmRlcmVyKTsKKyAgICAgICAgYXV0byogbm9kZSA9IHJlbWFp
bmluZ0ZyYWdtZW50ID8gcmVtYWluaW5nRnJhZ21lbnQtPnRleHROb2RlKCkgOiByZW5kZXJlci0+
bm9kZSgpOworICAgICAgICBwID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0
KG5vZGUpLmdldCgpLCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KCpyZW5kZXJlciwgb2Zm
c2V0KSk7CiAKICAgICAgICAgaWYgKChwLmlzQ2FuZGlkYXRlKCkgJiYgcC5kb3duc3RyZWFtKCkg
IT0gZG93bnN0cmVhbVN0YXJ0KSB8fCBwLmF0U3RhcnRPZlRyZWUoKSB8fCBwLmF0RW5kT2ZUcmVl
KCkpCiAgICAgICAgICAgICByZXR1cm4gcDsKQEAgLTMwNSw3ICszMTksNyBAQCBQb3NpdGlvbiBW
aXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAg
ICAgICAgICAgICBpZiAoKHJlbmRlcmVyLT5pc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5s
aW5lKCkgfHwgcmVuZGVyZXItPmlzQlIoKSkgJiYgb2Zmc2V0ID09IGJveC0+bGVmdG1vc3RDYXJl
dE9mZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBib3gtPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSA/IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6
IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAKLSAg
ICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSkgeworICAgICAgICAgICAgaWYgKCFyZW5k
ZXJlci0+bm9kZSgpICYmICFyZW1haW5pbmdUZXh0RnJhZ21lbnRGb3JGaXJzdExldHRlcigqcmVu
ZGVyZXIpKSB7CiAgICAgICAgICAgICAgICAgYm94LnRyYXZlcnNlTGluZVJpZ2h0d2FyZE9uTGlu
ZSgpOwogICAgICAgICAgICAgICAgIGlmICghYm94KQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBuZXh0VmlzdWFsbHlE
aXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGlu
Y3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwpAQCAtNDIyLDcgKzQzNiw5IEBAIFBvc2l0aW9u
IFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgcCA9IG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChyZW5kZXJlci0+bm9kZSgpKS5nZXQoKSwgb2Zmc2V0
KTsKKyAgICAgICAgYXV0byogcmVtYWluaW5nRnJhZ21lbnQgPSByZW1haW5pbmdUZXh0RnJhZ21l
bnRGb3JGaXJzdExldHRlcigqcmVuZGVyZXIpOworICAgICAgICBhdXRvKiBub2RlID0gcmVtYWlu
aW5nRnJhZ21lbnQgPyByZW1haW5pbmdGcmFnbWVudC0+dGV4dE5vZGUoKSA6IHJlbmRlcmVyLT5u
b2RlKCk7CisgICAgICAgIHAgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHByb3RlY3Qo
bm9kZSkuZ2V0KCksIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKnJlbmRlcmVyLCBvZmZz
ZXQpKTsKIAogICAgICAgICBpZiAoKHAuaXNDYW5kaWRhdGUoKSAmJiBwLmRvd25zdHJlYW0oKSAh
PSBkb3duc3RyZWFtU3RhcnQpIHx8IHAuYXRTdGFydE9mVHJlZSgpIHx8IHAuYXRFbmRPZlRyZWUo
KSkKICAgICAgICAgICAgIHJldHVybiBwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5p
dHMuY3BwCmluZGV4IDJkNDIyN2FhMGY5MS4uMTcxYTk0OTA3NDE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJC
b3VuZGFyeVBvaW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RWRpdGluZy5oIgogI2luY2x1ZGUgIkVkaXRpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSFRNTEJS
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCkBAIC04NTUsNyArODU2LDcgQEAg
c3RhdGljIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBjLCBMaW5lRW5kcG9pbnQKICAgICAgICAgaW50IGVuZE9mZnNldCA9IGVuZFRleHRC
b3guc3RhcnQoKTsKICAgICAgICAgaWYgKCFlbmRUZXh0Qm94LmlzTGluZUJyZWFrKCkpCiAgICAg
ICAgICAgICBlbmRPZmZzZXQgKz0gZW5kVGV4dEJveC5sZW5ndGgoKTsKLSAgICAgICAgcG9zID0g
UG9zaXRpb24oZW5kVGV4dE5vZGUucmVsZWFzZU5vbk51bGwoKSwgZW5kT2Zmc2V0KTsKKyAgICAg
ICAgcG9zID0gUG9zaXRpb24oZW5kVGV4dE5vZGUucmVsZWFzZU5vbk51bGwoKSwgZmlyc3RMZXR0
ZXJBZGp1c3RlZERPTU9mZnNldChlbmRUZXh0Qm94LnJlbmRlcmVyKCksIGVuZE9mZnNldCkpOwog
ICAgIH0gZWxzZQogICAgICAgICBwb3MgPSBwb3NpdGlvbkFmdGVyTm9kZSgqZW5kTm9kZSk7CiAK
QEAgLTEyMzMsNyArMTIzNCw3IEBAIFJlZlB0cjxOb2RlPiBmaW5kRW5kT2ZQYXJhZ3JhcGgoTm9k
ZSogc3RhcnROb2RlLCBOb2RlKiBoaWdoZXN0Um9vdCwgTm9kZSogc3RheUluCiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbm9kZSA9IG47Ci0gICAgICAgICAg
ICBvZmZzZXQgPSByLT5jYXJldE1heE9mZnNldCgpOworICAgICAgICAgICAgb2Zmc2V0ID0gY2Fy
ZXRNYXhPZmZzZXQoKm4pOwogICAgICAgICAgICAgbiA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm4s
IHN0YXlJbnNpZGVCbG9jayk7CiAgICAgICAgIH0gZWxzZSBpZiAoZWRpdGluZ0lnbm9yZXNDb250
ZW50KCpuKSB8fCBpc1JlbmRlcmVkVGFibGUobi5nZXQoKSkpIHsKICAgICAgICAgICAgIG5vZGUg
PSBuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAzNTA4
NDFkMGQxYWUuLmY4MjE0NTVmMWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAj
aW5jbHVkZSAiTG9jYWxGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJOb2RlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJPdXRsaW5lUGFpbnRlci5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCkBAIC0xOTE0LDcgKzE5MTUsNyBA
QCBQb3NpdGlvbldpdGhBZmZpbml0eSBSZW5kZXJPYmplY3Q6OmNyZWF0ZVBvc2l0aW9uV2l0aEFm
ZmluaXR5KGludCBvZmZzZXQsIEFmZmluaQogICAgIGlmIChSZWZQdHIgbm9kZSA9IG5vblBzZXVk
b05vZGUoKSkgewogICAgICAgICBpZiAoIW5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkgewogICAg
ICAgICAgICAgLy8gSWYgaXQgY2FuIGJlIGZvdW5kLCB3ZSBwcmVmZXIgYSB2aXN1YWxseSBlcXVp
dmFsZW50IHBvc2l0aW9uIHRoYXQgaXMgZWRpdGFibGUuIAotICAgICAgICAgICAgUG9zaXRpb24g
cG9zaXRpb24gPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5vZGUuZ2V0KCksIG9mZnNl
dCk7CisgICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IG1ha2VEZXByZWNhdGVkTGVnYWN5
UG9zaXRpb24obm9kZS5nZXQoKSwgZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgqdGhpcywg
b2Zmc2V0KSk7CiAgICAgICAgICAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBwb3NpdGlvbi5kb3du
c3RyZWFtKENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAgICAgICAgIGlmIChjYW5kaWRh
dGUuZGVwcmVjYXRlZE5vZGUoKS0+aGFzRWRpdGFibGVTdHlsZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBQb3NpdGlvbldpdGhBZmZpbml0eShjYW5kaWRhdGUsIGFmZmluaXR5KTsKQEAgLTE5
MjMsNyArMTkyNCw3IEBAIFBvc2l0aW9uV2l0aEFmZmluaXR5IFJlbmRlck9iamVjdDo6Y3JlYXRl
UG9zaXRpb25XaXRoQWZmaW5pdHkoaW50IG9mZnNldCwgQWZmaW5pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFBvc2l0aW9uV2l0aEFmZmluaXR5KGNhbmRpZGF0ZSwgYWZmaW5pdHkpOwogICAgICAg
ICB9CiAgICAgICAgIC8vIEZJWE1FOiBFbGltaW5hdGUgbGVnYWN5IGVkaXRpbmcgcG9zaXRpb25z
Ci0gICAgICAgIHJldHVybiBQb3NpdGlvbldpdGhBZmZpbml0eShtYWtlRGVwcmVjYXRlZExlZ2Fj
eVBvc2l0aW9uKG5vZGUuZ2V0KCksIG9mZnNldCksIGFmZmluaXR5KTsKKyAgICAgICAgcmV0dXJu
IFBvc2l0aW9uV2l0aEFmZmluaXR5KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24obm9kZS5n
ZXQoKSwgZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgqdGhpcywgb2Zmc2V0KSksIGFmZmlu
aXR5KTsKICAgICB9CiAKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNyb3NzIHRoZSBib3VuZGFy
eSBiZXR3ZWVuIGVkaXRhYmxlIGFuZCBub24tZWRpdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKaW5kZXggNjkwZDgxMDcxZGFjLi5mN2Y1
ODJhN2NmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJh
Z21lbnQuY3BwCkBAIC02OCw3ICs2OCwxNiBAQCBSZW5kZXJUZXh0RnJhZ21lbnQ6On5SZW5kZXJU
ZXh0RnJhZ21lbnQoKQogCiBib29sIFJlbmRlclRleHRGcmFnbWVudDo6Y2FuQmVTZWxlY3Rpb25M
ZWFmKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGV4dE5vZGUoKSAmJiB0ZXh0Tm9kZSgpLT5oYXNF
ZGl0YWJsZVN0eWxlKCk7CisgICAgYXV0byogdGV4dE5vZGUgPSB0aGlzLT50ZXh0Tm9kZSgpOwor
ICAgIGlmICghdGV4dE5vZGUpIHsKKyAgICAgICAgLy8gQW5vbnltb3VzIGZpcnN0LWxldHRlciB0
ZXh0IGZyYWdtZW50cyBhcmUgc2VsZWN0YWJsZSB3aGVuIHRoZSByZW1haW5pbmcKKyAgICAgICAg
Ly8gdGV4dCBmcmFnbWVudCBoYXMgYW4gYXNzb2NpYXRlZCBET00gdGV4dCBub2RlLgorICAgICAg
ICBBU1NFUlQoaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHBhcmVudCgpKSAmJiBkb3duY2FzdDxS
ZW5kZXJCb3hNb2RlbE9iamVjdD4oKnBhcmVudCgpKS5maXJzdExldHRlclJlbWFpbmluZ1RleHQo
KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAvLyBSZW1haW5pbmcgdGV4dCBm
cmFnbWVudHMgd2l0aCBmaXJzdC1sZXR0ZXIgYXJlIGFsd2F5cyBzZWxlY3RhYmxlLAorICAgIC8v
IG1hdGNoaW5nIHRoZSBiYXNlIFJlbmRlclRleHQ6OmNhbkJlU2VsZWN0aW9uTGVhZigpIGJlaGF2
aW9yLgorICAgIHJldHVybiBmaXJzdExldHRlcigpID8gdHJ1ZSA6IHRleHROb2RlLT5oYXNFZGl0
YWJsZVN0eWxlKCk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dEZyYWdtZW50OjpzZXRUZXh0SW50ZXJu
YWwoY29uc3QgU3RyaW5nJiBuZXdUZXh0LCBib29sIGZvcmNlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVt
ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxl
dHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDcyZjQwM2M4MDgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNy
b3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgdGhhdCBzZWxl
Y3Rpb24gYWNyb3NzIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggOjpmaXJzdC1sZXR0ZXIgd29ya3Mg
Y29ycmVjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cbi9nLCAnfCcpIGlzICJGaXJzdCBw
YXJhZ3JhcGh8U2Vjb25kIHBhcmFncmFwaCIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkucmVwbGFjZSgvXG4vZywgJ3wnKSBpcyAic3QgcGFyYWdyYXBofFNlY29uZCIKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXG4vZywgJ3wnKSBp
cyAiRmlyc3QgcGFyYWdyYXBofFMiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKK0ZpcnN0IHBhcmFncmFwaAorU2Vjb25kIHBhcmFncmFwaApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlv
bi1jcm9zcy1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJz
dC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmRmYjM0ODhkNDVmMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3Mt
ZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorLmZpcnN0LWxldHRlci1zdHlsZWQ6OmZpcnN0LWxldHRlciB7CisgICAg
Y29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRh
aW5lciI+CisgICAgPGRpdiBpZD0icGFyYTEiIGNsYXNzPSJmaXJzdC1sZXR0ZXItc3R5bGVkIj5G
aXJzdCBwYXJhZ3JhcGg8L2Rpdj4KKyAgICA8ZGl2IGlkPSJwYXJhMiIgY2xhc3M9ImZpcnN0LWxl
dHRlci1zdHlsZWQiPlNlY29uZCBwYXJhZ3JhcGg8L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzZWxlY3Rpb24gYWNyb3NzIG11bHRpcGxlIGVsZW1lbnRz
IHdpdGggOjpmaXJzdC1sZXR0ZXIgd29ya3MgY29ycmVjdGx5LiIpOworCitmdW5jdGlvbiBzZWxl
Y3RBY3Jvc3NFbGVtZW50cyhzdGFydE5vZGUsIHN0YXJ0T2Zmc2V0LCBlbmROb2RlLCBlbmRPZmZz
ZXQpIHsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNldFN0YXJ0KHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXQpOworICAgIHJhbmdlLnNldEVuZChlbmRO
b2RlLCBlbmRPZmZzZXQpOworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cisg
ICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7Cit9CisK
Ky8vIFRlc3QgMTogU2VsZWN0IGFjcm9zcyB0d28gZmlyc3QtbGV0dGVyIHBhcmFncmFwaHMKK3Nl
bGVjdEFjcm9zc0VsZW1lbnRzKHBhcmExLmZpcnN0Q2hpbGQsIDAsIHBhcmEyLmZpcnN0Q2hpbGQs
IHBhcmEyLmZpcnN0Q2hpbGQubGVuZ3RoKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICd8JykiLCAiRmlyc3Qg
cGFyYWdyYXBofFNlY29uZCBwYXJhZ3JhcGgiKTsKKworLy8gVGVzdCAyOiBTZWxlY3QgZnJvbSBt
aWRkbGUgb2YgZmlyc3QgdG8gbWlkZGxlIG9mIHNlY29uZAorc2VsZWN0QWNyb3NzRWxlbWVudHMo
cGFyYTEuZmlyc3RDaGlsZCwgMywgcGFyYTIuZmlyc3RDaGlsZCwgNik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1xcbi9n
LCAnfCcpIiwgInN0IHBhcmFncmFwaHxTZWNvbmQiKTsKKworLy8gVGVzdCAzOiBTZWxlY3QgZnJv
bSBmaXJzdC1sZXR0ZXIgb2YgZmlyc3QgdG8gZmlyc3QtbGV0dGVyIG9mIHNlY29uZAorc2VsZWN0
QWNyb3NzRWxlbWVudHMocGFyYTEuZmlyc3RDaGlsZCwgMCwgcGFyYTIuZmlyc3RDaGlsZCwgMSk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
LnJlcGxhY2UoL1xcbi9nLCAnfCcpIiwgIkZpcnN0IHBhcmFncmFwaHxTIik7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZDA4ZDkzOWM3YjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2Vs
ZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMzIEBACitUZXN0IHRoYXQgc2VsZWN0aW9u
IHdvcmtzIGNvcnJlY3RseSB3aXRoIDo6Zmlyc3QtbGV0dGVyIHBzZXVkby1lbGVtZW50LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAiSGVsbG8iCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICIxMiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIlwi
UXVvdGUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJBIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiTmVzdGVkIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cbi9nLCAnfCcpIGlzICJGaXJz
dHxTZWNvbmQiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJFZGl0
YWJsZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIjEiCitQQVNT
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIyIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiSGVsIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAiXCJRIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xs
YXBzZWQgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yT2Zmc2V0IGlz
IDEKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIGlzIHRydWUKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hvck9mZnNldCBpcyAwCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJBIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCitIZWxsbworMTIKKyJRdW90ZQorQQorTmVzdGVkCitGaXJz
dAorU2Vjb25kCitFZGl0YWJsZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50
aW5nLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5kMDM5MDUzOGQzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwyNSBAQAorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPHN0eWxlPgorc3Bhbi5maXJzdC1sZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7
CisgICAgZm9udC1zaXplOiAyZW07Cit9Cis8L3N0eWxlPgorPGRpdiBpZD0idGFyZ2V0Ij48c3Bh
biBjbGFzcz0iZmlyc3QtbGV0dGVyIj5IPC9zcGFuPmVsbG8gV29ybGQ8L2Rpdj4KKzxzY3JpcHQ+
Cit3aW5kb3cudGVzdFJ1bm5lcj8ud2FpdFVudGlsRG9uZSgpOword2luZG93LnRlc3RSdW5uZXI/
LmRvbnRGb3JjZVJlcGFpbnQoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBh
d2FpdCBVSUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1v
dmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2Up
OworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIGF3YWl0IFVJSGVs
cGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyPy5ub3RpZnlEb25l
KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcnVuVGVzdCk7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxl
dHRlci1zZWxlY3Rpb24tcGFpbnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI2YjhiZGY0NmNiOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFp
bnRpbmcuaHRtbApAQCAtMCwwICsxLDI1IEBACis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitkaXY6OmZpcnN0LWxldHRlciB7Cisg
ICAgY29sb3I6IHJlZDsKKyAgICBmb250LXNpemU6IDJlbTsKK30KKzwvc3R5bGU+Cis8ZGl2IGlk
PSJ0YXJnZXQiPkhlbGxvIFdvcmxkPC9kaXY+Cis8c2NyaXB0Pgord2luZG93LnRlc3RSdW5uZXI/
LndhaXRVbnRpbERvbmUoKTsKK3dpbmRvdy50ZXN0UnVubmVyPy5kb250Rm9yY2VSZXBhaW50KCk7
CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVy
aW5nVXBkYXRlKCk7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdl
dCIpKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBhd2FpdCBVSUhlbHBl
ci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICB3aW5kb3cudGVzdFJ1bm5lcj8ubm90aWZ5RG9uZSgpOworfQorCit3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3QpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZWRjNzJiM2ZjNWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1s
ZXR0ZXItc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSwxMDEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorZGl2OjpmaXJzdC1sZXR0ZXIgeworICAgIGNvbG9yOiBy
ZWQ7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0MSI+SGVsbG88
L2Rpdj4KKzxkaXYgaWQ9InRlc3QyIj4xMjwvZGl2PgorPGRpdiBpZD0idGVzdDMiPiJRdW90ZTwv
ZGl2PgorPGRpdiBpZD0idGVzdDQiPkE8L2Rpdj4KKzxkaXYgaWQ9InRlc3Q1Ij48c3Bhbj5OZXN0
ZWQ8L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NiI+Rmlyc3Q8YnI+U2Vjb25kPC9kaXY+Cis8
ZGl2IGlkPSJ0ZXN0NyIgY29udGVudGVkaXRhYmxlPkVkaXRhYmxlPC9kaXY+Cis8ZGl2IGlkPSJj
b250YWluZXIiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzZWxl
Y3Rpb24gd29ya3MgY29ycmVjdGx5IHdpdGggOjpmaXJzdC1sZXR0ZXIgcHNldWRvLWVsZW1lbnQu
Iik7CisKK2Z1bmN0aW9uIHNlbGVjdEFsbChlbGVtZW50KSB7CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVu
dCk7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICBzZWwucmVtb3Zl
QWxsUmFuZ2VzKCk7CisgICAgc2VsLmFkZFJhbmdlKHJhbmdlKTsKK30KKworZnVuY3Rpb24gc2Vs
ZWN0UmFuZ2Uobm9kZSwgc3RhcnQsIGVuZCkgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQobm9kZSwgc3RhcnQpOworICAgIHJhbmdl
LnNldEVuZChub2RlLCBlbmQpOworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7
CisgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7Cit9
CisKKy8vIFRlc3QgMTogU2VsZWN0IGFsbCB0ZXh0IGluIGVsZW1lbnQgd2l0aCBmaXJzdC1sZXR0
ZXIKK3NlbGVjdEFsbCh0ZXN0MSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkhlbGxvIik7CisKKy8vIFRlc3QgMjogU2hvcnQgdGV4
dCAtIHNlbGVjdCBhbGwKK3NlbGVjdEFsbCh0ZXN0Mik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
IndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIjEyIik7CisKKy8vIFRlc3QgMzog
Rmlyc3QtbGV0dGVyIHdpdGggcHVuY3R1YXRpb24gKGZpcnN0LWxldHRlciBpbmNsdWRlcyBxdW90
ZSArIGxldHRlcikKK3NlbGVjdEFsbCh0ZXN0Myk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIlwiUXVvdGUiKTsKKworLy8gVGVzdCA0
OiBTaW5nbGUgY2hhcmFjdGVyIHRleHQgKGVudGlyZSB0ZXh0IGlzIGZpcnN0LWxldHRlcikKK3Nl
bGVjdEFsbCh0ZXN0NCk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIkEiKTsKKworLy8gVGVzdCA1OiBGaXJzdC1sZXR0ZXIgd2l0aCBu
ZXN0ZWQgaW5saW5lCitzZWxlY3RBbGwodGVzdDUpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJOZXN0ZWQiKTsKKworLy8gVGVzdCA2
OiBNdWx0aS1saW5lIC0gc2VsZWN0IGFsbCBzaG91bGQgZ2V0IGJvdGggbGluZXMKK3NlbGVjdEFs
bCh0ZXN0Nik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpLnJlcGxhY2UoL1xcbi9nLCAnfCcpIiwgIkZpcnN0fFNlY29uZCIpOworCisvLyBU
ZXN0IDc6IENvbnRlbnRlZGl0YWJsZSB3aXRoIGZpcnN0LWxldHRlcgorc2VsZWN0QWxsKHRlc3Q3
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiRWRpdGFibGUiKTsKKworLy8gVGVzdCA4OiBTZWxlY3Qgb25seSB0aGUgZmlyc3QtbGV0
dGVyIHBvcnRpb24KK3NlbGVjdFJhbmdlKHRlc3QyLmZpcnN0Q2hpbGQsIDAsIDEpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIxIik7
CisKKy8vIFRlc3QgOTogU2VsZWN0IG9ubHkgdGhlIHJlbWFpbmluZyBwb3J0aW9uIChhZnRlciBm
aXJzdC1sZXR0ZXIpCitzZWxlY3RSYW5nZSh0ZXN0Mi5maXJzdENoaWxkLCAxLCAyKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiMiIp
OworCisvLyBUZXN0IDEwOiBTZWxlY3QgcmFuZ2Ugc3Bhbm5pbmcgZmlyc3QtbGV0dGVyIGJvdW5k
YXJ5CitzZWxlY3RSYW5nZSh0ZXN0MS5maXJzdENoaWxkLCAwLCAzKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVsIik7CisKKy8v
IFRlc3QgMTE6IFNlbGVjdCBmcm9tIG1pZGRsZSBvZiBmaXJzdC1sZXR0ZXIgdGV4dCB0byBlbmQK
K3NlbGVjdFJhbmdlKHRlc3QzLmZpcnN0Q2hpbGQsIDAsIDIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJcIlEiKTsKKworLy8gVGVz
dCAxMjogQ2FyZXQgYXQgZmlyc3QtbGV0dGVyIGJvdW5kYXJ5IChvZmZzZXQgPSBmaXJzdC1sZXR0
ZXIgbGVuZ3RoKQorc2VsZWN0UmFuZ2UodGVzdDEuZmlyc3RDaGlsZCwgMSwgMSk7CitzaG91bGRC
ZSgid2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIiwgInRydWUiKTsKK3Nob3VsZEJl
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yT2Zmc2V0IiwgIjEiKTsKKworLy8gVGVzdCAx
MzogQ2FyZXQgYXQgc3RhcnQgb2YgdGV4dCAob2Zmc2V0IDAsIGluc2lkZSBmaXJzdC1sZXR0ZXIp
CitzZWxlY3RSYW5nZSh0ZXN0MS5maXJzdENoaWxkLCAwLCAwKTsKK3Nob3VsZEJlKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQiLCAidHJ1ZSIpOworc2hvdWxkQmUoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5hbmNob3JPZmZzZXQiLCAiMCIpOworCisvLyBUZXN0IDE0OiBTZWxlY3Qg
YWxsIG9uIHNpbmdsZS1jaGFyYWN0ZXIgZmlyc3QtbGV0dGVyIChlbnRpcmUgdGV4dCBpcyBmaXJz
dC1sZXR0ZXIpCitzZWxlY3RSYW5nZSh0ZXN0NC5maXJzdENoaWxkLCAwLCAxKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiQSIpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3RleHQtaXRlcmF0b3IvZmlyc3QtbGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2ZpcnN0LWxldHRlci13b3JkLWJv
dW5kYXJ5LWV4cGVjdGVkLnR4dAppbmRleCBjNTJmMmFkNTYxMmQuLmRjOTlmY2M4YzFiZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2ZpcnN0LWxldHRlci13
b3JkLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQt
aXRlcmF0b3IvZmlyc3QtbGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0ZWQudHh0CkBAIC0yLDkg
KzIsOSBAQCBUaGlzIHRlc3RzIG1vdmluZyBjYXJldCBhcm91bmQgYSB3b3JkIHdpdGggYSBmaXJz
dC1sZXR0ZXIgcnVsZS4gV2ViS2l0IHNob3VsZCBubwogCiAgaGVsbG8gd29ybGQnCiB3aGl0ZS1z
cGFjZTogbm9ybWFsOwotRkFJTDogbW92aW5nIGZvcndhcmQgYnkgd29yZCBmcm9tIG9mZnNldCA0
IHB1dCBjYXJldCBhdCBvZmZzZXQgMTAgYnV0IGV4cGVjdGVkIDYKK1BBU1M6IG1vdmluZyBmb3J3
YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2FyZXQgYXQgb2Zmc2V0IDYKIFBBU1M6IG1v
dmluZyBiYWNrd2FyZCBieSB3b3JkIGZyb20gb2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCAx
CiB3aGl0ZS1zcGFjZTogcHJlOwotRkFJTDogbW92aW5nIGZvcndhcmQgYnkgd29yZCBmcm9tIG9m
ZnNldCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgMTAgYnV0IGV4cGVjdGVkIDYKLVBBU1M6IG1vdmlu
ZyBiYWNrd2FyZCBieSB3b3JkIGZyb20gb2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCAxCitQ
QVNTOiBtb3ZpbmcgZm9yd2FyZCBieSB3b3JkIGZyb20gb2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9m
ZnNldCA2CitGQUlMOiBtb3ZpbmcgYmFja3dhcmQgYnkgd29yZCBmcm9tIG9mZnNldCA0IHB1dCBj
YXJldCBhdCBvZmZzZXQgMCBidXQgZXhwZWN0ZWQgMQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9maXJzdC1sZXR0ZXItcGFydGlhbC1pbnZh
bGlkYXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDE2MGIwZDNiMGEwNC4uMmIxNzgwYWIz
NWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRp
YWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4
dApAQCAtMSArMSBAQAotUEFTUyBpZiBubyBjcmFzaCBvciBhc0FBQUFydAorUEFTUyBpZiBubyBj
cmFzaCBvciBhc3NlQUFBQQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9l
ZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDIt
ZXhwZWN0ZWQudHh0CmluZGV4IGI5Y2E5YTBkYmQ1Zi4uYzkyNDQ3MGEzZjU0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13
b3JkLTAwMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9lZGl0
aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0CkBAIC02OSw1ICs2
OSw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgICAgUmVuZGVySW5s
aW5lIHtBfSBhdCAoMTgsNikgc2l6ZSAzOHgxMSBbY29sb3I9IzAwMDBFRV0KICAgICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxOCw2KSBzaXplIDM4eDExCiAgICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDE4LDYpIHdpZHRoIDM4OiAiQ29tYm9zIgotc2VsZWN0aW9uIHN0YXJ0
OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtBfSBvZiBjaGlsZCAx
IHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQorc2VsZWN0aW9u
IHN0YXJ0OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtMSX0gb2Yg
Y2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQogc2VsZWN0aW9uIGVuZDogICBw
b3NpdGlvbiA1IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtBfSBvZiBjaGlsZCA3IHtM
SX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3Jk
LTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvZWRpdGluZy9zZWxl
Y3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dAppbmRleCAyYjY2ZTRhYjUwZGUu
LjY2OWE0ZWI4N2Q3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1l
eHBlY3RlZC50eHQKQEAgLTY5LDUgKzY5LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CiAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgxOSw1KSBzaXplIDQxeDE0IFtjb2xv
cj0jMDAwMEVFXQogICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE5LDUpIHNp
emUgNDF4MTQKICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTksNSkgd2lkdGggNDE6ICJD
b21ib3MiCi1zZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9m
IGNoaWxkIDEge0F9IG9mIGNoaWxkIDEge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7
RElWfSBvZiBib2R5CitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3Rl
eHR9IG9mIGNoaWxkIDEge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7RElWfSBvZiBi
b2R5CiBzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDUgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNo
aWxkIDEge0F9IG9mIGNoaWxkIDcge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7RElW
fSBvZiBib2R5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9z
ZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQu
dHh0CmluZGV4IDA3ODVjNmQ5N2I3Zi4uMjQ3ODcxN2EyNmY2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dApAQCAtNjksNSArNjksNSBAQCBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICAgIFJlbmRlcklubGluZSB7QX0gYXQg
KDE5LDUpIHNpemUgNDF4MTQgW2NvbG9yPSMwMDAwRUVdCiAgICAgICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMTksNSkgc2l6ZSA0MXgxNAogICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgxOSw1KSB3aWR0aCA0MTogIkNvbWJvcyIKLXNlbGVjdGlvbiBzdGFydDogcG9zaXRpb24g
MCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7QX0gb2YgY2hpbGQgMSB7TEl9IG9mIGNo
aWxkIDEge1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKK3NlbGVjdGlvbiBzdGFydDogcG9z
aXRpb24gMSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7TEl9IG9mIGNoaWxkIDEge1VM
fSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKIHNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNSBv
ZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7QX0gb2YgY2hpbGQgNyB7TEl9IG9mIGNoaWxk
IDEge1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>478921</attachid>
            <date>2026-04-04 04:16:58 -0700</date>
            <delta_ts>2026-04-04 12:53:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-311437-20260404041657.patch</filename>
            <type>text/plain</type>
            <size>63217</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2MmNhYzAxZmI1NzYzZjMzMWMyNDEwMzNmMWUxZGExZjg5YjViZmVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBBcHIgMjAyNiAwNTo1NzozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIG55dGltZXMu
Y29tOiB3cm9uZyBzZWxlY3Rpb24gcGFpbnRpbmcgYmVjYXVzZSBvZiBmaXJzdC1sZXR0ZXIKIHN0
eWxlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE0MzcgPHJkYXI6
Ly8xMDYwNjA0MjE+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkdpdmVuCgogIDxzdHls
ZT4KICAgIGRpdjo6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IHJlZDsgfQogIDwvc3R5bGU+CiAgPGRp
dj5IZWxsbzwvZGl2PgoKdGhlIERPTSAoaW5zaWRlIHRoZSBibG9jayBjb250YWluZXIpIGhhcyBh
IHNpbmdsZSB0ZXh0IG5vZGUgIkhlbGxvIgpidXQgV2ViS2l0IHNwbGl0cyB0aGlzIGludG8gdHdv
IHJlbmRlcmVycyB0byBiZSBhYmxlIHRvIHN0eWxlIHRoZSBmaXJzdCBsZXR0ZXIuCgogIFJlbmRl
ckJsb2NrIChkaXYpCiAgICBSZW5kZXJJbmxpbmUgKDo6Zmlyc3QtbGV0dGVyLCBhbm9ueW1vdXMp
CiAgICAgIFJlbmRlclRleHQgIkgiICAgICAgICAgICAgPC0gb2Zmc2V0cyAwLTEgKG5vIERPTSBu
b2RlKQogICAgUmVuZGVyVGV4dEZyYWdtZW50ICJlbGxvIiAgIDwtIG9mZnNldHMgMC00IChvd25z
IHRoZSBET00gdGV4dCBub2RlKQoKVGhlIGV4aXN0aW5nIGNvZGUgYXNzdW1lcyBlYWNoIERPTSBu
b2RlIG1hcHMgdG8gZXhhY3RseSBvbmUgcmVuZGVyZXIuCkV2ZXJ5IGNhbGwgdG8gbm9kZS0+cmVu
ZGVyZXIoKSBvciBQb3NpdGlvbjo6cmVuZGVyZXIoKSByZXR1cm5zIHRoZQpyZW1haW5pbmcgZnJh
Z21lbnQgLSB0aGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIGlzIG5ldmVyIGNvbnN1bHRlZC4KClRo
aXMgbWVhbnMgRE9NIG9mZnNldCAwICgiSCIpIGdldHMgY2hlY2tlZCBhZ2FpbnN0IHRoZSByZW1h
aW5pbmcKZnJhZ21lbnQncyB0ZXh0IGJveGVzLCB3aGljaCBzdGFydCBhdCAiZSIuIFNlbGVjdGlv
biwgY2FyZXQgcG9zaXRpb25pbmcsCmFuZCBvZmZzZXQgdmFsaWRhdGlvbiBhbGwgZmFpbCBmb3Ig
dGhlIGZpcnN0LWxldHRlciByYW5nZSBiZWNhdXNlIHRoZQp3cm9uZyByZW5kZXJlciBpcyBhc2tl
ZCBhYm91dCBvZmZzZXRzIGl0IGRvZXNuJ3Qgb3duLgoKVGhlIGZpeCBpcyB0byBuZXZlciBjb25z
dWx0IG5vZGUtPnJlbmRlcmVyKCkgZGlyZWN0bHkgZm9yIHRleHQgb2Zmc2V0Cm9wZXJhdGlvbnMg
b24gZmlyc3QtbGV0dGVyIGNvbnRlbnQuIEluc3RlYWQsIGFsbCBjYWxsIHNpdGVzIGdvIHRocm91
Z2gKUG9zaXRpb246OnJlbmRlcmVyQW5kT2Zmc2V0KCkgd2hpY2ggcmVzb2x2ZXMgdGhlIDEtRE9N
LW5vZGUtdG8tMi1yZW5kZXJlcnMKc3BsaXQgYnkgcGlja2luZyB0aGUgY29ycmVjdCByZW5kZXJl
ciBhbmQgY29udmVydGluZyB0byBpdHMgbG9jYWwgb2Zmc2V0LgpUaGlzIGlzIHRoZSBjZW50cmFs
IGludmFyaWFudCBvZiB0aGUgZml4IC0gZXZlcnkgcGxhY2UgdGhhdCBwcmV2aW91c2x5CmNhbGxl
ZCBub2RlLT5yZW5kZXJlcigpIGFuZCB1c2VkIGEgRE9NIG9mZnNldCBhZ2FpbnN0IGl0IG5vdyB1
c2VzIHRoaXMKaGVscGVyIChvciBvbmUgb2YgaXRzIHdyYXBwZXJzKSB0byBnZXQgdGhlIHJpZ2h0
IHJlbmRlcmVyICsgb2Zmc2V0IHBhaXIuCgpLZXkgaGVscGVycyBpbnRyb2R1Y2VkOgotIFBvc2l0
aW9uOjpyZW5kZXJlckFuZE9mZnNldCgpOiB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3Ig
cmVzb2x2aW5nCiAgYSBET00gb2Zmc2V0IHRvIHRoZSBjb3JyZWN0IHJlbmRlcmVyICsgZnJhZ21l
bnQtbG9jYWwgb2Zmc2V0LiBSb3V0ZXMgdG8KICB0aGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIGZv
ciBvZmZzZXRzIGJlbG93IGZyYWdtZW50U3RhcnQsIG90aGVyd2lzZQogIHJldHVybnMgdGhlIHJl
bWFpbmluZyBmcmFnbWVudCB3aXRoIGFkanVzdGVkIG9mZnNldC4KLSBQb3NpdGlvbjo6cmVzb2x2
ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTogY29udmVuaWVuY2Ugd3JhcHBlciB0aGF0IGFsc28K
ICBjYXN0cyB0byBSZW5kZXJUZXh0LgotIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKTog
Y29udmVydHMgZnJhZ21lbnQtbG9jYWwgb2Zmc2V0IGJhY2sgdG8KICBET00gb2Zmc2V0LiBVc2Vk
IHdoZW4gZXhpdGluZyByZW5kZXJlciBzcGFjZSAoY2FyZXRNYXhPZmZzZXQsCiAgY3JlYXRlUG9z
aXRpb25XaXRoQWZmaW5pdHksIGVuZFBvc2l0aW9uRm9yTGluZSwgcG9zaXRpb25BdFJpZ2h0Qm91
bmRhcnktCiAgT2ZCaURpUnVuLCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KS4KLSBmaXJzdExldHRl
ckFkanVzdGVkRnJhZ21lbnRMb2NhbE9mZnNldCgpOiBjb252ZXJ0cyBET00gb2Zmc2V0IHRvCiAg
ZnJhZ21lbnQtbG9jYWwuIFVzZWQgaW4gUG9zaXRpb246OnVwc3RyZWFtL2Rvd25zdHJlYW0gd2hl
cmUgdGhlcmUgaXMgbm8KICBQb3NpdGlvbiBvYmplY3QgdG8gY2FsbCByZW5kZXJlckFuZE9mZnNl
dCgpIG9uLgotIGNyb3NzZXNGaXJzdExldHRlckJvdW5kYXJ5KCk6IHByZXZlbnRzIHVwc3RyZWFt
L2Rvd25zdHJlYW0gZnJvbQogIGNhbm9uaWNhbGl6aW5nIHBvc2l0aW9ucyBhY3Jvc3MgdGhlIGZp
cnN0LWxldHRlciBzcGxpdC4gV2l0aG91dCB0aGlzLAogIFZpc2libGVQb3NpdGlvbihvZmZzZXQg
MCkgYW5kIFZpc2libGVQb3NpdGlvbihvZmZzZXQgMSkgd291bGQgY29sbGFwc2UKICB0byB0aGUg
c2FtZSBjYW5vbmljYWwgcG9zaXRpb24sIG1ha2luZyB0aGUgZmlyc3QgbGV0dGVyIHVuc2VsZWN0
YWJsZS4KICBNdXN0IHJ1biBiZWZvcmUgdGhlIGlzU3RyZWFtZXIgdXBkYXRlIHRvIHNlZSB0aGUg
cHJlLXVwZGF0ZSBsYXN0VmlzaWJsZS4KClBvc2l0aW9uOjppc0NhbmRpZGF0ZSwgaXNSZW5kZXJl
ZENoYXJhY3RlciwgcmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb246CiAgVGhlc2UgY2hlY2sgdGV4
dCBvZmZzZXQgdmFsaWRpdHkgYWdhaW5zdCByZW5kZXJlciB0ZXh0IGJveGVzLiBUaGV5IG5vdwog
IHVzZSByZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpIHRvIGFzayB0aGUgY29ycmVjdCBy
ZW5kZXJlcgogIChmaXJzdC1sZXR0ZXIgb3IgcmVtYWluaW5nIGZyYWdtZW50KSBpbnN0ZWFkIG9m
IGFsd2F5cyBhc2tpbmcgdGhlCiAgcmVtYWluaW5nIGZyYWdtZW50IHdpdGggYSByYXcgRE9NIG9m
ZnNldC4KClBvc2l0aW9uOjppbmxpbmVCb3hBbmRPZmZzZXQ6IHJlc29sdmVzIHRvIHRoZSBjb3Jy
ZWN0IGlubGluZSBib3ggZm9yCiAgY2FyZXQvc2VsZWN0aW9uIHBvc2l0aW9uaW5nLiBOb3cgZGVs
ZWdhdGVzIHRvIHJlbmRlcmVyQW5kT2Zmc2V0KCkKICBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRo
ZSBmaXJzdC1sZXR0ZXIgcm91dGluZyBsb2dpYy4KClJlbmRlcmVkUG9zaXRpb246IHN0b3JlcyB0
aGUgb3JpZ2luYWwgRE9NIG5vZGUgKG1fbm9kZSkgZnJvbSB0aGUgUG9zaXRpb24KICBkdXJpbmcg
Y29uc3RydWN0aW9uLiBXaXRob3V0IHRoaXMsIHBvc2l0aW9uQXRMZWZ0Qm91bmRhcnlPZkJpRGlS
dW4oKQogIHByb2R1Y2VzIGEgbnVsbC1ub2RlIFBvc2l0aW9uIHdoZW4gdGhlIGlubGluZSBib3gg
YmVsb25ncyB0byB0aGUKICBhbm9ueW1vdXMgZmlyc3QtbGV0dGVyIHRleHQsIGNhdXNpbmcgYWRq
dXN0RW5kcG9pbnRzQXRCaWRpQm91bmRhcnkoKQogIHRvIGNvbGxhcHNlIHRoZSBzZWxlY3Rpb24g
d2hlbiBkcmFnZ2luZyBsZWZ0IHBhc3QgdGhlIGZpcnN0IGxldHRlci4KClZpc2libGVQb3NpdGlv
bjo6cmlnaHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlOiB3aGVuIGJpZGkgdHJhdmVyc2FsCiAg
bGFuZHMgb24gdGhlIGFub255bW91cyBmaXJzdC1sZXR0ZXIgdGV4dCBib3gsIHJlc29sdmVzIHRo
ZSBET00gbm9kZQogIHZpYSByZW1haW5pbmdUZXh0RnJhZ21lbnRGb3JGaXJzdExldHRlcigpIGJl
Zm9yZSBjcmVhdGluZyB0aGUgUG9zaXRpb24uCgpSZW5kZXJUZXh0RnJhZ21lbnQ6OmNhbkJlU2Vs
ZWN0aW9uTGVhZjogcmV0dXJucyB0cnVlIGZvciByZW1haW5pbmcKICBmcmFnbWVudHMgd2l0aCBm
aXJzdC1sZXR0ZXIsIG1hdGNoaW5nIGJhc2UgUmVuZGVyVGV4dCBiZWhhdmlvciBzbwogIGNyb3Nz
LWVsZW1lbnQgc2VsZWN0aW9ucyAoQ21kK0EpIGluY2x1ZGUgdGhlIHJlbWFpbmluZyB0ZXh0LgoK
KiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNy
b3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbDogQWRkZWQu
CiogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0
LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5o
dG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXIt
c2VsZWN0aW9uLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRv
ci9maXJzdC1sZXR0ZXItd29yZC1ib3VuZGFyeS1leHBlY3RlZC50eHQ6CiAgUHJvZ3Jlc3Npb24u
IExhc3QgdGVzdCBjYXNlIGlzIHByZS1leGlzdGluZyBidWcgYW5kIGl0IG5ldmVyIHJlYWxseSBQ
QVNTZWQgLXRoZSBvZmYtYnktb25lIGVycm9yIG1hZGUgaXQgKGluY29ycmVjdGx5KSBQQVNTLgoK
KiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxpZGF0aW9u
LWNyYXNoLWV4cGVjdGVkLnR4dDoKICBQcm9ncmVzc2lvbi4gV2UgbWF0Y2ggb3RoZXIgZW5naW5l
cyBub3cuCgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
ZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dDoKKiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAy
LWV4cGVjdGVkLnR4dDoKICBQcm9ncmVzc2lvbi4gQ29udGVudCBpcyBzZWxlY3RlZCBub3cgYWNy
b3NzIDxsaT5zIHdpdGggZmlyc3QtbGV0dGVyLgoKKiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwOgooV2ViQ29yZTo6Y3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkpOgooV2ViQ29yZTo6
Zmlyc3RMZXR0ZXJBZGp1c3RlZEZyYWdtZW50TG9jYWxPZmZzZXQpOgooV2ViQ29yZTo6UG9zaXRp
b246OnVwc3RyZWFtIGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpkb3duc3RyZWFtIGNvbnN0
KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFub255bW91c0Rlc2NlbmRhbnRz
V2l0aEhlaWdodCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6aXNDYW5kaWRhdGUgY29uc3QpOgooV2Vi
Q29yZTo6UG9zaXRpb246OmlzUmVuZGVyZWRDaGFyYWN0ZXIgY29uc3QpOgooV2ViQ29yZTo6UG9z
aXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0
aW9uOjpyZW5kZXJlckFuZE9mZnNldCBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6cmVzb2x2
ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OmlubGlu
ZUJveEFuZE9mZnNldCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmg6Ciog
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwOgooV2ViQ29yZTo6UG9zaXRp
b25JdGVyYXRvcjo6aXNDYW5kaWRhdGUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHA6CihXZWJDb3JlOjpjYXJldE1heE9mZnNldCk6CihXZWJDb3JlOjpmaXJzdExl
dHRlckFkanVzdGVkRE9NT2Zmc2V0KToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcu
aDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwOgooV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVu
ZGVyZWRQb3NpdGlvbik6CihXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0TGVm
dEJvdW5kYXJ5T2ZCaURpUnVuIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OnBv
c2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHA6CihXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKFdl
YkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dFJ1bik6CihXZWJDb3JlOjpUZXh0SXRlcmF0
b3I6OmVtaXRUZXh0KToKKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHROb2RlKToKKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0
b3I6OmhhbmRsZUZpcnN0TGV0dGVyKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcDoKKFdlYkNvcmU6OnJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKToKKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29u
c3QpOgooV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5k
aWRhdGUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KFdlYkNvcmU6OmVuZFBvc2l0aW9uRm9yTGluZSk6CihXZWJDb3JlOjpmaW5kRW5kT2ZQYXJhZ3Jh
cGgpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgooV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpjcmVhdGVQb3NpdGlvbldpdGhBZmZpbml0eSBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJUZXh0RnJhZ21lbnQ6OmNhbkJlU2VsZWN0aW9uTGVhZiBjb25zdCk6Ci0tLQogU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCAgICAgICAgICAgICAgIHwgMTE4ICsrKysrKysrKysr
Ky0tLQogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggICAgICAgICAgICAgICAgIHwgICA4
ICsrCiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAgICAgICAgfCAgIDgg
Ky0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgICAgICAgICAgICB8ICAxMCAr
LQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmggICAgICAgICAgICAgIHwgICAxICsK
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwICAgICB8ICAxMCArLQog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCAgIHwgIDEwICstCiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaCAgICAgfCAgIDEgKwogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwICAgICAgIHwgMTM0ICsrKysrKysr
Ky0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCAgICAgICAg
IHwgICAzIC0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCAgICB8
ICAyOCArKystCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgICAgICAg
fCAgIDUgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwICAgICB8
ICAgNSArLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAgIHwg
ICA5ICstCiAuLi5ldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQgfCAg
MTMgKysKIC4uLi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbCB8ICA0
MyArKysrKysKIC4uLi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCAgICAgICB8
ICAzMyArKysrKwogLi4uc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1s
IHwgIDI1ICsrKysKIC4uLi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLmh0bWwgICAg
ICB8ICAyNSArKysrCiAuLi4vc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbCAg
ICAgfCAxMDEgKysrKysrKysrKysrKwogLi4uL2ZpcnN0LWxldHRlci13b3JkLWJvdW5kYXJ5LWV4
cGVjdGVkLnR4dCAgIHwgICA2ICstCiAuLi5lci1wYXJ0aWFsLWludmFsaWRhdGlvbi1jcmFzaC1l
eHBlY3RlZC50eHQgfCAgIDIgKy0KIC4uLi9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4
cGVjdGVkLnR4dCB8ICAgMiArLQogLi4uL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhw
ZWN0ZWQudHh0IHwgICAyICstCiAuLi4vc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBl
Y3RlZC50eHQgfCAgIDIgKy0KIDI1IGZpbGVzIGNoYW5nZWQsIDQ4NSBpbnNlcnRpb25zKCspLCAx
MTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4cGVjdGVkLnR4
dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0
LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBl
Y3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLWV4cGVjdGVkLmh0bWwKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2Vs
ZWN0aW9uLXBhaW50aW5nLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLmh0bWwKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmNwcAppbmRleCAyZmI0YTE0NGEwNWYuLjU4MmZhNDJhYjc3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgi
CiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQu
aCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0RnJhZ21lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50
VHlwZUhlbHBlcnMuaCIKICNpbmNsdWRlICJTVkdUZXh0RWxlbWVudC5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKQEAgLTY0Miw2ICs2NDMsMzAgQEAgc3RhdGljIE5vZGUqIGVuY2xvc2luZ1Zpc3VhbEJv
dW5kYXJ5KFNVUFBSRVNTX1VOQ0hFQ0tFRF9MT0NBTCBOb2RlKiBub2RlKQogICAgIHJldHVybiBu
b2RlOwogfQogCisvLyBUaGUgZmlyc3QtbGV0dGVyIGFuZCByZW1haW5pbmcgdGV4dCBhcmUgc2Vw
YXJhdGUgcmVuZGVyZXJzIGJ1dCBzaGFyZSBvbmUgRE9NCisvLyB0ZXh0IG5vZGUuIHVwc3RyZWFt
L2Rvd25zdHJlYW0gbXVzdCBub3QgY3Jvc3MgdGhpcyBib3VuZGFyeSwganVzdCBsaWtlIHRoZXkK
Ky8vIG11c3Qgbm90IGNyb3NzIHZpc3VhbGx5IGRpc3RpbmN0IG5vZGUgYm91bmRhcmllcy4KK3N0
YXRpYyBib29sIGNyb3NzZXNGaXJzdExldHRlckJvdW5kYXJ5KGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIsIGNvbnN0IFBvc2l0aW9uSXRlcmF0b3ImIGN1cnJlbnQsIGNvbnN0IFBvc2l0aW9u
SXRlcmF0b3ImIHByZXZpb3VzTGFzdFZpc2libGUpCit7CisgICAgYXV0byogdGV4dEZyYWdtZW50
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpOworICAgIGlm
ICghdGV4dEZyYWdtZW50IHx8ICF0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhdXRvIGZyYWdtZW50U3RhcnQgPSBzdGF0aWNfY2FzdDxpbnQ+
KHRleHRGcmFnbWVudC0+c3RhcnQoKSk7CisgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gY3VycmVu
dC5vZmZzZXRJbkxlYWZOb2RlKCk7CisgICAgYXV0byBsYXN0T2Zmc2V0ID0gcHJldmlvdXNMYXN0
VmlzaWJsZS5vZmZzZXRJbkxlYWZOb2RlKCk7CisgICAgLy8gT25lIG9mZnNldCBpcyBpbiB0aGUg
Zmlyc3QtbGV0dGVyIHJhbmdlIGFuZCB0aGUgb3RoZXIgaXMgbm90LgorICAgIC8vIE9mZnNldHMg
YXQgZnJhZ21lbnRTdGFydCBiZWxvbmcgdG8gdGhlIHJlbWFpbmluZyBmcmFnbWVudCwgbm90IHRo
ZSBmaXJzdC1sZXR0ZXIuCisgICAgcmV0dXJuIChjdXJyZW50T2Zmc2V0IDwgZnJhZ21lbnRTdGFy
dCkgIT0gKGxhc3RPZmZzZXQgPCBmcmFnbWVudFN0YXJ0KTsKK30KKworLy8gQ29udmVydCBhIERP
TSBvZmZzZXQgdG8gZnJhZ21lbnQtbG9jYWwgZm9yIHJlbWFpbmluZyB0ZXh0IGZyYWdtZW50cyB3
aXRoIGZpcnN0LWxldHRlci4KK3N0YXRpYyB1bnNpZ25lZCBmaXJzdExldHRlckFkanVzdGVkRnJh
Z21lbnRMb2NhbE9mZnNldChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1bnNpZ25lZCBv
ZmZzZXQpCit7CisgICAgaWYgKGF1dG8qIHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsgdGV4dEZyYWdtZW50ICYmIHRleHRGcmFnbWVu
dC0+Zmlyc3RMZXR0ZXIoKSAmJiBvZmZzZXQgPj0gdGV4dEZyYWdtZW50LT5zdGFydCgpKQorICAg
ICAgICByZXR1cm4gb2Zmc2V0IC0gdGV4dEZyYWdtZW50LT5zdGFydCgpOworICAgIHJldHVybiBv
ZmZzZXQ7Cit9CisKIC8vIHVwc3RyZWFtKCkgYW5kIGRvd25zdHJlYW0oKSB3YW50IHRvIHJldHVy
biBwb3NpdGlvbnMgdGhhdCBhcmUgZWl0aGVyIGluIGEKIC8vIHRleHQgbm9kZSBvciBhdCBqdXN0
IGJlZm9yZSBhIG5vbi10ZXh0IG5vZGUuICBUaGlzIG1ldGhvZCBjaGVja3MgZm9yIHRoYXQuCiBz
dGF0aWMgYm9vbCBpc1N0cmVhbWVyKGNvbnN0IFBvc2l0aW9uSXRlcmF0b3ImIHBvcykKQEAgLTcx
Miw2ICs3MzcsMTAgQEAgUG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFy
eUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgCisgICAgICAgIC8vIERvbid0IG1vdmUgcGFzdCB0aGUgZmlyc3QtbGV0dGVyIGJv
dW5kYXJ5IHdpdGhpbiBhIHRleHQgbm9kZS4KKyAgICAgICAgaWYgKGNyb3NzZXNGaXJzdExldHRl
ckJvdW5kYXJ5KCpyZW5kZXJlciwgY3VycmVudFBvc2l0aW9uLCBsYXN0VmlzaWJsZSkpCisgICAg
ICAgICAgICByZXR1cm4gbGFzdFZpc2libGU7CisKICAgICAgICAgLy8gdHJhY2sgbGFzdCB2aXNp
YmxlIHN0cmVhbWVyIHBvc2l0aW9uCiAgICAgICAgIGlmIChpc1N0cmVhbWVyKGN1cnJlbnRQb3Np
dGlvbikpCiAgICAgICAgICAgICBsYXN0VmlzaWJsZSA9IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTc0
MCwxMCArNzY5LDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0cmVhbShFZGl0aW5nQm91bmRh
cnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgICAgICAvLyByZW5kZXIgdHJl
ZSB3aGljaCBjYW4gaGF2ZSBhIGRpZmZlcmVudCBsZW5ndGggZHVlIHRvIGNhc2UgdHJhbnNmb3Jt
YXRpb24uCiAgICAgICAgICAgICAgICAgLy8gVW50aWwgd2UgcmVzb2x2ZSB0aGF0LCBkaXNhYmxl
IHRoaXMgc28gd2UgY2FuIHJ1biB0aGUgbGF5b3V0IHRlc3RzIQogICAgICAgICAgICAgICAgIC8v
QVNTRVJUKGN1cnJlbnRPZmZzZXQgPj0gcmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCkpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKGN1cnJlbnRO
b2RlLnB0cigpLCByZW5kZXJlci0+Y2FyZXRNYXhPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY3VycmVudE5vZGUucHRyKCksIGNh
cmV0TWF4T2Zmc2V0KGN1cnJlbnROb2RlKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IHVuc2lnbmVkIHRleHRPZmZzZXQgPSBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgp
OworICAgICAgICAgICAgYXV0byB0ZXh0T2Zmc2V0ID0gZmlyc3RMZXR0ZXJBZGp1c3RlZEZyYWdt
ZW50TG9jYWxPZmZzZXQoKnRleHRSZW5kZXJlciwgY3VycmVudFBvc2l0aW9uLm9mZnNldEluTGVh
Zk5vZGUoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8gYm94ID0gZmlyc3RUZXh0Qm94OyBib3g7
KSB7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPiBib3gtPnN0YXJ0KCkgJiYgdGV4
dE9mZnNldCA8PSBib3gtPmVuZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVu
dFBvc2l0aW9uOwpAQCAtODI3LDYgKzg1NiwxMCBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0
cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gRG9uJ3QgbW92ZSBwYXN0IHRoZSBmaXJz
dC1sZXR0ZXIgYm91bmRhcnkgd2l0aGluIGEgdGV4dCBub2RlLgorICAgICAgICBpZiAoY3Jvc3Nl
c0ZpcnN0TGV0dGVyQm91bmRhcnkoKnJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24sIGxhc3RWaXNp
YmxlKSkKKyAgICAgICAgICAgIHJldHVybiBsYXN0VmlzaWJsZTsKKwogICAgICAgICAvLyB0cmFj
ayBsYXN0IHZpc2libGUgc3RyZWFtZXIgcG9zaXRpb24KICAgICAgICAgaWYgKGlzU3RyZWFtZXIo
Y3VycmVudFBvc2l0aW9uKSkKICAgICAgICAgICAgIGxhc3RWaXNpYmxlID0gY3VycmVudFBvc2l0
aW9uOwpAQCAtODQ5LDcgKzg4Miw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpkb3duc3RyZWFtKEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oY3VycmVudE5vZGUucHRyKCksIHRleHRS
ZW5kZXJlci0+Y2FyZXRNaW5PZmZzZXQoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IHVuc2lnbmVkIHRleHRPZmZzZXQgPSBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgp
OworICAgICAgICAgICAgYXV0byB0ZXh0T2Zmc2V0ID0gZmlyc3RMZXR0ZXJBZGp1c3RlZEZyYWdt
ZW50TG9jYWxPZmZzZXQoKnRleHRSZW5kZXJlciwgY3VycmVudFBvc2l0aW9uLm9mZnNldEluTGVh
Zk5vZGUoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8gYm94ID0gZmlyc3RUZXh0Qm94OyBib3g7
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFib3gtPmxlbmd0aCgpICYmIHRleHRPZmZzZXQgPT0g
Ym94LT5zdGFydCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9u
OwpAQCAtODk4LDcgKzkzMSwxMyBAQCBib29sIFBvc2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFub255
bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodChjb25zdCBSZW5kZXJFbGVtZW50JgogICAgIGF1dG8g
aXNIb3Jpem9udGFsID0gcmVuZGVyZXIuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKICAgICBD
aGVja2VkUHRyIHN0b3AgPSByZW5kZXJlci5uZXh0SW5QcmVPcmRlckFmdGVyQ2hpbGRyZW4oKTsK
ICAgICBmb3IgKENoZWNrZWRQdHIgZGVzY2VuZGFudCA9IHJlbmRlcmVyLmZpcnN0Q2hpbGQoKTsg
ZGVzY2VuZGFudCAmJiBkZXNjZW5kYW50ICE9IHN0b3A7IGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50
LT5uZXh0SW5QcmVPcmRlcigpKSB7Ci0gICAgICAgIGlmICghZGVzY2VuZGFudC0+bm9uUHNldWRv
Tm9kZSgpKQorICAgICAgICBhdXRvIHNob3VsZFNraXAgPSBbJl0geworICAgICAgICAgICAgaWYg
KGRlc2NlbmRhbnQtPm5vblBzZXVkb05vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBDaGVja2VkUHRyIHJlbmRlckVsZW1lbnQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyRWxlbWVudD4oKmRlc2NlbmRhbnQpOworICAgICAgICAgICAgcmV0dXJuICFyZW5k
ZXJFbGVtZW50IHx8ICFyZW5kZXJFbGVtZW50LT5pc0ZpcnN0TGV0dGVyKCk7CisgICAgICAgIH07
CisgICAgICAgIGlmIChzaG91bGRTa2lwKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBhdXRvIGJvdW5kaW5nQm94TG9naWNhbEhlaWdodCA9IFsmXShhdXRvIHJlY3QpIHsKQEAg
LTkxNiw3ICs5NTUsNyBAQCBib29sIFBvc2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFub255bW91c0Rl
c2NlbmRhbnRzV2l0aEhlaWdodChjb25zdCBSZW5kZXJFbGVtZW50JgogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVySW5saW5lID0g
ZHluYW1pY0Rvd25jYXN0PFJlbmRlcklubGluZT4oKmRlc2NlbmRhbnQpKSB7Ci0gICAgICAgICAg
ICBpZiAoaXNFbXB0eUlubGluZSgqcmVuZGVySW5saW5lKSAmJiBib3VuZGluZ0JveExvZ2ljYWxI
ZWlnaHQocmVuZGVySW5saW5lLT5saW5lc0JvdW5kaW5nQm94KCkpKQorICAgICAgICAgICAgaWYg
KChyZW5kZXJJbmxpbmUtPmlzRmlyc3RMZXR0ZXIoKSB8fCBpc0VtcHR5SW5saW5lKCpyZW5kZXJJ
bmxpbmUpKSAmJiBib3VuZGluZ0JveExvZ2ljYWxIZWlnaHQocmVuZGVySW5saW5lLT5saW5lc0Jv
dW5kaW5nQm94KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KQEAgLTk4NSw4ICsxMDI0LDEwIEBAIGJvb2wgUG9zaXRpb246
OmlzQ2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuICFtX29mZnNldCAmJiBtX2FuY2hv
clR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yICYmICFub2RlSXNVc2VyU2VsZWN0Tm9uZShu
b2RlLT5wYXJlbnROb2RlKCkpOwogICAgIH0KIAotICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRl
eHQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkKLSAgICAgICAgcmV0
dXJuICFub2RlSXNVc2VyU2VsZWN0Tm9uZShub2RlLmdldCgpKSAmJiByZW5kZXJUZXh0LT5jb250
YWluc0NhcmV0T2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgYXV0
byBbcmVzb2x2ZWRUZXh0LCByZXNvbHZlZE9mZnNldF0gPSByZXNvbHZlZFRleHRSZW5kZXJlckFu
ZE9mZnNldCgpOworICAgICAgICByZXR1cm4gIW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUuZ2V0
KCkpICYmIHJlc29sdmVkVGV4dCAmJiByZXNvbHZlZFRleHQtPmNvbnRhaW5zQ2FyZXRPZmZzZXQo
cmVzb2x2ZWRPZmZzZXQpOworICAgIH0KIAogICAgIGlmIChwb3NpdGlvbkJlZm9yZU9yQWZ0ZXJO
b2RlSXNDYW5kaWRhdGUoKm5vZGUpKSB7CiAgICAgICAgIHJldHVybiAoKGF0Rmlyc3RFZGl0aW5n
UG9zaXRpb25Gb3JOb2RlKCkgJiYgbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNCZWZvcmVBbmNo
b3IpCkBAIC0xMDEzLDkgKzEwNTQsMTAgQEAgYm9vbCBQb3NpdGlvbjo6aXNDYW5kaWRhdGUoKSBj
b25zdAogCiBib29sIFBvc2l0aW9uOjppc1JlbmRlcmVkQ2hhcmFjdGVyKCkgY29uc3QKIHsKLSAg
ICBSZWZQdHIgdGV4dCA9IGR5bmFtaWNEb3duY2FzdDxUZXh0PihkZXByZWNhdGVkTm9kZSgpKTsK
LSAgICBDaGVja2VkUHRyIHJlbmRlcmVyID0gdGV4dCA/IHRleHQtPnJlbmRlcmVyKCkgOiBudWxs
cHRyOwotICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+Y29udGFpbnNSZW5kZXJlZENo
YXJhY3Rlck9mZnNldChtX29mZnNldCk7CisgICAgaWYgKCFkeW5hbWljRG93bmNhc3Q8VGV4dD4o
ZGVwcmVjYXRlZE5vZGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIFtyZW5k
ZXJUZXh0LCBvZmZzZXRdID0gcmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICBy
ZXR1cm4gcmVuZGVyVGV4dCAmJiByZW5kZXJUZXh0LT5jb250YWluc1JlbmRlcmVkQ2hhcmFjdGVy
T2Zmc2V0KG9mZnNldCk7CiB9CiAKIHN0YXRpYyBib29sIGluU2FtZUVuY2xvc2luZ0Jsb2NrRmxv
d0VsZW1lbnQoTm9kZSogYSwgTm9kZSogYikKQEAgLTEwNjEsMTYgKzExMDMsMTYgQEAgYm9vbCBQ
b3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0
aW9uKSBjb25zdAogICAgIGlmICghaW5TYW1lRW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChub2Rl
LmdldCgpLCBwb3NpdGlvbk5vZGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IENoZWNrZWRQdHIgdGV4dFJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KCpy
ZW5kZXJlcik7Ci0gICAgaWYgKHRleHRSZW5kZXJlciAmJiAhdGV4dFJlbmRlcmVyLT5jb250YWlu
c0NhcmV0T2Zmc2V0KG1fb2Zmc2V0KSkKKyAgICBhdXRvIFt0ZXh0UmVuZGVyZXIsIHRoaXNPZmZz
ZXRdID0gcmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICBpZiAodGV4dFJlbmRl
cmVyICYmICF0ZXh0UmVuZGVyZXItPmNvbnRhaW5zQ2FyZXRPZmZzZXQodGhpc09mZnNldCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENoZWNrZWRQdHIgdGV4dFBvc2l0aW9uUmVuZGVy
ZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnBvc2l0aW9uUmVuZGVyZXIpOwotICAg
IGlmICh0ZXh0UG9zaXRpb25SZW5kZXJlciAmJiAhdGV4dFBvc2l0aW9uUmVuZGVyZXItPmNvbnRh
aW5zQ2FyZXRPZmZzZXQocG9zaXRpb24ubV9vZmZzZXQpKQorICAgIGF1dG8gW3RleHRQb3NpdGlv
blJlbmRlcmVyLCBwb3NpdGlvbk9mZnNldF0gPSBwb3NpdGlvbi5yZXNvbHZlZFRleHRSZW5kZXJl
ckFuZE9mZnNldCgpOworICAgIGlmICh0ZXh0UG9zaXRpb25SZW5kZXJlciAmJiAhdGV4dFBvc2l0
aW9uUmVuZGVyZXItPmNvbnRhaW5zQ2FyZXRPZmZzZXQocG9zaXRpb25PZmZzZXQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCB0aGlzUmVuZGVyZWRPZmZzZXQgPSB0ZXh0
UmVuZGVyZXIgPyB0ZXh0UmVuZGVyZXItPmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50
aWwobV9vZmZzZXQpIDogbV9vZmZzZXQ7Ci0gICAgdW5zaWduZWQgcG9zaXRpb25SZW5kZXJlZE9m
ZnNldCA9IHRleHRQb3NpdGlvblJlbmRlcmVyID8gdGV4dFBvc2l0aW9uUmVuZGVyZXItPmNvdW50
UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwocG9zaXRpb24ubV9vZmZzZXQpIDogcG9zaXRp
b24ubV9vZmZzZXQ7CisgICAgdW5zaWduZWQgdGhpc1JlbmRlcmVkT2Zmc2V0ID0gdGV4dFJlbmRl
cmVyID8gdGV4dFJlbmRlcmVyLT5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHRo
aXNPZmZzZXQpIDogbV9vZmZzZXQ7CisgICAgdW5zaWduZWQgcG9zaXRpb25SZW5kZXJlZE9mZnNl
dCA9IHRleHRQb3NpdGlvblJlbmRlcmVyID8gdGV4dFBvc2l0aW9uUmVuZGVyZXItPmNvdW50UmVu
ZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwocG9zaXRpb25PZmZzZXQpIDogcG9zaXRpb24ubV9v
ZmZzZXQ7CiAKICAgICBpZiAocmVuZGVyZXIgPT0gcG9zaXRpb25SZW5kZXJlciAmJiB0aGlzUmVu
ZGVyZWRPZmZzZXQgPT0gcG9zaXRpb25SZW5kZXJlZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTE5NSwxNiArMTIzNyw1MiBAQCBzdGF0aWMgUG9zaXRpb24gdXBzdHJlYW1JZ25v
cmluZ0VkaXRpbmdCb3VuZGFyaWVzKFBvc2l0aW9uIHBvc2l0aW9uKQogICAgIHJldHVybiBwb3Np
dGlvbjsKIH0KIAorc3RkOjpwYWlyPFJlbmRlck9iamVjdCosIHVuc2lnbmVkPiBQb3NpdGlvbjo6
cmVuZGVyZXJBbmRPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8qIG5vZGUgPSBkZXByZWNhdGVk
Tm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIHsgeyB9LCB7IH0gfTsKKyAg
ICBhdXRvKiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIHsgeyB9LCB7IH0gfTsKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSBkZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpOworICAgIENoZWNrZWRQdHIgdGV4dEZyYWdtZW50ID0gZHlu
YW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4oKnJlbmRlcmVyKTsKKyAgICBpZiAoIXRl
eHRGcmFnbWVudCB8fCAhdGV4dEZyYWdtZW50LT5maXJzdExldHRlcigpKQorICAgICAgICByZXR1
cm4geyByZW5kZXJlciwgb2Zmc2V0IH07CisKKyAgICAvLyBXaGVuIHRoZSByZW1haW5pbmcgZnJh
Z21lbnQgaXMgZW1wdHkgKGVudGlyZSB0ZXh0IGlzIHRoZSBmaXJzdCBsZXR0ZXIpLAorICAgIC8v
IHJvdXRlIHRvIHRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIncyBlbmQgcG9zaXRpb24gc28gImFm
dGVyIHRoZSBsYXN0IGNoYXJhY3RlciIgaXMgYSB2YWxpZCBjYXJldCBwb3NpdGlvbi4KKyAgICBp
ZiAob2Zmc2V0ID49IHRleHRGcmFnbWVudC0+c3RhcnQoKSAmJiB0ZXh0RnJhZ21lbnQtPnRleHQo
KS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHsgcmVuZGVyZXIsIG9mZnNldCAtIHRleHRGcmFn
bWVudC0+c3RhcnQoKSB9OworCisgICAgLy8gSXQgbG9va3MgbGlrZSB3ZSBhcmUgb24gdGhlIGZp
cnN0IGxldHRlciByZW5kZXJlci4KKyAgICBDaGVja2VkUHRyIGZpcnN0TGV0dGVyUmVuZGVyZXIg
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4odGV4dEZyYWdtZW50LT5maXJzdExldHRlcigp
LT5maXJzdENoaWxkKCkpOworICAgIGlmICghZmlyc3RMZXR0ZXJSZW5kZXJlcikgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgeyB9LCB7IH0gfTsKKyAg
ICB9CisKKyAgICAvLyBUaGUgZmlyc3QtbGV0dGVyIHRleHQgbWF5IG5vdCBzdGFydCBhdCBET00g
b2Zmc2V0IDAgKGUuZy4gY29sbGFwc2VkIHdoaXRlc3BhY2UgcHJlY2VkZXMgdGhlIGZpcnN0IGxl
dHRlcikuCisgICAgYXV0byBmaXJzdExldHRlclN0YXJ0ID0gdGV4dEZyYWdtZW50LT5zdGFydCgp
IC0gZmlyc3RMZXR0ZXJSZW5kZXJlci0+dGV4dCgpLmxlbmd0aCgpOworICAgIHJldHVybiBvZmZz
ZXQgPj0gZmlyc3RMZXR0ZXJTdGFydCA/IHN0ZDo6bWFrZV9wYWlyKGZpcnN0TGV0dGVyUmVuZGVy
ZXIsIG9mZnNldCAtIGZpcnN0TGV0dGVyU3RhcnQpIDogc3RkOjptYWtlX3BhaXIobnVsbHB0ciwg
MCk7Cit9CisKK3N0ZDo6cGFpcjxSZW5kZXJUZXh0KiwgdW5zaWduZWQ+IFBvc2l0aW9uOjpyZXNv
bHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpIGNvbnN0Cit7CisgICAgYXV0byBbcmVuZGVyZXIs
IG9mZnNldF0gPSByZW5kZXJlckFuZE9mZnNldCgpOworICAgIGlmIChhdXRvKiByZW5kZXJUZXh0
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJu
IHsgcmVuZGVyVGV4dCwgb2Zmc2V0IH07CisgICAgcmV0dXJuIHsgbnVsbHB0ciwgMCB9OworfQor
CiBJbmxpbmVCb3hBbmRPZmZzZXQgUG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldChBZmZpbml0
eSBhZmZpbml0eSwgVGV4dERpcmVjdGlvbiBwcmltYXJ5RGlyZWN0aW9uKSBjb25zdAogewogICAg
IGF1dG8gY2FyZXRPZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSk7CiAKLSAgICBSZWZQdHIgbm9kZSA9IGRlcHJlY2F0ZWROb2RlKCk7Ci0gICAg
aWYgKCFub2RlKQotICAgICAgICByZXR1cm4geyB7IH0sIGNhcmV0T2Zmc2V0IH07Ci0gICAgQ2hl
Y2tlZFB0ciByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgYXV0byBbcmVuZGVyZXIs
IHJlc29sdmVkT2Zmc2V0XSA9IHJlbmRlcmVyQW5kT2Zmc2V0KCk7CiAgICAgaWYgKCFyZW5kZXJl
cikKICAgICAgICAgcmV0dXJuIHsgeyB9LCBjYXJldE9mZnNldCB9OworICAgIGNhcmV0T2Zmc2V0
ID0gcmVzb2x2ZWRPZmZzZXQ7CiAKICAgICBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9y
IGJveDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCA3MjUzNzk5N2Y2NWYuLmZmOGFhNDBlNjk3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTM4LDYgKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBMZWdhY3lJbmxpbmVCb3g7CiBjbGFzcyBSZW5kZXJFbGVtZW50OworY2xh
c3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFRleHQ7CiAKIHN0cnVj
dCBCb3VuZGFyeVBvaW50OwpAQCAtMTAzLDYgKzEwNSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBvZmZzZXRGb3JQb3NpdGlvbkFmdGVyQW5jaG9yKCk7CiAgICAgfQogCisgICAgLy8gUmV0
dXJucyB0aGUgcmVuZGVyZXIgYW5kIGZyYWdtZW50LWxvY2FsIG9mZnNldCBmb3IgdGhpcyBwb3Np
dGlvbiwgY29ycmVjdGx5CisgICAgLy8gaGFuZGxpbmcgZmlyc3QtbGV0dGVyIHRleHQgZnJhZ21l
bnQgc3BsaXRzIHdoZXJlIHRoZSBET00gdGV4dCBub2RlJ3MgcmVuZGVyZXIKKyAgICAvLyBpcyB0
aGUgcmVtYWluaW5nIGZyYWdtZW50IHJhdGhlciB0aGFuIHRoZSBmaXJzdC1sZXR0ZXIgZnJhZ21l
bnQuCisgICAgc3RkOjpwYWlyPFJlbmRlck9iamVjdCosIHVuc2lnbmVkPiByZW5kZXJlckFuZE9m
ZnNldCgpIGNvbnN0OworICAgIHN0ZDo6cGFpcjxSZW5kZXJUZXh0KiwgdW5zaWduZWQ+IHJlc29s
dmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCkgY29uc3Q7CisKICAgICBSZWZQdHI8Tm9kZT4gZmly
c3ROb2RlKCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBhcmUgY29udmVuaWVuY2UgbWV0aG9kcyB3
aGljaCBhcmUgc21hcnQgYWJvdXQgd2hldGhlciB0aGUgcG9zaXRpb24gaXMgbmVpZ2hib3IgYW5j
aG9yZWQgb3IgcGFyZW50IGFuY2hvcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb25JdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRv
ci5jcHAKaW5kZXggNDAyYjUxYTAwNjJmLi4zNjc3NmMwMTE3MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb25JdGVyYXRvci5jcHAKQEAgLTE3NSw4ICsxNzUsMTIgQEAgYm9vbCBQb3NpdGlv
bkl0ZXJhdG9yOjppc0NhbmRpZGF0ZSgpIGNvbnN0CiAgICAgaWYgKHJlbmRlcmVyLT5pc0JSKCkp
CiAgICAgICAgIHJldHVybiBQb3NpdGlvbigqdGhpcykuaXNDYW5kaWRhdGUoKTsKIAotICAgIGlm
IChDaGVja2VkUHRyIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJl
bmRlcmVyKSkKLSAgICAgICAgcmV0dXJuICFQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5vbmUo
YW5jaG9yTm9kZS5nZXQoKSkgJiYgcmVuZGVyVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChtX29m
ZnNldEluQW5jaG9yKTsKKyAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0ID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKFBvc2l0aW9uOjpu
b2RlSXNVc2VyU2VsZWN0Tm9uZShhbmNob3JOb2RlLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgYXV0byBbcmVzb2x2ZWRUZXh0LCByZXNvbHZlZE9mZnNldF0gPSBQ
b3NpdGlvbigqdGhpcykucmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICAgICAg
cmV0dXJuIHJlc29sdmVkVGV4dCAmJiByZXNvbHZlZFRleHQtPmNvbnRhaW5zQ2FyZXRPZmZzZXQo
cmVzb2x2ZWRPZmZzZXQpOworICAgIH0KIAogICAgIGlmIChwb3NpdGlvbkJlZm9yZU9yQWZ0ZXJO
b2RlSXNDYW5kaWRhdGUoKmFuY2hvck5vZGUpKQogICAgICAgICByZXR1cm4gKGF0U3RhcnRPZk5v
ZGUoKSB8fCBhdEVuZE9mTm9kZSgpKSAmJiAhUG9zaXRpb246Om5vZGVJc1VzZXJTZWxlY3ROb25l
KGFuY2hvck5vZGUtPnBhcmVudE5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApp
bmRleCAwNDg3MDI5MDU5MjAuLjRkMjAwOTcyYWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUrR2V0dGVyc0lu
bGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0RnJhZ21lbnQuaCIK
ICNpbmNsdWRlICJSZW5kZXJlZFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgog
I2luY2x1ZGUgIlRleHQuaCIKQEAgLTkwNCwxMSArOTA1LDE4IEBAIGludCBjYXJldE1heE9mZnNl
dChjb25zdCBOb2RlJiBub2RlKQogICAgIC8vIEZvciByZW5kZXJlZCB0ZXh0IG5vZGVzLCByZXR1
cm4gdGhlIGxhc3QgcG9zaXRpb24gdGhhdCBhIGNhcmV0IGNvdWxkIG9jY3VweS4KICAgICBpZiAo
YXV0byogdGV4dCA9IGR5bmFtaWNEb3duY2FzdDxUZXh0Pihub2RlKSkgewogICAgICAgICBpZiAo
Q2hlY2tlZFB0ciByZW5kZXJlciA9IHRleHQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZXR1
cm4gcmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gZmlyc3RM
ZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgqcmVuZGVyZXIsIHJlbmRlcmVyLT5jYXJldE1heE9mZnNl
dCgpKTsKICAgICB9CiAgICAgcmV0dXJuIGxhc3RPZmZzZXRGb3JFZGl0aW5nKG5vZGUpOwogfQog
Cit1bnNpZ25lZCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyZXIsIHVuc2lnbmVkIG9mZnNldCkKK3sKKyAgICBpZiAoYXV0byogdGV4dEZyYWdt
ZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpOyB0ZXh0
RnJhZ21lbnQgJiYgdGV4dEZyYWdtZW50LT5maXJzdExldHRlcigpKQorICAgICAgICByZXR1cm4g
b2Zmc2V0ICsgdGV4dEZyYWdtZW50LT5zdGFydCgpOworICAgIHJldHVybiBvZmZzZXQ7Cit9CisK
IGJvb2wgbGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBwb3NpdGlvbikKIHsKICAgICByZXR1cm4gbGluZUJyZWFrRXhpc3RzQXRQb3NpdGlvbihw
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRvd25zdHJlYW0oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5oCmluZGV4IDYxZTYxMDM1YzY1MC4uYjA4NWZkNzQ4OWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuaApAQCAtNzksNiArNzksNyBAQCBOb2RlKiBwcmV2aW91c0xlYWZOb2RlKGNvbnN0
IE5vZGUqKTsKIFdFQkNPUkVfRVhQT1JUIGludCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhjb25zdCBO
b2RlJik7CiBpbnQgY2FyZXRNaW5PZmZzZXQoY29uc3QgTm9kZSYpOwogaW50IGNhcmV0TWF4T2Zm
c2V0KGNvbnN0IE5vZGUmKTsKK3Vuc2lnbmVkIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQo
Y29uc3QgUmVuZGVyT2JqZWN0JiwgdW5zaWduZWQgb2Zmc2V0KTsKIAogYm9vbCBoYXNFZGl0YWJs
ZVN0eWxlKGNvbnN0IE5vZGUmLCBFZGl0YWJsZVR5cGUpOwogYm9vbCBpc0VkaXRhYmxlTm9kZShj
b25zdCBOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmlu
ZGV4IGI5YjRjNTkxNWY0MC4uNDI0YjFhOTgzOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjQzNiwxMiArMjQzNiwxMCBAQCB2b2lkIEZyYW1lU2Vs
ZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKICAgICAvLyBXZSBjYW4gZ2V0IGludG8gYSBzdGF0
ZSB3aGVyZSB0aGUgc2VsZWN0aW9uIGVuZHBvaW50cyBtYXAgdG8gdGhlIHNhbWUgVmlzaWJsZVBv
c2l0aW9uIHdoZW4gYSBzZWxlY3Rpb24gaXMgZGVsZXRlZAogICAgIC8vIGJlY2F1c2Ugd2UgZG9u
J3QgeWV0IG5vdGlmeSB0aGUgRnJhbWVTZWxlY3Rpb24gb2YgdGV4dCByZW1vdmFsLgogICAgIGlm
IChDaGVja2VkUHRyIHZpZXcgPSBkb2N1bWVudC0+cmVuZGVyVmlldygpOyBzdGFydFBvcy5pc05v
dE51bGwoKSAmJiBlbmRQb3MuaXNOb3ROdWxsKCkgJiYgc2VsZWN0aW9uLnZpc2libGVTdGFydCgp
ICE9IHNlbGVjdGlvbi52aXNpYmxlRW5kKCkpIHsKLSAgICAgICAgQ2hlY2tlZFB0ciBzdGFydFJl
bmRlcmVyID0gc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAg
aW50IHN0YXJ0T2Zmc2V0ID0gc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKLSAg
ICAgICAgQ2hlY2tlZFB0ciBlbmRSZW5kZXJlciA9IGVuZFBvcy5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpOwotICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCk7Ci0gICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA+PSAwICYmIGVuZE9mZnNl
dCA+PSAwKTsKLSAgICAgICAgdmlldy0+c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwg
ZW5kUmVuZGVyZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpIH0pOworICAgICAgICBhdXRvIFtzdGFydFJlbmRlcmVy
LCBzdGFydE9mZnNldF0gPSBzdGFydFBvcy5yZW5kZXJlckFuZE9mZnNldCgpOworICAgICAgICBh
dXRvIFtlbmRSZW5kZXJlciwgZW5kT2Zmc2V0XSA9IGVuZFBvcy5yZW5kZXJlckFuZE9mZnNldCgp
OworICAgICAgICBpZiAoc3RhcnRSZW5kZXJlciAmJiBlbmRSZW5kZXJlcikKKyAgICAgICAgICAg
IHZpZXctPnNlbGVjdGlvbigpLnNldCh7IHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRlcmVyLCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0IH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKaW5kZXggY2Q1Yzc5MGM4ZGU3Li4xYWYzZjRjNDQ1ODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKIAogI2luY2x1ZGUgIkNh
cmV0UmVjdENvbXB1dGF0aW9uLmgiCisjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIklu
bGluZVJ1bkFuZE9mZnNldC5oIgogI2luY2x1ZGUgIk5vZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0SW5saW5lcy5oIgpAQCAtODUsNiArODYsNyBAQCBSZW5kZXJlZFBvc2l0aW9u
OjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgQWZmaW5pdHkgYWZm
aW5pdHkpCiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBtX25vZGUgPSBwb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpOwogICAgIGF1dG8gYm94QW5kT2Zm
c2V0ID0gcG9zaXRpb24uaW5saW5lQm94QW5kT2Zmc2V0KGFmZmluaXR5KTsKICAgICBtX2JveCA9
IGJveEFuZE9mZnNldC5ib3g7CiAgICAgbV9vZmZzZXQgPSBib3hBbmRPZmZzZXQub2Zmc2V0OwpA
QCAtMjA2LDcgKzIwOCw3IEBAIFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRM
ZWZ0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdAogICAgIEFTU0VSVChhdExlZnRCb3VuZGFyeU9m
QmlkaVJ1bigpKTsKIAogICAgIGlmIChhdExlZnRtb3N0T2Zmc2V0SW5Cb3goKSkKLSAgICAgICAg
cmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChtX3JlbmRlcmVyLT5u
b2RlKCkpLmdldCgpLCBtX29mZnNldCk7CisgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExl
Z2FjeVBvc2l0aW9uKHByb3RlY3QobV9ub2RlLmdldCgpKS5nZXQoKSwgbV9vZmZzZXQpOwogCiAg
ICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChuZXh0TGVhZk9u
TGluZSgpLT5yZW5kZXJlcigpLm5vZGUoKSkuZ2V0KCksIG5leHRMZWFmT25MaW5lKCktPmxlZnRt
b3N0Q2FyZXRPZmZzZXQoKSk7CiB9CkBAIC0yMTUsOCArMjE3LDEwIEBAIFBvc2l0aW9uIFJlbmRl
cmVkUG9zaXRpb246OnBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoYXRSaWdodEJvdW5kYXJ5T2ZCaWRpUnVuKCkpOwogCi0gICAgaWYgKGF0Umln
aHRtb3N0T2Zmc2V0SW5Cb3goKSkKLSAgICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5
UG9zaXRpb24ocHJvdGVjdChtX3JlbmRlcmVyLT5ub2RlKCkpLmdldCgpLCBtX29mZnNldCk7Cisg
ICAgaWYgKGF0UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSkgeworICAgICAgICBhdXRvIG9mZnNldCA9
IGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKm1fcmVuZGVyZXIsIG1fb2Zmc2V0KTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChtX25vZGUu
Z2V0KCkpLmdldCgpLCBvZmZzZXQpOworICAgIH0KIAogICAgIHJldHVybiBtYWtlRGVwcmVjYXRl
ZExlZ2FjeVBvc2l0aW9uKHByb3RlY3QocHJldmlvdXNMZWFmT25MaW5lKCktPnJlbmRlcmVyKCku
bm9kZSgpKS5nZXQoKSwgcHJldmlvdXNMZWFmT25MaW5lKCktPnJpZ2h0bW9zdENhcmV0T2Zmc2V0
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAppbmRleCA3
NGJlNGU0N2RjYjQuLmU3ZTU4MGE4MTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5k
ZXJlZFBvc2l0aW9uLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGF0Umln
aHRCb3VuZGFyeU9mQmlkaVJ1bihTaG91bGRNYXRjaEJpZGlMZXZlbCwgdW5zaWduZWQgY2hhciBi
aWRpTGV2ZWxPZlJ1bikgY29uc3Q7CiAKICAgICBTaW5nbGVUaHJlYWRXZWFrUHRyPGNvbnN0IFJl
bmRlck9iamVjdD4gbV9yZW5kZXJlcjsKKyAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwogICAgIElu
bGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgbV9ib3g7CiAgICAgdW5zaWduZWQgbV9vZmZz
ZXQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBl
ZmNhMTdhMGRhMTkuLjIwNjE3ZWQzZTkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcApAQCAtNjA3LDYgKzYwNyw4IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0Tm9kZSgpCiAgICAgQ2hlY2tlZFJlZiByZW5kZXJlciA9ICp0ZXh0Tm9kZS0+cmVuZGVyZXIo
KTsKICAgICBtX2xhc3RUZXh0Tm9kZSA9IHRleHROb2RlLnB0cigpOwogICAgIGF1dG8gcmVuZGVy
ZXJUZXh0ID0gcmVuZGVyZXJUZXh0Rm9yQmVoYXZpb3IocmVuZGVyZXIuZ2V0KCkpOworICAgIC8v
IHRleHRGcmFnbWVudCBpcyB0aGUgcmVuZGVyZXIgdGhhdCBob2xkcyB0aGUgdHJhaWxpbmcgY29u
dGVudCBhbmQgaGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBsZXR0ZXIgcmVuZGVyZXIuCisg
ICAgQ2hlY2tlZFB0ciB0ZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZy
YWdtZW50PihyZW5kZXJlci5nZXQoKSk7CiAKICAgICAvLyBoYW5kbGUgcHJlLWZvcm1hdHRlZCB0
ZXh0CiAgICAgaWYgKCFyZW5kZXJlci0+c3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewpA
QCAtNjE1LDggKzYxNyw4IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgV1RGOjptb3ZlKHRleHROb2RlKSwgbnVsbHB0
ciwgcnVuU3RhcnQsIHJ1blN0YXJ0KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0RnJhZ21lbnQgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHJlbmRlclRleHRGcmFnbWVu
dCAmJiAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgIW1fb2Zmc2V0KSB7Ci0gICAgICAgICAgICBo
YW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKCpyZW5kZXJUZXh0RnJhZ21lbnQpOworICAgICAgICBp
ZiAodGV4dEZyYWdtZW50ICYmICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiAhbV9vZmZzZXQpIHsK
KyAgICAgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoKnRleHRGcmFnbWVudCk7CiAg
ICAgICAgICAgICBpZiAobV9maXJzdExldHRlclRleHQpIHsKICAgICAgICAgICAgICAgICBTdHJp
bmcgZmlyc3RMZXR0ZXIgPSBtX2ZpcnN0TGV0dGVyVGV4dC0+dGV4dCgpOwogICAgICAgICAgICAg
ICAgIGVtaXRUZXh0KHRleHROb2RlLCAqcHJvdGVjdChtX2ZpcnN0TGV0dGVyVGV4dCksIG1fb2Zm
c2V0LCBtX29mZnNldCArIGZpcnN0TGV0dGVyLmxlbmd0aCgpKTsKQEAgLTYyNyw5ICs2MjksMTUg
QEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgfQogICAgICAg
ICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUgJiYgIW1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVz
U3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW50
IHJlbmRlcmVyVGV4dExlbmd0aCA9IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKLSAgICAgICAgaW50
IGVuZCA9ICh0ZXh0Tm9kZS5wdHIoKSA9PSBtX2VuZENvbnRhaW5lcikgPyBtX2VuZE9mZnNldCA6
IElOVF9NQVg7Ci0gICAgICAgIGludCBydW5FbmQgPSBzdGQ6Om1pbihyZW5kZXJlclRleHRMZW5n
dGgsIGVuZCk7CisgICAgICAgIGF1dG8gcmVuZGVyZXJUZXh0TGVuZ3RoID0gc3RhdGljX2Nhc3Q8
aW50PihyZW5kZXJlclRleHQubGVuZ3RoKCkpOworICAgICAgICBhdXRvIGVuZCA9ICh0ZXh0Tm9k
ZS5wdHIoKSA9PSBtX2VuZENvbnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7CisgICAg
ICAgIGlmICh0ZXh0RnJhZ21lbnQgJiYgdGV4dEZyYWdtZW50LT5maXJzdExldHRlcigpKSB7Cisg
ICAgICAgICAgICAvLyBUaGUgcmVtYWluaW5nIHRleHQgZnJhZ21lbnQncyB0ZXh0IGlzIGZyYWdt
ZW50LWxvY2FsLiBDb252ZXJ0IERPTSBvZmZzZXRzIHRvIGZyYWdtZW50LWxvY2FsIHNvIHdlIGNh
biBjb21wYXJlIGFnYWluc3QgdGhlIHJlbmRlcmVyJ3MgdGV4dCBsZW5ndGguCisgICAgICAgICAg
ICBhdXRvIGZyYWdtZW50U3RhcnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHRleHRGcmFnbWVudC0+c3Rh
cnQoKSk7CisgICAgICAgICAgICBydW5TdGFydCA9IHN0ZDo6bWF4KDAsIHJ1blN0YXJ0IC0gZnJh
Z21lbnRTdGFydCk7CisgICAgICAgICAgICBlbmQgPSBlbmQgPT0gSU5UX01BWCA/IElOVF9NQVgg
OiBzdGQ6Om1heCgwLCBlbmQgLSBmcmFnbWVudFN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIHJ1bkVuZCA9IHN0ZDo6bWluKHJlbmRlcmVyVGV4dExlbmd0aCwgZW5kKTsKIAogICAgICAg
ICBpZiAocnVuU3RhcnQgPj0gcnVuRW5kKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02
NDAsOCArNjQ4LDggQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKIAogICAg
IHN0ZDo6dGllKG1fdGV4dFJ1biwgbV90ZXh0UnVuTG9naWNhbE9yZGVyQ2FjaGUpID0gSW5saW5l
SXRlcmF0b3I6OmZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKHJlbmRlcmVyLmdldCgpKTsK
IAotICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsgcmVuZGVyVGV4dEZyYWdtZW50ICYmICFt
X2hhbmRsZWRGaXJzdExldHRlciAmJiAhbV9vZmZzZXQpCi0gICAgICAgIGhhbmRsZVRleHROb2Rl
Rmlyc3RMZXR0ZXIoKnJlbmRlclRleHRGcmFnbWVudCk7CisgICAgaWYgKHRleHRGcmFnbWVudCAm
JiAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgIW1fb2Zmc2V0KQorICAgICAgICBoYW5kbGVUZXh0
Tm9kZUZpcnN0TGV0dGVyKCp0ZXh0RnJhZ21lbnQpOwogICAgIGVsc2UgaWYgKCFtX3RleHRSdW4g
JiYgcmVuZGVyZXJUZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhbV9iZWhhdmlvcnMuY29u
dGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjY1LDEyICs2NzMsMjEgQEAgdm9pZCBUZXh0SXRl
cmF0b3I6OmhhbmRsZVRleHRSdW4oKQogCiAgICAgYXV0byBbZmlyc3RUZXh0UnVuLCBvcmRlckNh
Y2hlXSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZvcihyZW5k
ZXJlcik7CiAKLSAgICBhdXRvIHJlbmRlcmVyVGV4dCA9IHJlbmRlcmVyVGV4dEZvckJlaGF2aW9y
KHJlbmRlcmVyLmdldCgpKTsKLSAgICB1bnNpZ25lZCByYW5nZVN0YXJ0ID0gbV9vZmZzZXQ7Ci0g
ICAgYXV0byByYW5nZUVuZCA9IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHsgfTsKLSAgICBpZiAo
dGV4dE5vZGUucHRyKCkgPT0gbV9lbmRDb250YWluZXIpCi0gICAgICAgIHJhbmdlRW5kID0gbV9l
bmRPZmZzZXQ7CisgICAgLy8gRm9yIHJlbWFpbmluZyB0ZXh0IGZyYWdtZW50cyBhZnRlciBhIGZp
cnN0LWxldHRlciBzcGxpdCwgdGV4dCBib3ggb2Zmc2V0cyBhcmUgZnJhZ21lbnQtbG9jYWwgYnV0
IG1fb2Zmc2V0L21fZW5kT2Zmc2V0IGFyZSBET00gb2Zmc2V0cy4KKyAgICB1bnNpZ25lZCByZW1h
aW5pbmdGcmFnbWVudFN0YXJ0ID0gMDsKKyAgICBpZiAoYXV0byogcmVuZGVyVGV4dCA9IGR5bmFt
aWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyLmdldCgpKTsgcmVuZGVyVGV4
dCAmJiByZW5kZXJUZXh0LT5maXJzdExldHRlcigpKQorICAgICAgICByZW1haW5pbmdGcmFnbWVu
dFN0YXJ0ID0gcmVuZGVyVGV4dC0+c3RhcnQoKTsKKworICAgIGF1dG8gdG9GcmFnbWVudExvY2Fs
ID0gWyZdKHVuc2lnbmVkIGRvbU9mZnNldCkgeworICAgICAgICByZXR1cm4gZG9tT2Zmc2V0ID4g
cmVtYWluaW5nRnJhZ21lbnRTdGFydCA/IGRvbU9mZnNldCAtIHJlbWFpbmluZ0ZyYWdtZW50U3Rh
cnQgOiAwOworICAgIH07CisgICAgYXV0byB0b0RPTU9mZnNldCA9IFsmXSh1bnNpZ25lZCBsb2Nh
bE9mZnNldCkgeworICAgICAgICByZXR1cm4gbG9jYWxPZmZzZXQgKyByZW1haW5pbmdGcmFnbWVu
dFN0YXJ0OworICAgIH07CiAKKyAgICBhdXRvIHJlbmRlcmVyVGV4dCA9IHJlbmRlcmVyVGV4dEZv
ckJlaGF2aW9yKHJlbmRlcmVyLmdldCgpKTsKKyAgICBhdXRvIHJhbmdlU3RhcnQgPSB0b0ZyYWdt
ZW50TG9jYWwobV9vZmZzZXQpOworICAgIGF1dG8gcmFuZ2VFbmQgPSB0ZXh0Tm9kZS5wdHIoKSA9
PSBtX2VuZENvbnRhaW5lciA/IHN0ZDo6bWFrZV9vcHRpb25hbCh0b0ZyYWdtZW50TG9jYWwobV9l
bmRPZmZzZXQpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICB3aGlsZSAobV90ZXh0UnVuKSB7CiAgICAg
ICAgIGF1dG8gdGV4dFJ1blN0YXJ0ID0gbV90ZXh0UnVuLT5zdGFydCgpOwogICAgICAgICBhdXRv
IHRleHRSdW5FbmQgPSB0ZXh0UnVuU3RhcnQgKyBtX3RleHRSdW4tPmxlbmd0aCgpOwpAQCAtNzA0
LDcgKzcyMSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKICAgICAgICAg
ICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgdHJhbnNsYXRlcyBuZXdsaW5lcyBhbmQgdGFicyB0byBz
cGFjZXMgd2l0aG91dCBjb3B5aW5nIHRoZSB0ZXh0LgogICAgICAgICAgICAgaWYgKGlzTmV3bGlu
ZU9yVGFiKHJlbmRlcmVyVGV4dFtydW5TdGFydF0pKSB7CiAgICAgICAgICAgICAgICAgZW1pdENo
YXJhY3RlcignICcsIHRleHROb2RlLmNvcHlSZWYoKSwgbnVsbHB0ciwgcnVuU3RhcnQsIHJ1blN0
YXJ0ICsgMSk7Ci0gICAgICAgICAgICAgICAgbV9vZmZzZXQgPSBydW5TdGFydCArIDE7CisgICAg
ICAgICAgICAgICAgbV9vZmZzZXQgPSB0b0RPTU9mZnNldChydW5TdGFydCArIDEpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRvIHN1YnJ1bkVuZCA9IHJ1blN0YXJ0
ICsgMTsKICAgICAgICAgICAgICAgICBmb3IgKDsgc3VicnVuRW5kIDwgcnVuRW5kOyArK3N1YnJ1
bkVuZCkgewpAQCAtNzE2LDEzICs3MzMsMTMgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHRSdW4oKQogICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFNwYWNlQ29sbGFwc2VkQnlOZXh0
Tm9uVGV4dFJ1bikKICAgICAgICAgICAgICAgICAgICAgICAgICsrc3VicnVuRW5kOyAvLyBydW5F
bmQgc3RvcHBlZCBiZWZvcmUgbGFzdCBzcGFjZS4gSW5jcmVtZW50IGJ5IG9uZSB0byByZXN0b3Jl
IHRoZSBzcGFjZS4KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9vZmZzZXQg
PSBzdWJydW5FbmQ7CisgICAgICAgICAgICAgICAgbV9vZmZzZXQgPSB0b0RPTU9mZnNldChzdWJy
dW5FbmQpOwogICAgICAgICAgICAgICAgIGVtaXRUZXh0KHRleHROb2RlLCByZW5kZXJlciwgcnVu
U3RhcnQsIHN1YnJ1bkVuZCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIElmIHdl
IGFyZSBkb2luZyBhIHN1YnJ1biB0aGF0IGRvZXNuJ3QgZ28gdG8gdGhlIGVuZCBvZiB0aGUgdGV4
dCBib3gsCiAgICAgICAgICAgICAvLyBjb21lIGJhY2sgYWdhaW4gdG8gZmluaXNoIGhhbmRsaW5n
IHRoaXMgdGV4dCBib3g7IGRvbid0IGFkdmFuY2UgdG8gdGhlIG5leHQgb25lLgotICAgICAgICAg
ICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Bvc2l0aW9uRW5kT2Zmc2V0KSA8IHRleHRS
dW5FbmQpCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9zaXRpb25F
bmRPZmZzZXQpIDwgdG9ET01PZmZzZXQodGV4dFJ1bkVuZCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgICAgICAvLyBBZHZhbmNlIGFuZCByZXR1cm4KQEAgLTEyMDEsOCArMTIx
OCwxMSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoVGV4dCYgdGV4dE5vZGUsIFJlbmRl
clRleHQmIHJlbmRlcmVyLCBpbnQgdGV4dFN0YXJ0TwogCiAgICAgbV9wb3NpdGlvbk5vZGUgPSB0
ZXh0Tm9kZTsKICAgICBtX3Bvc2l0aW9uT2Zmc2V0QmFzZU5vZGUgPSBudWxscHRyOwotICAgIG1f
cG9zaXRpb25TdGFydE9mZnNldCA9IHRleHRTdGFydE9mZnNldDsKLSAgICBtX3Bvc2l0aW9uRW5k
T2Zmc2V0ID0gdGV4dEVuZE9mZnNldDsKKyAgICAvLyBGb3IgcmVtYWluaW5nIHRleHQgZnJhZ21l
bnRzIGFmdGVyIGEgZmlyc3QtbGV0dGVyIHNwbGl0LCB0aGUgdGV4dCBvZmZzZXRzIGFyZQorICAg
IC8vIGZyYWdtZW50LWxvY2FsIGJ1dCBwb3NpdGlvbiBvZmZzZXRzIG5lZWQgdG8gYmUgRE9NLXJl
bGF0aXZlIGZvciByYW5nZSgpIHRvCisgICAgLy8gcmV0dXJuIGNvcnJlY3QgYm91bmRhcnkgcG9p
bnRzICh1c2VkIGJ5IHdvcmQvc2VudGVuY2UgYm91bmRhcnkgZGV0ZWN0aW9uKS4KKyAgICBtX3Bv
c2l0aW9uU3RhcnRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KHJlbmRlcmVy
LCB0ZXh0U3RhcnRPZmZzZXQpOworICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSBmaXJzdExldHRl
ckFkanVzdGVkRE9NT2Zmc2V0KHJlbmRlcmVyLCB0ZXh0RW5kT2Zmc2V0KTsKIAogICAgIG1fbGFz
dENoYXJhY3RlciA9IHN0cmluZ1t0ZXh0RW5kT2Zmc2V0IC0gMV07CiAgICAgbV9jb3B5YWJsZVRl
eHQuc2V0KFdURjo6bW92ZShzdHJpbmcpLCB0ZXh0U3RhcnRPZmZzZXQsIHRleHRFbmRPZmZzZXQg
LSB0ZXh0U3RhcnRPZmZzZXQpOwpAQCAtMTM2MSw3MCArMTM4MSw1MiBAQCBib29sIFNpbXBsaWZp
ZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKIHsKICAgICBtX2xhc3RU
ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KG1fbm9kZS5nZXQoKSk7CiAKLSAgICBpbnQgc3RhcnRP
ZmZzZXQ7Ci0gICAgaW50IG9mZnNldEluTm9kZTsKLSAgICBDaGVja2VkUHRyIHJlbmRlcmVyID0g
aGFuZGxlRmlyc3RMZXR0ZXIoc3RhcnRPZmZzZXQsIG9mZnNldEluTm9kZSk7Ci0gICAgaWYgKCFy
ZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgQ2hlY2tlZFJlZiByZW5kZXJlciA9
IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX25vZGUtPnJlbmRlcmVyKCkpOworICAgIGF1dG8gc3Rh
cnRPZmZzZXQgPSAobV9ub2RlID09IG1fc3RhcnRDb250YWluZXIpID8gbV9zdGFydE9mZnNldCA6
IDA7CiAKLSAgICBTdHJpbmcgdGV4dCA9IHJlbmRlcmVyLT50ZXh0KCk7CisgICAgYXV0byB0ZXh0
ID0gcmVuZGVyZXItPnRleHQoKTsKICAgICBpZiAoIXJlbmRlcmVyLT5oYXNSZW5kZXJlZFRleHQo
KSAmJiB0ZXh0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChzdGFy
dE9mZnNldCArIG9mZnNldEluTm9kZSA9PSBtX29mZnNldCkgewotICAgICAgICBBU1NFUlQoIW1f
c2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIpOworICAgIGlmIChzdGFydE9mZnNldCA9PSBtX29mZnNl
dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBOb3RoaW5nIHRvIGVtaXQgd2hlbiB0
aGUgcmVuZGVyZXIgdGV4dCBpcyBlbXB0eSAoZS5nLiB0aGUgcmVtYWluaW5nIHRleHQKKyAgICAv
LyBmcmFnbWVudCBhZnRlciBhIGZpcnN0LWxldHRlciBzcGxpdCBjb3ZlcnMgbm8gY2hhcmFjdGVy
cykuCisgICAgaWYgKCF0ZXh0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
CiAKICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gbV9vZmZzZXQ7Ci0gICAgbV9vZmZzZXQgPSBz
dGFydE9mZnNldCArIG9mZnNldEluTm9kZTsKKyAgICBtX29mZnNldCA9IHN0YXJ0T2Zmc2V0Owog
ICAgIG1fcG9zaXRpb25Ob2RlID0gbV9ub2RlOwogICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9
IG1fb2Zmc2V0OwogCi0gICAgQVNTRVJUKG1fcG9zaXRpb25TdGFydE9mZnNldCA8IG1fcG9zaXRp
b25FbmRPZmZzZXQpOwotICAgIEFTU0VSVChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgLSBvZmZzZXRJ
bk5vZGUgPj0gMCk7Ci0gICAgQVNTRVJUKG1fcG9zaXRpb25FbmRPZmZzZXQgLSBvZmZzZXRJbk5v
ZGUgPiAwKTsKLSAgICBBU1NFUlQobV9wb3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSA8
PSBzdGF0aWNfY2FzdDxpbnQ+KHRleHQubGVuZ3RoKCkpKTsKLQotICAgIG1fbGFzdENoYXJhY3Rl
ciA9IHRleHRbbV9wb3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSAtIDFdOwotICAgIG1f
Y29weWFibGVUZXh0LnNldChXVEY6Om1vdmUodGV4dCksIG1fcG9zaXRpb25TdGFydE9mZnNldCAt
IG9mZnNldEluTm9kZSwgbV9wb3NpdGlvbkVuZE9mZnNldCAtIG1fcG9zaXRpb25TdGFydE9mZnNl
dCk7Ci0gICAgbV90ZXh0ID0gbV9jb3B5YWJsZVRleHQudGV4dCgpOwotCi0gICAgcmV0dXJuICFt
X3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyOwotfQorICAgIC8vIEZvciByZW1haW5pbmcgdGV4dCBm
cmFnbWVudHMgYWZ0ZXIgYSBmaXJzdC1sZXR0ZXIgc3BsaXQsIERPTSBvZmZzZXRzIChtX3Bvc2l0
aW9uU3RhcnRPZmZzZXQsCisgICAgLy8gbV9wb3NpdGlvbkVuZE9mZnNldCkgZGlmZmVyIGZyb20g
ZnJhZ21lbnQtbG9jYWwgb2Zmc2V0cyB1c2VkIHRvIGluZGV4IGludG8gcmVuZGVyZXIgdGV4dC4K
KyAgICAvLyBDb252ZXJ0IHRvIGZyYWdtZW50LWxvY2FsIGZvciB0ZXh0IGFjY2Vzcywga2VlcGlu
ZyBET00gb2Zmc2V0cyBmb3IgcmFuZ2UoKS4KKyAgICB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0ID0g
MDsKKyAgICBpZiAoYXV0byogcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0
RnJhZ21lbnQ+KHJlbmRlcmVyLmdldCgpKTsgcmVuZGVyVGV4dCAmJiByZW5kZXJUZXh0LT5maXJz
dExldHRlcigpICYmIHN0YXJ0T2Zmc2V0ID49IHN0YXRpY19jYXN0PGludD4ocmVuZGVyVGV4dC0+
c3RhcnQoKSkpCisgICAgICAgIGZyYWdtZW50U3RhcnQgPSByZW5kZXJUZXh0LT5zdGFydCgpOwog
Ci1DaGVja2VkUHRyPFJlbmRlclRleHQ+IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6
OmhhbmRsZUZpcnN0TGV0dGVyKGludCYgc3RhcnRPZmZzZXQsIGludCYgb2Zmc2V0SW5Ob2RlKQot
ewotICAgIENoZWNrZWRSZWYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9ub2Rl
LT5yZW5kZXJlcigpKTsKLSAgICBzdGFydE9mZnNldCA9IChtX25vZGUgPT0gbV9zdGFydENvbnRh
aW5lcikgPyBtX3N0YXJ0T2Zmc2V0IDogMDsKKyAgICAvLyBBZnRlciBlZGl0aW5nIG11dGF0aW9u
cyAoZS5nLiBkZWxldGluZyB0aGUgbGFzdCBjaGFyYWN0ZXIpLAorICAgIC8vIG1fcG9zaXRpb25F
bmRPZmZzZXQgY2FuIGV4Y2VlZCB0aGUgdGV4dCBub2RlJ3MgY3VycmVudCBsZW5ndGggaW4gRE9N
IHNwYWNlLgorICAgIGF1dG8gdGV4dExlbmd0aEluRE9NU3BhY2UgPSBzdGF0aWNfY2FzdDxpbnQ+
KHRleHQubGVuZ3RoKCkgKyBmcmFnbWVudFN0YXJ0KTsKKyAgICBpZiAobV9wb3NpdGlvbkVuZE9m
ZnNldCA+IHRleHRMZW5ndGhJbkRPTVNwYWNlKQorICAgICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0
ID0gdGV4dExlbmd0aEluRE9NU3BhY2U7CiAKLSAgICBDaGVja2VkUHRyIGZyYWdtZW50ID0gZHlu
YW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpOwotICAgIGlmICghZnJh
Z21lbnQpIHsKLSAgICAgICAgb2Zmc2V0SW5Ob2RlID0gMDsKLSAgICAgICAgcmV0dXJuIHJlbmRl
cmVyOwotICAgIH0KKyAgICBpbnQgbG9jYWxTdGFydCA9IG1fcG9zaXRpb25TdGFydE9mZnNldCAt
IGZyYWdtZW50U3RhcnQ7CisgICAgaW50IGxvY2FsRW5kID0gbV9wb3NpdGlvbkVuZE9mZnNldCAt
IGZyYWdtZW50U3RhcnQ7CiAKLSAgICBpbnQgb2Zmc2V0QWZ0ZXJGaXJzdExldHRlciA9IGZyYWdt
ZW50LT5zdGFydCgpOwotICAgIGlmIChzdGFydE9mZnNldCA+PSBvZmZzZXRBZnRlckZpcnN0TGV0
dGVyKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zaG91bGRIYW5kbGVGaXJzdExldHRlcik7Ci0gICAg
ICAgIG9mZnNldEluTm9kZSA9IG9mZnNldEFmdGVyRmlyc3RMZXR0ZXI7Ci0gICAgICAgIHJldHVy
biByZW5kZXJlcjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIg
JiYgc3RhcnRPZmZzZXQgKyBvZmZzZXRBZnRlckZpcnN0TGV0dGVyIDwgbV9vZmZzZXQpIHsKLSAg
ICAgICAgbV9zaG91bGRIYW5kbGVGaXJzdExldHRlciA9IHRydWU7Ci0gICAgICAgIG9mZnNldElu
Tm9kZSA9IG9mZnNldEFmdGVyRmlyc3RMZXR0ZXI7Ci0gICAgICAgIHJldHVybiByZW5kZXJlcjsK
LSAgICB9Ci0KLSAgICBtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyID0gZmFsc2U7Ci0gICAgb2Zm
c2V0SW5Ob2RlID0gMDsKLSAgICBDaGVja2VkUHRyIGZpcnN0TGV0dGVyUmVuZGVyZXIgPSBmaXJz
dFJlbmRlclRleHRJbkZpcnN0TGV0dGVyKHByb3RlY3QoZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkp
KTsKKyAgICBBU1NFUlQobV9wb3NpdGlvblN0YXJ0T2Zmc2V0IDwgbV9wb3NpdGlvbkVuZE9mZnNl
dCk7CisgICAgQVNTRVJUKGxvY2FsU3RhcnQgPj0gMCk7CisgICAgQVNTRVJUKGxvY2FsRW5kID4g
MCk7CisgICAgQVNTRVJUKGxvY2FsRW5kIDw9IHN0YXRpY19jYXN0PGludD4odGV4dC5sZW5ndGgo
KSkpOwogCi0gICAgbV9vZmZzZXQgPSBmaXJzdExldHRlclJlbmRlcmVyLT5jYXJldE1heE9mZnNl
dCgpOwotICAgIG1fb2Zmc2V0ICs9IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKCpmaXJzdExldHRlclJl
bmRlcmVyLCBtX29mZnNldCk7CisgICAgbV9sYXN0Q2hhcmFjdGVyID0gdGV4dFtsb2NhbEVuZCAt
IDFdOworICAgIG1fY29weWFibGVUZXh0LnNldChXVEY6Om1vdmUodGV4dCksIGxvY2FsU3RhcnQs
IG1fcG9zaXRpb25FbmRPZmZzZXQgLSBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQpOworICAgIG1fdGV4
dCA9IG1fY29weWFibGVUZXh0LnRleHQoKTsKIAotICAgIHJldHVybiBmaXJzdExldHRlclJlbmRl
cmVyOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuaAppbmRleCA0MzIyYWFhNjVkMGUuLjllNjVkZmQxZWZkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yMDEsNyArMjAxLDYgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIGV4aXROb2RlKCk7CiAgICAgYm9vbCBoYW5kbGVUZXh0Tm9kZSgpOwot
ICAgIENoZWNrZWRQdHI8UmVuZGVyVGV4dD4gaGFuZGxlRmlyc3RMZXR0ZXIoaW50JiBzdGFydE9m
ZnNldCwgaW50JiBvZmZzZXRJbk5vZGUpOwogICAgIGJvb2wgaGFuZGxlUmVwbGFjZWRFbGVtZW50
KCk7CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZvaWQgZW1pdENoYXJhY3Rl
cihjaGFyMTZfdCwgUmVmUHRyPE5vZGU+JiYsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNl
dCk7CkBAIC0yMzYsOCArMjM1LDYgQEAgcHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIG1fbm9kZSBo
YXMgYWR2YW5jZWQgYmV5b25kIHRoZSBpdGVyYXRpb24gcmFuZ2UgKGkuZS4gbV9zdGFydENvbnRh
aW5lcikuCiAgICAgYm9vbCBtX2hhdmVQYXNzZWRTdGFydENvbnRhaW5lciB7IGZhbHNlIH07CiAK
LSAgICAvLyBTaG91bGQgaGFuZGxlIGZpcnN0LWxldHRlciByZW5kZXJlciBpbiB0aGUgbmV4dCBj
YWxsIHRvIGhhbmRsZVRleHROb2RlLgotICAgIGJvb2wgbV9zaG91bGRIYW5kbGVGaXJzdExldHRl
ciB7IGZhbHNlIH07CiB9OwogCiAvLyBCdWlsZHMgb24gdGhlIHRleHQgaXRlcmF0b3IsIGFkZGlu
ZyBhIGNoYXJhY3RlciBwb3NpdGlvbiBzbyB3ZSBjYW4gd2FsayBvbmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBmNWQxZWVlNTg2YzcuLjc4ZDEwOGM2
ZGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAt
NDQsNyArNDQsOSBAQAogI2luY2x1ZGUgIlBvc2l0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlJh
bmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVyQm94
TW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiUmVuZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNs
dWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC01OCw2ICs2MCwxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKKy8v
IFRoZSBhbm9ueW1vdXMgdGV4dCByZW5kZXJlciBpbnNpZGUgOjpmaXJzdC1sZXR0ZXIgaGFzIG5v
IERPTSBub2RlLgorc3RhdGljIFJlbmRlclRleHRGcmFnbWVudCogcmVtYWluaW5nVGV4dEZyYWdt
ZW50Rm9yRmlyc3RMZXR0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAgICBp
ZiAocmVuZGVyZXIubm9kZSgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGlmIChhdXRvKiBw
YXJlbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyLnBh
cmVudCgpKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+Zmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0
KCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogVmlzaWJsZVBvc2l0aW9uOjpWaXNpYmxlUG9zaXRp
b24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSkKICAgICA6IG1f
ZGVlcFBvc2l0aW9uIHsgY2Fub25pY2FsUG9zaXRpb24ocG9zaXRpb24pIH0KIHsKQEAgLTE0MCw3
ICsxNTIsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0
Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGlmICgocmVuZGVyZXItPmlzQmxvY2tMZXZl
bFJlcGxhY2VkT3JBdG9taWNJbmxpbmUoKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQg
PT0gYm94LT5yaWdodG1vc3RDYXJldE9mZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBi
b3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENh
bmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSht
X2RlZXBQb3NpdGlvbik7CiAKLSAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSkgewor
ICAgICAgICAgICAgaWYgKCFyZW5kZXJlci0+bm9kZSgpICYmICFyZW1haW5pbmdUZXh0RnJhZ21l
bnRGb3JGaXJzdExldHRlcigqcmVuZGVyZXIpKSB7CiAgICAgICAgICAgICAgICAgYm94LnRyYXZl
cnNlTGluZUxlZnR3YXJkT25MaW5lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFib3gpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OkxUUiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikg
OiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CkBAIC0xODIs
OCArMTk0LDggQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBw
cmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c0JveCkgewog
ICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxTdGFydCA9IHByaW1hcnlEaXJlY3Rpb24g
PT0gVGV4dERpcmVjdGlvbjo6TFRSCi0gICAgICAgICAgICAgICAgICAgICAgICA/IElubGluZUl0
ZXJhdG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJv
eCgpLCBvcmRlckNhY2hlKQotICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmxpbmVJdGVyYXRv
cjo6bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJveCgpLCBv
cmRlckNhY2hlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZp
cnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJ
bkxvZ2ljYWxPcmRlcihib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChsb2dpY2FsU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9
IGxvZ2ljYWxTdGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+
cmVuZGVyZXIoKTsKQEAgLTI1Myw3ICsyNjUsOSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246
OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgcCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24o
cHJvdGVjdChyZW5kZXJlci0+bm9kZSgpKS5nZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgYXV0byog
cmVtYWluaW5nRnJhZ21lbnQgPSByZW1haW5pbmdUZXh0RnJhZ21lbnRGb3JGaXJzdExldHRlcigq
cmVuZGVyZXIpOworICAgICAgICBhdXRvKiBub2RlID0gcmVtYWluaW5nRnJhZ21lbnQgPyByZW1h
aW5pbmdGcmFnbWVudC0+dGV4dE5vZGUoKSA6IHJlbmRlcmVyLT5ub2RlKCk7CisgICAgICAgIHAg
PSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHByb3RlY3Qobm9kZSkuZ2V0KCksIGZpcnN0
TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKnJlbmRlcmVyLCBvZmZzZXQpKTsKIAogICAgICAgICBp
ZiAoKHAuaXNDYW5kaWRhdGUoKSAmJiBwLmRvd25zdHJlYW0oKSAhPSBkb3duc3RyZWFtU3RhcnQp
IHx8IHAuYXRTdGFydE9mVHJlZSgpIHx8IHAuYXRFbmRPZlRyZWUoKSkKICAgICAgICAgICAgIHJl
dHVybiBwOwpAQCAtMzA1LDcgKzMxOSw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmln
aHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGlmICgocmVu
ZGVyZXItPmlzQmxvY2tMZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUoKSB8fCByZW5kZXJlci0+
aXNCUigpKSAmJiBvZmZzZXQgPT0gYm94LT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbmV4dFZpc3Vh
bGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKIAotICAgICAgICAgICAgaWYgKCFyZW5k
ZXJlci0+bm9kZSgpKSB7CisgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkgJiYgIXJl
bWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCpyZW5kZXJlcikpIHsKICAgICAgICAg
ICAgICAgICBib3gudHJhdmVyc2VMaW5lUmlnaHR3YXJkT25MaW5lKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFib3gpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9u
ID09IFRleHREaXJlY3Rpb246OkxUUiA/IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKSA6IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQ
b3NpdGlvbik7CkBAIC00MjIsNyArNDM2LDkgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpy
aWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAotICAgICAgICBwID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihw
cm90ZWN0KHJlbmRlcmVyLT5ub2RlKCkpLmdldCgpLCBvZmZzZXQpOworICAgICAgICBhdXRvKiBy
ZW1haW5pbmdGcmFnbWVudCA9IHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCpy
ZW5kZXJlcik7CisgICAgICAgIGF1dG8qIG5vZGUgPSByZW1haW5pbmdGcmFnbWVudCA/IHJlbWFp
bmluZ0ZyYWdtZW50LT50ZXh0Tm9kZSgpIDogcmVuZGVyZXItPm5vZGUoKTsKKyAgICAgICAgcCA9
IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChub2RlKS5nZXQoKSwgZmlyc3RM
ZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgqcmVuZGVyZXIsIG9mZnNldCkpOwogCiAgICAgICAgIGlm
ICgocC5pc0NhbmRpZGF0ZSgpICYmIHAuZG93bnN0cmVhbSgpICE9IGRvd25zdHJlYW1TdGFydCkg
fHwgcC5hdFN0YXJ0T2ZUcmVlKCkgfHwgcC5hdEVuZE9mVHJlZSgpKQogICAgICAgICAgICAgcmV0
dXJuIHA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMmQ0MjI3
YWEwZjkxLi4xNzFhOTQ5MDc0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkJvdW5kYXJ5UG9pbnRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVk
ZSAiRWRpdGluZ0lubGluZXMuaCIKICNpbmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEVsZW1lbnQuaCIKQEAgLTg1NSw3ICs4NTYsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0
aW9uIGVuZFBvc2l0aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIExpbmVFbmRw
b2ludAogICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gZW5kVGV4dEJveC5zdGFydCgpOwogICAgICAg
ICBpZiAoIWVuZFRleHRCb3guaXNMaW5lQnJlYWsoKSkKICAgICAgICAgICAgIGVuZE9mZnNldCAr
PSBlbmRUZXh0Qm94Lmxlbmd0aCgpOwotICAgICAgICBwb3MgPSBQb3NpdGlvbihlbmRUZXh0Tm9k
ZS5yZWxlYXNlTm9uTnVsbCgpLCBlbmRPZmZzZXQpOworICAgICAgICBwb3MgPSBQb3NpdGlvbihl
bmRUZXh0Tm9kZS5yZWxlYXNlTm9uTnVsbCgpLCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0
KGVuZFRleHRCb3gucmVuZGVyZXIoKSwgZW5kT2Zmc2V0KSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IHBvcyA9IHBvc2l0aW9uQWZ0ZXJOb2RlKCplbmROb2RlKTsKIApAQCAtMTIzMyw3ICsxMjM0LDcg
QEAgUmVmUHRyPE5vZGU+IGZpbmRFbmRPZlBhcmFncmFwaChOb2RlKiBzdGFydE5vZGUsIE5vZGUq
IGhpZ2hlc3RSb290LCBOb2RlKiBzdGF5SW4KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBub2RlID0gbjsKLSAgICAgICAgICAgIG9mZnNldCA9IHItPmNhcmV0
TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICBvZmZzZXQgPSBjYXJldE1heE9mZnNldCgqbik7CiAg
ICAgICAgICAgICBuID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbiwgc3RheUluc2lkZUJsb2NrKTsK
ICAgICAgICAgfSBlbHNlIGlmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQoKm4pIHx8IGlzUmVuZGVy
ZWRUYWJsZShuLmdldCgpKSkgewogICAgICAgICAgICAgbm9kZSA9IG47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDM1MDg0MWQwZDFhZS4uZjgyMTQ1NWYx
ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNTAs
NiArNTAsNyBAQAogI2luY2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIk5vZGVJbmxpbmVzLmgiCisjaW5jbHVkZSAiRWRpdGluZy5oIgog
I2luY2x1ZGUgIk91dGxpbmVQYWludGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBzZXVkb0VsZW1lbnQuaCIKQEAgLTE5MTQsNyArMTkxNSw3IEBAIFBvc2l0aW9uV2l0aEFmZmlu
aXR5IFJlbmRlck9iamVjdDo6Y3JlYXRlUG9zaXRpb25XaXRoQWZmaW5pdHkoaW50IG9mZnNldCwg
QWZmaW5pCiAgICAgaWYgKFJlZlB0ciBub2RlID0gbm9uUHNldWRvTm9kZSgpKSB7CiAgICAgICAg
IGlmICghbm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpKSB7CiAgICAgICAgICAgICAvLyBJZiBpdCBj
YW4gYmUgZm91bmQsIHdlIHByZWZlciBhIHZpc3VhbGx5IGVxdWl2YWxlbnQgcG9zaXRpb24gdGhh
dCBpcyBlZGl0YWJsZS4gCi0gICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IG1ha2VEZXBy
ZWNhdGVkTGVnYWN5UG9zaXRpb24obm9kZS5nZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFBv
c2l0aW9uIHBvc2l0aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgp
LCBmaXJzdExldHRlckFkanVzdGVkRE9NT2Zmc2V0KCp0aGlzLCBvZmZzZXQpKTsKICAgICAgICAg
ICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHBvc2l0aW9uLmRvd25zdHJlYW0oQ2FuQ3Jvc3NFZGl0
aW5nQm91bmRhcnkpOwogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgp
LT5oYXNFZGl0YWJsZVN0eWxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uV2l0
aEFmZmluaXR5KGNhbmRpZGF0ZSwgYWZmaW5pdHkpOwpAQCAtMTkyMyw3ICsxOTI0LDcgQEAgUG9z
aXRpb25XaXRoQWZmaW5pdHkgUmVuZGVyT2JqZWN0OjpjcmVhdGVQb3NpdGlvbldpdGhBZmZpbml0
eShpbnQgb2Zmc2V0LCBBZmZpbmkKICAgICAgICAgICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRo
QWZmaW5pdHkoY2FuZGlkYXRlLCBhZmZpbml0eSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklY
TUU6IEVsaW1pbmF0ZSBsZWdhY3kgZWRpdGluZyBwb3NpdGlvbnMKLSAgICAgICAgcmV0dXJuIFBv
c2l0aW9uV2l0aEFmZmluaXR5KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24obm9kZS5nZXQo
KSwgb2Zmc2V0KSwgYWZmaW5pdHkpOworICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZmaW5p
dHkobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBmaXJzdExldHRlckFk
anVzdGVkRE9NT2Zmc2V0KCp0aGlzLCBvZmZzZXQpKSwgYWZmaW5pdHkpOwogICAgIH0KIAogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gY3Jvc3MgdGhlIGJvdW5kYXJ5IGJldHdlZW4gZWRpdGFibGUg
YW5kIG5vbi1lZGl0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dEZyYWdtZW50LmNwcAppbmRleCA2OTBkODEwNzFkYWMuLmVlNGRmZmY5ZTU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKQEAgLTY4LDcg
KzY4LDE0IEBAIFJlbmRlclRleHRGcmFnbWVudDo6flJlbmRlclRleHRGcmFnbWVudCgpCiAKIGJv
b2wgUmVuZGVyVGV4dEZyYWdtZW50OjpjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdAogewotICAg
IHJldHVybiB0ZXh0Tm9kZSgpICYmIHRleHROb2RlKCktPmhhc0VkaXRhYmxlU3R5bGUoKTsKKyAg
ICBpZiAoYXV0byogdGV4dE5vZGUgPSB0aGlzLT50ZXh0Tm9kZSgpKSB7CisgICAgICAgIC8vIFJl
bWFpbmluZyAodHJhaWxpbmcpIHRleHQgZnJhZ21lbnRzIHdpdGggZmlyc3QtbGV0dGVyIGFyZSBh
bHdheXMgc2VsZWN0YWJsZSwKKyAgICAgICAgLy8gbWF0Y2hpbmcgdGhlIGJhc2UgUmVuZGVyVGV4
dDo6Y2FuQmVTZWxlY3Rpb25MZWFmKCkgYmVoYXZpb3IuCisgICAgICAgIHJldHVybiBmaXJzdExl
dHRlcigpID8gdHJ1ZSA6IHRleHROb2RlLT5oYXNFZGl0YWJsZVN0eWxlKCk7CisgICAgfQorICAg
IC8vIEZpcnN0LWxldHRlciBpcyBhbHdheXMgc2VsZWN0YWJsZS4KKyAgICBhdXRvKiBhbm9ueW1v
dXNJbmxpbmVXcmFwcGVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlcklubGluZT4odGhpcy0+cGFy
ZW50KCkpOworICAgIHJldHVybiBhbm9ueW1vdXNJbmxpbmVXcmFwcGVyICYmIGFub255bW91c0lu
bGluZVdyYXBwZXItPmZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dCgpOwogfQogCiB2b2lkIFJlbmRl
clRleHRGcmFnbWVudDo6c2V0VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgbmV3VGV4dCwgYm9v
bCBmb3JjZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0
LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODQ3
MmY0MDNjODA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEzIEBACitUZXN0IHRoYXQgc2VsZWN0aW9uIGFjcm9zcyBtdWx0aXBsZSBlbGVtZW50
cyB3aXRoIDo6Zmlyc3QtbGV0dGVyIHdvcmtzIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVw
bGFjZSgvXG4vZywgJ3wnKSBpcyAiRmlyc3QgcGFyYWdyYXBofFNlY29uZCBwYXJhZ3JhcGgiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1xuL2csICd8Jykg
aXMgInN0IHBhcmFncmFwaHxTZWNvbmQiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpLnJlcGxhY2UoL1xuL2csICd8JykgaXMgIkZpcnN0IHBhcmFncmFwaHxTIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitGaXJzdCBwYXJhZ3Jh
cGgKK1NlY29uZCBwYXJhZ3JhcGgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVt
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kZmIzNDg4
ZDQ1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9m
aXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDQzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy5maXJzdC1sZXR0ZXIt
c3R5bGVkOjpmaXJzdC1sZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9InBhcmExIiBj
bGFzcz0iZmlyc3QtbGV0dGVyLXN0eWxlZCI+Rmlyc3QgcGFyYWdyYXBoPC9kaXY+CisgICAgPGRp
diBpZD0icGFyYTIiIGNsYXNzPSJmaXJzdC1sZXR0ZXItc3R5bGVkIj5TZWNvbmQgcGFyYWdyYXBo
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc2VsZWN0
aW9uIGFjcm9zcyBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIDo6Zmlyc3QtbGV0dGVyIHdvcmtzIGNv
cnJlY3RseS4iKTsKKworZnVuY3Rpb24gc2VsZWN0QWNyb3NzRWxlbWVudHMoc3RhcnROb2RlLCBz
dGFydE9mZnNldCwgZW5kTm9kZSwgZW5kT2Zmc2V0KSB7CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChzdGFydE5vZGUsIHN0YXJ0T2Zm
c2V0KTsKKyAgICByYW5nZS5zZXRFbmQoZW5kTm9kZSwgZW5kT2Zmc2V0KTsKKyAgICB2YXIgc2Vs
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKKyAg
ICBzZWwuYWRkUmFuZ2UocmFuZ2UpOworfQorCisvLyBUZXN0IDE6IFNlbGVjdCBhY3Jvc3MgdHdv
IGZpcnN0LWxldHRlciBwYXJhZ3JhcGhzCitzZWxlY3RBY3Jvc3NFbGVtZW50cyhwYXJhMS5maXJz
dENoaWxkLCAwLCBwYXJhMi5maXJzdENoaWxkLCBwYXJhMi5maXJzdENoaWxkLmxlbmd0aCk7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJl
cGxhY2UoL1xcbi9nLCAnfCcpIiwgIkZpcnN0IHBhcmFncmFwaHxTZWNvbmQgcGFyYWdyYXBoIik7
CisKKy8vIFRlc3QgMjogU2VsZWN0IGZyb20gbWlkZGxlIG9mIGZpcnN0IHRvIG1pZGRsZSBvZiBz
ZWNvbmQKK3NlbGVjdEFjcm9zc0VsZW1lbnRzKHBhcmExLmZpcnN0Q2hpbGQsIDMsIHBhcmEyLmZp
cnN0Q2hpbGQsIDYpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywgJ3wnKSIsICJzdCBwYXJhZ3JhcGh8U2Vjb25k
Iik7CisKKy8vIFRlc3QgMzogU2VsZWN0IGZyb20gZmlyc3QtbGV0dGVyIG9mIGZpcnN0IHRvIGZp
cnN0LWxldHRlciBvZiBzZWNvbmQKK3NlbGVjdEFjcm9zc0VsZW1lbnRzKHBhcmExLmZpcnN0Q2hp
bGQsIDAsIHBhcmEyLmZpcnN0Q2hpbGQsIDEpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywgJ3wnKSIsICJGaXJz
dCBwYXJhZ3JhcGh8UyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1z
ZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYWQwOGQ5MzljN2IwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzMyBAQAorVGVzdCB0aGF0IHNlbGVjdGlvbiB3b3JrcyBjb3JyZWN0bHkgd2l0aCA6OmZpcnN0
LWxldHRlciBwc2V1ZG8tZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkhlbGxvIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiMTIiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJcIlF1b3RlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAiQSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIk5lc3RlZCIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCku
cmVwbGFjZSgvXG4vZywgJ3wnKSBpcyAiRmlyc3R8U2Vjb25kIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiRWRpdGFibGUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICIxIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAiMiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkhl
bCIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIlwiUSIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIGlzIHRydWUKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFuY2hvck9mZnNldCBpcyAxCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hbmNob3JP
ZmZzZXQgaXMgMAorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiQSIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVsbG8K
KzEyCisiUXVvdGUKK0EKK05lc3RlZAorRmlyc3QKK1NlY29uZAorRWRpdGFibGUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlv
bi1wYWludGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Zmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDAzOTA1MzhkMzdmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlv
bi1wYWludGluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK3NwYW4uZmly
c3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworICAgIGZvbnQtc2l6ZTogMmVtOworfQorPC9z
dHlsZT4KKzxkaXYgaWQ9InRhcmdldCI+PHNwYW4gY2xhc3M9ImZpcnN0LWxldHRlciI+SDwvc3Bh
bj5lbGxvIFdvcmxkPC9kaXY+Cis8c2NyaXB0Pgord2luZG93LnRlc3RSdW5uZXI/LndhaXRVbnRp
bERvbmUoKTsKK3dpbmRvdy50ZXN0UnVubmVyPy5kb250Rm9yY2VSZXBhaW50KCk7CisKK2FzeW5j
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRl
KCk7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJp
bmdVcGRhdGUoKTsKKyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB3
aW5kb3cudGVzdFJ1bm5lcj8ubm90aWZ5RG9uZSgpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcignbG9hZCcsIHJ1blRlc3QpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBh
aW50aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNmI4
YmRmNDZjYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLmh0bWwKQEAgLTAsMCArMSwyNSBAQAor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0
eWxlPgorZGl2OjpmaXJzdC1sZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7CisgICAgZm9udC1zaXpl
OiAyZW07Cit9Cis8L3N0eWxlPgorPGRpdiBpZD0idGFyZ2V0Ij5IZWxsbyBXb3JsZDwvZGl2Pgor
PHNjcmlwdD4KK3dpbmRvdy50ZXN0UnVubmVyPy53YWl0VW50aWxEb25lKCk7Cit3aW5kb3cudGVz
dFJ1bm5lcj8uZG9udEZvcmNlUmVwYWludCgpOworCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZShyYW5nZSk7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAgYXdh
aXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAgd2luZG93LnRlc3RSdW5uZXI/Lm5v
dGlmeURvbmUoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBydW5UZXN0
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Zmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZWVkYzcyYjNmYzViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAg
KzEsMTAxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2Rpdjo6
Zmlyc3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0idGVzdDEiPkhlbGxvPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0MiI+MTI8L2Rp
dj4KKzxkaXYgaWQ9InRlc3QzIj4iUXVvdGU8L2Rpdj4KKzxkaXYgaWQ9InRlc3Q0Ij5BPC9kaXY+
Cis8ZGl2IGlkPSJ0ZXN0NSI+PHNwYW4+TmVzdGVkPC9zcGFuPjwvZGl2PgorPGRpdiBpZD0idGVz
dDYiPkZpcnN0PGJyPlNlY29uZDwvZGl2PgorPGRpdiBpZD0idGVzdDciIGNvbnRlbnRlZGl0YWJs
ZT5FZGl0YWJsZTwvZGl2PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKworPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc2VsZWN0aW9uIHdvcmtzIGNvcnJlY3RseSB3aXRoIDo6
Zmlyc3QtbGV0dGVyIHBzZXVkby1lbGVtZW50LiIpOworCitmdW5jdGlvbiBzZWxlY3RBbGwoZWxl
bWVudCkgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCk7CisgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNlbC5hZGRSYW5n
ZShyYW5nZSk7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdFJhbmdlKG5vZGUsIHN0YXJ0LCBlbmQpIHsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0
YXJ0KG5vZGUsIHN0YXJ0KTsKKyAgICByYW5nZS5zZXRFbmQobm9kZSwgZW5kKTsKKyAgICB2YXIg
c2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsK
KyAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpOworfQorCisvLyBUZXN0IDE6IFNlbGVjdCBhbGwgdGV4
dCBpbiBlbGVtZW50IHdpdGggZmlyc3QtbGV0dGVyCitzZWxlY3RBbGwodGVzdDEpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJIZWxs
byIpOworCisvLyBUZXN0IDI6IFNob3J0IHRleHQgLSBzZWxlY3QgYWxsCitzZWxlY3RBbGwodGVz
dDIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICIxMiIpOworCisvLyBUZXN0IDM6IEZpcnN0LWxldHRlciB3aXRoIHB1bmN0dWF0aW9u
IChmaXJzdC1sZXR0ZXIgaW5jbHVkZXMgcXVvdGUgKyBsZXR0ZXIpCitzZWxlY3RBbGwodGVzdDMp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSIsICJcIlF1b3RlIik7CisKKy8vIFRlc3QgNDogU2luZ2xlIGNoYXJhY3RlciB0ZXh0IChlbnRp
cmUgdGV4dCBpcyBmaXJzdC1sZXR0ZXIpCitzZWxlY3RBbGwodGVzdDQpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJBIik7CisKKy8v
IFRlc3QgNTogRmlyc3QtbGV0dGVyIHdpdGggbmVzdGVkIGlubGluZQorc2VsZWN0QWxsKHRlc3Q1
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiTmVzdGVkIik7CisKKy8vIFRlc3QgNjogTXVsdGktbGluZSAtIHNlbGVjdCBhbGwgc2hv
dWxkIGdldCBib3RoIGxpbmVzCitzZWxlY3RBbGwodGVzdDYpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywgJ3wn
KSIsICJGaXJzdHxTZWNvbmQiKTsKKworLy8gVGVzdCA3OiBDb250ZW50ZWRpdGFibGUgd2l0aCBm
aXJzdC1sZXR0ZXIKK3NlbGVjdEFsbCh0ZXN0Nyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkVkaXRhYmxlIik7CisKKy8vIFRlc3Qg
ODogU2VsZWN0IG9ubHkgdGhlIGZpcnN0LWxldHRlciBwb3J0aW9uCitzZWxlY3RSYW5nZSh0ZXN0
Mi5maXJzdENoaWxkLCAwLCAxKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiMSIpOworCisvLyBUZXN0IDk6IFNlbGVjdCBvbmx5IHRo
ZSByZW1haW5pbmcgcG9ydGlvbiAoYWZ0ZXIgZmlyc3QtbGV0dGVyKQorc2VsZWN0UmFuZ2UodGVz
dDIuZmlyc3RDaGlsZCwgMSwgMik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIjIiKTsKKworLy8gVGVzdCAxMDogU2VsZWN0IHJhbmdl
IHNwYW5uaW5nIGZpcnN0LWxldHRlciBib3VuZGFyeQorc2VsZWN0UmFuZ2UodGVzdDEuZmlyc3RD
aGlsZCwgMCwgMyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIkhlbCIpOworCisvLyBUZXN0IDExOiBTZWxlY3QgZnJvbSBtaWRkbGUg
b2YgZmlyc3QtbGV0dGVyIHRleHQgdG8gZW5kCitzZWxlY3RSYW5nZSh0ZXN0My5maXJzdENoaWxk
LCAwLCAyKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAiXCJRIik7CisKKy8vIFRlc3QgMTI6IENhcmV0IGF0IGZpcnN0LWxldHRlciBi
b3VuZGFyeSAob2Zmc2V0ID0gZmlyc3QtbGV0dGVyIGxlbmd0aCkKK3NlbGVjdFJhbmdlKHRlc3Qx
LmZpcnN0Q2hpbGQsIDEsIDEpOworc2hvdWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5pc0Nv
bGxhcHNlZCIsICJ0cnVlIik7CitzaG91bGRCZSgid2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hv
ck9mZnNldCIsICIxIik7CisKKy8vIFRlc3QgMTM6IENhcmV0IGF0IHN0YXJ0IG9mIHRleHQgKG9m
ZnNldCAwLCBpbnNpZGUgZmlyc3QtbGV0dGVyKQorc2VsZWN0UmFuZ2UodGVzdDEuZmlyc3RDaGls
ZCwgMCwgMCk7CitzaG91bGRCZSgid2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIiwg
InRydWUiKTsKK3Nob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yT2Zmc2V0Iiwg
IjAiKTsKKworLy8gVGVzdCAxNDogU2VsZWN0IGFsbCBvbiBzaW5nbGUtY2hhcmFjdGVyIGZpcnN0
LWxldHRlciAoZW50aXJlIHRleHQgaXMgZmlyc3QtbGV0dGVyKQorc2VsZWN0UmFuZ2UodGVzdDQu
Zmlyc3RDaGlsZCwgMCwgMSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIiwgIkEiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2ZpcnN0LWxldHRl
ci13b3JkLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1p
dGVyYXRvci9maXJzdC1sZXR0ZXItd29yZC1ib3VuZGFyeS1leHBlY3RlZC50eHQKaW5kZXggYzUy
ZjJhZDU2MTJkLi5kYzk5ZmNjOGMxYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcv
dGV4dC1pdGVyYXRvci9maXJzdC1sZXR0ZXItd29yZC1ib3VuZGFyeS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2ZpcnN0LWxldHRlci13b3JkLWJv
dW5kYXJ5LWV4cGVjdGVkLnR4dApAQCAtMiw5ICsyLDkgQEAgVGhpcyB0ZXN0cyBtb3ZpbmcgY2Fy
ZXQgYXJvdW5kIGEgd29yZCB3aXRoIGEgZmlyc3QtbGV0dGVyIHJ1bGUuIFdlYktpdCBzaG91bGQg
bm8KIAogIGhlbGxvIHdvcmxkJwogd2hpdGUtc3BhY2U6IG5vcm1hbDsKLUZBSUw6IG1vdmluZyBm
b3J3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2FyZXQgYXQgb2Zmc2V0IDEwIGJ1dCBl
eHBlY3RlZCA2CitQQVNTOiBtb3ZpbmcgZm9yd2FyZCBieSB3b3JkIGZyb20gb2Zmc2V0IDQgcHV0
IGNhcmV0IGF0IG9mZnNldCA2CiBQQVNTOiBtb3ZpbmcgYmFja3dhcmQgYnkgd29yZCBmcm9tIG9m
ZnNldCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgMQogd2hpdGUtc3BhY2U6IHByZTsKLUZBSUw6IG1v
dmluZyBmb3J3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2FyZXQgYXQgb2Zmc2V0IDEw
IGJ1dCBleHBlY3RlZCA2Ci1QQVNTOiBtb3ZpbmcgYmFja3dhcmQgYnkgd29yZCBmcm9tIG9mZnNl
dCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgMQorUEFTUzogbW92aW5nIGZvcndhcmQgYnkgd29yZCBm
cm9tIG9mZnNldCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgNgorRkFJTDogbW92aW5nIGJhY2t3YXJk
IGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2FyZXQgYXQgb2Zmc2V0IDAgYnV0IGV4cGVjdGVk
IDEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZpcnN0LWxldHRlci1wYXJ0
aWFsLWludmFsaWRhdGlvbi1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dApp
bmRleCAxNjBiMGQzYjBhMDQuLjJiMTc4MGFiMzVhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ZpcnN0LWxldHRlci1wYXJ0aWFsLWludmFsaWRhdGlvbi1jcmFzaC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZpcnN0LWxldHRlci1wYXJ0aWFsLWlu
dmFsaWRhdGlvbi1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEgKzEgQEAKLVBBU1MgaWYgbm8gY3Jh
c2ggb3IgYXNBQUFBcnQKK1BBU1MgaWYgbm8gY3Jhc2ggb3IgYXNzZUFBQUEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdv
cmQtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvZWRpdGluZy9z
ZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dAppbmRleCBiOWNhOWEwZGJk
NWYuLmM5MjQ0NzBhM2Y1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9l
ZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQt
MDAyLWV4cGVjdGVkLnR4dApAQCAtNjksNSArNjksNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKICAgICAgICAgICAgIFJlbmRlcklubGluZSB7QX0gYXQgKDE4LDYpIHNpemUgMzh4MTEg
W2NvbG9yPSMwMDAwRUVdCiAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTgs
Nikgc2l6ZSAzOHgxMQogICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxOCw2KSB3aWR0aCAz
ODogIkNvbWJvcyIKLXNlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4
dH0gb2YgY2hpbGQgMSB7QX0gb2YgY2hpbGQgMSB7TEl9IG9mIGNoaWxkIDEge1VMfSBvZiBjaGls
ZCAxIHtESVZ9IG9mIGJvZHkKK3NlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMSBvZiBjaGlsZCAw
IHsjdGV4dH0gb2YgY2hpbGQgMSB7TEl9IG9mIGNoaWxkIDEge1VMfSBvZiBjaGlsZCAxIHtESVZ9
IG9mIGJvZHkKIHNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNSBvZiBjaGlsZCAwIHsjdGV4dH0g
b2YgY2hpbGQgMSB7QX0gb2YgY2hpbGQgNyB7TEl9IG9mIGNoaWxkIDEge1VMfSBvZiBjaGlsZCAx
IHtESVZ9IG9mIGJvZHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0
aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBl
Y3RlZC50eHQKaW5kZXggMmI2NmU0YWI1MGRlLi42NjlhNGViODdkN2QgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0w
MDItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0aW5nL3Nl
bGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0CkBAIC02OSw1ICs2OSw1IEBA
IGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgICAgUmVuZGVySW5saW5lIHtB
fSBhdCAoMTksNSkgc2l6ZSA0MXgxNCBbY29sb3I9IzAwMDBFRV0KICAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxOSw1KSBzaXplIDQxeDE0CiAgICAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDE5LDUpIHdpZHRoIDQxOiAiQ29tYm9zIgotc2VsZWN0aW9uIHN0YXJ0OiBwb3Np
dGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtBfSBvZiBjaGlsZCAxIHtMSX0g
b2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQorc2VsZWN0aW9uIHN0YXJ0
OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtMSX0gb2YgY2hpbGQg
MSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQogc2VsZWN0aW9uIGVuZDogICBwb3NpdGlv
biA1IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtBfSBvZiBjaGlsZCA3IHtMSX0gb2Yg
Y2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24v
ZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dAppbmRleCAwNzg1YzZkOTdiN2YuLjI0Nzg3
MTdhMjZmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2Vs
ZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3Rl
ZC50eHQKQEAgLTY5LDUgKzY5LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAg
ICAgICAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgxOSw1KSBzaXplIDQxeDE0IFtjb2xvcj0jMDAw
MEVFXQogICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE5LDUpIHNpemUgNDF4
MTQKICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTksNSkgd2lkdGggNDE6ICJDb21ib3Mi
Ci1zZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxk
IDEge0F9IG9mIGNoaWxkIDEge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7RElWfSBv
ZiBib2R5CitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3RleHR9IG9m
IGNoaWxkIDEge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7RElWfSBvZiBib2R5CiBz
ZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDUgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEg
e0F9IG9mIGNoaWxkIDcge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7RElWfSBvZiBi
b2R5Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>