<?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>222187</bug_id>
          
          <creation_ts>2021-02-19 12:14:24 -0800</creation_ts>
          <short_desc>REGRESSION(iOS 14): Author shadow DOM invalidated unnecessarily on pseudo element change</short_desc>
          <delta_ts>2021-05-27 06:56:41 -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>CSS</component>
          <version>Safari 14</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>225187</dependson>
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Liam DeBeasi">ldebeasi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>emilio</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonesr</cc>
    
    <cc>koivisto</cc>
    
    <cc>marc</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731500</commentid>
    <comment_count>0</comment_count>
      <attachid>421007</attachid>
    <who name="Liam DeBeasi">ldebeasi</who>
    <bug_when>2021-02-19 12:14:24 -0800</bug_when>
    <thetext>Created attachment 421007
Code Reproduction

When using Web Components inside of the Shadow DOM that have CSS Variables set on the host, there is a significant delay in response to clicks/touches. It seems to be related to the number of instances of the component as well as the number of CSS Variables set on the host.

I am only able to reproduce this on iOS 14.0+. This performance issue does not appear on earlier versions of iOS. I can also reproduce this on Safari 14 on macOS, but it is a bit easier to reproduce on iOS.

Steps to reproduce:

1. Open code reproduction on an iOS device running iOS 14.
2. Tap the &quot;Click Me&quot; checkbox label. Notice that there is a delay between when the tap highlight appears and when the checkbox becomes checked.

Repeat this process on a device running iOS 13 and you should notice that this delay does not occur.

Additional Information:

