<?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>231314</bug_id>
          
          <creation_ts>2021-10-06 11:15:26 -0700</creation_ts>
          <short_desc>Cache PannerNode&apos;s azimuth, elevation and coneGain</short_desc>
          <delta_ts>2021-10-07 13:39:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230950</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1801205</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-06 11:15:26 -0700</bug_when>
    <thetext>Cache PannerNode&apos;s azimuth, elevation and coneGain for better performance. I have noticed while profiling https://downloads.scirra.com/labs/bugs/safaripannerquality/ that PannerNode::process() spends most of its CPU time under PannerNode::calculateAzimuthElevation(). We shouldn&apos;t have to re-calculate those properties for every rendering quantum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801210</commentid>
    <comment_count>1</comment_count>
      <attachid>440393</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-06 11:21:55 -0700</bug_when>
    <thetext>Created attachment 440393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801412</commentid>
    <comment_count>2</comment_count>
      <attachid>440393</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-10-06 16:31:37 -0700</bug_when>
    <thetext>Comment on attachment 440393
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioListener.cpp:126
&gt; +void AudioListener::updateDirtyState()

I must be missing something, but it seems like this function says &quot;if nothing has changed, then we are dirty&quot;, which is opposite how I usually understand the phrase &quot;dirty&quot; in rendering. What am I missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801414</commentid>
    <comment_count>3</comment_count>
      <attachid>440393</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-06 16:33:17 -0700</bug_when>
    <thetext>Comment on attachment 440393
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/AudioListener.cpp:126
&gt;&gt; +void AudioListener::updateDirtyState()
&gt; 
&gt; I must be missing something, but it seems like this function says &quot;if nothing has changed, then we are dirty&quot;, which is opposite how I usually understand the phrase &quot;dirty&quot; in rendering. What am I missing?

Uh? I think I messed things up with a last minute patch clean up before uploading. I agree this looks backwards now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801461</commentid>
    <comment_count>4</comment_count>
      <attachid>440461</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-06 17:53:14 -0700</bug_when>
    <thetext>Created attachment 440461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801464</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-06 18:17:42 -0700</bug_when>
    <thetext>The cache is being leveraged by imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-rolloff-clamping.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801758</commentid>
    <comment_count>6</comment_count>
      <attachid>440461</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-07 13:30:50 -0700</bug_when>
    <thetext>Comment on attachment 440461
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801759</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-07 13:36:39 -0700</bug_when>
    <thetext>Committed r283740 (242662@main): &lt;https://commits.webkit.org/242662@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440461.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801762</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-07 13:39:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/83996910&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440393</attachid>
            <date>2021-10-06 11:21:55 -0700</date>
            <delta_ts>2021-10-06 17:53:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231314-20211006112155.patch</filename>
            <type>text/plain</type>
            <size>21188</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZmZWY2YTk5ZjZhYzJh