- I can reproduce this on STP 120 as well as iOS 14.5.
- I cannot reproduce this in Chrome 88.
- I took a Timeline sample and it appears that WebKit is spending significant amounts of time doing Style Recalculations whenever you try to check the checkbox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732072</commentid>
    <comment_count>1</comment_count>
    <who name="">marc</who>
    <bug_when>2021-02-22 02:34:56 -0800</bug_when>
    <thetext>I can confirm that I can reproduce this too, it is causing a lot of headaches for us and our product becomes unusable because of it. Please can this be addressed ASAP?

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732302</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-22 14:18:01 -0800</bug_when>
    <thetext>Could you clarify the impact of this performance problem? Is it affecting a top website in UK? Is it affecting some major business operation? Any information regarding how much of a wide impact this bug has will help us prioritize it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732461</commentid>
    <comment_count>3</comment_count>
    <who name="">marc</who>
    <bug_when>2021-02-23 01:02:22 -0800</bug_when>
    <thetext>We have 5 iOS apps that this is affecting. We&apos;ve only had a few complaints so far, but as more people update their devices this issue is going to become a bit of a show stopper for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732630</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-23 11:36:45 -0800</bug_when>
    <thetext>(In reply to marc from comment #3)
&gt; We have 5 iOS apps that this is affecting. We&apos;ve only had a few complaints
&gt; so far, but as more people update their devices this issue is going to
&gt; become a bit of a show stopper for us.

Ah, didn&apos;t notice this was a iOS 14 regression. Would you be able to share which iOS apps they&apos;re?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732802</commentid>
    <comment_count>5</comment_count>
    <who name="">marc</who>
    <bug_when>2021-02-24 01:05:40 -0800</bug_when>
    <thetext>Sure:

https://apps.apple.com/gb/app/easybop-contracts/id1535194271

https://apps.apple.com/gb/app/easybop-smartforms/id1251453661

https://apps.apple.com/gb/app/planned-works-admin/id1373831653

https://apps.apple.com/gb/app/easybop-virtual-yard/id1471993245

https://apps.apple.com/gb/app/planned-works-financial/id1420108487</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733911</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-26 12:15:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/74801314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736214</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-05 00:57:41 -0800</bug_when>
    <thetext>The test case has lots of custom element instances (some 6000) that each have a :host rule with a bunch of variable declarations. For some (immediately non-obvious) reason the button click causes a full style recalc on all shadow trees. That takes a while due to large number of style scopes as well as our suboptimal variables implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736217</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-05 00:58:29 -0800</bug_when>
    <thetext>If there is a regression here it is probably in style invalidation as a result of the checkbox click.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736227</commentid>
    <comment_count>9</comment_count>
    <who name="">marc</who>
    <bug_when>2021-03-05 01:12:49 -0800</bug_when>
    <thetext>Personally, I&apos;m not sure whether this is limited to click events. For the reason that the more and more elements you add, the slower scrolling and re-draws become. If you do a hard scroll down the page, all you see is the background colour and then the components appear after some time. This, as well as the click event issue, becomes worse as you increase the number of items on the page. Unless the click event is somehow causing that too.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736254</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-05 01:57:36 -0800</bug_when>
    <thetext>Yes, anything that triggers a style recalc is going to be slow with this content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736257</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-05 01:59:44 -0800</bug_when>
    <thetext>We really should implement shared style resolver for shadow trees with identical style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739333</commentid>
    <comment_count>12</comment_count>
    <who name="">marc</who>
    <bug_when>2021-03-15 02:12:44 -0700</bug_when>
    <thetext>Hi all,

I was wondering if there has been any movement on this issue? We are getting more and more reports of it as clients update to 14.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756505</commentid>
    <comment_count>13</comment_count>
      <attachid>427654</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-04 05:58:11 -0700</bug_when>
    <thetext>Created attachment 427654
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756508</commentid>
    <comment_count>14</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-04 06:05:48 -0700</bug_when>
    <thetext>The issue is that hovering the element causes us to invalidate the entire shadow tree style. Since everything here is in a shadow tree that&apos;s a big invalidation. 

The invalidation is triggered by the UA stylesheet having some :hover rules targeting pseudo elements in UA shadow tree. This should not require invalidation except for those specific elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756573</commentid>
    <comment_count>15</comment_count>
      <attachid>427681</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-04 10:11:41 -0700</bug_when>
    <thetext>Created attachment 427681
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756600</commentid>
    <comment_count>16</comment_count>
      <attachid>427688</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-04 11:09:20 -0700</bug_when>
    <thetext>Created attachment 427688
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756663</commentid>
    <comment_count>17</comment_count>
      <attachid>427688</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-04 13:59:17 -0700</bug_when>
    <thetext>Comment on attachment 427688
patch

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

&gt; LayoutTests/fast/shadow-dom/shadow-style-invalidation-pseudo-element.html:1
&gt; +&lt;script src=&quot;../../resources/testharness.js&quot;&gt;&lt;/script&gt;

Missing DOCTYPE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756796</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-04 21:38:26 -0700</bug_when>
    <thetext>Committed r277001 (237321@main): &lt;https://commits.webkit.org/237321@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427688.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764175</commentid>
    <comment_count>19</comment_count>
    <who name="Liam DeBeasi">ldebeasi</who>
    <bug_when>2021-05-26 19:27:03 -0700</bug_when>
    <thetext>I am testing this in STP 125 and it is better, but I can still reproduce the issue in other ways. If you try out my code reproduction and click the &quot;Click Me&quot; label (not the checkbox) multiple times rapidly you should see a slowdown again. Should I open another issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764227</commentid>
    <comment_count>20</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-26 23:03:40 -0700</bug_when>
    <thetext>Please file a new bug, especially if it is worse than other browsers. 

The content here is inherently heavy though (some 6000 shadow trees with dozens of variables each).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764243</commentid>
    <comment_count>21</comment_count>
    <who name="">marc</who>
    <bug_when>2021-05-27 01:10:55 -0700</bug_when>
    <thetext>@Antti, I would disagree that Liam should be raise a new bug, as the reported issue still exists, it&apos;s just slightly better than it was. So I would say that this issue is only partially fixed. We&apos;ve already waited over 2 months for someone to look into this, are we going to have to wait another 2 months if another bug is raised?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764318</commentid>
    <comment_count>22</comment_count>
    <who name="Liam DeBeasi">ldebeasi</who>
    <bug_when>2021-05-27 06:56:41 -0700</bug_when>
    <thetext>I filed a new bug: https://bugs.webkit.org/show_bug.cgi?id=226330

Code example is the same, but steps to reproduce are slightly different. Let me know if you have questions. I appreciate all the work you have put into this so far!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>421007</attachid>
            <date>2021-02-19 12:14:24 -0800</date>
            <delta_ts>2021-02-19 12:14:24 -0800</delta_ts>
            <desc>Code Reproduction</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>2845</size>
            <attacher name="Liam DeBeasi">ldebeasi</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlNoYWRvdyBUZXN0PC90
aXRsZT4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lk
dGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtaW5pbXVtLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0x
LjAsIHVzZXItc2NhbGFibGU9bm8iPgogIDwvaGVhZD4KCjxib2R5PgogIDxhcHAtY29udGVudCBj
bGFzcz0iY29udGVudCI+PC9hcHAtY29udGVudD4KCiAgPHNjcmlwdD4KICBjbGFzcyBBcHBDb250
ZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHN1cGVy
KCk7CiAgICAgIAogICAgICB0aGlzCiAgICAgICAgLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVu
JyB9KQogICAgICAgIC5pbm5lckhUTUwgPSBgPHNsb3Q+PC9zbG90PmA7ICAgCiAgICB9CiAgfQog
IAogIGNsYXNzIEFwcEl0ZW0gZXh0ZW5kcyBIVE1MRWxlbWVudCB7CiAgICBjb25zdHJ1Y3Rvcigp
IHsKICAgICAgc3VwZXIoKTsKCiAgICAgIHRoaXMKICAgICAgICAuYXR0YWNoU2hhZG93KHsgbW9k
ZTogJ29wZW4nIH0pCiAgICAgICAgLmlubmVySFRNTCA9IGAKICAgICAgICA8c3R5bGU+CiAgICAg
ICAgOmhvc3QgewogICAgICAgICAgLS1teS12YXItYTogMHB4OwogICAgICAgICAgLS1teS12YXIt
YjogMHB4OwogICAgICAgICAgLS1teS12YXItYzogMHB4OwogICAgICAgICAgLS1teS12YXItZDog
MHB4OwogICAgICAgICAgLS1teS12YXItZTogMHB4OwogICAgICAgICAgLS1teS12YXItZjogMHB4
OwogICAgICAgICAgLS1teS12YXItZzogMHB4OwogICAgICAgICAgLS1teS12YXItaDogMHB4Owog
ICAgICAgICAgLS1teS12YXItaTogMHB4OwogICAgICAgICAgLS1teS12YXItajogMHB4OwogICAg
ICAgICAgLS1teS12YXItazogMHB4OwogICAgICAgICAgLS1teS12YXItbDogMHB4OwogICAgICAg
ICAgLS1teS12YXItbTogMHB4OwogICAgICAgICAgLS1teS12YXItbjogMHB4OwogICAgICAgICAg
LS1teS12YXItbzogMHB4OwogICAgICAgICAgLS1teS12YXItcDogMHB4OwogICAgICAgICAgLS1t
eS12YXItcTogMHB4OwogICAgICAgICAgLS1teS12YXItcjogMHB4OwogICAgICAgICAgLS1teS12
YXItczogMHB4OwogICAgICAgICAgLS1teS12YXItdDogMHB4OwogICAgICAgICAgLS1teS12YXIt
dTogMHB4OwogICAgICAgICAgLS1teS12YXItdjogMHB4OwogICAgICAgICAgLS1teS12YXItdzog
MHB4OwogICAgICAgICAgLS1teS12YXIteDogMHB4OwogICAgICAgICAgLS1teS12YXIteTogMHB4
OwogICAgICAgICAgLS1teS12YXItejogMHB4OwogICAgICAgIH0KICAgICAgICA8L3N0eWxlPgog
ICAgICAgIDxzbG90Pjwvc2xvdD5gOyAgIAogICAgfQogIH0KCiAgCiAgY3VzdG9tRWxlbWVudHMu
ZGVmaW5lKCdhcHAtY29udGVudCcsIEFwcENvbnRlbnQpOwogIGN1c3RvbUVsZW1lbnRzLmRlZmlu
ZSgnYXBwLWl0ZW0nLCBBcHBJdGVtKTsKICAKICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignLmNvbnRlbnQnKTsKICBsZXQgdGVtcGxhdGUgPSBgCiAgPGxhYmVsIGZvcj0i
bXktY2hlY2tib3giPkNsaWNrIE1lPC9sYWJlbD4KICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlk
PSJteS1jaGVja2JveCIgLz4gPGJyIC8+CiAgYDsKCiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNTA7
IGkrKykgewogICAgdGVtcGxhdGUgKz0gYAogICAgPGFwcC1pdGVtPjwvYXBwLWl0ZW0+CiAgICA8
YXBwLWl0ZW0+PC9hcHAtaXRlbT4KICAgIDxhcHAtaXRlbT48L2FwcC1pdGVtPgogICAgPGFwcC1p
dGVtPjwvYXBwLWl0ZW0+CiAgICA8YXBwLWl0ZW0+PC9hcHAtaXRlbT4KICAgIDxhcHAtaXRlbT48
L2FwcC1pdGVtPgogICAgPGFwcC1pdGVtPjwvYXBwLWl0ZW0+CiAgICA8YXBwLWl0ZW0+PC9hcHAt
aXRlbT4KICAgIDxhcHAtaXRlbT48L2FwcC1pdGVtPgogICAgPGFwcC1pdGVtPjwvYXBwLWl0ZW0+
CiAgICA8YXBwLWl0ZW0+PC9hcHAtaXRlbT4KICAgIDxhcHAtaXRlbT48L2FwcC1pdGVtPgogICAg
PGFwcC1pdGVtPjwvYXBwLWl0ZW0+CiAgICA8YXBwLWl0ZW0+PC9hcHAtaXRlbT4KICAgIDxhcHAt
aXRlbT48L2FwcC1pdGVtPgogICAgPGFwcC1pdGVtPjwvYXBwLWl0ZW0+CiAgICA8YXBwLWl0ZW0+
PC9hcHAtaXRlbT4KICAgIDxhcHAtaXRlbT48L2FwcC1pdGVtPgogICAgPGFwcC1pdGVtPjwvYXBw
LWl0ZW0+CiAgICA8YXBwLWl0ZW0+PC9hcHAtaXRlbT4KICAgIDxhcHAtaXRlbT48L2FwcC1pdGVt
PgogICAgPGFwcC1pdGVtPjwvYXBwLWl0ZW0+CiAgICA8YXBwLWl0ZW0+PC9hcHAtaXRlbT4KICAg
IDxhcHAtaXRlbT48L2FwcC1pdGVtPgogICAgPGFwcC1pdGVtPjwvYXBwLWl0ZW0+CiAgICA8YXBw
LWl0ZW0+PC9hcHAtaXRlbT4KICAgIDxhcHAtaXRlbT48L2FwcC1pdGVtPgogICAgPGFwcC1pdGVt
PjwvYXBwLWl0ZW0+CiAgICA8YXBwLWl0ZW0+PC9hcHAtaXRlbT4KICAgIDxhcHAtaXRlbT48L2Fw
cC1pdGVtPgogICAgPGFwcC1pdGVtPjwvYXBwLWl0ZW0+CiAgICA8YXBwLWl0ZW0+PC9hcHAtaXRl
bT4KICAgIDxhcHAtaXRlbT48L2FwcC1pdGVtPgogICAgPGFwcC1pdGVtPjwvYXBwLWl0ZW0+CiAg
ICA8YXBwLWl0ZW0+PC9hcHAtaXRlbT4KICAgIDxhcHAtaXRlbT48L2FwcC1pdGVtPgogICAgPGFw
cC1pdGVtPjwvYXBwLWl0ZW0+CiAgICA8YXBwLWl0ZW0+PC9hcHAtaXRlbT4KICAgIDxhcHAtaXRl
bT48L2FwcC1pdGVtPgogICAgPGFwcC1pdGVtPjwvYXBwLWl0ZW0+CmA7CiAgfQoKICBjb250ZW50
LmlubmVySFRNTCA9IHRlbXBsYXRlOwogIDwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427654</attachid>
            <date>2021-05-04 05:58:11 -0700</date>
            <delta_ts>2021-05-04 10:11:41 -0700</delta_ts>
            <desc>wip</desc>
            <filename>shadow-pseudo-invalidation.patch</filename>
            <type>text/plain</type>
            <size>6568</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAppbmRleCBl
MTgwY2NkZmE5ZjYuLjA1ZTI4NDNkYzFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgRWxlbWVudFJ1
bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhjb25z
dCBNYXRjaFJlCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIC8vIEZYSU1FOiBXZWJWVFQgc2hvdWxk
IG5vdCBiZSBkb25lIGJ5IHN0eWxpbmcgVUEgc2hhZG93IHRyZWVzIGxpa2UgdGhpcy4KICAgICBp
ZiAoZWxlbWVudCgpLmlzV2ViVlRURWxlbWVudCgpKQotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QocnVsZXMuY3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0KTsKKyAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KCZydWxlcy5jdWVQc2V1ZG9SdWxlcygpLCBt
YXRjaFJlcXVlc3QpOwogI2VuZGlmCiAgICAgYXV0byYgcHNldWRvSWQgPSBlbGVtZW50KCkuc2hh
ZG93UHNldWRvSWQoKTsKICAgICBpZiAoIXBzZXVkb0lkLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZVNldC5jcHAKaW5kZXggNmRkNGU4ODhmZGQ4Li42MjU4Y2Q2NDRmZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVTZXQuY3BwCkBAIC00NjksMTcgKzQ2OSw2IEBAIFJ1bGVTZXQ6OkNvbGxlY3RlZE1l
ZGlhUXVlcnlDaGFuZ2VzIFJ1bGVTZXQ6OmV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyhj
b25zCiAgICAgcmV0dXJuIGNvbGxlY3RlZENoYW5nZXM7CiB9CiAKLWJvb2wgUnVsZVNldDo6aGFz
U2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fc2hhZG93UHNl
dWRvRWxlbWVudFJ1bGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jaWYgRU5B
QkxFKFZJREVPKQotICAgIGlmICghbV9jdWVQc2V1ZG9SdWxlcy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW5s
aW5lIHZvaWQgc2hyaW5rTWFwVmVjdG9yc1RvRml0KFJ1bGVTZXQ6OkF0b21SdWxlTWFwJiBtYXAp
CiB7CiAgICAgZm9yIChhdXRvJiB2ZWN0b3IgOiBtYXAudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
U2V0LmgKaW5kZXggMGNiODZkYjI3YTE1Li5kYzkyMjQyMTYxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
U2V0LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUnVsZURhdGFWZWN0
b3IqIHNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhjb25zdCBBdG9tU3RyaW5nJiBrZXkpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhZG93UHNldWRvRWxlbWVudFJ1bGVzLmdldChrZXkpOyB9CiAgICAgY29u
c3QgUnVsZURhdGFWZWN0b3IqIGxpbmtQc2V1ZG9DbGFzc1J1bGVzKCkgY29uc3QgeyByZXR1cm4g
Jm1fbGlua1BzZXVkb0NsYXNzUnVsZXM7IH0KICNpZiBFTkFCTEUoVklERU8pCi0gICAgY29uc3Qg
UnVsZURhdGFWZWN0b3IqIGN1ZVBzZXVkb1J1bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fY3VlUHNl
dWRvUnVsZXM7IH0KKyAgICBjb25zdCBSdWxlRGF0YVZlY3RvciYgY3VlUHNldWRvUnVsZXMoKSBj
b25zdCB7IHJldHVybiBtX2N1ZVBzZXVkb1J1bGVzOyB9CiAjZW5kaWYKICAgICBjb25zdCBSdWxl
RGF0YVZlY3RvciYgaG9zdFBzZXVkb0NsYXNzUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2hvc3RQ
c2V1ZG9DbGFzc1J1bGVzOyB9CiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3ImIHNsb3R0ZWRQc2V1
ZG9FbGVtZW50UnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3Nsb3R0ZWRQc2V1ZG9FbGVtZW50UnVs
ZXM7IH0KQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBydWxlQ291
bnQoKSBjb25zdCB7IHJldHVybiBtX3J1bGVDb3VudDsgfQogCi0gICAgYm9vbCBoYXNTaGFkb3dQ
c2V1ZG9FbGVtZW50UnVsZXMoKSBjb25zdDsKKyAgICBib29sIGhhc1NoYWRvd1BzZXVkb0VsZW1l
bnRSdWxlcygpIGNvbnN0IHsgcmV0dXJuICFtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcy5pc0Vt
cHR5KCk7IH0KICAgICBib29sIGhhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRv
d1RyZWUoKSBjb25zdCB7IHJldHVybiBtX2hhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJ
blNoYWRvd1RyZWU7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUludmFsaWRhdGlvbkZ1bmN0aW9ucy5oCmluZGV4IGYwYzg1YmZlMDMzZS4uNzJkYmIzMDgy
NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdGlvbkZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0aW9uRnVu
Y3Rpb25zLmgKQEAgLTY1LDggKzY1LDE0IEBAIGlubGluZSB2b2lkIHRyYXZlcnNlUnVsZUZlYXR1
cmVzKEVsZW1lbnQmIGVsZW1lbnQsIFRyYXZlcnNlRnVuY3Rpb24mJiBmdW5jdGlvbikKICAgICBh
dXRvJiBydWxlU2V0cyA9IGVsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCk7CiAKICAg
ICBhdXRvIG1heUFmZmVjdFNoYWRvd1RyZWUgPSBbJl0gewotICAgICAgICBpZiAoZWxlbWVudC5z
aGFkb3dSb290KCkgJiYgcnVsZVNldHMuYXV0aG9yU3R5bGUoKS5oYXNTaGFkb3dQc2V1ZG9FbGVt
ZW50UnVsZXMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoZWxlbWVu
dC5zaGFkb3dSb290KCkgJiYgZWxlbWVudC5zaGFkb3dSb290KCktPmlzVXNlckFnZW50U2hhZG93
Um9vdCgpKSB7CisgICAgICAgICAgICBpZiAocnVsZVNldHMuYXV0aG9yU3R5bGUoKS5oYXNTaGFk
b3dQc2V1ZG9FbGVtZW50UnVsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNp
ZiBFTkFCTEUoVklERU8pCisgICAgICAgICAgICBpZiAoZWxlbWVudC5pc01lZGlhRWxlbWVudCgp
ICYmICFydWxlU2V0cy5hdXRob3JTdHlsZSgpLmN1ZVBzZXVkb1J1bGVzKCkuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgICAgIH0KICAgICAgICAg
aWYgKGlzPEhUTUxTbG90RWxlbWVudD4oZWxlbWVudCkgJiYgIXJ1bGVTZXRzLmF1dGhvclN0eWxl
KCkuc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlSW52YWxpZGF0b3IuY3BwCmluZGV4IDdkMzExZWRjOTMwNS4uN2Q4Mzk3MjM2ZjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcApAQCAtMTE3LDYgKzExNywx
MCBAQCBJbnZhbGlkYXRvcjo6UnVsZUluZm9ybWF0aW9uIEludmFsaWRhdG9yOjpjb2xsZWN0UnVs
ZUluZm9ybWF0aW9uKCkKICAgICAgICAgICAgIGluZm9ybWF0aW9uLmhhc0hvc3RQc2V1ZG9DbGFz
c1J1bGVzID0gdHJ1ZTsKICAgICAgICAgaWYgKHJ1bGVTZXQtPmhhc1NoYWRvd1BzZXVkb0VsZW1l
bnRSdWxlcygpKQogICAgICAgICAgICAgaW5mb3JtYXRpb24uaGFzU2hhZG93UHNldWRvRWxlbWVu
dFJ1bGVzID0gdHJ1ZTsKKyNpZiBFTkFCTEUoVklERU8pCisgICAgICAgIGlmICghcnVsZVNldC0+
Y3VlUHNldWRvUnVsZXMoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBpbmZvcm1hdGlvbi5oYXND
dWVQc2V1ZG9FbGVtZW50UnVsZXMgPSB0cnVlOworI2VuZGlmCiAgICAgICAgIGlmICghcnVsZVNl
dC0+cGFydFBzZXVkb0VsZW1lbnRSdWxlcygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGluZm9y
bWF0aW9uLmhhc1BhcnRQc2V1ZG9FbGVtZW50UnVsZXMgPSB0cnVlOwogICAgIH0KQEAgLTMxNSwx
NSArMzE5LDM1IEBAIHZvaWQgSW52YWxpZGF0b3I6OmludmFsaWRhdGVTaGFkb3dQYXJ0cyhTaGFk
b3dSb290JiBzaGFkb3dSb290KQogICAgIH0KIH0KIAordm9pZCBJbnZhbGlkYXRvcjo6aW52YWxp
ZGF0ZVNoYWRvd1BzZXVkb0VsZW1lbnRzKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCit7CisgICAg
aWYgKHNoYWRvd1Jvb3QubW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgZGVzY2VuZGFudCA6IGRlc2NlbmRhbnRzT2ZU
eXBlPEVsZW1lbnQ+KHNoYWRvd1Jvb3QpKSB7CisgICAgICAgIGF1dG8mIHNoYWRvd1BzZXVkb0lk
ID0gZGVzY2VuZGFudC5zaGFkb3dQc2V1ZG9JZCgpOworICAgICAgICBpZiAoIXNoYWRvd1BzZXVk
b0lkKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGZvciAoYXV0byYgcnVsZVNldCA6
IG1fcnVsZVNldHMpIHsKKyAgICAgICAgICAgIGlmIChydWxlU2V0LT5zaGFkb3dQc2V1ZG9FbGVt
ZW50UnVsZXMoc2hhZG93UHNldWRvSWQpKQorICAgICAgICAgICAgICAgIGRlc2NlbmRhbnQuaW52
YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBJbnZh
bGlkYXRvcjo6aW52YWxpZGF0ZUluU2hhZG93VHJlZUlmTmVlZGVkKEVsZW1lbnQmIGVsZW1lbnQp
CiB7CiAgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpOwogICAgIGlm
ICghc2hhZG93Um9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFRoaXMgY291
bGQgZG8gYWN0dWFsIHJ1bGUgbWF0Y2hpbmcgdG9vLgogICAgIGlmIChtX3J1bGVJbmZvcm1hdGlv
bi5oYXNTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMpCisgICAgICAgIGludmFsaWRhdGVTaGFkb3dQ
c2V1ZG9FbGVtZW50cygqc2hhZG93Um9vdCk7CisKKyNpZiBFTkFCTEUoVklERU8pCisgICAgaWYg
KG1fcnVsZUluZm9ybWF0aW9uLmhhc0N1ZVBzZXVkb0VsZW1lbnRSdWxlcyAmJiBlbGVtZW50Lmlz
TWVkaWFFbGVtZW50KCkpCiAgICAgICAgIGVsZW1lbnQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJl
ZUludGVybmFsKCk7CisjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBNb3JlIGZpbmUtZ3JhaW5lZCBp
bnZhbGlkYXRpb24gZm9yIDo6cGFydCgpCiAgICAgaWYgKG1fcnVsZUluZm9ybWF0aW9uLmhhc1Bh
cnRQc2V1ZG9FbGVtZW50UnVsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUludmFsaWRhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9y
LmgKaW5kZXggMTZmODBkZmJlOTc4Li4yYWZiOWEyNTY3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUludmFsaWRhdG9yLmgKQEAgLTcxLDEyICs3MSwxNCBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW52YWxpZGF0ZVN0eWxlRm9yVHJlZShFbGVtZW50JiwgU2VsZWN0b3JGaWx0ZXIqKTsKICAg
ICB2b2lkIGludmFsaWRhdGVTdHlsZUZvckRlc2NlbmRhbnRzKEVsZW1lbnQmLCBTZWxlY3RvckZp
bHRlciopOwogICAgIHZvaWQgaW52YWxpZGF0ZUluU2hhZG93VHJlZUlmTmVlZGVkKEVsZW1lbnQm
KTsKKyAgICB2b2lkIGludmFsaWRhdGVTaGFkb3dQc2V1ZG9FbGVtZW50cyhTaGFkb3dSb290Jik7
CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVXaXRoTWF0Y2hFbGVtZW50KEVsZW1lbnQmLCBNYXRj
aEVsZW1lbnQpOwogCiAgICAgc3RydWN0IFJ1bGVJbmZvcm1hdGlvbiB7CiAgICAgICAgIGJvb2wg
aGFzU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaGFz
SG9zdFBzZXVkb0NsYXNzUnVsZXMgeyBmYWxzZSB9OwogICAgICAgICBib29sIGhhc1NoYWRvd1Bz
ZXVkb0VsZW1lbnRSdWxlcyB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgaGFzQ3VlUHNldWRvRWxl
bWVudFJ1bGVzIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBoYXNQYXJ0UHNldWRvRWxlbWVudFJ1
bGVzIHsgZmFsc2UgfTsKICAgICB9OwogICAgIFJ1bGVJbmZvcm1hdGlvbiBjb2xsZWN0UnVsZUlu
Zm9ybWF0aW9uKCk7Cg==
</data>
<flag name="commit-queue"
          id="448340"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427681</attachid>
            <date>2021-05-04 10:11:41 -0700</date>
            <delta_ts>2021-05-04 11:09:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shadow-pseudo-invalidation-2.patch</filename>
            <type>text/plain</type>
            <size>13337</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZWMzNjc0MDdiMjMuLmExNzJmNGU0ZmMzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTA1LTA0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBSRUdSRVNTSU9OKGlPUyAxNCk6IEF1dGhvciBzaGFkb3cgRE9NIGludmFsaWRhdGVkIHVubmVj
ZXNzYXJpbHkgb24gcHNldWRvIGVsZW1lbnQgY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc0ODAxMzE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1zdHlsZS1pbnZhbGlkYXRpb24tcHNldWRvLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc2hh
ZG93LXN0eWxlLWludmFsaWRhdGlvbi1wc2V1ZG8tZWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAy
MS0wNS0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMjc0NDYxKTogW21hY09TIHdrMV0gZmFzdC9yZXBhaW50L2NhbnZhcy1v
YmplY3QtZml0Lmh0bWwgaXMgZmxha2V5IHRleHQgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1zdHlsZS1pbnZhbGlkYXRpb24tcHNldWRvLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1z
dHlsZS1pbnZhbGlkYXRpb24tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODMwZDg2YjVmNDI3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1zdHlsZS1pbnZhbGlkYXRp
b24tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEF1
dGhvciBzaGFkb3cgdHJlZSBpcyBub3QgaW52YWxpZGF0ZWQgaW4gcHJlc2VuY2Ugb2YgdXNlciBh
Z2VudCBzaGFkb3cgdHJlZSB0YXJnZXRpbmcgcHNldWRvIGVsZW1lbnRzCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zaGFkb3ctc3R5bGUtaW52YWxpZGF0aW9uLXBz
ZXVkby1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2hhZG93LXN0
eWxlLWludmFsaWRhdGlvbi1wc2V1ZG8tZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uYTEzMTZmZDBhYzQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1zdHlsZS1pbnZhbGlkYXRpb24tcHNldWRv
LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorOmZvY3VzIHsgY29s
b3I6IGdyZWVuIH0KKzpmb2N1czo6cGxhY2Vob2xkZXIgeyBjb2xvcjogYmx1ZSB9Cis8L3N0eWxl
PgorCis8ZGl2IGlkPWhvc3QgdGFiaW5kZXg9MT48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBob3N0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKK3ZhciBzaGFkb3cgPSBob3N0LmF0
dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKK3NoYWRvdy5pbm5lckhUTUwgPSBgCisgICAg
PGRpdj5zaGFkb3c8L2Rpdj4KK2A7CisKK3Rlc3QoKCkgPT4geworICAgIGludGVybmFscy51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRSdW5Qb3N0TGF5b3V0VGFza3MoKTsK
KworICAgIGhvc3QuZm9jdXMoKTsKKworICAgIHZhciBkaXYgPSBzaGFkb3cucXVlcnlTZWxlY3Rv
cigiZGl2Iik7CisgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGhv
c3QpLCAiSW5saW5lU3R5bGVDaGFuZ2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5z
dHlsZUNoYW5nZVR5cGUoZGl2KSwgIk5vU3R5bGVDaGFuZ2UiKTsKK30sICJBdXRob3Igc2hhZG93
IHRyZWUgaXMgbm90IGludmFsaWRhdGVkIGluIHByZXNlbmNlIG9mIHVzZXIgYWdlbnQgc2hhZG93
IHRyZWUgdGFyZ2V0aW5nIHBzZXVkbyBlbGVtZW50cyIpOworCis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBjMzU0OTQwYjFhNjMuLjU3Zjg0MTdlMzg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDIxLTA1LTA0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OKGlPUyAxNCk6IEF1dGhvciBzaGFkb3cgRE9NIGludmFsaWRhdGVkIHVu
bmVjZXNzYXJpbHkgb24gcHNldWRvIGVsZW1lbnQgY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxODcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzc0ODAxMzE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgSG92ZXJpbmcgdGhlIGVsZW1lbnQgY2F1c2VzIHVzIHRvIGludmFsaWRh
dGUgdGhlIGVudGlyZSBhdXRob3Igc2hhZG93IHRyZWUgc3R5bGUuCisKKyAgICAgICAgVGhlIGlu
dmFsaWRhdGlvbiBpcyB0cmlnZ2VyZWQgYnkgdGhlIHVzZXIgYWdlbnQgc3R5bGVzaGVldCBoYXZp
bmcgc29tZSA6aG92ZXIgcnVsZXMgdGFyZ2V0aW5nIHBzZXVkbworICAgICAgICBlbGVtZW50cy4g
VGhpcyBzaG91bGQgbm90IHJlcXVpcmUgaW52YWxpZGF0aW9uIGV4Y2VwdCBmb3IgdGhvc2Ugc3Bl
Y2lmaWMgZWxlbWVudHMgYW5kIG9ubHkgZm9yCisgICAgICAgIFVBIHNoYWRvdyB0cmVlcy4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggb3B0aW1pemVzIHRoZSBjYXNlIGFuZCBhdm9pZHMg
dW5uZWNlc3NhcnkgaW52YWxpZGF0aW9ucy4KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1k
b20vc2hhZG93LXN0eWxlLWludmFsaWRhdGlvbi1wc2V1ZG8tZWxlbWVudC5odG1sCisgICAgICAg
IAorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUJsdXJFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjppbnZhbGlkYXRlU3R5bGVPbkZvY3VzQ2hhbmdlSWZOZWVkZWQpOgor
ICAgICAgICAKKyAgICAgICAgSW5wdXQgZWxlbWVudHMgd2l0aCAndGV4dC1vdmVyZmxvdzplbGxp
cHNpcycgKHdoaWNoIGlzIGFmZmVjdGVkIGJ5IGZvY3VzKSB3ZXJlIHJlbHlpbmcKKyAgICAgICAg
b24gc3B1cmlvdXMgaW52YWxpZGF0aW9ucyB0aGF0IHdlIG5vdyBvcHRpbWl6ZSBhd2F5LiBJbnZh
bGlkYXRlIHByb3Blcmx5LgorICAgICAgICAKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1No
YWRvd1BzZXVkb0VsZW1lbnRSdWxlcyk6CisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVy
eVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpoYXNTaGFkb3dQc2V1
ZG9FbGVtZW50UnVsZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgSGFuZGxl
IDo6Y3VlIHNlcGFyYXRlbHkuCisgICAgICAgIAorICAgICAgICAqIHN0eWxlL1J1bGVTZXQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpjdWVQc2V1ZG9SdWxlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6aGFzU2hhZG93UHNldWRvRWxlbWVu
dFJ1bGVzIGNvbnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdGlvbkZ1bmN0aW9u
cy5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnRyYXZlcnNlUnVsZUZlYXR1cmVzKToKKyAg
ICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpJbnZhbGlkYXRvcjo6Y29sbGVjdFJ1bGVJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTaGFkb3dQc2V1ZG9FbGVtZW50cyk6
CisgICAgICAgIAorICAgICAgICBOYXJyb3dseSBpbnZhbGlkYXRlIHVzZXIgYWdlbnQgc2hhZG93
IHRyZWUgcHNldWRvIGVsZW1lbnRzLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZUluU2hhZG93VHJlZUlmTmVlZGVkKToKKyAgICAgICAg
KiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmg6CisKIDIwMjEtMDUtMDQgIERpZWdvIFBpbm8gR2Fy
Y2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggR1RLIGFu
ZCBXUEUgYnVpbGRzIGFmdGVyIHIyNzY5NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IGNlNTE0ZDkzZjM4My4uZjEwMGVmMGY4NTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTUyMCwxMSArNTIwLDE1IEBAIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKQogdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpoYW5kbGVGb2N1c0V2ZW50KE5vZGUqIG9sZEZvY3VzZWROb2RlLCBGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgbV9pbnB1dFR5cGUtPmhhbmRsZUZvY3VzRXZlbnQob2xk
Rm9jdXNlZE5vZGUsIGRpcmVjdGlvbik7CisKKyAgICBpbnZhbGlkYXRlU3R5bGVPbkZvY3VzQ2hh
bmdlSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVCbHVyRXZl
bnQoKQogewogICAgIG1faW5wdXRUeXBlLT5oYW5kbGVCbHVyRXZlbnQoKTsKKworICAgIGludmFs
aWRhdGVTdHlsZU9uRm9jdXNDaGFuZ2VJZk5lZWRlZCgpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKQEAgLTIwMDQsNiArMjAwOCwx
NSBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNob3VsZFRydW5jYXRlVGV4dChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuZm9jdXNlZEVsZW1l
bnQoKSAhPSB0aGlzICYmIHN0eWxlLnRleHRPdmVyZmxvdygpID09IFRleHRPdmVyZmxvdzo6RWxs
aXBzaXM7CiB9CiAKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6aW52YWxpZGF0ZVN0eWxlT25Gb2N1
c0NoYW5nZUlmTmVlZGVkKCkKK3sKKyAgICBpZiAoIWlzVGV4dEZpZWxkKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAvLyBGb2N1cyBjaGFuZ2UgbWF5IGFmZmVjdCB0aGUgcmVzdWx0IG9mIHNob3Vs
ZFRydW5jYXRlVGV4dCgpLgorICAgIGlmIChhdXRvKiBzdHlsZSA9IHJlbmRlclN0eWxlKCk7IHN0
eWxlICYmIHN0eWxlLT50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0T3ZlcmZsb3c6OkVsbGlwc2lzKQor
ICAgICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKK30KKwogRXhjZXB0
aW9uT3I8aW50PiBIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydEZvckJpbmRpbmdzKCkg
Y29uc3QKIHsKICAgICBpZiAoIWNhbkhhdmVTZWxlY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKaW5kZXggYjQyNmE1MjdkYjVlLi5mNjc1ZmI3NjJlZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zMzIsNiArMzMyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CiAKICAgICBib29s
IHNob3VsZFRydW5jYXRlVGV4dChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIHZvaWQg
aW52YWxpZGF0ZVN0eWxlT25Gb2N1c0NoYW5nZUlmTmVlZGVkKCk7CiAKICAgICBFeGNlcHRpb25P
cjxpbnQ+IHNlbGVjdGlvblN0YXJ0Rm9yQmluZGluZ3MoKSBjb25zdDsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRTZWxlY3Rpb25TdGFydEZvckJpbmRpbmdzKGludCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXggZTE4MGNjZGZhOWY2Li4w
NWUyODQzZGMxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxl
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxl
Y3Rvci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpj
b2xsZWN0TWF0Y2hpbmdTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoY29uc3QgTWF0Y2hSZQogI2lm
IEVOQUJMRShWSURFTykKICAgICAvLyBGWElNRTogV2ViVlRUIHNob3VsZCBub3QgYmUgZG9uZSBi
eSBzdHlsaW5nIFVBIHNoYWRvdyB0cmVlcyBsaWtlIHRoaXMuCiAgICAgaWYgKGVsZW1lbnQoKS5p
c1dlYlZUVEVsZW1lbnQoKSkKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1
bGVzLmN1ZVBzZXVkb1J1bGVzKCksIG1hdGNoUmVxdWVzdCk7CisgICAgICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yTGlzdCgmcnVsZXMuY3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0KTsK
ICNlbmRpZgogICAgIGF1dG8mIHBzZXVkb0lkID0gZWxlbWVudCgpLnNoYWRvd1BzZXVkb0lkKCk7
CiAgICAgaWYgKCFwc2V1ZG9JZC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCmlu
ZGV4IDZkZDRlODg4ZmRkOC4uNjI1OGNkNjQ0ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNw
cApAQCAtNDY5LDE3ICs0NjksNiBAQCBSdWxlU2V0OjpDb2xsZWN0ZWRNZWRpYVF1ZXJ5Q2hhbmdl
cyBSdWxlU2V0OjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMoY29ucwogICAgIHJldHVy
biBjb2xsZWN0ZWRDaGFuZ2VzOwogfQogCi1ib29sIFJ1bGVTZXQ6Omhhc1NoYWRvd1BzZXVkb0Vs
ZW1lbnRSdWxlcygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxl
cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2lmIEVOQUJMRShWSURFTykKLSAg
ICBpZiAoIW1fY3VlUHNldWRvUnVsZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSNlbmRpZgotICAgIHJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIGlubGluZSB2b2lkIHNocmlu
a01hcFZlY3RvcnNUb0ZpdChSdWxlU2V0OjpBdG9tUnVsZU1hcCYgbWFwKQogewogICAgIGZvciAo
YXV0byYgdmVjdG9yIDogbWFwLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCmluZGV4IDBj
Yjg2ZGIyN2ExNS4uZGM5MjI0MjE2MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9SdWxlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCkBAIC0xMzAs
NyArMTMwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yKiBzaGFkb3dQc2V1
ZG9FbGVtZW50UnVsZXMoY29uc3QgQXRvbVN0cmluZyYga2V5KSBjb25zdCB7IHJldHVybiBtX3No
YWRvd1BzZXVkb0VsZW1lbnRSdWxlcy5nZXQoa2V5KTsgfQogICAgIGNvbnN0IFJ1bGVEYXRhVmVj
dG9yKiBsaW5rUHNldWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX2xpbmtQc2V1ZG9D
bGFzc1J1bGVzOyB9CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9y
KiBjdWVQc2V1ZG9SdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX2N1ZVBzZXVkb1J1bGVzOyB9Cisg
ICAgY29uc3QgUnVsZURhdGFWZWN0b3ImIGN1ZVBzZXVkb1J1bGVzKCkgY29uc3QgeyByZXR1cm4g
bV9jdWVQc2V1ZG9SdWxlczsgfQogI2VuZGlmCiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3ImIGhv
c3RQc2V1ZG9DbGFzc1J1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9ob3N0UHNldWRvQ2xhc3NSdWxl
czsgfQogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yJiBzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVz
KCkgY29uc3QgeyByZXR1cm4gbV9zbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzOyB9CkBAIC0xNDIs
NyArMTQyLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgcnVsZUNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9ydWxlQ291bnQ7IH0KIAotICAgIGJvb2wgaGFzU2hhZG93UHNldWRvRWxlbWVudFJ1
bGVzKCkgY29uc3Q7CisgICAgYm9vbCBoYXNTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoKSBjb25z
dCB7IHJldHVybiAhbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMuaXNFbXB0eSgpOyB9CiAgICAg
Ym9vbCBoYXNIb3N0UHNldWRvQ2xhc3NSdWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNIb3N0UHNldWRvQ2xhc3NSdWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlOyB9
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFs
aWRhdGlvbkZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRp
b25GdW5jdGlvbnMuaAppbmRleCBmMGM4NWJmZTAzM2UuLjcyZGJiMzA4MjYyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRpb25GdW5jdGlvbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdGlvbkZ1bmN0aW9ucy5oCkBAIC02
NSw4ICs2NSwxNCBAQCBpbmxpbmUgdm9pZCB0cmF2ZXJzZVJ1bGVGZWF0dXJlcyhFbGVtZW50JiBl
bGVtZW50LCBUcmF2ZXJzZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiAgICAgYXV0byYgcnVsZVNldHMg
PSBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpOwogCiAgICAgYXV0byBtYXlBZmZl
Y3RTaGFkb3dUcmVlID0gWyZdIHsKLSAgICAgICAgaWYgKGVsZW1lbnQuc2hhZG93Um9vdCgpICYm
IHJ1bGVTZXRzLmF1dGhvclN0eWxlKCkuaGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGVsZW1lbnQuc2hhZG93Um9vdCgp
ICYmIGVsZW1lbnQuc2hhZG93Um9vdCgpLT5pc1VzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgeworICAg
ICAgICAgICAgaWYgKHJ1bGVTZXRzLmF1dGhvclN0eWxlKCkuaGFzU2hhZG93UHNldWRvRWxlbWVu
dFJ1bGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFZJREVP
KQorICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXNNZWRpYUVsZW1lbnQoKSAmJiAhcnVsZVNldHMu
YXV0aG9yU3R5bGUoKS5jdWVQc2V1ZG9SdWxlcygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgICAgICB9CiAgICAgICAgIGlmIChpczxIVE1MU2xv
dEVsZW1lbnQ+KGVsZW1lbnQpICYmICFydWxlU2V0cy5hdXRob3JTdHlsZSgpLnNsb3R0ZWRQc2V1
ZG9FbGVtZW50UnVsZXMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVJbnZhbGlkYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9y
LmNwcAppbmRleCA3ZDMxMWVkYzkzMDUuLjdkODM5NzIzNmYwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKQEAgLTExNyw2ICsxMTcsMTAgQEAgSW52YWxpZGF0
b3I6OlJ1bGVJbmZvcm1hdGlvbiBJbnZhbGlkYXRvcjo6Y29sbGVjdFJ1bGVJbmZvcm1hdGlvbigp
CiAgICAgICAgICAgICBpbmZvcm1hdGlvbi5oYXNIb3N0UHNldWRvQ2xhc3NSdWxlcyA9IHRydWU7
CiAgICAgICAgIGlmIChydWxlU2V0LT5oYXNTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoKSkKICAg
ICAgICAgICAgIGluZm9ybWF0aW9uLmhhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyA9IHRydWU7
CisjaWYgRU5BQkxFKFZJREVPKQorICAgICAgICBpZiAoIXJ1bGVTZXQtPmN1ZVBzZXVkb1J1bGVz
KCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgaW5mb3JtYXRpb24uaGFzQ3VlUHNldWRvRWxlbWVu
dFJ1bGVzID0gdHJ1ZTsKKyNlbmRpZgogICAgICAgICBpZiAoIXJ1bGVTZXQtPnBhcnRQc2V1ZG9F
bGVtZW50UnVsZXMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBpbmZvcm1hdGlvbi5oYXNQYXJ0
UHNldWRvRWxlbWVudFJ1bGVzID0gdHJ1ZTsKICAgICB9CkBAIC0zMTUsMTUgKzMxOSwzNSBAQCB2
b2lkIEludmFsaWRhdG9yOjppbnZhbGlkYXRlU2hhZG93UGFydHMoU2hhZG93Um9vdCYgc2hhZG93
Um9vdCkKICAgICB9CiB9CiAKK3ZvaWQgSW52YWxpZGF0b3I6OmludmFsaWRhdGVTaGFkb3dQc2V1
ZG9FbGVtZW50cyhTaGFkb3dSb290JiBzaGFkb3dSb290KQoreworICAgIGlmIChzaGFkb3dSb290
Lm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBmb3IgKGF1dG8mIGRlc2NlbmRhbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihz
aGFkb3dSb290KSkgeworICAgICAgICBhdXRvJiBzaGFkb3dQc2V1ZG9JZCA9IGRlc2NlbmRhbnQu
c2hhZG93UHNldWRvSWQoKTsKKyAgICAgICAgaWYgKCFzaGFkb3dQc2V1ZG9JZCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBmb3IgKGF1dG8mIHJ1bGVTZXQgOiBtX3J1bGVTZXRzKSB7
CisgICAgICAgICAgICBpZiAocnVsZVNldC0+c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKHNoYWRv
d1BzZXVkb0lkKSkKKyAgICAgICAgICAgICAgICBkZXNjZW5kYW50LmludmFsaWRhdGVTdHlsZUlu
dGVybmFsKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgSW52YWxpZGF0b3I6OmludmFs
aWRhdGVJblNoYWRvd1RyZWVJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8q
IHNoYWRvd1Jvb3QgPSBlbGVtZW50LnNoYWRvd1Jvb3QoKTsKICAgICBpZiAoIXNoYWRvd1Jvb3Qp
CiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGRvIGFjdHVhbCBy
dWxlIG1hdGNoaW5nIHRvby4KICAgICBpZiAobV9ydWxlSW5mb3JtYXRpb24uaGFzU2hhZG93UHNl
dWRvRWxlbWVudFJ1bGVzKQorICAgICAgICBpbnZhbGlkYXRlU2hhZG93UHNldWRvRWxlbWVudHMo
KnNoYWRvd1Jvb3QpOworCisjaWYgRU5BQkxFKFZJREVPKQorICAgIGlmIChtX3J1bGVJbmZvcm1h
dGlvbi5oYXNDdWVQc2V1ZG9FbGVtZW50UnVsZXMgJiYgZWxlbWVudC5pc01lZGlhRWxlbWVudCgp
KQogICAgICAgICBlbGVtZW50LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOwor
I2VuZGlmCiAKICAgICAvLyBGSVhNRTogTW9yZSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIGZv
ciA6OnBhcnQoKQogICAgIGlmIChtX3J1bGVJbmZvcm1hdGlvbi5oYXNQYXJ0UHNldWRvRWxlbWVu
dFJ1bGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5oCmluZGV4IDE2Zjgw
ZGZiZTk3OC4uMmFmYjlhMjU2Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUludmFsaWRhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlk
YXRvci5oCkBAIC03MSwxMiArNzEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVT
dHlsZUZvclRyZWUoRWxlbWVudCYsIFNlbGVjdG9yRmlsdGVyKik7CiAgICAgdm9pZCBpbnZhbGlk
YXRlU3R5bGVGb3JEZXNjZW5kYW50cyhFbGVtZW50JiwgU2VsZWN0b3JGaWx0ZXIqKTsKICAgICB2
b2lkIGludmFsaWRhdGVJblNoYWRvd1RyZWVJZk5lZWRlZChFbGVtZW50Jik7CisgICAgdm9pZCBp
bnZhbGlkYXRlU2hhZG93UHNldWRvRWxlbWVudHMoU2hhZG93Um9vdCYpOwogICAgIHZvaWQgaW52
YWxpZGF0ZVN0eWxlV2l0aE1hdGNoRWxlbWVudChFbGVtZW50JiwgTWF0Y2hFbGVtZW50KTsKIAog
ICAgIHN0cnVjdCBSdWxlSW5mb3JtYXRpb24gewogICAgICAgICBib29sIGhhc1Nsb3R0ZWRQc2V1
ZG9FbGVtZW50UnVsZXMgeyBmYWxzZSB9OwogICAgICAgICBib29sIGhhc0hvc3RQc2V1ZG9DbGFz
c1J1bGVzIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBoYXNTaGFkb3dQc2V1ZG9FbGVtZW50UnVs
ZXMgeyBmYWxzZSB9OworICAgICAgICBib29sIGhhc0N1ZVBzZXVkb0VsZW1lbnRSdWxlcyB7IGZh
bHNlIH07CiAgICAgICAgIGJvb2wgaGFzUGFydFBzZXVkb0VsZW1lbnRSdWxlcyB7IGZhbHNlIH07
CiAgICAgfTsKICAgICBSdWxlSW5mb3JtYXRpb24gY29sbGVjdFJ1bGVJbmZvcm1hdGlvbigpOwo=
</data>
<flag name="commit-queue"
          id="448364"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427688</attachid>
            <date>2021-05-04 11:09:20 -0700</date>
            <delta_ts>2021-05-04 21:38:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shadow-pseudo-invalidation-3.patch</filename>
            <type>text/plain</type>
            <size>13563</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZWMzNjc0MDdiMjMuLmExNzJmNGU0ZmMzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTA1LTA0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBSRUdSRVNTSU9OKGlPUyAxNCk6IEF1dGhvciBzaGFkb3cgRE9NIGludmFsaWRhdGVkIHVubmVj
ZXNzYXJpbHkgb24gcHNldWRvIGVsZW1lbnQgY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc0ODAxMzE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1zdHlsZS1pbnZhbGlkYXRpb24tcHNldWRvLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc2hh
ZG93LXN0eWxlLWludmFsaWRhdGlvbi1wc2V1ZG8tZWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAy
MS0wNS0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMjc0NDYxKTogW21hY09TIHdrMV0gZmFzdC9yZXBhaW50L2NhbnZhcy1v
YmplY3QtZml0Lmh0bWwgaXMgZmxha2V5IHRleHQgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1zdHlsZS1pbnZhbGlkYXRpb24tcHNldWRvLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1z
dHlsZS1pbnZhbGlkYXRpb24tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODMwZDg2YjVmNDI3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1zdHlsZS1pbnZhbGlkYXRp
b24tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEF1
dGhvciBzaGFkb3cgdHJlZSBpcyBub3QgaW52YWxpZGF0ZWQgaW4gcHJlc2VuY2Ugb2YgdXNlciBh
Z2VudCBzaGFkb3cgdHJlZSB0YXJnZXRpbmcgcHNldWRvIGVsZW1lbnRzCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zaGFkb3ctc3R5bGUtaW52YWxpZGF0aW9uLXBz
ZXVkby1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2hhZG93LXN0
eWxlLWludmFsaWRhdGlvbi1wc2V1ZG8tZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uYTEzMTZmZDBhYzQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1zdHlsZS1pbnZhbGlkYXRpb24tcHNldWRv
LWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorOmZvY3VzIHsgY29s
b3I6IGdyZWVuIH0KKzpmb2N1czo6cGxhY2Vob2xkZXIgeyBjb2xvcjogYmx1ZSB9Cis8L3N0eWxl
PgorCis8ZGl2IGlkPWhvc3QgdGFiaW5kZXg9MT48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBob3N0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKK3ZhciBzaGFkb3cgPSBob3N0LmF0
dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKK3NoYWRvdy5pbm5lckhUTUwgPSBgCisgICAg
PGRpdj5zaGFkb3c8L2Rpdj4KK2A7CisKK3Rlc3QoKCkgPT4geworICAgIGludGVybmFscy51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRSdW5Qb3N0TGF5b3V0VGFza3MoKTsK
KworICAgIGhvc3QuZm9jdXMoKTsKKworICAgIHZhciBkaXYgPSBzaGFkb3cucXVlcnlTZWxlY3Rv
cigiZGl2Iik7CisgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMuc3R5bGVDaGFuZ2VUeXBlKGhv
c3QpLCAiSW5saW5lU3R5bGVDaGFuZ2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5z
dHlsZUNoYW5nZVR5cGUoZGl2KSwgIk5vU3R5bGVDaGFuZ2UiKTsKK30sICJBdXRob3Igc2hhZG93
IHRyZWUgaXMgbm90IGludmFsaWRhdGVkIGluIHByZXNlbmNlIG9mIHVzZXIgYWdlbnQgc2hhZG93
IHRyZWUgdGFyZ2V0aW5nIHBzZXVkbyBlbGVtZW50cyIpOworCis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBjMzU0OTQwYjFhNjMuLjU3Zjg0MTdlMzg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDIxLTA1LTA0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OKGlPUyAxNCk6IEF1dGhvciBzaGFkb3cgRE9NIGludmFsaWRhdGVkIHVu
bmVjZXNzYXJpbHkgb24gcHNldWRvIGVsZW1lbnQgY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxODcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzc0ODAxMzE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgSG92ZXJpbmcgdGhlIGVsZW1lbnQgY2F1c2VzIHVzIHRvIGludmFsaWRh
dGUgdGhlIGVudGlyZSBhdXRob3Igc2hhZG93IHRyZWUgc3R5bGUuCisKKyAgICAgICAgVGhlIGlu
dmFsaWRhdGlvbiBpcyB0cmlnZ2VyZWQgYnkgdGhlIHVzZXIgYWdlbnQgc3R5bGVzaGVldCBoYXZp
bmcgc29tZSA6aG92ZXIgcnVsZXMgdGFyZ2V0aW5nIHBzZXVkbworICAgICAgICBlbGVtZW50cy4g
VGhpcyBzaG91bGQgbm90IHJlcXVpcmUgaW52YWxpZGF0aW9uIGV4Y2VwdCBmb3IgdGhvc2Ugc3Bl
Y2lmaWMgZWxlbWVudHMgYW5kIG9ubHkgZm9yCisgICAgICAgIFVBIHNoYWRvdyB0cmVlcy4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggb3B0aW1pemVzIHRoZSBjYXNlIGFuZCBhdm9pZHMg
dW5uZWNlc3NhcnkgaW52YWxpZGF0aW9ucy4KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1k
b20vc2hhZG93LXN0eWxlLWludmFsaWRhdGlvbi1wc2V1ZG8tZWxlbWVudC5odG1sCisgICAgICAg
IAorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUJsdXJFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjppbnZhbGlkYXRlU3R5bGVPbkZvY3VzQ2hhbmdlSWZOZWVkZWQpOgor
ICAgICAgICAKKyAgICAgICAgSW5wdXQgZWxlbWVudHMgd2l0aCAndGV4dC1vdmVyZmxvdzplbGxp
cHNpcycgKHdoaWNoIGlzIGFmZmVjdGVkIGJ5IGZvY3VzKSB3ZXJlIHJlbHlpbmcKKyAgICAgICAg
b24gc3B1cmlvdXMgaW52YWxpZGF0aW9ucyB0aGF0IHdlIG5vdyBvcHRpbWl6ZSBhd2F5LiBJbnZh
bGlkYXRlIHByb3Blcmx5LgorICAgICAgICAKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1No
YWRvd1BzZXVkb0VsZW1lbnRSdWxlcyk6CisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVy
eVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpoYXNTaGFkb3dQc2V1
ZG9FbGVtZW50UnVsZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgSGFuZGxl
IDo6Y3VlIHNlcGFyYXRlbHkuCisgICAgICAgIAorICAgICAgICAqIHN0eWxlL1J1bGVTZXQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpjdWVQc2V1ZG9SdWxlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6aGFzU2hhZG93UHNldWRvRWxlbWVu
dFJ1bGVzIGNvbnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdGlvbkZ1bmN0aW9u
cy5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnRyYXZlcnNlUnVsZUZlYXR1cmVzKToKKyAg
ICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpJbnZhbGlkYXRvcjo6Y29sbGVjdFJ1bGVJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTaGFkb3dQc2V1ZG9FbGVtZW50cyk6
CisgICAgICAgIAorICAgICAgICBOYXJyb3dseSBpbnZhbGlkYXRlIHVzZXIgYWdlbnQgc2hhZG93
IHRyZWUgcHNldWRvIGVsZW1lbnRzLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZUluU2hhZG93VHJlZUlmTmVlZGVkKToKKyAgICAgICAg
KiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmg6CisKIDIwMjEtMDUtMDQgIERpZWdvIFBpbm8gR2Fy
Y2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggR1RLIGFu
ZCBXUEUgYnVpbGRzIGFmdGVyIHIyNzY5NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IGNlNTE0ZDkzZjM4My4uOTYwNDE1MWFkM2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRl
ICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1
ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCkBAIC01MjAsMTEgKzUyMSwxNSBAQCBib29sIEhU
TUxJbnB1dEVsZW1lbnQ6OnNob3VsZFVzZUlucHV0TWV0aG9kKCkKIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6aGFuZGxlRm9jdXNFdmVudChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uKQogewogICAgIG1faW5wdXRUeXBlLT5oYW5kbGVGb2N1c0V2ZW50KG9sZEZv
Y3VzZWROb2RlLCBkaXJlY3Rpb24pOworCisgICAgaW52YWxpZGF0ZVN0eWxlT25Gb2N1c0NoYW5n
ZUlmTmVlZGVkKCk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6aGFuZGxlQmx1ckV2ZW50
KCkKIHsKICAgICBtX2lucHV0VHlwZS0+aGFuZGxlQmx1ckV2ZW50KCk7CisKKyAgICBpbnZhbGlk
YXRlU3R5bGVPbkZvY3VzQ2hhbmdlSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpzZXRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpCkBAIC0yMDA0LDYgKzIwMDksMTUg
QEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRUcnVuY2F0ZVRleHQoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50
KCkgIT0gdGhpcyAmJiBzdHlsZS50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0T3ZlcmZsb3c6OkVsbGlw
c2lzOwogfQogCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmludmFsaWRhdGVTdHlsZU9uRm9jdXND
aGFuZ2VJZk5lZWRlZCgpCit7CisgICAgaWYgKCFpc1RleHRGaWVsZCgpKQorICAgICAgICByZXR1
cm47CisgICAgLy8gRm9jdXMgY2hhbmdlIG1heSBhZmZlY3QgdGhlIHJlc3VsdCBvZiBzaG91bGRU
cnVuY2F0ZVRleHQoKS4KKyAgICBpZiAoYXV0byogc3R5bGUgPSByZW5kZXJTdHlsZSgpOyBzdHls
ZSAmJiBzdHlsZS0+dGV4dE92ZXJmbG93KCkgPT0gVGV4dE92ZXJmbG93OjpFbGxpcHNpcykKKyAg
ICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Cit9CisKIEV4Y2VwdGlv
bk9yPGludD4gSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnRGb3JCaW5kaW5ncygpIGNv
bnN0CiB7CiAgICAgaWYgKCFjYW5IYXZlU2VsZWN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IGI0MjZhNTI3ZGI1ZS4uZjY3NWZiNzYyZWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMzMyLDYgKzMzMiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwogCiAgICAgYm9vbCBz
aG91bGRUcnVuY2F0ZVRleHQoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICB2b2lkIGlu
dmFsaWRhdGVTdHlsZU9uRm9jdXNDaGFuZ2VJZk5lZWRlZCgpOwogCiAgICAgRXhjZXB0aW9uT3I8
aW50PiBzZWxlY3Rpb25TdGFydEZvckJpbmRpbmdzKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0U2VsZWN0aW9uU3RhcnRGb3JCaW5kaW5ncyhpbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IGUxODBjY2RmYTlmNi4uMDVl
Mjg0M2RjMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0
b3IuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29s
bGVjdE1hdGNoaW5nU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKGNvbnN0IE1hdGNoUmUKICNpZiBF
TkFCTEUoVklERU8pCiAgICAgLy8gRlhJTUU6IFdlYlZUVCBzaG91bGQgbm90IGJlIGRvbmUgYnkg
c3R5bGluZyBVQSBzaGFkb3cgdHJlZXMgbGlrZSB0aGlzLgogICAgIGlmIChlbGVtZW50KCkuaXNX
ZWJWVFRFbGVtZW50KCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxl
cy5jdWVQc2V1ZG9SdWxlcygpLCBtYXRjaFJlcXVlc3QpOworICAgICAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0Zvckxpc3QoJnJ1bGVzLmN1ZVBzZXVkb1J1bGVzKCksIG1hdGNoUmVxdWVzdCk7CiAj
ZW5kaWYKICAgICBhdXRvJiBwc2V1ZG9JZCA9IGVsZW1lbnQoKS5zaGFkb3dQc2V1ZG9JZCgpOwog
ICAgIGlmICghcHNldWRvSWQuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRl
eCA2ZGQ0ZTg4OGZkZDguLjYyNThjZDY0NGZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAK
QEAgLTQ2OSwxNyArNDY5LDYgQEAgUnVsZVNldDo6Q29sbGVjdGVkTWVkaWFRdWVyeUNoYW5nZXMg
UnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKGNvbnMKICAgICByZXR1cm4g
Y29sbGVjdGVkQ2hhbmdlczsKIH0KIAotYm9vbCBSdWxlU2V0OjpoYXNTaGFkb3dQc2V1ZG9FbGVt
ZW50UnVsZXMoKSBjb25zdAotewotICAgIGlmICghbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAg
aWYgKCFtX2N1ZVBzZXVkb1J1bGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0j
ZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdm9pZCBzaHJpbmtN
YXBWZWN0b3JzVG9GaXQoUnVsZVNldDo6QXRvbVJ1bGVNYXAmIG1hcCkKIHsKICAgICBmb3IgKGF1
dG8mIHZlY3RvciA6IG1hcC52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAppbmRleCAwY2I4
NmRiMjdhMTUuLmRjOTIyNDIxNjExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaApAQCAtMTMwLDcg
KzEzMCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSdWxlRGF0YVZlY3Rvciogc2hhZG93UHNldWRv
RWxlbWVudFJ1bGVzKGNvbnN0IEF0b21TdHJpbmcmIGtleSkgY29uc3QgeyByZXR1cm4gbV9zaGFk
b3dQc2V1ZG9FbGVtZW50UnVsZXMuZ2V0KGtleSk7IH0KICAgICBjb25zdCBSdWxlRGF0YVZlY3Rv
ciogbGlua1BzZXVkb0NsYXNzUnVsZXMoKSBjb25zdCB7IHJldHVybiAmbV9saW5rUHNldWRvQ2xh
c3NSdWxlczsgfQogI2lmIEVOQUJMRShWSURFTykKLSAgICBjb25zdCBSdWxlRGF0YVZlY3Rvciog
Y3VlUHNldWRvUnVsZXMoKSBjb25zdCB7IHJldHVybiAmbV9jdWVQc2V1ZG9SdWxlczsgfQorICAg
IGNvbnN0IFJ1bGVEYXRhVmVjdG9yJiBjdWVQc2V1ZG9SdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VlUHNldWRvUnVsZXM7IH0KICNlbmRpZgogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yJiBob3N0
UHNldWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1faG9zdFBzZXVkb0NsYXNzUnVsZXM7
IH0KICAgICBjb25zdCBSdWxlRGF0YVZlY3RvciYgc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlczsgfQpAQCAtMTQyLDcg
KzE0Miw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIHJ1bGVDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcnVsZUNvdW50OyB9CiAKLSAgICBib29sIGhhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxl
cygpIGNvbnN0OworICAgIGJvb2wgaGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gIW1fc2hhZG93UHNldWRvRWxlbWVudFJ1bGVzLmlzRW1wdHkoKTsgfQogICAgIGJv
b2wgaGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZTsgfQog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlk
YXRpb25GdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0aW9u
RnVuY3Rpb25zLmgKaW5kZXggZjBjODViZmUwMzNlLi43MmRiYjMwODI2MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRpb25GdW5jdGlvbnMuaApAQCAtNjUs
OCArNjUsMTQgQEAgaW5saW5lIHZvaWQgdHJhdmVyc2VSdWxlRmVhdHVyZXMoRWxlbWVudCYgZWxl
bWVudCwgVHJhdmVyc2VGdW5jdGlvbiYmIGZ1bmN0aW9uKQogICAgIGF1dG8mIHJ1bGVTZXRzID0g
ZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKIAogICAgIGF1dG8gbWF5QWZmZWN0
U2hhZG93VHJlZSA9IFsmXSB7Ci0gICAgICAgIGlmIChlbGVtZW50LnNoYWRvd1Jvb3QoKSAmJiBy
dWxlU2V0cy5hdXRob3JTdHlsZSgpLmhhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcygpKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChlbGVtZW50LnNoYWRvd1Jvb3QoKSAm
JiBlbGVtZW50LnNoYWRvd1Jvb3QoKS0+aXNVc2VyQWdlbnRTaGFkb3dSb290KCkpIHsKKyAgICAg
ICAgICAgIGlmIChydWxlU2V0cy5hdXRob3JTdHlsZSgpLmhhc1NoYWRvd1BzZXVkb0VsZW1lbnRS
dWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVOQUJMRShWSURFTykK
KyAgICAgICAgICAgIGlmIChlbGVtZW50LmlzTWVkaWFFbGVtZW50KCkgJiYgIXJ1bGVTZXRzLmF1
dGhvclN0eWxlKCkuY3VlUHNldWRvUnVsZXMoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICAgICAgfQogICAgICAgICBpZiAoaXM8SFRNTFNsb3RF
bGVtZW50PihlbGVtZW50KSAmJiAhcnVsZVNldHMuYXV0aG9yU3R5bGUoKS5zbG90dGVkUHNldWRv
RWxlbWVudFJ1bGVzKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
SW52YWxpZGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5j
cHAKaW5kZXggN2QzMTFlZGM5MzA1Li43ZDgzOTcyMzZmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCkBAIC0xMTcsNiArMTE3LDEwIEBAIEludmFsaWRhdG9y
OjpSdWxlSW5mb3JtYXRpb24gSW52YWxpZGF0b3I6OmNvbGxlY3RSdWxlSW5mb3JtYXRpb24oKQog
ICAgICAgICAgICAgaW5mb3JtYXRpb24uaGFzSG9zdFBzZXVkb0NsYXNzUnVsZXMgPSB0cnVlOwog
ICAgICAgICBpZiAocnVsZVNldC0+aGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkpCiAgICAg
ICAgICAgICBpbmZvcm1hdGlvbi5oYXNTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMgPSB0cnVlOwor
I2lmIEVOQUJMRShWSURFTykKKyAgICAgICAgaWYgKCFydWxlU2V0LT5jdWVQc2V1ZG9SdWxlcygp
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGluZm9ybWF0aW9uLmhhc0N1ZVBzZXVkb0VsZW1lbnRS
dWxlcyA9IHRydWU7CisjZW5kaWYKICAgICAgICAgaWYgKCFydWxlU2V0LT5wYXJ0UHNldWRvRWxl
bWVudFJ1bGVzKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgaW5mb3JtYXRpb24uaGFzUGFydFBz
ZXVkb0VsZW1lbnRSdWxlcyA9IHRydWU7CiAgICAgfQpAQCAtMzE1LDE1ICszMTksMzUgQEAgdm9p
ZCBJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZVNoYWRvd1BhcnRzKFNoYWRvd1Jvb3QmIHNoYWRvd1Jv
b3QpCiAgICAgfQogfQogCit2b2lkIEludmFsaWRhdG9yOjppbnZhbGlkYXRlU2hhZG93UHNldWRv
RWxlbWVudHMoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK3sKKyAgICBpZiAoc2hhZG93Um9vdC5t
b2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZm9yIChhdXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oc2hh
ZG93Um9vdCkpIHsKKyAgICAgICAgYXV0byYgc2hhZG93UHNldWRvSWQgPSBkZXNjZW5kYW50LnNo
YWRvd1BzZXVkb0lkKCk7CisgICAgICAgIGlmICghc2hhZG93UHNldWRvSWQpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgZm9yIChhdXRvJiBydWxlU2V0IDogbV9ydWxlU2V0cykgewor
ICAgICAgICAgICAgaWYgKHJ1bGVTZXQtPnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhzaGFkb3dQ
c2V1ZG9JZCkpCisgICAgICAgICAgICAgICAgZGVzY2VuZGFudC5pbnZhbGlkYXRlU3R5bGVJbnRl
cm5hbCgpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIEludmFsaWRhdG9yOjppbnZhbGlk
YXRlSW5TaGFkb3dUcmVlSWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBz
aGFkb3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290KCk7CiAgICAgaWYgKCFzaGFkb3dSb290KQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBkbyBhY3R1YWwgcnVs
ZSBtYXRjaGluZyB0b28uCiAgICAgaWYgKG1fcnVsZUluZm9ybWF0aW9uLmhhc1NoYWRvd1BzZXVk
b0VsZW1lbnRSdWxlcykKKyAgICAgICAgaW52YWxpZGF0ZVNoYWRvd1BzZXVkb0VsZW1lbnRzKCpz
aGFkb3dSb290KTsKKworI2lmIEVOQUJMRShWSURFTykKKyAgICBpZiAobV9ydWxlSW5mb3JtYXRp
b24uaGFzQ3VlUHNldWRvRWxlbWVudFJ1bGVzICYmIGVsZW1lbnQuaXNNZWRpYUVsZW1lbnQoKSkK
ICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKKyNl
bmRpZgogCiAgICAgLy8gRklYTUU6IE1vcmUgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBmb3Ig
OjpwYXJ0KCkKICAgICBpZiAobV9ydWxlSW5mb3JtYXRpb24uaGFzUGFydFBzZXVkb0VsZW1lbnRS
dWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaAppbmRleCAxNmY4MGRm
YmU5NzguLjJhZmI5YTI1Njc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVJbnZhbGlkYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0
b3IuaApAQCAtNzEsMTIgKzcxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5
bGVGb3JUcmVlKEVsZW1lbnQmLCBTZWxlY3RvckZpbHRlciopOwogICAgIHZvaWQgaW52YWxpZGF0
ZVN0eWxlRm9yRGVzY2VuZGFudHMoRWxlbWVudCYsIFNlbGVjdG9yRmlsdGVyKik7CiAgICAgdm9p
ZCBpbnZhbGlkYXRlSW5TaGFkb3dUcmVlSWZOZWVkZWQoRWxlbWVudCYpOworICAgIHZvaWQgaW52
YWxpZGF0ZVNoYWRvd1BzZXVkb0VsZW1lbnRzKFNoYWRvd1Jvb3QmKTsKICAgICB2b2lkIGludmFs
aWRhdGVTdHlsZVdpdGhNYXRjaEVsZW1lbnQoRWxlbWVudCYsIE1hdGNoRWxlbWVudCk7CiAKICAg
ICBzdHJ1Y3QgUnVsZUluZm9ybWF0aW9uIHsKICAgICAgICAgYm9vbCBoYXNTbG90dGVkUHNldWRv
RWxlbWVudFJ1bGVzIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBoYXNIb3N0UHNldWRvQ2xhc3NS
dWxlcyB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVz
IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBoYXNDdWVQc2V1ZG9FbGVtZW50UnVsZXMgeyBmYWxz
ZSB9OwogICAgICAgICBib29sIGhhc1BhcnRQc2V1ZG9FbGVtZW50UnVsZXMgeyBmYWxzZSB9Owog
ICAgIH07CiAgICAgUnVsZUluZm9ybWF0aW9uIGNvbGxlY3RSdWxlSW5mb3JtYXRpb24oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>