ODk1N2IwNDEzMzI1NTg5OTM0YTZjNTY4NC4uZjE3ZTVjYmVlMDJjZmQ4MDgyMTNlNTY4NjA1NzA1
MzkzMjU5Y2UzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTEwLTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgUGFubmVyTm9kZSdz
IGF6aW11dGgsIGVsZXZhdGlvbiBhbmQgY29uZUdhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTMxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENhY2hlIFBhbm5lck5vZGUncyBhemltdXRoLCBlbGV2
YXRpb24gYW5kIGNvbmVHYWluIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuIEkgaGF2ZSBub3RpY2Vk
IHdoaWxlIHByb2ZpbGluZworICAgICAgICBodHRwczovL2Rvd25sb2Fkcy5zY2lycmEuY29tL2xh
YnMvYnVncy9zYWZhcmlwYW5uZXJxdWFsaXR5LyB0aGF0IFBhbm5lck5vZGU6OnByb2Nlc3MoKSBz
cGVuZHMgbW9zdCBvZiBpdHMKKyAgICAgICAgQ1BVIHRpbWUgdW5kZXIgUGFubmVyTm9kZTo6Y2Fs
Y3VsYXRlQXppbXV0aEVsZXZhdGlvbigpLiBXZSBzaG91bGRuJ3QgaGF2ZSB0byByZS1jYWxjdWxh
dGUgdGhvc2UgcHJvcGVydGllcworICAgICAgICBmb3IgZXZlcnkgcmVuZGVyaW5nIHF1YW50dW0u
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9MaXN0ZW5lcjo6dXBkYXRlRGlydHlTdGF0ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0xpc3RlbmVyOjppc1Bvc2l0aW9uRGlydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9MaXN0ZW5lcjo6aXNPcmllbnRhdGlvbkRpcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvTGlzdGVuZXI6OmlzVXBWZWN0b3JEaXJ0eSBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VB
dWRpb0NvbnRleHQ6OmhhbmRsZVByZVJlbmRlclRhc2tzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6cHJv
Y2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpwcm9jZXNzU2FtcGxlQWNjdXJh
dGVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2Rl
bEZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFJlZkRpc3Rh
bmNlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0TWF4RGlz
dGFuY2VGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpzZXRSb2xs
b2ZmRmFjdG9yRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0
Q29uZU91dGVyR2FpbkZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnNldENvbmVPdXRlckFuZ2xlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVy
Tm9kZTo6c2V0Q29uZUlubmVyQW5nbGVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpQ
YW5uZXJOb2RlOjpjYWxjdWxhdGVBemltdXRoRWxldmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhbm5lck5vZGU6OmF6aW11dGhFbGV2YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGFubmVyTm9kZTo6Y2FsY3VsYXRlRGlzdGFuY2VDb25lR2Fpbik6CisgICAgICAgIChXZWJDb3Jl
OjpQYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5l
ck5vZGU6OmludmFsaWRhdGVDYWNoZWRQcm9wZXJ0aWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAo
V2ViQ29yZTo6UGFubmVyTm9kZTo6YXppbXV0aEVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQ29uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpnYWluIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmdhaW4pOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EaXN0YW5j
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6Z2FpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bGluZWFyR2FpbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6aW52ZXJzZUdhaW4gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OmV4cG9uZW50aWFsR2FpbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6Z2Fpbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bGluZWFyR2Fpbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6aW52ZXJzZUdhaW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OmV4cG9uZW50aWFsR2Fpbik6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKwogMjAyMS0xMC0wNiAgQWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBjb250YWluZXJGb3JFbGVtZW50
IGxvZ2ljIG1vcmUgZXhwbGljaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwCmluZGV4IDMxZjg0OGI2OWNmYTA1YWY3MjJlN2I1MjE5NjEz
YTE2NTUxOTk3ZTUuLjI3ZjhjN2I5MGZiZTllY2ZiOGRjOTkzMmRlMGJhOWIzNjA2OWNiM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmNw
cApAQCAtMTIzLDYgKzEyMywyMCBAQCB2b2lkIEF1ZGlvTGlzdGVuZXI6OnVwZGF0ZVZhbHVlc0lm
TmVlZGVkKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgfQogfQogCit2b2lkIEF1ZGlvTGlz
dGVuZXI6OnVwZGF0ZURpcnR5U3RhdGUoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OworCisgICAgYXV0byBsYXN0UG9zaXRpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fbGFzdFBvc2l0aW9u
LCBwb3NpdGlvbigpKTsKKyAgICBtX2lzUG9zaXRpb25EaXJ0eSA9IGxhc3RQb3NpdGlvbiA9PSBt
X2xhc3RQb3NpdGlvbjsKKworICAgIGF1dG8gbGFzdE9yaWVudGF0aW9uID0gc3RkOjpleGNoYW5n
ZShtX2xhc3RPcmllbnRhdGlvbiwgb3JpZW50YXRpb24oKSk7CisgICAgbV9pc09yaWVudGF0aW9u
RGlydHkgPSBsYXN0T3JpZW50YXRpb24gPT0gbV9sYXN0T3JpZW50YXRpb247CisKKyAgICBhdXRv
IGxhc3RVcFZlY3RvciA9IHN0ZDo6ZXhjaGFuZ2UobV9sYXN0VXBWZWN0b3IsIHVwVmVjdG9yKCkp
OworICAgIG1faXNVcFZlY3RvckRpcnR5ID0gbGFzdFVwVmVjdG9yID09IG1fbGFzdFVwVmVjdG9y
OworfQorCiBjb25zdCBmbG9hdCogQXVkaW9MaXN0ZW5lcjo6cG9zaXRpb25YVmFsdWVzKHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgdXBkYXRlVmFsdWVzSWZOZWVkZWQoZnJhbWVzVG9Q
cm9jZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmgKaW5kZXggZjA1MWFjYjE4Y2U2OTNmZGJhZWYyNDg4NjNlNzI0MThiMmU4MWZhZC4uOGE5
NjI1ZWFmM2MzOGU5MThlYjIwODBiZDFkNTk2NzMyYzFiYTgyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKQEAgLTg3LDYgKzg3LDExIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlVmFsdWVzSWZOZWVkZWQoc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcyk7CiAKKyAgICB2b2lkIHVwZGF0ZURpcnR5U3RhdGUoKTsKKyAgICBib29sIGlzUG9z
aXRpb25EaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQb3NpdGlvbkRpcnR5OyB9CisgICAgYm9v
bCBpc09yaWVudGF0aW9uRGlydHkoKSBjb25zdCB7IHJldHVybiBtX2lzT3JpZW50YXRpb25EaXJ0
eTsgfQorICAgIGJvb2wgaXNVcFZlY3RvckRpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9pc1VwVmVj
dG9yRGlydHk7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEF1ZGlvTGlzdGVuZXIoQmFz
ZUF1ZGlvQ29udGV4dCYpOwogCkBAIC0xMTYsNiArMTIxLDEzIEBAIHByaXZhdGU6CiAgICAgQXVk
aW9GbG9hdEFycmF5IG1fdXBYVmFsdWVzOwogICAgIEF1ZGlvRmxvYXRBcnJheSBtX3VwWVZhbHVl
czsKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV91cFpWYWx1ZXM7CisKKyAgICBGbG9hdFBvaW50M0Qg
bV9sYXN0UG9zaXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fbGFzdE9yaWVudGF0aW9uOworICAg
IEZsb2F0UG9pbnQzRCBtX2xhc3RVcFZlY3RvcjsKKyAgICBib29sIG1faXNQb3NpdGlvbkRpcnR5
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNPcmllbnRhdGlvbkRpcnR5IHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNVcFZlY3RvckRpcnR5IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFz
ZUF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VB
dWRpb0NvbnRleHQuY3BwCmluZGV4IGNjZTE0M2JiZGE3OTUyZTk1OTJjNTE3NTI2ZDFkMzE1MzUx
ZWRkMjEuLjY0ZTNkMTY2ODBhM2UxMjhkMGZiMTMzNDFjMGFlMmU1NTdkYmJhYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNw
cApAQCAtNTQ5LDYgKzU0OSw4IEBAIHZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVu
ZGVyVGFza3MoY29uc3QgQXVkaW9JT1Bvc2l0aW9uJiBvdXRwdXRQb3NpdGlvCiAKICAgICAgICAg
dXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CiAgICAgICAgIG1fb3V0cHV0UG9zaXRpb24gPSBv
dXRwdXRQb3NpdGlvbjsKKworICAgICAgICBtX2xpc3RlbmVyLT51cGRhdGVEaXJ0eVN0YXRlKCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcAppbmRleCAwNGEyOGI5YzdjYjE1MzA0ODE2M2FiOTU4ZDMwYTc3NGZhNTY5ZjJmLi4x
YWRhODE0MzE5ZGQ0ZDE5YjcyOGM1MTFjYzg1MmRhNGVhNmZiZGM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTE0OCwxMCArMTQ4LDEw
IEBAIHZvaWQgUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisgICAgaW52YWxpZGF0ZUNhY2hlZFByb3BlcnRpZXNJZk5l
Y2Vzc2FyeSgpOworCiAgICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0LgotICAgIGRvdWJs
ZSBhemltdXRoOwotICAgIGRvdWJsZSBlbGV2YXRpb247Ci0gICAgYXppbXV0aEVsZXZhdGlvbigm
YXppbXV0aCwgJmVsZXZhdGlvbik7CisgICAgYXV0byBbYXppbXV0aCwgZWxldmF0aW9uXSA9IGF6
aW11dGhFbGV2YXRpb24oKTsKICAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwg
c291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgIC8vIEdldCB0aGUg
ZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KQEAgLTIyNiwxMCArMjI2LDEyIEBAIHZvaWQgUGFubmVy
Tm9kZTo6cHJvY2Vzc1NhbXBsZUFjY3VyYXRlVmFsdWVzKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwg
Y29uc3QgQXVkaW9CCiAgICAgICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250KGZvcndhcmRY
W2tdLCBmb3J3YXJkWVtrXSwgZm9yd2FyZFpba10pOwogICAgICAgICBGbG9hdFBvaW50M0QgbGlz
dGVuZXJVcCh1cFhba10sIHVwWVtrXSwgdXBaW2tdKTsKIAotICAgICAgICBjYWxjdWxhdGVBemlt
dXRoRWxldmF0aW9uKCZhemltdXRoW2tdLCAmZWxldmF0aW9uW2tdLCBwYW5uZXJQb3NpdGlvbiwg
bGlzdGVuZXJQb3NpdGlvbiwgbGlzdGVuZXJGcm9udCwgbGlzdGVuZXJVcCk7CisgICAgICAgIGF1
dG8gW2NhbGN1bGF0ZWRBemltdXRoLCBjYWxjdWxhdGVkRWxldmF0aW9uXSA9IGNhbGN1bGF0ZUF6
aW11dGhFbGV2YXRpb24ocGFubmVyUG9zaXRpb24sIGxpc3RlbmVyUG9zaXRpb24sIGxpc3RlbmVy
RnJvbnQsIGxpc3RlbmVyVXApOworICAgICAgICBhemltdXRoW2tdID0gY2FsY3VsYXRlZEF6aW11
dGg7CisgICAgICAgIGVsZXZhdGlvbltrXSA9IGNhbGN1bGF0ZWRFbGV2YXRpb247CiAKICAgICAg
ICAgLy8gR2V0IGRpc3RhbmNlIGFuZCBjb25lIGdhaW4KLSAgICAgICAgdG90YWxHYWluW2tdID0g
Y2FsY3VsYXRlRGlzdGFuY2VDb25lR2FpbihwYW5uZXJQb3NpdGlvbiwgb3JpZW50YXRpb24sIGxp
c3RlbmVyUG9zaXRpb24pOworICAgICAgICB0b3RhbEdhaW5ba10gPSBjYWxjdWxhdGVEaXN0YW5j
ZUNvbmVHYWluKHBhbm5lclBvc2l0aW9uLCBvcmllbnRhdGlvbiwgbGlzdGVuZXJQb3NpdGlvbiwg
bV9kaXN0YW5jZUVmZmVjdCwgbV9jb25lRWZmZWN0KTsKICAgICB9CiAKICAgICBtX3Bhbm5lci0+
cGFuV2l0aFNhbXBsZUFjY3VyYXRlVmFsdWVzKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNlLCBk
ZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKQEAgLTM0MCw3ICszNDIsMTEgQEAgdm9pZCBQ
YW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsRm9yQmluZGluZ3MoRGlzdGFuY2VNb2RlbFR5cGUg
bW9kZWwpCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAorICAgIGlmIChtX2Rpc3RhbmNlRWZmZWN0
Lm1vZGVsKCkgPT0gbW9kZWwpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fZGlzdGFuY2VFZmZl
Y3Quc2V0TW9kZWwobW9kZWwsIHRydWUpOworICAgIG1fY2FjaGVkQ29uZUdhaW4gPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhbm5lck5vZGU6OnNldFJlZkRpc3RhbmNl
Rm9yQmluZGluZ3MoZG91YmxlIHJlZkRpc3RhbmNlKQpAQCAtMzUzLDcgKzM1OSwxMSBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRSZWZEaXN0YW5jZUZvckJpbmRpbmdzKGRvdWJs
ZSByZWZEaXN0YW5jZSkKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4K
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCisgICAgaWYgKG1fZGlzdGFu
Y2VFZmZlY3QucmVmRGlzdGFuY2UoKSA9PSByZWZEaXN0YW5jZSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKwogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVmRGlzdGFuY2UocmVmRGlzdGFuY2UpOwor
ICAgIG1fY2FjaGVkQ29uZUdhaW4gPSBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApAQCAtMzY3LDcgKzM3NywxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRN
YXhEaXN0YW5jZUZvckJpbmRpbmdzKGRvdWJsZSBtYXhEaXN0YW5jZSkKICAgICAvLyBUaGlzIHN5
bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNz
TG9jayB9OwogCisgICAgaWYgKG1fZGlzdGFuY2VFZmZlY3QubWF4RGlzdGFuY2UoKSA9PSBtYXhE
aXN0YW5jZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0
TWF4RGlzdGFuY2UobWF4RGlzdGFuY2UpOworICAgIG1fY2FjaGVkQ29uZUdhaW4gPSBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMzgxLDcgKzM5NSwxMSBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRSb2xsb2ZmRmFjdG9yRm9yQmluZGluZ3MoZG91Ymxl
IHJvbGxvZmZGYWN0b3IpCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCku
CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAorICAgIGlmIChtX2Rpc3Rh
bmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKSA9PSByb2xsb2ZmRmFjdG9yKQorICAgICAgICByZXR1
cm4geyB9OworCiAgICAgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZG
YWN0b3IpOworICAgIG1fY2FjaGVkQ29uZUdhaW4gPSBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHsgfTsKIH0KIApAQCAtMzk1LDcgKzQxMywxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJO
b2RlOjpzZXRDb25lT3V0ZXJHYWluRm9yQmluZGluZ3MoZG91YmxlIGdhaW4pCiAgICAgLy8gVGhp
cyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJv
Y2Vzc0xvY2sgfTsKIAorICAgIGlmIChtX2NvbmVFZmZlY3Qub3V0ZXJHYWluKCkgPT0gZ2FpbikK
KyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oZ2Fp
bik7CisgICAgbV9jYWNoZWRDb25lR2FpbiA9IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB9
OwogfQogCkBAIC00MDYsNyArNDI4LDExIEBAIHZvaWQgUGFubmVyTm9kZTo6c2V0Q29uZU91dGVy
QW5nbGVGb3JCaW5kaW5ncyhkb3VibGUgYW5nbGUpCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMg
d2l0aCBwcm9jZXNzKCkuCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAor
ICAgIGlmIChtX2NvbmVFZmZlY3Qub3V0ZXJBbmdsZSgpID09IGFuZ2xlKQorICAgICAgICByZXR1
cm47CisKICAgICBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJBbmdsZShhbmdsZSk7CisgICAgbV9jYWNo
ZWRDb25lR2FpbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBQYW5uZXJOb2RlOjpzZXRDb25l
SW5uZXJBbmdsZUZvckJpbmRpbmdzKGRvdWJsZSBhbmdsZSkKQEAgLTQxNiw3ICs0NDIsMTEgQEAg
dm9pZCBQYW5uZXJOb2RlOjpzZXRDb25lSW5uZXJBbmdsZUZvckJpbmRpbmdzKGRvdWJsZSBhbmds
ZSkKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCisgICAgaWYgKG1fY29uZUVmZmVjdC5pbm5lckFu
Z2xlKCkgPT0gYW5nbGUpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY29uZUVmZmVjdC5zZXRJ
bm5lckFuZ2xlKGFuZ2xlKTsKKyAgICBtX2NhY2hlZENvbmVHYWluID0gc3RkOjpudWxsb3B0Owog
fQogCiBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRDaGFubmVsQ291bnQodW5zaWdu
ZWQgY2hhbm5lbENvdW50KQpAQCAtNDM5LDE4ICs0NjksMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
UGFubmVyTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZShDaGFubmVsQ291bnRNb2RlIG1vZGUpCiAg
ICAgcmV0dXJuIEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZShtb2RlKTsKIH0KIAotdm9p
ZCBQYW5uZXJOb2RlOjpjYWxjdWxhdGVBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0
aCwgZG91YmxlKiBvdXRFbGV2YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQzRCYgbGlzdGVuZXJQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludDNEJiBs
aXN0ZW5lckZyb250LCBjb25zdCBGbG9hdFBvaW50M0QmIGxpc3RlbmVyVXApCithdXRvIFBhbm5l
ck5vZGU6OmNhbGN1bGF0ZUF6aW11dGhFbGV2YXRpb24oY29uc3QgRmxvYXRQb2ludDNEJiBwb3Np
dGlvbiwgY29uc3QgRmxvYXRQb2ludDNEJiBsaXN0ZW5lclBvc2l0aW9uLCBjb25zdCBGbG9hdFBv
aW50M0QmIGxpc3RlbmVyRnJvbnQsIGNvbnN0IEZsb2F0UG9pbnQzRCYgbGlzdGVuZXJVcCkgLT4g
QXppbXV0aEVsZXZhdGlvbgogewotICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0
aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJsZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlm
IGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCi0KICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZS1s
aXN0ZW5lciB2ZWN0b3IKICAgICBGbG9hdFBvaW50M0Qgc291cmNlTGlzdGVuZXIgPSBwb3NpdGlv
biAtIGxpc3RlbmVyUG9zaXRpb247CiAKICAgICBpZiAoc291cmNlTGlzdGVuZXIuaXNaZXJvKCkp
IHsKICAgICAgICAgLy8gZGVnZW5lcmF0ZSBjYXNlIGlmIHNvdXJjZSBhbmQgbGlzdGVuZXIgYXJl
IGF0IHRoZSBzYW1lIHBvaW50Ci0gICAgICAgICpvdXRBemltdXRoID0gMC4wOwotICAgICAgICAq
b3V0RWxldmF0aW9uID0gMC4wOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCiAgICAgc291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7CkBAIC00OTIsMTcgKzUx
OCwxNiBAQCB2b2lkIFBhbm5lck5vZGU6OmNhbGN1bGF0ZUF6aW11dGhFbGV2YXRpb24oZG91Ymxl
KiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdAogICAgIGVsc2UgaWYgKGVsZXZhdGlvbiA8
IC05MC4wKQogICAgICAgICBlbGV2YXRpb24gPSAtMTgwLjAgLSBlbGV2YXRpb247CiAKLSAgICBp
ZiAob3V0QXppbXV0aCkKLSAgICAgICAgKm91dEF6aW11dGggPSBhemltdXRoOwotICAgIGlmIChv
dXRFbGV2YXRpb24pCi0gICAgICAgICpvdXRFbGV2YXRpb24gPSBlbGV2YXRpb247CisgICAgcmV0
dXJuIHsgYXppbXV0aCwgZWxldmF0aW9uIH07CiB9CiAKLXZvaWQgUGFubmVyTm9kZTo6YXppbXV0
aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQorYXV0
byBQYW5uZXJOb2RlOjphemltdXRoRWxldmF0aW9uKCkgLT4gY29uc3QgQXppbXV0aEVsZXZhdGlv
biYKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSk7Ci0KLSAgICBjYWxj
dWxhdGVBemltdXRoRWxldmF0aW9uKG91dEF6aW11dGgsIG91dEVsZXZhdGlvbiwgcG9zaXRpb24o
KSwgbGlzdGVuZXIoKS5wb3NpdGlvbigpLCBsaXN0ZW5lcigpLm9yaWVudGF0aW9uKCksIGxpc3Rl
bmVyKCkudXBWZWN0b3IoKSk7CisgICAgYXV0byYgbGlzdGVuZXIgPSB0aGlzLT5saXN0ZW5lcigp
OworICAgIGlmICghbV9jYWNoZWRBemltdXRoRWxldmF0aW9uKQorICAgICAgICBtX2NhY2hlZEF6
aW11dGhFbGV2YXRpb24gPSBjYWxjdWxhdGVBemltdXRoRWxldmF0aW9uKHBvc2l0aW9uKCksIGxp
c3RlbmVyLnBvc2l0aW9uKCksIGxpc3RlbmVyLm9yaWVudGF0aW9uKCksIGxpc3RlbmVyLnVwVmVj
dG9yKCkpOworICAgIHJldHVybiAqbV9jYWNoZWRBemltdXRoRWxldmF0aW9uOwogfQogCiBib29s
IFBhbm5lck5vZGU6OnJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKSBjb25zdApAQCAtNTE2LDEzICs1
NDEsMTEgQEAgYm9vbCBQYW5uZXJOb2RlOjpyZXF1aXJlc1RhaWxQcm9jZXNzaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gIW1fcGFubmVyIHx8IG1fcGFubmVyLT5yZXF1aXJlc1RhaWxQcm9jZXNzaW5n
KCk7CiB9CiAKLWZsb2F0IFBhbm5lck5vZGU6OmNhbGN1bGF0ZURpc3RhbmNlQ29uZUdhaW4oY29u
c3QgRmxvYXRQb2ludDNEJiBzb3VyY2VQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmll
bnRhdGlvbiwgY29uc3QgRmxvYXRQb2ludDNEJiBsaXN0ZW5lclBvc2l0aW9uKQorZmxvYXQgUGFu
bmVyTm9kZTo6Y2FsY3VsYXRlRGlzdGFuY2VDb25lR2Fpbihjb25zdCBGbG9hdFBvaW50M0QmIHNv
dXJjZVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWVudGF0aW9uLCBjb25zdCBGbG9h
dFBvaW50M0QmIGxpc3RlbmVyUG9zaXRpb24sIGNvbnN0IERpc3RhbmNlRWZmZWN0JiBkaXN0YW5j
ZUVmZmVjdCwgY29uc3QgQ29uZUVmZmVjdCYgY29uZUVmZmVjdCkKIHsKICAgICBkb3VibGUgbGlz
dGVuZXJEaXN0YW5jZSA9IHNvdXJjZVBvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQb3NpdGlv
bik7Ci0gICAgZG91YmxlIGRpc3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0
ZW5lckRpc3RhbmNlKTsKLQotICAgIC8vIEZJWE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBjYWNoaW5n
IGNvbmVHYWluCi0gICAgZG91YmxlIGNvbmVHYWluID0gbV9jb25lRWZmZWN0LmdhaW4oc291cmNl
UG9zaXRpb24sIG9yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKKyAgICBkb3VibGUgZGlz
dGFuY2VHYWluID0gZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0ZW5lckRpc3RhbmNlKTsKKyAgICBk
b3VibGUgY29uZUdhaW4gPSBjb25lRWZmZWN0LmdhaW4oc291cmNlUG9zaXRpb24sIG9yaWVudGF0
aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKIAogICAgIHJldHVybiBmbG9hdChkaXN0YW5jZUdhaW4g
KiBjb25lR2Fpbik7CiB9CkBAIC01MzAsOCArNTUzLDkgQEAgZmxvYXQgUGFubmVyTm9kZTo6Y2Fs
Y3VsYXRlRGlzdGFuY2VDb25lR2Fpbihjb25zdCBGbG9hdFBvaW50M0QmIHNvdXJjZVBvc2l0aW9u
LAogZmxvYXQgUGFubmVyTm9kZTo6ZGlzdGFuY2VDb25lR2FpbigpCiB7CiAgICAgQVNTRVJUKGNv
bnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwotCi0gICAgcmV0dXJuIGNhbGN1bGF0ZURpc3RhbmNl
Q29uZUdhaW4ocG9zaXRpb24oKSwgb3JpZW50YXRpb24oKSwgbGlzdGVuZXIoKS5wb3NpdGlvbigp
KTsKKyAgICBpZiAoIW1fY2FjaGVkQ29uZUdhaW4pCisgICAgICAgIG1fY2FjaGVkQ29uZUdhaW4g
PSBjYWxjdWxhdGVEaXN0YW5jZUNvbmVHYWluKHBvc2l0aW9uKCksIG9yaWVudGF0aW9uKCksIGxp
c3RlbmVyKCkucG9zaXRpb24oKSwgbV9kaXN0YW5jZUVmZmVjdCwgbV9jb25lRWZmZWN0KTsKKyAg
ICByZXR1cm4gKm1fY2FjaGVkQ29uZUdhaW47CiB9CiAKIGRvdWJsZSBQYW5uZXJOb2RlOjp0YWls
VGltZSgpIGNvbnN0CkBAIC01NTAsNiArNTc0LDIxIEBAIGRvdWJsZSBQYW5uZXJOb2RlOjpsYXRl
bmN5VGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPmxhdGVuY3lU
aW1lKCkgOiAwOwogfQogCit2b2lkIFBhbm5lck5vZGU6OmludmFsaWRhdGVDYWNoZWRQcm9wZXJ0
aWVzSWZOZWNlc3NhcnkoKQoreworICAgIGF1dG8gbGFzdFBvc2l0aW9uID0gc3RkOjpleGNoYW5n
ZShtX2xhc3RQb3NpdGlvbiwgcG9zaXRpb24oKSk7CisgICAgYm9vbCBoYXNQb3NpdGlvbkNoYW5n
ZWQgPSBtX2xhc3RQb3NpdGlvbiAhPSBsYXN0UG9zaXRpb247CisgICAgYXV0byBsYXN0T3JpZW50
YXRpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fbGFzdE9yaWVudGF0aW9uLCBwb3NpdGlvbigpKTsKKyAg
ICBib29sIGhhc09yaWVudGF0aW9uQ2hhbmdlZCA9IG1fbGFzdE9yaWVudGF0aW9uICE9IGxhc3RP
cmllbnRhdGlvbjsKKyAgICBhdXRvJiBsaXN0ZW5lciA9IHRoaXMtPmxpc3RlbmVyKCk7CisKKyAg
ICBpZiAoaGFzUG9zaXRpb25DaGFuZ2VkIHx8IGxpc3RlbmVyLmlzUG9zaXRpb25EaXJ0eSgpIHx8
IGxpc3RlbmVyLmlzT3JpZW50YXRpb25EaXJ0eSgpIHx8IGxpc3RlbmVyLmlzVXBWZWN0b3JEaXJ0
eSgpKQorICAgICAgICBtX2NhY2hlZEF6aW11dGhFbGV2YXRpb24gPSBzdGQ6Om51bGxvcHQ7CisK
KyAgICBpZiAoaGFzUG9zaXRpb25DaGFuZ2VkIHx8IGhhc09yaWVudGF0aW9uQ2hhbmdlZCB8fCBs
aXN0ZW5lci5pc1Bvc2l0aW9uRGlydHkoKSkKKyAgICAgICAgbV9jYWNoZWRDb25lR2FpbiA9IHN0
ZDo6bnVsbG9wdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGFubmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmgKaW5kZXggZGQzOTRlZjJhMGQ3MWNkMTZmMzYzNWM1YmNmNzQ4NTk5MTRiMjM4ZC4uYzU1
M2Y5NWYwZDliOGM0NTBjMDA4MTI1MzMzZTRjMDZkMDhhZWNlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAgLTExMywxNSArMTEzLDIxIEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgUGFubmVyTm9kZShCYXNlQXVkaW9Db250ZXh0JiwgY29uc3Qg
UGFubmVyT3B0aW9ucyYpOwogCi0gICAgdm9pZCBjYWxjdWxhdGVBemltdXRoRWxldmF0aW9uKGRv
dWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQz
RCYgcG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQzRCYgbGlzdGVuZXJQb3NpdGlvbiwgY29uc3Qg
RmxvYXRQb2ludDNEJiBsaXN0ZW5lckZvcndhcmQsIGNvbnN0IEZsb2F0UG9pbnQzRCYgbGlzdGVu
ZXJVcCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9wcm9jZXNzTG9jayk7Ci0gICAgZmxvYXQgY2FsY3Vs
YXRlRGlzdGFuY2VDb25lR2Fpbihjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uLCBjb25zdCBG
bG9hdFBvaW50M0QmIG9yaWVudGF0aW9uLCBjb25zdCBGbG9hdFBvaW50M0QmIGxpc3RlbmVyUG9z
aXRpb24pIFdURl9SRVFVSVJFU19MT0NLKG1fcHJvY2Vzc0xvY2spOworICAgIHN0cnVjdCBBemlt
dXRoRWxldmF0aW9uIHsKKyAgICAgICAgZG91YmxlIGF6aW11dGggeyAwLiB9OworICAgICAgICBk
b3VibGUgZWxldmF0aW9uIHsgMC4gfTsKKyAgICB9OworICAgIHN0YXRpYyBBemltdXRoRWxldmF0
aW9uIGNhbGN1bGF0ZUF6aW11dGhFbGV2YXRpb24oY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlv
biwgY29uc3QgRmxvYXRQb2ludDNEJiBsaXN0ZW5lclBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50
M0QmIGxpc3RlbmVyRm9yd2FyZCwgY29uc3QgRmxvYXRQb2ludDNEJiBsaXN0ZW5lclVwKTsKKyAg
ICBzdGF0aWMgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2VDb25lR2Fpbihjb25zdCBGbG9hdFBvaW50
M0QmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWVudGF0aW9uLCBjb25zdCBGbG9h
dFBvaW50M0QmIGxpc3RlbmVyUG9zaXRpb24sIGNvbnN0IERpc3RhbmNlRWZmZWN0JiwgY29uc3Qg
Q29uZUVmZmVjdCYpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5k
IGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4KICAgICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCkgV1RG
X1JFUVVJUkVTX0xPQ0sobV9wcm9jZXNzTG9jayk7CiAKICAgICBib29sIHJlcXVpcmVzVGFpbFBy
b2Nlc3NpbmcoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgYXppbXV0aEVsZXZhdGlvbihkb3Vi
bGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKSBXVEZfUkVRVUlSRVNfTE9DSyht
X3Byb2Nlc3NMb2NrKTsKKyAgICB2b2lkIGludmFsaWRhdGVDYWNoZWRQcm9wZXJ0aWVzSWZOZWNl
c3NhcnkoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX3Byb2Nlc3NMb2NrKTsKKworICAgIGNvbnN0IEF6
aW11dGhFbGV2YXRpb24mIGF6aW11dGhFbGV2YXRpb24oKSBXVEZfUkVRVUlSRVNfTE9DSyhtX3By
b2Nlc3NMb2NrKTsKICAgICB2b2lkIHByb2Nlc3NTYW1wbGVBY2N1cmF0ZVZhbHVlcyhBdWRpb0J1
cyogZGVzdGluYXRpb24sIGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIFdURl9SRVFVSVJFU19MT0NLKG1fcHJvY2Vzc0xvY2spOwogICAgIGJvb2wgaGFzU2Ft
cGxlQWNjdXJhdGVWYWx1ZXMoKSBjb25zdCBXVEZfUkVRVUlSRVNfTE9DSyhtX3Byb2Nlc3NMb2Nr
KTsKICAgICBib29sIHNob3VsZFVzZUFSYXRlKCkgY29uc3QgV1RGX1JFUVVJUkVTX0xPQ0sobV9w
cm9jZXNzTG9jayk7CkBAIC0xNDUsNiArMTUxLDExIEBAIHByaXZhdGU6CiAgICAgUmVmPEF1ZGlv
UGFyYW0+IG1fb3JpZW50YXRpb25ZIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9jZXNzTG9jayk7
CiAgICAgUmVmPEF1ZGlvUGFyYW0+IG1fb3JpZW50YXRpb25aIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9wcm9jZXNzTG9jayk7CiAKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8QXppbXV0aEVsZXZh
dGlvbj4gbV9jYWNoZWRBemltdXRoRWxldmF0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9j
ZXNzTG9jayk7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtX2NhY2hlZENvbmVH
YWluIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9jZXNzTG9jayk7CisgICAgRmxvYXRQb2ludDNE
IG1fbGFzdFBvc2l0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9jZXNzTG9jayk7CisgICAg
RmxvYXRQb2ludDNEIG1fbGFzdE9yaWVudGF0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9j
ZXNzTG9jayk7CisKICAgICAvLyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgd2l0aCBzZXR0aW5nIG9m
IHRoZSBwYW5uaW5nIG1vZGVsLCBzb3VyY2UncyBsb2NhdGlvbgogICAgIC8vIGluZm9ybWF0aW9u
LCBsaXN0ZW5lciwgZGlzdGFuY2UgcGFyYW1ldGVycyBhbmQgc291bmQgY29uZXMuCiAgICAgbXV0
YWJsZSBMb2NrIG1fcHJvY2Vzc0xvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9Db25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUu
Y3BwCmluZGV4IGY1OTQyZWEwNmQxNGEzM2MyZmI4MWMyNmEzM2RjZGVkYzRlNGZjZGIuLjQzMzE1
OTMxYzdkMDkzNzRmNTk2NjllNDZmOWJlZTNmNGMyYWM0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0NvbmUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogQ29uZUVmZmVjdDo6Q29uZUVmZmVjdCgpID0gZGVmYXVsdDsKIAotZG91YmxlIENvbmVFZmZl
Y3Q6OmdhaW4oRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9uLCBGbG9hdFBvaW50M0Qgc291cmNl
T3JpZW50YXRpb24sIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uKQorZG91YmxlIENvbmVF
ZmZlY3Q6OmdhaW4oRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9uLCBGbG9hdFBvaW50M0Qgc291
cmNlT3JpZW50YXRpb24sIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uKSBjb25zdAogewog
ICAgIGlmIChzb3VyY2VPcmllbnRhdGlvbi5pc1plcm8oKSB8fCAoKG1faW5uZXJBbmdsZSA9PSAz
NjAuMCkgJiYgKG1fb3V0ZXJBbmdsZSA9PSAzNjAuMCkpKQogICAgICAgICByZXR1cm4gMS4wOyAv
LyBubyBjb25lIHNwZWNpZmllZCAtIHVuaXR5IGdhaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0NvbmUuaAppbmRleCBlMWUzOGM2MTc3OGE2MWU4Nzc4ZjM3YzcyOTYzMDgzYmI2OTk3YzRmLi4x
YWRiMjhiMmQ1YmU3MzdiOGMzNDFlNTI1NzI0NjJmMThjYTE5MGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQ29uZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBDb25lRWZm
ZWN0KCk7CiAKICAgICAvLyBSZXR1cm5zIHNjYWxhciBnYWluIGZvciB0aGUgZ2l2ZW4gc291cmNl
L2xpc3RlbmVyIHBvc2l0aW9ucy9vcmllbnRhdGlvbnMKLSAgICBkb3VibGUgZ2FpbihGbG9hdFBv
aW50M0Qgc291cmNlUG9zaXRpb24sIEZsb2F0UG9pbnQzRCBzb3VyY2VPcmllbnRhdGlvbiwgRmxv
YXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24pOworICAgIGRvdWJsZSBnYWluKEZsb2F0UG9pbnQz
RCBzb3VyY2VQb3NpdGlvbiwgRmxvYXRQb2ludDNEIHNvdXJjZU9yaWVudGF0aW9uLCBGbG9hdFBv
aW50M0QgbGlzdGVuZXJQb3NpdGlvbikgY29uc3Q7CiAKICAgICAvLyBBbmdsZXMgaW4gZGVncmVl
cwogICAgIHZvaWQgc2V0SW5uZXJBbmdsZShkb3VibGUgaW5uZXJBbmdsZSkgeyBtX2lubmVyQW5n
bGUgPSBpbm5lckFuZ2xlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EaXN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5j
ZS5jcHAKaW5kZXggYWY5YjRkYzg5MDUzZjk5NmM0OTAxNjQzNDllY2NlNzA5NzFjZTFhNC4uOTAz
Y2VhZjY1M2Q4YjQ4OTYwYTBlZmJkZGVkOWZmZTRkNjcwYTUzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIERpc3RhbmNlRWZmZWN0OjpEaXN0YW5jZUVmZmVjdCgpID0gZGVmYXVsdDsK
IAotZG91YmxlIERpc3RhbmNlRWZmZWN0OjpnYWluKGRvdWJsZSBkaXN0YW5jZSkKK2RvdWJsZSBE
aXN0YW5jZUVmZmVjdDo6Z2Fpbihkb3VibGUgZGlzdGFuY2UpIGNvbnN0CiB7CiAgICAgLy8gZG9u
J3QgZ28gYmV5b25kIG1heGltdW0gZGlzdGFuY2UKICAgICBkaXN0YW5jZSA9IHN0ZDo6bWluKGRp
c3RhbmNlLCBtX21heERpc3RhbmNlKTsKQEAgLTYwLDcgKzYwLDcgQEAgZG91YmxlIERpc3RhbmNl
RWZmZWN0OjpnYWluKGRvdWJsZSBkaXN0YW5jZSkKICAgICByZXR1cm4gMC4wOwogfQogCi1kb3Vi
bGUgRGlzdGFuY2VFZmZlY3Q6OmxpbmVhckdhaW4oZG91YmxlIGRpc3RhbmNlKQorZG91YmxlIERp
c3RhbmNlRWZmZWN0OjpsaW5lYXJHYWluKGRvdWJsZSBkaXN0YW5jZSkgY29uc3QKIHsKICAgICBh
dXRvIGNsYW1wZWRSb2xsb2ZmRmFjdG9yID0gc3RkOjpjbGFtcChtX3JvbGxvZmZGYWN0b3IsIDAu
MCwgMS4wKTsKICAgICAvLyBXZSB3YW50IGEgZ2FpbiB0aGF0IGRlY3JlYXNlcyBsaW5lYXJseSBm
cm9tIG1fcmVmRGlzdGFuY2UgdG8KQEAgLTY4LDEyICs2OCwxMiBAQCBkb3VibGUgRGlzdGFuY2VF
ZmZlY3Q6OmxpbmVhckdhaW4oZG91YmxlIGRpc3RhbmNlKQogICAgIHJldHVybiAoMS4wIC0gY2xh
bXBlZFJvbGxvZmZGYWN0b3IgKiAoZGlzdGFuY2UgLSBtX3JlZkRpc3RhbmNlKSAvIChtX21heERp
c3RhbmNlIC0gbV9yZWZEaXN0YW5jZSkpOwogfQogCi1kb3VibGUgRGlzdGFuY2VFZmZlY3Q6Omlu
dmVyc2VHYWluKGRvdWJsZSBkaXN0YW5jZSkKK2RvdWJsZSBEaXN0YW5jZUVmZmVjdDo6aW52ZXJz
ZUdhaW4oZG91YmxlIGRpc3RhbmNlKSBjb25zdAogewogICAgIHJldHVybiBtX3JlZkRpc3RhbmNl
IC8gKG1fcmVmRGlzdGFuY2UgKyBtX3JvbGxvZmZGYWN0b3IgKiAoZGlzdGFuY2UgLSBtX3JlZkRp
c3RhbmNlKSk7CiB9CiAKLWRvdWJsZSBEaXN0YW5jZUVmZmVjdDo6ZXhwb25lbnRpYWxHYWluKGRv
dWJsZSBkaXN0YW5jZSkKK2RvdWJsZSBEaXN0YW5jZUVmZmVjdDo6ZXhwb25lbnRpYWxHYWluKGRv
dWJsZSBkaXN0YW5jZSkgY29uc3QKIHsKICAgICByZXR1cm4gcG93KGRpc3RhbmNlIC8gbV9yZWZE
aXN0YW5jZSwgLW1fcm9sbG9mZkZhY3Rvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRGlzdGFuY2UuaAppbmRleCBhMzdiYjBhNjg2OGZjMTQzZTk3Y2MzNjdmZjgzNDI3ZThmNmEx
ODgzLi43ZjNhMDAwNjAwOGYzMGJmNDE3MzdlZmY0YzI5YmFjMjdmNDNiNmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgIERpc3RhbmNlRWZmZWN0KCk7CiAKICAgICAvLyBSZXR1cm5zIHNjYWxhciBnYWluIGZv
ciB0aGUgZ2l2ZW4gZGlzdGFuY2UgdGhlIGN1cnJlbnQgZGlzdGFuY2UgbW9kZWwgaXMgdXNlZAot
ICAgIGRvdWJsZSBnYWluKGRvdWJsZSBkaXN0YW5jZSk7CisgICAgZG91YmxlIGdhaW4oZG91Ymxl
IGRpc3RhbmNlKSBjb25zdDsKIAogICAgIERpc3RhbmNlTW9kZWxUeXBlIG1vZGVsKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2RlbDsgfQogCkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICBkb3Vi
bGUgcm9sbG9mZkZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9sbG9mZkZhY3RvcjsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgZG91YmxlIGxpbmVhckdhaW4oZG91YmxlIGRpc3RhbmNlKTsKLSAgICBk
b3VibGUgaW52ZXJzZUdhaW4oZG91YmxlIGRpc3RhbmNlKTsKLSAgICBkb3VibGUgZXhwb25lbnRp
YWxHYWluKGRvdWJsZSBkaXN0YW5jZSk7CisgICAgZG91YmxlIGxpbmVhckdhaW4oZG91YmxlIGRp
c3RhbmNlKSBjb25zdDsKKyAgICBkb3VibGUgaW52ZXJzZUdhaW4oZG91YmxlIGRpc3RhbmNlKSBj
b25zdDsKKyAgICBkb3VibGUgZXhwb25lbnRpYWxHYWluKGRvdWJsZSBkaXN0YW5jZSkgY29uc3Q7
CiAKICAgICBEaXN0YW5jZU1vZGVsVHlwZSBtX21vZGVsIHsgRGlzdGFuY2VNb2RlbFR5cGU6Oklu
dmVyc2UgfTsKICAgICBib29sIG1faXNDbGFtcGVkIHsgdHJ1ZSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440461</attachid>
            <date>2021-10-06 17:53:14 -0700</date>
            <delta_ts>2021-10-07 13:36:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231314-20211006175314.patch</filename>
            <type>text/plain</type>
            <size>21188</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA2ZjFjOGNhY2ZlMmZm
OTVmNTQ3NWU2MzhkZWM3ODdmODMwZWQ3ZC4uNGIxYmI5ODAwZGFlYTQxMDM4ZTA1OWQ1ZTM1NWM0
Zjk4N2QwODkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTEwLTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGUgUGFubmVyTm9kZSdz
IGF6aW11dGgsIGVsZXZhdGlvbiBhbmQgY29uZUdhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTMxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENhY2hlIFBhbm5lck5vZGUncyBhemltdXRoLCBlbGV2
YXRpb24gYW5kIGNvbmVHYWluIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuIEkgaGF2ZSBub3RpY2Vk
IHdoaWxlIHByb2ZpbGluZworICAgICAgICBodHRwczovL2Rvd25sb2Fkcy5zY2lycmEuY29tL2xh
YnMvYnVncy9zYWZhcmlwYW5uZXJxdWFsaXR5LyB0aGF0IFBhbm5lck5vZGU6OnByb2Nlc3MoKSBz
cGVuZHMgbW9zdCBvZiBpdHMKKyAgICAgICAgQ1BVIHRpbWUgdW5kZXIgUGFubmVyTm9kZTo6Y2Fs
Y3VsYXRlQXppbXV0aEVsZXZhdGlvbigpLiBXZSBzaG91bGRuJ3QgaGF2ZSB0byByZS1jYWxjdWxh
dGUgdGhvc2UgcHJvcGVydGllcworICAgICAgICBmb3IgZXZlcnkgcmVuZGVyaW5nIHF1YW50dW0u
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9MaXN0ZW5lcjo6dXBkYXRlRGlydHlTdGF0ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0xpc3RlbmVyOjppc1Bvc2l0aW9uRGlydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9MaXN0ZW5lcjo6aXNPcmllbnRhdGlvbkRpcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvTGlzdGVuZXI6OmlzVXBWZWN0b3JEaXJ0eSBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VB
dWRpb0NvbnRleHQ6OmhhbmRsZVByZVJlbmRlclRhc2tzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6cHJv
Y2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpwcm9jZXNzU2FtcGxlQWNjdXJh
dGVWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2Rl
bEZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFJlZkRpc3Rh
bmNlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0TWF4RGlz
dGFuY2VGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpzZXRSb2xs
b2ZmRmFjdG9yRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0
Q29uZU91dGVyR2FpbkZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnNldENvbmVPdXRlckFuZ2xlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVy
Tm9kZTo6c2V0Q29uZUlubmVyQW5nbGVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpQ
YW5uZXJOb2RlOjpjYWxjdWxhdGVBemltdXRoRWxldmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhbm5lck5vZGU6OmF6aW11dGhFbGV2YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGFubmVyTm9kZTo6Y2FsY3VsYXRlRGlzdGFuY2VDb25lR2Fpbik6CisgICAgICAgIChXZWJDb3Jl
OjpQYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5l
ck5vZGU6OmludmFsaWRhdGVDYWNoZWRQcm9wZXJ0aWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAo
V2ViQ29yZTo6UGFubmVyTm9kZTo6YXppbXV0aEVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQ29uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpnYWluIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmdhaW4pOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EaXN0YW5j
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6Z2FpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bGluZWFyR2FpbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6aW52ZXJzZUdhaW4gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OmV4cG9uZW50aWFsR2FpbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6Z2Fpbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bGluZWFyR2Fpbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6aW52ZXJzZUdhaW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OmV4cG9uZW50aWFsR2Fpbik6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKwogMjAyMS0xMC0wNiAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwCmluZGV4IDMxZjg0OGI2OWNmYTA1YWY3MjJlN2I1MjE5NjEz
YTE2NTUxOTk3ZTUuLjAyMGU3NmY0MzY0ZTZkZWY4ZjgxNzI0ZGI3YzJmZDhhZTU3MDIxNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmNw
cApAQCAtMTIzLDYgKzEyMywyMCBAQCB2b2lkIEF1ZGlvTGlzdGVuZXI6OnVwZGF0ZVZhbHVlc0lm
TmVlZGVkKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgfQogfQogCit2b2lkIEF1ZGlvTGlz
dGVuZXI6OnVwZGF0ZURpcnR5U3RhdGUoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OworCisgICAgYXV0byBsYXN0UG9zaXRpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fbGFzdFBvc2l0aW9u
LCBwb3NpdGlvbigpKTsKKyAgICBtX2lzUG9zaXRpb25EaXJ0eSA9IGxhc3RQb3NpdGlvbiAhPSBt
X2xhc3RQb3NpdGlvbjsKKworICAgIGF1dG8gbGFzdE9yaWVudGF0aW9uID0gc3RkOjpleGNoYW5n
ZShtX2xhc3RPcmllbnRhdGlvbiwgb3JpZW50YXRpb24oKSk7CisgICAgbV9pc09yaWVudGF0aW9u
RGlydHkgPSBsYXN0T3JpZW50YXRpb24gIT0gbV9sYXN0T3JpZW50YXRpb247CisKKyAgICBhdXRv
IGxhc3RVcFZlY3RvciA9IHN0ZDo6ZXhjaGFuZ2UobV9sYXN0VXBWZWN0b3IsIHVwVmVjdG9yKCkp
OworICAgIG1faXNVcFZlY3RvckRpcnR5ID0gbGFzdFVwVmVjdG9yICE9IG1fbGFzdFVwVmVjdG9y
OworfQorCiBjb25zdCBmbG9hdCogQXVkaW9MaXN0ZW5lcjo6cG9zaXRpb25YVmFsdWVzKHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgdXBkYXRlVmFsdWVzSWZOZWVkZWQoZnJhbWVzVG9Q
cm9jZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9MaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmgKaW5kZXggZjA1MWFjYjE4Y2U2OTNmZGJhZWYyNDg4NjNlNzI0MThiMmU4MWZhZC4uOGE5
NjI1ZWFmM2MzOGU5MThlYjIwODBiZDFkNTk2NzMyYzFiYTgyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKQEAgLTg3LDYgKzg3LDExIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlVmFsdWVzSWZOZWVkZWQoc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcyk7CiAKKyAgICB2b2lkIHVwZGF0ZURpcnR5U3RhdGUoKTsKKyAgICBib29sIGlzUG9z
aXRpb25EaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQb3NpdGlvbkRpcnR5OyB9CisgICAgYm9v
bCBpc09yaWVudGF0aW9uRGlydHkoKSBjb25zdCB7IHJldHVybiBtX2lzT3JpZW50YXRpb25EaXJ0
eTsgfQorICAgIGJvb2wgaXNVcFZlY3RvckRpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9pc1VwVmVj
dG9yRGlydHk7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEF1ZGlvTGlzdGVuZXIoQmFz
ZUF1ZGlvQ29udGV4dCYpOwogCkBAIC0xMTYsNiArMTIxLDEzIEBAIHByaXZhdGU6CiAgICAgQXVk
aW9GbG9hdEFycmF5IG1fdXBYVmFsdWVzOwogICAgIEF1ZGlvRmxvYXRBcnJheSBtX3VwWVZhbHVl
czsKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV91cFpWYWx1ZXM7CisKKyAgICBGbG9hdFBvaW50M0Qg
bV9sYXN0UG9zaXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fbGFzdE9yaWVudGF0aW9uOworICAg
IEZsb2F0UG9pbnQzRCBtX2xhc3RVcFZlY3RvcjsKKyAgICBib29sIG1faXNQb3NpdGlvbkRpcnR5
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNPcmllbnRhdGlvbkRpcnR5IHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNVcFZlY3RvckRpcnR5IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFz
ZUF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VB
dWRpb0NvbnRleHQuY3BwCmluZGV4IGNjZTE0M2JiZGE3OTUyZTk1OTJjNTE3NTI2ZDFkMzE1MzUx
ZWRkMjEuLjY0ZTNkMTY2ODBhM2UxMjhkMGZiMTMzNDFjMGFlMmU1NTdkYmJhYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNw
cApAQCAtNTQ5LDYgKzU0OSw4IEBAIHZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVu
ZGVyVGFza3MoY29uc3QgQXVkaW9JT1Bvc2l0aW9uJiBvdXRwdXRQb3NpdGlvCiAKICAgICAgICAg
dXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CiAgICAgICAgIG1fb3V0cHV0UG9zaXRpb24gPSBv
dXRwdXRQb3NpdGlvbjsKKworICAgICAgICBtX2xpc3RlbmVyLT51cGRhdGVEaXJ0eVN0YXRlKCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcAppbmRleCAwNGEyOGI5YzdjYjE1MzA0ODE2M2FiOTU4ZDMwYTc3NGZhNTY5ZjJmLi4x
YWRhODE0MzE5ZGQ0ZDE5YjcyOGM1MTFjYzg1MmRhNGVhNmZiZGM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTE0OCwxMCArMTQ4LDEw
IEBAIHZvaWQgUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisgICAgaW52YWxpZGF0ZUNhY2hlZFByb3BlcnRpZXNJZk5l
Y2Vzc2FyeSgpOworCiAgICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0LgotICAgIGRvdWJs
ZSBhemltdXRoOwotICAgIGRvdWJsZSBlbGV2YXRpb247Ci0gICAgYXppbXV0aEVsZXZhdGlvbigm
YXppbXV0aCwgJmVsZXZhdGlvbik7CisgICAgYXV0byBbYXppbXV0aCwgZWxldmF0aW9uXSA9IGF6
aW11dGhFbGV2YXRpb24oKTsKICAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwg
c291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgIC8vIEdldCB0aGUg
ZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KQEAgLTIyNiwxMCArMjI2LDEyIEBAIHZvaWQgUGFubmVy
Tm9kZTo6cHJvY2Vzc1NhbXBsZUFjY3VyYXRlVmFsdWVzKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwg
Y29uc3QgQXVkaW9CCiAgICAgICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250KGZvcndhcmRY
W2tdLCBmb3J3YXJkWVtrXSwgZm9yd2FyZFpba10pOwogICAgICAgICBGbG9hdFBvaW50M0QgbGlz
dGVuZXJVcCh1cFhba10sIHVwWVtrXSwgdXBaW2tdKTsKIAotICAgICAgICBjYWxjdWxhdGVBemlt
dXRoRWxldmF0aW9uKCZhemltdXRoW2tdLCAmZWxldmF0aW9uW2tdLCBwYW5uZXJQb3NpdGlvbiwg
bGlzdGVuZXJQb3NpdGlvbiwgbGlzdGVuZXJGcm9udCwgbGlzdGVuZXJVcCk7CisgICAgICAgIGF1
dG8gW2NhbGN1bGF0ZWRBemltdXRoLCBjYWxjdWxhdGVkRWxldmF0aW9uXSA9IGNhbGN1bGF0ZUF6
aW11dGhFbGV2YXRpb24ocGFubmVyUG9zaXRpb24sIGxpc3RlbmVyUG9zaXRpb24sIGxpc3RlbmVy
RnJvbnQsIGxpc3RlbmVyVXApOworICAgICAgICBhemltdXRoW2tdID0gY2FsY3VsYXRlZEF6aW11
dGg7CisgICAgICAgIGVsZXZhdGlvbltrXSA9IGNhbGN1bGF0ZWRFbGV2YXRpb247CiAKICAgICAg
ICAgLy8gR2V0IGRpc3RhbmNlIGFuZCBjb25lIGdhaW4KLSAgICAgICAgdG90YWxHYWluW2tdID0g
Y2FsY3VsYXRlRGlzdGFuY2VDb25lR2FpbihwYW5uZXJQb3NpdGlvbiwgb3JpZW50YXRpb24sIGxp
c3RlbmVyUG9zaXRpb24pOworICAgICAgICB0b3RhbEdhaW5ba10gPSBjYWxjdWxhdGVEaXN0YW5j
ZUNvbmVHYWluKHBhbm5lclBvc2l0aW9uLCBvcmllbnRhdGlvbiwgbGlzdGVuZXJQb3NpdGlvbiwg
bV9kaXN0YW5jZUVmZmVjdCwgbV9jb25lRWZmZWN0KTsKICAgICB9CiAKICAgICBtX3Bhbm5lci0+
cGFuV2l0aFNhbXBsZUFjY3VyYXRlVmFsdWVzKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNlLCBk
ZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKQEAgLTM0MCw3ICszNDIsMTEgQEAgdm9pZCBQ
YW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsRm9yQmluZGluZ3MoRGlzdGFuY2VNb2RlbFR5cGUg
bW9kZWwpCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAorICAgIGlmIChtX2Rpc3RhbmNlRWZmZWN0
Lm1vZGVsKCkgPT0gbW9kZWwpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fZGlzdGFuY2VFZmZl
Y3Quc2V0TW9kZWwobW9kZWwsIHRydWUpOworICAgIG1fY2FjaGVkQ29uZUdhaW4gPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhbm5lck5vZGU6OnNldFJlZkRpc3RhbmNl
Rm9yQmluZGluZ3MoZG91YmxlIHJlZkRpc3RhbmNlKQpAQCAtMzUzLDcgKzM1OSwxMSBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRSZWZEaXN0YW5jZUZvckJpbmRpbmdzKGRvdWJs
ZSByZWZEaXN0YW5jZSkKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4K
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCisgICAgaWYgKG1fZGlzdGFu
Y2VFZmZlY3QucmVmRGlzdGFuY2UoKSA9PSByZWZEaXN0YW5jZSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKwogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVmRGlzdGFuY2UocmVmRGlzdGFuY2UpOwor
ICAgIG1fY2FjaGVkQ29uZUdhaW4gPSBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApAQCAtMzY3LDcgKzM3NywxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRN
YXhEaXN0YW5jZUZvckJpbmRpbmdzKGRvdWJsZSBtYXhEaXN0YW5jZSkKICAgICAvLyBUaGlzIHN5
bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNz
TG9jayB9OwogCisgICAgaWYgKG1fZGlzdGFuY2VFZmZlY3QubWF4RGlzdGFuY2UoKSA9PSBtYXhE
aXN0YW5jZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0
TWF4RGlzdGFuY2UobWF4RGlzdGFuY2UpOworICAgIG1fY2FjaGVkQ29uZUdhaW4gPSBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMzgxLDcgKzM5NSwxMSBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRSb2xsb2ZmRmFjdG9yRm9yQmluZGluZ3MoZG91Ymxl
IHJvbGxvZmZGYWN0b3IpCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCku
CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAorICAgIGlmIChtX2Rpc3Rh
bmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKSA9PSByb2xsb2ZmRmFjdG9yKQorICAgICAgICByZXR1
cm4geyB9OworCiAgICAgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZG
YWN0b3IpOworICAgIG1fY2FjaGVkQ29uZUdhaW4gPSBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHsgfTsKIH0KIApAQCAtMzk1LDcgKzQxMywxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJO
b2RlOjpzZXRDb25lT3V0ZXJHYWluRm9yQmluZGluZ3MoZG91YmxlIGdhaW4pCiAgICAgLy8gVGhp
cyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJv
Y2Vzc0xvY2sgfTsKIAorICAgIGlmIChtX2NvbmVFZmZlY3Qub3V0ZXJHYWluKCkgPT0gZ2FpbikK
KyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oZ2Fp
bik7CisgICAgbV9jYWNoZWRDb25lR2FpbiA9IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB9
OwogfQogCkBAIC00MDYsNyArNDI4LDExIEBAIHZvaWQgUGFubmVyTm9kZTo6c2V0Q29uZU91dGVy
QW5nbGVGb3JCaW5kaW5ncyhkb3VibGUgYW5nbGUpCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMg
d2l0aCBwcm9jZXNzKCkuCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAor
ICAgIGlmIChtX2NvbmVFZmZlY3Qub3V0ZXJBbmdsZSgpID09IGFuZ2xlKQorICAgICAgICByZXR1
cm47CisKICAgICBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJBbmdsZShhbmdsZSk7CisgICAgbV9jYWNo
ZWRDb25lR2FpbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBQYW5uZXJOb2RlOjpzZXRDb25l
SW5uZXJBbmdsZUZvckJpbmRpbmdzKGRvdWJsZSBhbmdsZSkKQEAgLTQxNiw3ICs0NDIsMTEgQEAg
dm9pZCBQYW5uZXJOb2RlOjpzZXRDb25lSW5uZXJBbmdsZUZvckJpbmRpbmdzKGRvdWJsZSBhbmds
ZSkKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCisgICAgaWYgKG1fY29uZUVmZmVjdC5pbm5lckFu
Z2xlKCkgPT0gYW5nbGUpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY29uZUVmZmVjdC5zZXRJ
bm5lckFuZ2xlKGFuZ2xlKTsKKyAgICBtX2NhY2hlZENvbmVHYWluID0gc3RkOjpudWxsb3B0Owog
fQogCiBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRDaGFubmVsQ291bnQodW5zaWdu
ZWQgY2hhbm5lbENvdW50KQpAQCAtNDM5LDE4ICs0NjksMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
UGFubmVyTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZShDaGFubmVsQ291bnRNb2RlIG1vZGUpCiAg
ICAgcmV0dXJuIEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZShtb2RlKTsKIH0KIAotdm9p
ZCBQYW5uZXJOb2RlOjpjYWxjdWxhdGVBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0
aCwgZG91YmxlKiBvdXRFbGV2YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQzRCYgbGlzdGVuZXJQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludDNEJiBs
aXN0ZW5lckZyb250LCBjb25zdCBGbG9hdFBvaW50M0QmIGxpc3RlbmVyVXApCithdXRvIFBhbm5l
ck5vZGU6OmNhbGN1bGF0ZUF6aW11dGhFbGV2YXRpb24oY29uc3QgRmxvYXRQb2ludDNEJiBwb3Np
dGlvbiwgY29uc3QgRmxvYXRQb2ludDNEJiBsaXN0ZW5lclBvc2l0aW9uLCBjb25zdCBGbG9hdFBv
aW50M0QmIGxpc3RlbmVyRnJvbnQsIGNvbnN0IEZsb2F0UG9pbnQzRCYgbGlzdGVuZXJVcCkgLT4g
QXppbXV0aEVsZXZhdGlvbgogewotICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0
aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJsZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlm
IGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCi0KICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZS1s
aXN0ZW5lciB2ZWN0b3IKICAgICBGbG9hdFBvaW50M0Qgc291cmNlTGlzdGVuZXIgPSBwb3NpdGlv
biAtIGxpc3RlbmVyUG9zaXRpb247CiAKICAgICBpZiAoc291cmNlTGlzdGVuZXIuaXNaZXJvKCkp
IHsKICAgICAgICAgLy8gZGVnZW5lcmF0ZSBjYXNlIGlmIHNvdXJjZSBhbmQgbGlzdGVuZXIgYXJl
IGF0IHRoZSBzYW1lIHBvaW50Ci0gICAgICAgICpvdXRBemltdXRoID0gMC4wOwotICAgICAgICAq
b3V0RWxldmF0aW9uID0gMC4wOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCiAgICAgc291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7CkBAIC00OTIsMTcgKzUx
OCwxNiBAQCB2b2lkIFBhbm5lck5vZGU6OmNhbGN1bGF0ZUF6aW11dGhFbGV2YXRpb24oZG91Ymxl
KiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdAogICAgIGVsc2UgaWYgKGVsZXZhdGlvbiA8
IC05MC4wKQogICAgICAgICBlbGV2YXRpb24gPSAtMTgwLjAgLSBlbGV2YXRpb247CiAKLSAgICBp
ZiAob3V0QXppbXV0aCkKLSAgICAgICAgKm91dEF6aW11dGggPSBhemltdXRoOwotICAgIGlmIChv
dXRFbGV2YXRpb24pCi0gICAgICAgICpvdXRFbGV2YXRpb24gPSBlbGV2YXRpb247CisgICAgcmV0
dXJuIHsgYXppbXV0aCwgZWxldmF0aW9uIH07CiB9CiAKLXZvaWQgUGFubmVyTm9kZTo6YXppbXV0
aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQorYXV0
byBQYW5uZXJOb2RlOjphemltdXRoRWxldmF0aW9uKCkgLT4gY29uc3QgQXppbXV0aEVsZXZhdGlv
biYKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSk7Ci0KLSAgICBjYWxj
dWxhdGVBemltdXRoRWxldmF0aW9uKG91dEF6aW11dGgsIG91dEVsZXZhdGlvbiwgcG9zaXRpb24o
KSwgbGlzdGVuZXIoKS5wb3NpdGlvbigpLCBsaXN0ZW5lcigpLm9yaWVudGF0aW9uKCksIGxpc3Rl
bmVyKCkudXBWZWN0b3IoKSk7CisgICAgYXV0byYgbGlzdGVuZXIgPSB0aGlzLT5saXN0ZW5lcigp
OworICAgIGlmICghbV9jYWNoZWRBemltdXRoRWxldmF0aW9uKQorICAgICAgICBtX2NhY2hlZEF6
aW11dGhFbGV2YXRpb24gPSBjYWxjdWxhdGVBemltdXRoRWxldmF0aW9uKHBvc2l0aW9uKCksIGxp
c3RlbmVyLnBvc2l0aW9uKCksIGxpc3RlbmVyLm9yaWVudGF0aW9uKCksIGxpc3RlbmVyLnVwVmVj
dG9yKCkpOworICAgIHJldHVybiAqbV9jYWNoZWRBemltdXRoRWxldmF0aW9uOwogfQogCiBib29s
IFBhbm5lck5vZGU6OnJlcXVpcmVzVGFpbFByb2Nlc3NpbmcoKSBjb25zdApAQCAtNTE2LDEzICs1
NDEsMTEgQEAgYm9vbCBQYW5uZXJOb2RlOjpyZXF1aXJlc1RhaWxQcm9jZXNzaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gIW1fcGFubmVyIHx8IG1fcGFubmVyLT5yZXF1aXJlc1RhaWxQcm9jZXNzaW5n
KCk7CiB9CiAKLWZsb2F0IFBhbm5lck5vZGU6OmNhbGN1bGF0ZURpc3RhbmNlQ29uZUdhaW4oY29u
c3QgRmxvYXRQb2ludDNEJiBzb3VyY2VQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmll
bnRhdGlvbiwgY29uc3QgRmxvYXRQb2ludDNEJiBsaXN0ZW5lclBvc2l0aW9uKQorZmxvYXQgUGFu
bmVyTm9kZTo6Y2FsY3VsYXRlRGlzdGFuY2VDb25lR2Fpbihjb25zdCBGbG9hdFBvaW50M0QmIHNv
dXJjZVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWVudGF0aW9uLCBjb25zdCBGbG9h
dFBvaW50M0QmIGxpc3RlbmVyUG9zaXRpb24sIGNvbnN0IERpc3RhbmNlRWZmZWN0JiBkaXN0YW5j
ZUVmZmVjdCwgY29uc3QgQ29uZUVmZmVjdCYgY29uZUVmZmVjdCkKIHsKICAgICBkb3VibGUgbGlz
dGVuZXJEaXN0YW5jZSA9IHNvdXJjZVBvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQb3NpdGlv
bik7Ci0gICAgZG91YmxlIGRpc3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0
ZW5lckRpc3RhbmNlKTsKLQotICAgIC8vIEZJWE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBjYWNoaW5n
IGNvbmVHYWluCi0gICAgZG91YmxlIGNvbmVHYWluID0gbV9jb25lRWZmZWN0LmdhaW4oc291cmNl
UG9zaXRpb24sIG9yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKKyAgICBkb3VibGUgZGlz
dGFuY2VHYWluID0gZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0ZW5lckRpc3RhbmNlKTsKKyAgICBk
b3VibGUgY29uZUdhaW4gPSBjb25lRWZmZWN0LmdhaW4oc291cmNlUG9zaXRpb24sIG9yaWVudGF0
aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKIAogICAgIHJldHVybiBmbG9hdChkaXN0YW5jZUdhaW4g
KiBjb25lR2Fpbik7CiB9CkBAIC01MzAsOCArNTUzLDkgQEAgZmxvYXQgUGFubmVyTm9kZTo6Y2Fs
Y3VsYXRlRGlzdGFuY2VDb25lR2Fpbihjb25zdCBGbG9hdFBvaW50M0QmIHNvdXJjZVBvc2l0aW9u
LAogZmxvYXQgUGFubmVyTm9kZTo6ZGlzdGFuY2VDb25lR2FpbigpCiB7CiAgICAgQVNTRVJUKGNv
bnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwotCi0gICAgcmV0dXJuIGNhbGN1bGF0ZURpc3RhbmNl
Q29uZUdhaW4ocG9zaXRpb24oKSwgb3JpZW50YXRpb24oKSwgbGlzdGVuZXIoKS5wb3NpdGlvbigp
KTsKKyAgICBpZiAoIW1fY2FjaGVkQ29uZUdhaW4pCisgICAgICAgIG1fY2FjaGVkQ29uZUdhaW4g
PSBjYWxjdWxhdGVEaXN0YW5jZUNvbmVHYWluKHBvc2l0aW9uKCksIG9yaWVudGF0aW9uKCksIGxp
c3RlbmVyKCkucG9zaXRpb24oKSwgbV9kaXN0YW5jZUVmZmVjdCwgbV9jb25lRWZmZWN0KTsKKyAg
ICByZXR1cm4gKm1fY2FjaGVkQ29uZUdhaW47CiB9CiAKIGRvdWJsZSBQYW5uZXJOb2RlOjp0YWls
VGltZSgpIGNvbnN0CkBAIC01NTAsNiArNTc0LDIxIEBAIGRvdWJsZSBQYW5uZXJOb2RlOjpsYXRl
bmN5VGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPmxhdGVuY3lU
aW1lKCkgOiAwOwogfQogCit2b2lkIFBhbm5lck5vZGU6OmludmFsaWRhdGVDYWNoZWRQcm9wZXJ0
aWVzSWZOZWNlc3NhcnkoKQoreworICAgIGF1dG8gbGFzdFBvc2l0aW9uID0gc3RkOjpleGNoYW5n
ZShtX2xhc3RQb3NpdGlvbiwgcG9zaXRpb24oKSk7CisgICAgYm9vbCBoYXNQb3NpdGlvbkNoYW5n
ZWQgPSBtX2xhc3RQb3NpdGlvbiAhPSBsYXN0UG9zaXRpb247CisgICAgYXV0byBsYXN0T3JpZW50
YXRpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fbGFzdE9yaWVudGF0aW9uLCBwb3NpdGlvbigpKTsKKyAg
ICBib29sIGhhc09yaWVudGF0aW9uQ2hhbmdlZCA9IG1fbGFzdE9yaWVudGF0aW9uICE9IGxhc3RP
cmllbnRhdGlvbjsKKyAgICBhdXRvJiBsaXN0ZW5lciA9IHRoaXMtPmxpc3RlbmVyKCk7CisKKyAg
ICBpZiAoaGFzUG9zaXRpb25DaGFuZ2VkIHx8IGxpc3RlbmVyLmlzUG9zaXRpb25EaXJ0eSgpIHx8
IGxpc3RlbmVyLmlzT3JpZW50YXRpb25EaXJ0eSgpIHx8IGxpc3RlbmVyLmlzVXBWZWN0b3JEaXJ0
eSgpKQorICAgICAgICBtX2NhY2hlZEF6aW11dGhFbGV2YXRpb24gPSBzdGQ6Om51bGxvcHQ7CisK
KyAgICBpZiAoaGFzUG9zaXRpb25DaGFuZ2VkIHx8IGhhc09yaWVudGF0aW9uQ2hhbmdlZCB8fCBs
aXN0ZW5lci5pc1Bvc2l0aW9uRGlydHkoKSkKKyAgICAgICAgbV9jYWNoZWRDb25lR2FpbiA9IHN0
ZDo6bnVsbG9wdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGFubmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmgKaW5kZXggZGQzOTRlZjJhMGQ3MWNkMTZmMzYzNWM1YmNmNzQ4NTk5MTRiMjM4ZC4uYzU1
M2Y5NWYwZDliOGM0NTBjMDA4MTI1MzMzZTRjMDZkMDhhZWNlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAgLTExMywxNSArMTEzLDIxIEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgUGFubmVyTm9kZShCYXNlQXVkaW9Db250ZXh0JiwgY29uc3Qg
UGFubmVyT3B0aW9ucyYpOwogCi0gICAgdm9pZCBjYWxjdWxhdGVBemltdXRoRWxldmF0aW9uKGRv
dWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQz
RCYgcG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQzRCYgbGlzdGVuZXJQb3NpdGlvbiwgY29uc3Qg
RmxvYXRQb2ludDNEJiBsaXN0ZW5lckZvcndhcmQsIGNvbnN0IEZsb2F0UG9pbnQzRCYgbGlzdGVu
ZXJVcCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9wcm9jZXNzTG9jayk7Ci0gICAgZmxvYXQgY2FsY3Vs
YXRlRGlzdGFuY2VDb25lR2Fpbihjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uLCBjb25zdCBG
bG9hdFBvaW50M0QmIG9yaWVudGF0aW9uLCBjb25zdCBGbG9hdFBvaW50M0QmIGxpc3RlbmVyUG9z
aXRpb24pIFdURl9SRVFVSVJFU19MT0NLKG1fcHJvY2Vzc0xvY2spOworICAgIHN0cnVjdCBBemlt
dXRoRWxldmF0aW9uIHsKKyAgICAgICAgZG91YmxlIGF6aW11dGggeyAwLiB9OworICAgICAgICBk
b3VibGUgZWxldmF0aW9uIHsgMC4gfTsKKyAgICB9OworICAgIHN0YXRpYyBBemltdXRoRWxldmF0
aW9uIGNhbGN1bGF0ZUF6aW11dGhFbGV2YXRpb24oY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlv
biwgY29uc3QgRmxvYXRQb2ludDNEJiBsaXN0ZW5lclBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50
M0QmIGxpc3RlbmVyRm9yd2FyZCwgY29uc3QgRmxvYXRQb2ludDNEJiBsaXN0ZW5lclVwKTsKKyAg
ICBzdGF0aWMgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2VDb25lR2Fpbihjb25zdCBGbG9hdFBvaW50
M0QmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWVudGF0aW9uLCBjb25zdCBGbG9h
dFBvaW50M0QmIGxpc3RlbmVyUG9zaXRpb24sIGNvbnN0IERpc3RhbmNlRWZmZWN0JiwgY29uc3Qg
Q29uZUVmZmVjdCYpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5k
IGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4KICAgICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCkgV1RG
X1JFUVVJUkVTX0xPQ0sobV9wcm9jZXNzTG9jayk7CiAKICAgICBib29sIHJlcXVpcmVzVGFpbFBy
b2Nlc3NpbmcoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgYXppbXV0aEVsZXZhdGlvbihkb3Vi
bGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKSBXVEZfUkVRVUlSRVNfTE9DSyht
X3Byb2Nlc3NMb2NrKTsKKyAgICB2b2lkIGludmFsaWRhdGVDYWNoZWRQcm9wZXJ0aWVzSWZOZWNl
c3NhcnkoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX3Byb2Nlc3NMb2NrKTsKKworICAgIGNvbnN0IEF6
aW11dGhFbGV2YXRpb24mIGF6aW11dGhFbGV2YXRpb24oKSBXVEZfUkVRVUlSRVNfTE9DSyhtX3By
b2Nlc3NMb2NrKTsKICAgICB2b2lkIHByb2Nlc3NTYW1wbGVBY2N1cmF0ZVZhbHVlcyhBdWRpb0J1
cyogZGVzdGluYXRpb24sIGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIFdURl9SRVFVSVJFU19MT0NLKG1fcHJvY2Vzc0xvY2spOwogICAgIGJvb2wgaGFzU2Ft
cGxlQWNjdXJhdGVWYWx1ZXMoKSBjb25zdCBXVEZfUkVRVUlSRVNfTE9DSyhtX3Byb2Nlc3NMb2Nr
KTsKICAgICBib29sIHNob3VsZFVzZUFSYXRlKCkgY29uc3QgV1RGX1JFUVVJUkVTX0xPQ0sobV9w
cm9jZXNzTG9jayk7CkBAIC0xNDUsNiArMTUxLDExIEBAIHByaXZhdGU6CiAgICAgUmVmPEF1ZGlv
UGFyYW0+IG1fb3JpZW50YXRpb25ZIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9jZXNzTG9jayk7
CiAgICAgUmVmPEF1ZGlvUGFyYW0+IG1fb3JpZW50YXRpb25aIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9wcm9jZXNzTG9jayk7CiAKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8QXppbXV0aEVsZXZh
dGlvbj4gbV9jYWNoZWRBemltdXRoRWxldmF0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9j
ZXNzTG9jayk7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtX2NhY2hlZENvbmVH
YWluIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9jZXNzTG9jayk7CisgICAgRmxvYXRQb2ludDNE
IG1fbGFzdFBvc2l0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9jZXNzTG9jayk7CisgICAg
RmxvYXRQb2ludDNEIG1fbGFzdE9yaWVudGF0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9wcm9j
ZXNzTG9jayk7CisKICAgICAvLyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgd2l0aCBzZXR0aW5nIG9m
IHRoZSBwYW5uaW5nIG1vZGVsLCBzb3VyY2UncyBsb2NhdGlvbgogICAgIC8vIGluZm9ybWF0aW9u
LCBsaXN0ZW5lciwgZGlzdGFuY2UgcGFyYW1ldGVycyBhbmQgc291bmQgY29uZXMuCiAgICAgbXV0
YWJsZSBMb2NrIG1fcHJvY2Vzc0xvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9Db25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUu
Y3BwCmluZGV4IGY1OTQyZWEwNmQxNGEzM2MyZmI4MWMyNmEzM2RjZGVkYzRlNGZjZGIuLjQzMzE1
OTMxYzdkMDkzNzRmNTk2NjllNDZmOWJlZTNmNGMyYWM0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0NvbmUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogQ29uZUVmZmVjdDo6Q29uZUVmZmVjdCgpID0gZGVmYXVsdDsKIAotZG91YmxlIENvbmVFZmZl
Y3Q6OmdhaW4oRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9uLCBGbG9hdFBvaW50M0Qgc291cmNl
T3JpZW50YXRpb24sIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uKQorZG91YmxlIENvbmVF
ZmZlY3Q6OmdhaW4oRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9uLCBGbG9hdFBvaW50M0Qgc291
cmNlT3JpZW50YXRpb24sIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uKSBjb25zdAogewog
ICAgIGlmIChzb3VyY2VPcmllbnRhdGlvbi5pc1plcm8oKSB8fCAoKG1faW5uZXJBbmdsZSA9PSAz
NjAuMCkgJiYgKG1fb3V0ZXJBbmdsZSA9PSAzNjAuMCkpKQogICAgICAgICByZXR1cm4gMS4wOyAv
LyBubyBjb25lIHNwZWNpZmllZCAtIHVuaXR5IGdhaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0NvbmUuaAppbmRleCBlMWUzOGM2MTc3OGE2MWU4Nzc4ZjM3YzcyOTYzMDgzYmI2OTk3YzRmLi4x
YWRiMjhiMmQ1YmU3MzdiOGMzNDFlNTI1NzI0NjJmMThjYTE5MGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQ29uZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBDb25lRWZm
ZWN0KCk7CiAKICAgICAvLyBSZXR1cm5zIHNjYWxhciBnYWluIGZvciB0aGUgZ2l2ZW4gc291cmNl
L2xpc3RlbmVyIHBvc2l0aW9ucy9vcmllbnRhdGlvbnMKLSAgICBkb3VibGUgZ2FpbihGbG9hdFBv
aW50M0Qgc291cmNlUG9zaXRpb24sIEZsb2F0UG9pbnQzRCBzb3VyY2VPcmllbnRhdGlvbiwgRmxv
YXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24pOworICAgIGRvdWJsZSBnYWluKEZsb2F0UG9pbnQz
RCBzb3VyY2VQb3NpdGlvbiwgRmxvYXRQb2ludDNEIHNvdXJjZU9yaWVudGF0aW9uLCBGbG9hdFBv
aW50M0QgbGlzdGVuZXJQb3NpdGlvbikgY29uc3Q7CiAKICAgICAvLyBBbmdsZXMgaW4gZGVncmVl
cwogICAgIHZvaWQgc2V0SW5uZXJBbmdsZShkb3VibGUgaW5uZXJBbmdsZSkgeyBtX2lubmVyQW5n
bGUgPSBpbm5lckFuZ2xlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EaXN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5j
ZS5jcHAKaW5kZXggYWY5YjRkYzg5MDUzZjk5NmM0OTAxNjQzNDllY2NlNzA5NzFjZTFhNC4uOTAz
Y2VhZjY1M2Q4YjQ4OTYwYTBlZmJkZGVkOWZmZTRkNjcwYTUzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIERpc3RhbmNlRWZmZWN0OjpEaXN0YW5jZUVmZmVjdCgpID0gZGVmYXVsdDsK
IAotZG91YmxlIERpc3RhbmNlRWZmZWN0OjpnYWluKGRvdWJsZSBkaXN0YW5jZSkKK2RvdWJsZSBE
aXN0YW5jZUVmZmVjdDo6Z2Fpbihkb3VibGUgZGlzdGFuY2UpIGNvbnN0CiB7CiAgICAgLy8gZG9u
J3QgZ28gYmV5b25kIG1heGltdW0gZGlzdGFuY2UKICAgICBkaXN0YW5jZSA9IHN0ZDo6bWluKGRp
c3RhbmNlLCBtX21heERpc3RhbmNlKTsKQEAgLTYwLDcgKzYwLDcgQEAgZG91YmxlIERpc3RhbmNl
RWZmZWN0OjpnYWluKGRvdWJsZSBkaXN0YW5jZSkKICAgICByZXR1cm4gMC4wOwogfQogCi1kb3Vi
bGUgRGlzdGFuY2VFZmZlY3Q6OmxpbmVhckdhaW4oZG91YmxlIGRpc3RhbmNlKQorZG91YmxlIERp
c3RhbmNlRWZmZWN0OjpsaW5lYXJHYWluKGRvdWJsZSBkaXN0YW5jZSkgY29uc3QKIHsKICAgICBh
dXRvIGNsYW1wZWRSb2xsb2ZmRmFjdG9yID0gc3RkOjpjbGFtcChtX3JvbGxvZmZGYWN0b3IsIDAu
MCwgMS4wKTsKICAgICAvLyBXZSB3YW50IGEgZ2FpbiB0aGF0IGRlY3JlYXNlcyBsaW5lYXJseSBm
cm9tIG1fcmVmRGlzdGFuY2UgdG8KQEAgLTY4LDEyICs2OCwxMiBAQCBkb3VibGUgRGlzdGFuY2VF
ZmZlY3Q6OmxpbmVhckdhaW4oZG91YmxlIGRpc3RhbmNlKQogICAgIHJldHVybiAoMS4wIC0gY2xh
bXBlZFJvbGxvZmZGYWN0b3IgKiAoZGlzdGFuY2UgLSBtX3JlZkRpc3RhbmNlKSAvIChtX21heERp
c3RhbmNlIC0gbV9yZWZEaXN0YW5jZSkpOwogfQogCi1kb3VibGUgRGlzdGFuY2VFZmZlY3Q6Omlu
dmVyc2VHYWluKGRvdWJsZSBkaXN0YW5jZSkKK2RvdWJsZSBEaXN0YW5jZUVmZmVjdDo6aW52ZXJz
ZUdhaW4oZG91YmxlIGRpc3RhbmNlKSBjb25zdAogewogICAgIHJldHVybiBtX3JlZkRpc3RhbmNl
IC8gKG1fcmVmRGlzdGFuY2UgKyBtX3JvbGxvZmZGYWN0b3IgKiAoZGlzdGFuY2UgLSBtX3JlZkRp
c3RhbmNlKSk7CiB9CiAKLWRvdWJsZSBEaXN0YW5jZUVmZmVjdDo6ZXhwb25lbnRpYWxHYWluKGRv
dWJsZSBkaXN0YW5jZSkKK2RvdWJsZSBEaXN0YW5jZUVmZmVjdDo6ZXhwb25lbnRpYWxHYWluKGRv
dWJsZSBkaXN0YW5jZSkgY29uc3QKIHsKICAgICByZXR1cm4gcG93KGRpc3RhbmNlIC8gbV9yZWZE
aXN0YW5jZSwgLW1fcm9sbG9mZkZhY3Rvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRGlzdGFuY2UuaAppbmRleCBhMzdiYjBhNjg2OGZjMTQzZTk3Y2MzNjdmZjgzNDI3ZThmNmEx
ODgzLi43ZjNhMDAwNjAwOGYzMGJmNDE3MzdlZmY0YzI5YmFjMjdmNDNiNmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgIERpc3RhbmNlRWZmZWN0KCk7CiAKICAgICAvLyBSZXR1cm5zIHNjYWxhciBnYWluIGZv
ciB0aGUgZ2l2ZW4gZGlzdGFuY2UgdGhlIGN1cnJlbnQgZGlzdGFuY2UgbW9kZWwgaXMgdXNlZAot
ICAgIGRvdWJsZSBnYWluKGRvdWJsZSBkaXN0YW5jZSk7CisgICAgZG91YmxlIGdhaW4oZG91Ymxl
IGRpc3RhbmNlKSBjb25zdDsKIAogICAgIERpc3RhbmNlTW9kZWxUeXBlIG1vZGVsKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2RlbDsgfQogCkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICBkb3Vi
bGUgcm9sbG9mZkZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9sbG9mZkZhY3RvcjsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgZG91YmxlIGxpbmVhckdhaW4oZG91YmxlIGRpc3RhbmNlKTsKLSAgICBk
b3VibGUgaW52ZXJzZUdhaW4oZG91YmxlIGRpc3RhbmNlKTsKLSAgICBkb3VibGUgZXhwb25lbnRp
YWxHYWluKGRvdWJsZSBkaXN0YW5jZSk7CisgICAgZG91YmxlIGxpbmVhckdhaW4oZG91YmxlIGRp
c3RhbmNlKSBjb25zdDsKKyAgICBkb3VibGUgaW52ZXJzZUdhaW4oZG91YmxlIGRpc3RhbmNlKSBj
b25zdDsKKyAgICBkb3VibGUgZXhwb25lbnRpYWxHYWluKGRvdWJsZSBkaXN0YW5jZSkgY29uc3Q7
CiAKICAgICBEaXN0YW5jZU1vZGVsVHlwZSBtX21vZGVsIHsgRGlzdGFuY2VNb2RlbFR5cGU6Oklu
dmVyc2UgfTsKICAgICBib29sIG1faXNDbGFtcGVkIHsgdHJ1ZSB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>