<?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>234328</bug_id>
          
          <creation_ts>2021-12-14 17:54:18 -0800</creation_ts>
          <short_desc>Twitter scroll stutter: ensure that CA backing store is always deallocated on the main thread</short_desc>
          <delta_ts>2021-12-15 14:32:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824197</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-14 17:54:18 -0800</bug_when>
    <thetext>Twitter scroll stutter: ensure that CA backing store is always deallocated on the main thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824199</commentid>
    <comment_count>1</comment_count>
      <attachid>447186</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-14 17:59:45 -0800</bug_when>
    <thetext>Created attachment 447186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824200</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-14 17:59:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/85892959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824221</commentid>
    <comment_count>3</comment_count>
      <attachid>447186</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-12-14 19:45:00 -0800</bug_when>
    <thetext>Comment on attachment 447186
Patch

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

Not the least frightening patch I&apos;ve ever seen.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:-33104
&gt; -				7B582DD82716F55B004B92D0 /* (null) in Headers */,

This seems bad

&gt; Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerContentsDelayedReleaser.mm:82
&gt; +            RunLoop::main().dispatch([] {

Isn&apos;t it the scrolling thread runloop you&apos;re racing here (freeing the transaction), not the main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824229</commentid>
    <comment_count>4</comment_count>
      <attachid>447186</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-14 20:09:44 -0800</bug_when>
    <thetext>Comment on attachment 447186
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerContentsDelayedReleaser.mm:82
&gt;&gt; +            RunLoop::main().dispatch([] {
&gt; 
&gt; Isn&apos;t it the scrolling thread runloop you&apos;re racing here (freeing the transaction), not the main thread?

Probably, but we know we&apos;ve exited the scrolling thread transaction (tho it may still be in the teardown phase), and we have a dispatch here so it should almost always win. I never saw us lose the race in practice. If we do, it&apos;s not the end of the world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824238</commentid>
    <comment_count>5</comment_count>
      <attachid>447201</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-14 21:20:00 -0800</bug_when>
    <thetext>Created attachment 447201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824393</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-15 09:47:18 -0800</bug_when>
    <thetext>Committed r287079 (?): &lt;https://commits.webkit.org/r287079&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447201.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447186</attachid>
            <date>2021-12-14 17:59:45 -0800</date>
            <delta_ts>2021-12-14 19:45:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234328-20211214175944.patch</filename>
            <type>text/plain</type>
            <size>25769</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY5YmM2ZTBmMThjZWNl
MjIyMjgxNDI3ZGM2ZjE1ZGUyNDJhYTE1MS4uYzU1MzY0YTVlZWQ0MjFlYWRiZDBlYzFlZTUzMjli
ODRkMzgxZTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIxLTEyLTE0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFR3aXR0ZXIgc2Ny
b2xsIHN0dXR0ZXI6IGVuc3VyZSB0aGF0IENBIGJhY2tpbmcgc3RvcmUgaXMgYWx3YXlzIGRlYWxs
b2NhdGVkIG9uIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzI4CisgICAgICAgIDxyZGFyOi8vODU4OTI5NTk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBzY3JvbGxp
bmcgcGFnZXMgbGlrZSBUd2l0dGVyIGFuZCBGYWNlYm9vayB3ZSBvYnNlcnZlZCBDb3JlQW5pbWF0
aW9uIGNvbW1pdHMgb24gdGhlCisgICAgICAgIHNjcm9sbGluZyB0aHJlYWQgdGFraW5nIGxvbmdl
ciB0aGFuIHRoZXkgc2hvdWxkIGJlY2F1c2UgQ0FCYWNraW5nU3RvcmUgb2JqZWN0cyB3ZXJlIGJl
aW5nCisgICAgICAgIHJlbGVhc2VkIGluIHRob3NlIHRyYW5zYWN0aW9ucy4KKworICAgICAgICBX
b3JrIGFyb3VuZCB0aGlzIGlzc3VlIGJ5IGV4dGVuZGluZyB0aGUgbGlmZXRpbWUgb2YgQ0FCYWNr
aW5nU3RvcmUgb2JqZWN0cyBpZiB3ZSBkZXRlY3QgdGhhdAorICAgICAgICB0aGV5IG1pZ2h0IGJl
IGVudHJhaW5lZCBpbnRvIGEgc2Nyb2xsaW5nIHRyZWUgY29tbWl0LCBieSB2aXJ0dWUgb2YgaGF2
aW5nIG92ZXJsYXBwaW5nIG1haW4KKyAgICAgICAgdGhyZWFkIGFuZCBzY3JvbGxpbmcgdGhyZWFk
IGNvbW1pdHMuCisKKyAgICAgICAgVGhlIGxvZ2ljIGlzIGNvbnRhaW5lZCBpbiBQbGF0Zm9ybUNB
TGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlciwgd2hpY2ggcHV0cyBsYXllciBjb250ZW50cwor
ICAgICAgICBpbnRvIGEgcmV0YWluaW5nIHZlY3RvciB3aGVuIHRoZXkgYXJlIGJlaW5nIGNsZWFy
ZWQgb24gdGhlIGxheWVyLiBUaGV5IGFyZSByZWxlYXNlZCBhdCB0aGUKKyAgICAgICAgZW5kIG9m
IGEgbWFpbiB0aHJlYWQgY29tbWl0OyBpZiB3ZSBkZXRlY3RlZCBvdmVybGFwcGluZyBjb21taXRz
LCB0aGVuIHdlIHJlbGVhc2Ugb24gYQorICAgICAgICBkaXNwYXRjaCB0byBleHRlbmQgdGhlIGxp
ZmV0aW1lIHNsaWdodGx5LgorCisgICAgICAgIFRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUgcGx1
bWJpbmcgdG8gZ2V0IGNvbW1pdCB3aWxsQmVnaW4vZGlkRW5kIG1lc3NhZ2VzIHRvIFBsYXRmb3Jt
Q0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyCisgICAgICAgIGZvciBtYWluIGFuZCBzY3Jv
bGxpbmcgdGhyZWFkcy4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNj
cm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck1h
Yzo6d2lsbFN0YXJ0UGxhdGZvcm1SZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmRpZENvbXBsZXRlUGxhdGZvcm1SZW5kZXJpbmdVcGRh
dGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmg6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW06CisgICAgICAg
IChTY3JvbGxpbmdUcmVlTWFjOjphcHBseUxheWVyUG9zaXRpb25zSW50ZXJuYWwpOgorICAgICAg
ICAoU2Nyb2xsaW5nVHJlZU1hYzo6cmVnaXN0ZXJGb3JQbGF0Zm9ybVJlbmRlcmluZ1VwZGF0ZUNh
bGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1Zp
c2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVEcmF3
c0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmNsZWFyQ29udGVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0QmFja2lu
Z1N0b3JlQXR0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6
OmNsZWFyQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI6OldURl9HVUFS
REVEX0JZX0xPQ0spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjpzaW5nbGV0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFz
ZXI6OnRha2VMYXllckNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjptYWluVGhyZWFkQ29tbWl0V2lsbFN0YXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjpt
YWluVGhyZWFkQ29tbWl0RGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjpzY3JvbGxpbmdUaHJlYWRDb21taXRXaWxsU3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFz
ZXI6OnNjcm9sbGluZ1RocmVhZENvbW1pdERpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6dXBkYXRlU2F3T3ZlcmxhcHBpbmdD
b21taXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVk
UmVsZWFzZXI6OmNsZWFyUmV0YWluZWRDb250ZW50cyk6CisKIDIwMjEtMTItMTMgIEVsbGlvdHQg
V2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIERlcGxveW1lbnQgdGFyZ2V0IGZv
ciBtYWNPUyAxMSsgZG9lcyBub3QgZm9sbG93IG1pbm9yIHZlcnNpb24gYnVtcHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IGQ2YjM5MTJiZWQwNjU4ZmIzYWY3MWU3ZjgyY2NhOTAyZWE5YmY0
NWEuLjVhNWRkOWEyOWQxY2UyYmZkNzcyMzEwNzMzMGY3MzQ4N2ZhY2FlYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtMzM2LDYgKzMzNiw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FGaWx0ZXJzQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
V2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2Vi
VGlsZWRCYWNraW5nTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlZpZGVv
Q29udGFpbmVyTGF5ZXIubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBiZDMxNDExMzBjNTQzYzZhN2ZhOGM5NmZiZjgyODhlOTA1
MDI4Yjg5Li5jNDkxZmM4MWE1MDViZDVkOTVjY2RkYmM4ZmZmNjY2MTcxYTlmODA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02
MzkyLDYgKzYzOTIsOCBAQAogCQkwRkEwQTBFNTIzQUVBQTM1MDAwRUVCOTQgLyogZGlhbG9nLmNz
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZGlhbG9nLmNzczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJV
cGRhdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNz
TGF5ZXJVcGRhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMjRENzgx
NjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQTJCMjMzMjc2ODE3NTQwMDIwQzdDMSAvKiBQbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkEyQjIzNTI3NjgxNzU1MDAyMEM3QzEgLyogUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxh
eWVkUmVsZWFzZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNBTGF5ZXJDb250
ZW50c0RlbGF5ZWRSZWxlYXNlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZB
NjFCMEMyNkY0MzIxMjAwMUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZCMDY4OTQyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlUZXh0Qm94LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlUZXh0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZCMDY4OTYyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlUZXh0Qm94
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlUZXh0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTY1OSw2ICsyMTY2MSw4IEBACiAJCQkJMEYxMzE2M0YxNkVEMENERTAwMzVD
QzA0IC8qIFBsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0gKi8sCiAJCQkJMkQ3MEJBMTIxODA3NERE
RjAwMDE5MDhBIC8qIFBsYXRmb3JtQ0FMYXllckNvY29hLmggKi8sCiAJCQkJNDk1ODc4MjAxMkE1
N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FMYXllckNvY29hLm1tICovLAorCQkJCTBGQTJCMjMz
Mjc2ODE3NTQwMDIwQzdDMSAvKiBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNl
ci5oICovLAorCQkJCTBGQTJCMjM1Mjc2ODE3NTUwMDIwQzdDMSAvKiBQbGF0Zm9ybUNBTGF5ZXJD
b250ZW50c0RlbGF5ZWRSZWxlYXNlci5tbSAqLywKIAkJCQkzMURFQTQ1NDFCMzlGNEQ5MDBGNzcx
NzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oICovLAogCQkJCTMxREVBNDUzMUIzOUY0RDkw
MEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLm1tICovLAogCQkJCTBGNTgwRkExMTQ5
NjkzOTEwMEZCNUJEOCAvKiBXZWJUaWxlZEJhY2tpbmdMYXllci5oICovLApAQCAtMzMxMDEsNyAr
MzMxMDUsNiBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJN0I1ODJERDgyNzE2RjU1QjAw
NEI5MkQwIC8qIChudWxsKSBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2
QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4
MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUx
OTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCBj
Y2QyMjcxM2I5ODIyOGFlNjAwMTgzZDMwOTQ0ZThhOTJiYjI0M2M1Li42NDY2NGFlODJhNjVkYzcy
ZDQwYzA1ZGQzZGJmNGNjOGMzMTFhYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQo
KTsKIAotICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9uc0ludGVybmFsKCkgV1RGX1JFUVVJUkVT
X0xPQ0sobV90cmVlTG9jayk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGx5
TGF5ZXJQb3NpdGlvbnNJbnRlcm5hbCgpIFdURl9SRVFVSVJFU19MT0NLKG1fdHJlZUxvY2spOwog
ICAgIHZvaWQgcmVtb3ZlQWxsTm9kZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX3RyZWVMb2NrKTsK
ICAgICAKICAgICB2aXJ0dWFsIHZvaWQgaGFzTm9kZVdpdGhBbmltYXRlZFNjcm9sbENoYW5nZWQo
Ym9vbCAvKiBoYXNOb2RlV2l0aEFuaW1hdGVkU2Nyb2xsICovKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKaW5kZXgg
YWUzNDA0N2U1OGZiOTViODcxMjE1ZDdjNmI5MWNkODgyYjQ3NjViYS4uMmNhZWJlZGNjODRiMDZm
MjI5YjNlNDBlMTJlOWU5MDhmNDg5MWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKQEAgLTEwOCw3ICsxMDgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaGFzTm9kZVdpdGhBbmltYXRlZFNjcm9sbENoYW5nZWQoYm9v
bCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzdG9yZVNjcm9sbFBvc2l0aW9uc0F0TGFzdERpc3Bs
YXlSZWZyZXNoKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV90cmVlTG9jayk7Ci0gICAgCisKICAgICB2
b2lkIHNlcnZpY2VTY3JvbGxBbmltYXRpb25zKE1vbm90b25pY1RpbWUpIFdURl9SRVFVSVJFU19M
T0NLKG1fdHJlZUxvY2spOwogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29y
ZGluYXRvck1hYy5oCmluZGV4IGY3NDU5MzU1OGEyZWM2OTI4Yjk0NjFlYmM2ODNkZTU3N2U3NDdm
ZGQuLjU2OTNhY2ZlYTdiZGY0YzhkODU1NWUxZDA1YjMwMjk3MTAzN2ZmMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29y
ZGluYXRvck1hYy5oCkBAIC01Myw2ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU3Rh
cnRSZW5kZXJpbmdVcGRhdGUoKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlUmVuZGVyaW5n
VXBkYXRlKCkgZmluYWw7CiAKKyAgICB2b2lkIHdpbGxTdGFydFBsYXRmb3JtUmVuZGVyaW5nVXBk
YXRlKCkgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVBsYXRmb3JtUmVuZGVyaW5nVXBkYXRl
KCkgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZVRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggMTNjZTMzZGNlOTFlMzczY2M5ZTBmM2E2NGRkODdk
YTMzNGEwM2JmZi4uZDgxN2RlYjQwNjE0NDY0OWEzYmI2ZTlmMzE5MmVkNWViYjkzMGYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiRnJhbWVW
aWV3LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQYWdlLmgiCisjaW1wb3J0ICJQ
bGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlci5oIgogI2ltcG9ydCAiUGxhdGZv
cm1XaGVlbEV2ZW50LmgiCiAjaW1wb3J0ICJSZWdpb24uaCIKICNpbXBvcnQgIlNjcm9sbGluZ1N0
YXRlVHJlZS5oIgpAQCAtMTQyLDkgKzE0MywxNSBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjOjpkaWRDb21wbGV0ZVJlbmRlcmluZ1VwZGF0ZSgpCiAgICAgICAgIHNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlKCk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OndpbGxTdGFy
dFBsYXRmb3JtUmVuZGVyaW5nVXBkYXRlKCkKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50
c0RlbGF5ZWRSZWxlYXNlcjo6c2luZ2xldG9uKCkubWFpblRocmVhZENvbW1pdFdpbGxTdGFydCgp
OworfQorCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpkaWRDb21wbGV0ZVBsYXRmb3Jt
UmVuZGVyaW5nVXBkYXRlKCkKIHsKICAgICBkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+
KHNjcm9sbGluZ1RyZWUoKSktPmRpZENvbXBsZXRlUGxhdGZvcm1SZW5kZXJpbmdVcGRhdGUoKTsK
KyAgICBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6c2luZ2xldG9uKCku
bWFpblRocmVhZENvbW1pdERpZEVuZCgpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjOjpoYXNOb2RlV2l0aEFuaW1hdGVkU2Nyb2xsQ2hhbmdlZChib29sIGhhc0FuaW1hdGluZ05v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVNYWMuaAppbmRleCA4OGRhZDFlZGQxYjkwNTIwZDFmMGNiNmI3NzA2ZmVkMDIyNDA2N2Fl
Li41MWI5OTI1MjFmOWUwZDc3Y2VjZjAyZDk0OGMwNTQ3YWNiZGI5ZjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmgKQEAg
LTU1LDYgKzU1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlZmVyV2hlZWxFdmVudFRlc3RDb21w
bGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVu
dGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBmaW5hbDsKICAgICB2
b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVs
RXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVz
dE1vbml0b3I6OkRlZmVyUmVhc29uKSBmaW5hbDsKIAorICAgIHZvaWQgcmVnaXN0ZXJGb3JQbGF0
Zm9ybVJlbmRlcmluZ1VwZGF0ZUNhbGxiYWNrKCk7CisgICAgdm9pZCBhcHBseUxheWVyUG9zaXRp
b25zSW50ZXJuYWwoKSBmaW5hbCBXVEZfUkVRVUlSRVNfTE9DSyhtX3RyZWVMb2NrKTsKKwogICAg
IHZvaWQgbG9ja0xheWVyc0ZvckhpdFRlc3RpbmcoKSBmaW5hbCBXVEZfQUNRVUlSRVNfTE9DSyht
X2xheWVySGl0VGVzdE11dGV4KTsKICAgICB2b2lkIHVubG9ja0xheWVyc0ZvckhpdFRlc3Rpbmco
KSBmaW5hbCBXVEZfUkVMRUFTRVNfTE9DSyhtX2xheWVySGl0VGVzdE11dGV4KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5t
bQppbmRleCAzNWZjZTFhMmQwMDQwYTcwNTljMzhmMmI4OTE4MDJiMTY1ZDM3ZTdkLi5hMzFiNGJk
ZGExYWFjM2RiY2Q3OGJhZGVlZDc1MzI2ZTc3Y2VhNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIu
aCIKKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLmgiCiAj
aW1wb3J0ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVl
RnJhbWVIb3N0aW5nTm9kZS5oIgogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU1hYy5oIgpAQCAtMzgsNiArMzksNyBAQAogI2ltcG9ydCAiV2ViQ29yZUNBTGF5ZXJFeHRy
YXMuaCIKICNpbXBvcnQgIldlYkxheWVyLmgiCiAjaW1wb3J0ICJXaGVlbEV2ZW50VGVzdE1vbml0
b3IuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYg
RU5BQkxFKFNDUk9MTElOR19USFJFQUQpCkBAIC0yNDAsNiArMjQyLDI1IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZU1hYzo6dW5sb2NrTGF5ZXJzRm9ySGl0VGVzdGluZygpCiAgICAgbV9sYXllckhpdFRl
c3RNdXRleC51bmxvY2soKTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlTWFjOjphcHBseUxheWVy
UG9zaXRpb25zSW50ZXJuYWwoKQoreworICAgIGlmIChTY3JvbGxpbmdUaHJlYWQ6OmlzQ3VycmVu
dFRocmVhZCgpKQorICAgICAgICByZWdpc3RlckZvclBsYXRmb3JtUmVuZGVyaW5nVXBkYXRlQ2Fs
bGJhY2soKTsKKworICAgIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6YXBwbHlMYXllclBvc2l0aW9u
c0ludGVybmFsKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZU1hYzo6cmVnaXN0ZXJGb3JQbGF0
Zm9ybVJlbmRlcmluZ1VwZGF0ZUNhbGxiYWNrKCkKK3sKKyAgICBbQ0FUcmFuc2FjdGlvbiBhZGRD
b21taXRIYW5kbGVyOltdIHsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVk
UmVsZWFzZXI6OnNpbmdsZXRvbigpLnNjcm9sbGluZ1RocmVhZENvbW1pdFdpbGxTdGFydCgpOwor
ICAgIH0gZm9yUGhhc2U6a0NBVHJhbnNhY3Rpb25QaGFzZVByZUxheW91dF07CisKKyAgICBbQ0FU
cmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVyOltdIHsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVy
Q29udGVudHNEZWxheWVkUmVsZWFzZXI6OnNpbmdsZXRvbigpLnNjcm9sbGluZ1RocmVhZENvbW1p
dERpZEVuZCgpOworICAgIH0gZm9yUGhhc2U6a0NBVHJhbnNhY3Rpb25QaGFzZVBvc3RDb21taXRd
OworfQorCiB2b2lkIFNjcm9sbGluZ1RyZWVNYWM6OnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihS
ZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiYmIG1vbml0b3IpCiB7CiAgICAgbV93aGVlbEV2
ZW50VGVzdE1vbml0b3IgPSBXVEZNb3ZlKG1vbml0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYTE4
MmM1MjU0ZTgwMmNhNzlhMDRhNjc2YWFkZjFhNTFiZDYwOGU0Ny4uNzcyN2EyNTg4NThjNDNiNDhj
NGQ3NjRiMGIyZjFlYzcwMzNiMGZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yMzUxLDcgKzIzNTEs
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNWaXNpYmlsaXR5KCkKICAg
ICAgICAgaWYgKG1fYmFja2Ryb3BMYXllcikKICAgICAgICAgICAgIG1fYmFja2Ryb3BMYXllci0+
c2V0SGlkZGVuKGZhbHNlKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2xheWVyLT5zZXRDb250
ZW50cyhudWxscHRyKTsKKyAgICAgICAgbV9sYXllci0+Y2xlYXJDb250ZW50cygpOwogCiAgICAg
ICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGxheWVyIDog
bV9sYXllckNsb25lcy0+cHJpbWFyeUxheWVyQ2xvbmVzLnZhbHVlcygpKQpAQCAtMjY3NCw3ICsy
Njc0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZURyYXdzQ29udGVudCgpCiAgICAg
ICAgIG1fbGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgICAgICBtX2hhc0V2ZXJQYWludGVk
ID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHMobnVs
bHB0cik7CisgICAgICAgIG1fbGF5ZXItPmNsZWFyQ29udGVudHMoKTsKICAgICAgICAgaWYgKG1f
bGF5ZXJDbG9uZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgbGF5ZXIgOiBtX2xheWVyQ2xv
bmVzLT5wcmltYXJ5TGF5ZXJDbG9uZXMudmFsdWVzKCkpCiAgICAgICAgICAgICAgICAgbGF5ZXIt
PnNldENvbnRlbnRzKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKaW5kZXggMWVlODliM2VlZDU3ZmQ0
NjAwMDBiMzMzMDQ3MmM5YzFhNWZjNWJkYy4uODUyMzQ2ZjZiNWM1NjdkZTI5ZjM1MTc3ZGM0ODcy
MzY1ZGYyN2Q0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCkBAIC0xOTksNiArMTk5LDExIEBAIExheWVyUG9v
bCYgUGxhdGZvcm1DQUxheWVyOjpsYXllclBvb2woKQogICAgIHJldHVybiAqc2hhcmVkUG9vbDsK
IH0KIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmNsZWFyQ29udGVudHMoKQoreworICAgIHNldENv
bnRlbnRzKG51bGxwdHIpOworfQorCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHVtcEFkZGl0aW9u
YWxQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBPcHRpb25TZXQ8UGxhdGZvcm1MYXllclRyZWVBc1Rl
eHRGbGFncz4pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IDhhMjFhMWQ1Y2Y0MThiYzBiODNhMmM5YWMw
MjYwZjk2MjA2MTFhYmUuLjE4OWVkM2Q1OTJlNWYwNTkwZmUzNDk1YzIwZWMwNjBjNjRlOGFmZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5oCkBAIC0xOTksNiArMTk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBoYXNDb250ZW50cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50
cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29udGVudHMoKTsKIAogI2lmIEhBVkUoSU9TVVJG
QUNFKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZh
Y2UmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA4MTk5NTdjYWNk
YWI1ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0Li40YjMwMDE4YTZjNGVhNmVjZjA5YTYyZWEx
YjBmOGMwNmMzOGJhNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEy
MCw2ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyQ29udGVudHMo
KSBvdmVycmlkZTsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICB2b2lkIHNldENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMo
Y29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tCmluZGV4IDJhNDVkZGM0NThkZTA2N2JhZGIwMWE1N2VkZmIyYjlhYjk1MzAz
MGQuLjAwNDRmYTJjMWQ0MzQ4ZTY4M2Q0MzZmYmZmOGFjNTNlZTllYjk0ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJNb2Rl
bC5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybUNBRmlsdGVycy5oIgorI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVk
UmVsZWFzZXIuaCIKICNpbXBvcnQgIlNjcm9sbGJhclRoZW1lTWFjLmgiCiAjaW1wb3J0ICJUaWxl
Q29udHJvbGxlci5oIgogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCkBAIC02NzgsNyArNjc5LDcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQoYm9v
bCBhdHRhY2hlZCkKICAgICBpZiAoYXR0YWNoZWQpCiAgICAgICAgIHNldE5lZWRzRGlzcGxheSgp
OwogICAgIGVsc2UKLSAgICAgICAgc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgICAgIGNsZWFy
Q29udGVudHMoKTsKIH0KIAogYm9vbCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6YmFja2luZ1N0b3Jl
QXR0YWNoZWQoKSBjb25zdApAQCAtNzg0LDYgKzc4NSwxNSBAQCBDRlR5cGVSZWYgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OmNvbnRlbnRzKCkgY29uc3QKICAgICByZXR1cm4gKF9fYnJpZGdlIENGVHlw
ZVJlZilbbV9sYXllciBjb250ZW50c107CiB9CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6
OmNsZWFyQ29udGVudHMoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBQbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6c2luZ2xldG9uKCkudGFrZUxheWVyQ29udGVudHMo
KnRoaXMpOworI2Vsc2UKKyAgICBzZXRDb250ZW50cyhudWxscHRyKTsKKyNlbmRpZgorfQorCiB2
b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0Rl
bGF5ZWRSZWxlYXNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MDRhYzVmZWNiMmYwYjBlNjAwZDZkMWRjZWYyNzMxNmU2NDg1ODI1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxh
eWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQ
TEFURk9STShNQUMpCisKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRm
b3JtQ0FMYXllcjsKKworLy8gVGhpcyBjbGFzcyBleGlzdHMgdG8gd29yayBhcm91bmQgcmRhcjov
Lzg1ODkyOTU5LCB3aGVyZSBDQUJhY2tpbmdTdG9yZSBvYmplY3RzIHdvdWxkIGdldCByZWxlYXNl
ZCBvbiB0aGUgU2Nyb2xsaW5nVGhyZWFkCisvLyBkdXJpbmcgc2Nyb2xsaW5nIGNvbW1pdHMsIHdo
aWNoIGNhbiB0YWtlIGxvbmcgZW5vdWdoIHRvIGNhdXNlIHNjcm9sbGluZyBmcmFtZSBkcm9wcy4K
K2NsYXNzIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyIDogVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI+IHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxl
YXNlcik7CitwdWJsaWM6CisgICAgc3RhdGljIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXll
ZFJlbGVhc2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgdGFrZUxheWVyQ29udGVudHMoUGxh
dGZvcm1DQUxheWVyJik7CisgICAgCisgICAgdm9pZCBtYWluVGhyZWFkQ29tbWl0V2lsbFN0YXJ0
KCk7CisgICAgdm9pZCBtYWluVGhyZWFkQ29tbWl0RGlkRW5kKCk7CisKKyAgICB2b2lkIHNjcm9s
bGluZ1RocmVhZENvbW1pdFdpbGxTdGFydCgpOworICAgIHZvaWQgc2Nyb2xsaW5nVGhyZWFkQ29t
bWl0RGlkRW5kKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIExhenlOZXZlckRlc3Ryb3llZDxQ
bGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcj47CisgICAgCisgICAgUGxhdGZv
cm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXIoKTsKKworICAgIHZvaWQgdXBkYXRlU2F3
T3ZlcmxhcHBpbmdDb21taXQoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spOworICAgIHZvaWQg
Y2xlYXJSZXRhaW5lZENvbnRlbnRzKCk7CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPENGVHlwZVJl
Zj4+IG1fcmV0YWluZWRDb250ZW50czsKKworICAgIExvY2sgbV9sb2NrOworICAgIHVuc2lnbmVk
IG1faW5NYWluVGhyZWFkQ29tbWl0RW50cnlDb3VudCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9j
aykgeyAwIH07CisgICAgdW5zaWduZWQgbV9zY3JvbGxpbmdUaHJlYWRDb21taXRFbnRyeUNvdW50
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7IDAgfTsKKyAgICBib29sIG1faGFkT3Zlcmxh
cHBpbmdDb21taXQgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spIHsgZmFsc2UgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFz
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODVjNDQzMTI1ZWY1MGNmYjQ1ZGExOGYwM2JmNzFhZTI3OTk0ZjQ2
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLm1tCkBAIC0wLDAg
KzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxh
eWVkUmVsZWFzZXIuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1D
QUxheWVyLmgiCisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1BsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyJiBQbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyPiBk
ZWxheWVkUmVsZWFzZXI7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIGRlbGF5ZWRSZWxlYXNlci5j
b25zdHJ1Y3QoKTsKKyAgICB9KTsKKworICAgIHJldHVybiBkZWxheWVkUmVsZWFzZXI7Cit9CisK
K1BsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjpQbGF0Zm9ybUNBTGF5ZXJD
b250ZW50c0RlbGF5ZWRSZWxlYXNlcigpID0gZGVmYXVsdDsKKwordm9pZCBQbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6dGFrZUxheWVyQ29udGVudHMoUGxhdGZvcm1DQUxh
eWVyJiBsYXllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBy
ZXRhaW5lZENvbnRlbnRzID0gUmV0YWluUHRyIHsgbGF5ZXIuY29udGVudHMoKSB9OworICAgIGlm
ICghcmV0YWluZWRDb250ZW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZXRhaW5lZENv
bnRlbnRzLmFwcGVuZChXVEZNb3ZlKHJldGFpbmVkQ29udGVudHMpKTsKKyAgICBsYXllci5zZXRD
b250ZW50cyhudWxscHRyKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5
ZWRSZWxlYXNlcjo6bWFpblRocmVhZENvbW1pdFdpbGxTdGFydCgpCit7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OworICAgICsrbV9pbk1haW5UaHJlYWRDb21taXRFbnRyeUNvdW50Owor
ICAgIHVwZGF0ZVNhd092ZXJsYXBwaW5nQ29tbWl0KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxh
eWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI6Om1haW5UaHJlYWRDb21taXREaWRFbmQoKQorewor
ICAgIGJvb2wgYm90aENvbW1pdHNEb25lOworICAgIGJvb2wgaGFkT3ZlcmxhcHBpbmdDb21taXQ7
CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgIEFTU0VS
VChtX2luTWFpblRocmVhZENvbW1pdEVudHJ5Q291bnQpOworICAgICAgICAtLW1faW5NYWluVGhy
ZWFkQ29tbWl0RW50cnlDb3VudDsKKyAgICAgICAgYm90aENvbW1pdHNEb25lID0gIW1fc2Nyb2xs
aW5nVGhyZWFkQ29tbWl0RW50cnlDb3VudCAmJiAhbV9pbk1haW5UaHJlYWRDb21taXRFbnRyeUNv
dW50OworICAgICAgICBoYWRPdmVybGFwcGluZ0NvbW1pdCA9IG1faGFkT3ZlcmxhcHBpbmdDb21t
aXQ7CisgICAgfQorCisgICAgaWYgKGJvdGhDb21taXRzRG9uZSkgeworICAgICAgICBpZiAoaGFk
T3ZlcmxhcHBpbmdDb21taXQgJiYgbV9yZXRhaW5lZENvbnRlbnRzLnNpemUoKSkgeworICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKKyAgICAgICAgICAgICAgICBQbGF0
Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6c2luZ2xldG9uKCkuY2xlYXJSZXRh
aW5lZENvbnRlbnRzKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGNsZWFyUmV0YWluZWRDb250ZW50cygpOworICAgIH0KK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6c2Nyb2xsaW5nVGhy
ZWFkQ29tbWl0V2lsbFN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgKyttX3Njcm9sbGluZ1RocmVhZENvbW1p
dEVudHJ5Q291bnQ7CisgICAgdXBkYXRlU2F3T3ZlcmxhcHBpbmdDb21taXQoKTsKK30KKwordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6c2Nyb2xsaW5nVGhyZWFk
Q29tbWl0RGlkRW5kKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBBU1NFUlQobV9zY3JvbGxpbmdUaHJlYWRDb21t
aXRFbnRyeUNvdW50KTsKKyAgICAtLW1fc2Nyb2xsaW5nVGhyZWFkQ29tbWl0RW50cnlDb3VudDsK
KyAgICBpZiAoIW1fc2Nyb2xsaW5nVGhyZWFkQ29tbWl0RW50cnlDb3VudCAmJiAhbV9pbk1haW5U
aHJlYWRDb21taXRFbnRyeUNvdW50KSB7CisgICAgICAgIGlmIChtX2hhZE92ZXJsYXBwaW5nQ29t
bWl0KSB7CisgICAgICAgICAgICAvLyBtX3JldGFpbmVkQ29udGVudHMgbWlnaHQgYmUgZW1wdHkg
KGl0J3Mgbm90IHByb3RlY3RlZCBieSB0aGUgbG9jayBzbyB3ZSBjYW4ndCBjaGVjayBpdCBoZXJl
KSwKKyAgICAgICAgICAgIC8vIHNvIHRoaXMgbWlnaHQgYmUgYSBwb2ludGxlc3MgZGlzcGF0Y2gs
IGJ1dCBtX2hhZE92ZXJsYXBwaW5nQ29tbWl0IGlzIHJhcmUuCisgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW10geworICAgICAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllckNv
bnRlbnRzRGVsYXllZFJlbGVhc2VyOjpzaW5nbGV0b24oKS5jbGVhclJldGFpbmVkQ29udGVudHMo
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjp1cGRhdGVTYXdPdmVybGFwcGluZ0NvbW1p
dCgpCit7CisgICAgbV9oYWRPdmVybGFwcGluZ0NvbW1pdCB8PSAobV9pbk1haW5UaHJlYWRDb21t
aXRFbnRyeUNvdW50ICYmIG1fc2Nyb2xsaW5nVGhyZWFkQ29tbWl0RW50cnlDb3VudCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI6OmNsZWFyUmV0YWlu
ZWRDb250ZW50cygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3JldGFp
bmVkQ29udGVudHMuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKKwo=
</data>
<flag name="review"
          id="472752"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="472759"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447201</attachid>
            <date>2021-12-14 21:20:00 -0800</date>
            <delta_ts>2021-12-15 14:32:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234328-20211214211959.patch</filename>
            <type>text/plain</type>
            <size>25782</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2OTcyZmQ0NmYwMjMx
M2M1M2U3YzUwYzBhYWY4N2ZkOWNkNjJmMy4uYTlkY2FhMGVkNTU3OTczNTZiYTEyMWNjYTQ0OGRh
NmEyYzRhNTIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIxLTEyLTE0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFR3aXR0ZXIgc2Ny
b2xsIHN0dXR0ZXI6IGVuc3VyZSB0aGF0IENBIGJhY2tpbmcgc3RvcmUgaXMgYWx3YXlzIGRlYWxs
b2NhdGVkIG9uIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzI4CisgICAgICAgIDxyZGFyOi8vODU4OTI5NTk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBXaGVuIHNjcm9sbGluZyBw
YWdlcyBsaWtlIFR3aXR0ZXIgYW5kIEZhY2Vib29rIHdlIG9ic2VydmVkIENvcmVBbmltYXRpb24g
Y29tbWl0cyBvbiB0aGUKKyAgICAgICAgc2Nyb2xsaW5nIHRocmVhZCB0YWtpbmcgbG9uZ2VyIHRo
YW4gdGhleSBzaG91bGQgYmVjYXVzZSBDQUJhY2tpbmdTdG9yZSBvYmplY3RzIHdlcmUgYmVpbmcK
KyAgICAgICAgcmVsZWFzZWQgaW4gdGhvc2UgdHJhbnNhY3Rpb25zLgorCisgICAgICAgIFdvcmsg
YXJvdW5kIHRoaXMgaXNzdWUgYnkgZXh0ZW5kaW5nIHRoZSBsaWZldGltZSBvZiBDQUJhY2tpbmdT
dG9yZSBvYmplY3RzIGlmIHdlIGRldGVjdCB0aGF0CisgICAgICAgIHRoZXkgbWlnaHQgYmUgZW50
cmFpbmVkIGludG8gYSBzY3JvbGxpbmcgdHJlZSBjb21taXQsIGJ5IHZpcnR1ZSBvZiBoYXZpbmcg
b3ZlcmxhcHBpbmcgbWFpbgorICAgICAgICB0aHJlYWQgYW5kIHNjcm9sbGluZyB0aHJlYWQgY29t
bWl0cy4KKworICAgICAgICBUaGUgbG9naWMgaXMgY29udGFpbmVkIGluIFBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLCB3aGljaCBwdXRzIGxheWVyIGNvbnRlbnRzCisgICAg
ICAgIGludG8gYSByZXRhaW5pbmcgdmVjdG9yIHdoZW4gdGhleSBhcmUgYmVpbmcgY2xlYXJlZCBv
biB0aGUgbGF5ZXIuIFRoZXkgYXJlIHJlbGVhc2VkIGF0IHRoZQorICAgICAgICBlbmQgb2YgYSBt
YWluIHRocmVhZCBjb21taXQ7IGlmIHdlIGRldGVjdGVkIG92ZXJsYXBwaW5nIGNvbW1pdHMsIHRo
ZW4gd2UgcmVsZWFzZSBvbiBhCisgICAgICAgIGRpc3BhdGNoIHRvIGV4dGVuZCB0aGUgbGlmZXRp
bWUgc2xpZ2h0bHkuCisKKyAgICAgICAgVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBwbHVtYmlu
ZyB0byBnZXQgY29tbWl0IHdpbGxCZWdpbi9kaWRFbmQgbWVzc2FnZXMgdG8gUGxhdGZvcm1DQUxh
eWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXIKKyAgICAgICAgZm9yIG1haW4gYW5kIHNjcm9sbGlu
ZyB0aHJlYWRzLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xs
aW5nVHJlZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjp3
aWxsU3RhcnRQbGF0Zm9ybVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdDb29yZGluYXRvck1hYzo6ZGlkQ29tcGxldGVQbGF0Zm9ybVJlbmRlcmluZ1VwZGF0ZSk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbToKKyAgICAgICAgKFNj
cm9sbGluZ1RyZWVNYWM6OmFwcGx5TGF5ZXJQb3NpdGlvbnNJbnRlcm5hbCk6CisgICAgICAgIChT
Y3JvbGxpbmdUcmVlTWFjOjpyZWdpc3RlckZvclBsYXRmb3JtUmVuZGVyaW5nVXBkYXRlQ2FsbGJh
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzVmlzaWJp
bGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZURyYXdzQ29u
dGVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6Y2xlYXJDb250ZW50cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRCYWNraW5nU3Rv
cmVBdHRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y2xl
YXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6V1RGX0dVQVJERURf
QllfTE9DSyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI6OnNpbmdsZXRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6
dGFrZUxheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29u
dGVudHNEZWxheWVkUmVsZWFzZXI6Om1haW5UaHJlYWRDb21taXRXaWxsU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI6Om1haW5U
aHJlYWRDb21taXREaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29u
dGVudHNEZWxheWVkUmVsZWFzZXI6OnNjcm9sbGluZ1RocmVhZENvbW1pdFdpbGxTdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6
c2Nyb2xsaW5nVGhyZWFkQ29tbWl0RGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjp1cGRhdGVTYXdPdmVybGFwcGluZ0NvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxl
YXNlcjo6Y2xlYXJSZXRhaW5lZENvbnRlbnRzKToKKwogMjAyMS0xMi0xNCAgQWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBNYWtlIHRoZSBMaW5lQm94
IGNvbnRlbnQgKHRleHQgcnVucyBhbmQgaW5saW5lIGxldmVsIGJveGVzKSByZWxhdGl2ZSB0byB0
aGUgcm9vdCBpbmxpbmUgYm94LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMGE0MGRhNTky
MGY4N2U0ZDkxMDRlNWU5OTFhZGQ3NDczN2Q2M2QzYS4uNjllODZlYzRmYWMzZGY1MjEwNDM2ZDdj
MzFhMjdkOGJmMmM1YjU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMzcsNiArMzM3
LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KK3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJTeXN0ZW1CYWNrZHJvcExheWVyLm1tCiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVmlkZW9Db250YWluZXJMYXllci5tbQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ3M2I3
ODliNDQzZTI4MDhmZWVjM2IxMTFiMmU2YjFlNDY3YjQzNGUuLmQ2NmE2ZDFjY2VkZjZlYTViMDE3
NWVjNzRiNWZlNmVkMjA5NjEwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzOTQsNiArNjM5NCw4IEBACiAJCTBGQTBBMEU1
MjNBRUFBMzUwMDBFRUI5NCAvKiBkaWFsb2cuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGgg
PSBkaWFsb2cuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3NzE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NM
YXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NM
YXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBMkIyMzMyNzY4
MTc1NDAwMjBDN0MxIC8qIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTJCMjM1Mjc2ODE3NTUwMDIwQzdDMSAv
KiBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkE2MUIwQzI2RjQzMjEyMDAxQUFEQjYgLyogU2Ny
b2xsQW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFu
aW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkIwNjg5NDI1MjQzQjkw
MDAxRThFNzUgLyogRGlzcGxheVRleHRCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxh
eVRleHRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkIwNjg5NjI1MjQz
QjkwMDAxRThFNzUgLyogRGlzcGxheVRleHRCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheVRl
eHRCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNjcxLDYgKzIxNjczLDgg
QEAKIAkJCQkwRjEzMTYzRjE2RUQwQ0RFMDAzNUNDMDQgLyogUGxhdGZvcm1DQUZpbHRlcnNDb2Nv
YS5tbSAqLywKIAkJCQkyRDcwQkExMjE4MDc0RERGMDAwMTkwOEEgLyogUGxhdGZvcm1DQUxheWVy
Q29jb2EuaCAqLywKIAkJCQk0OTU4NzgyMDEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxh
eWVyQ29jb2EubW0gKi8sCisJCQkJMEZBMkIyMzMyNzY4MTc1NDAwMjBDN0MxIC8qIFBsYXRmb3Jt
Q0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLmggKi8sCisJCQkJMEZBMkIyMzUyNzY4MTc1
NTAwMjBDN0MxIC8qIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLm1tICov
LAogCQkJCTMxREVBNDU0MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVy
LmggKi8sCiAJCQkJMzFERUE0NTMxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJhY2tkcm9w
TGF5ZXIubW0gKi8sCiAJCQkJMEY1ODBGQTExNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVkQmFj
a2luZ0xheWVyLmggKi8sCkBAIC0zMzEyMSw3ICszMzEyNSw2IEBACiAJCQlpc2EgPSBQQlhIZWFk
ZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKLQkJCQk3QjU4MkREODI3MTZGNTVCMDA0QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJh
Y3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IGNjZDIyNzEzYjk4MjI4YWU2MDAxODNkMzA5NDRl
OGE5MmJiMjQzYzUuLjY0NjY0YWU4MmE2NWRjNzJkNDBjMDVkZDNkYmY0Y2M4YzMxMWFjMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTI0
NSw3ICsyNDUsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNl
Y29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCgpOwogCi0gICAgdm9pZCBhcHBseUxheWVyUG9z
aXRpb25zSW50ZXJuYWwoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX3RyZWVMb2NrKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwbHlMYXllclBvc2l0aW9uc0ludGVybmFsKCkgV1RG
X1JFUVVJUkVTX0xPQ0sobV90cmVlTG9jayk7CiAgICAgdm9pZCByZW1vdmVBbGxOb2RlcygpIFdU
Rl9SRVFVSVJFU19MT0NLKG1fdHJlZUxvY2spOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBoYXNO
b2RlV2l0aEFuaW1hdGVkU2Nyb2xsQ2hhbmdlZChib29sIC8qIGhhc05vZGVXaXRoQW5pbWF0ZWRT
Y3JvbGwgKi8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuaAppbmRleCBhZTM0MDQ3ZTU4ZmI5NWI4NzEyMTVkN2M2Yjkx
Y2Q4ODJiNDc2NWJhLi4yY2FlYmVkY2M4NGIwNmYyMjliM2U0MGUxMmU5ZTkwOGY0ODkxZjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYXNOb2Rl
V2l0aEFuaW1hdGVkU2Nyb2xsQ2hhbmdlZChib29sKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHN0
b3JlU2Nyb2xsUG9zaXRpb25zQXRMYXN0RGlzcGxheVJlZnJlc2goKSBXVEZfUkVRVUlSRVNfTE9D
SyhtX3RyZWVMb2NrKTsKLSAgICAKKwogICAgIHZvaWQgc2VydmljZVNjcm9sbEFuaW1hdGlvbnMo
TW9ub3RvbmljVGltZSkgV1RGX1JFUVVJUkVTX0xPQ0sobV90cmVlTG9jayk7CiAKICAgICBTZWNv
bmRzIGZyYW1lRHVyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKaW5kZXggZjc0NTkzNTU4
YTJlYzY5MjhiOTQ2MWViYzY4M2RlNTc3ZTc0N2ZkZC4uNTY5M2FjZmVhN2JkZjRjOGQ4NTU1ZTFk
MDViMzAyOTcxMDM3ZmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKQEAgLTUzLDYgKzUzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTdGFydFJlbmRlcmluZ1VwZGF0ZSgpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQ29tcGxldGVSZW5kZXJpbmdVcGRhdGUoKSBmaW5hbDsKIAorICAgIHZvaWQg
d2lsbFN0YXJ0UGxhdGZvcm1SZW5kZXJpbmdVcGRhdGUoKSBmaW5hbDsKICAgICB2b2lkIGRpZENv
bXBsZXRlUGxhdGZvcm1SZW5kZXJpbmdVcGRhdGUoKSBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRl
VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQppbmRleCAx
M2NlMzNkY2U5MWUzNzNjYzllMGYzYTY0ZGQ4N2RhMzM0YTAzYmZmLi5kODE3ZGViNDA2MTQ0NjQ5
YTNiYjZlOWYzMTkyZWQ1ZWJiOTMwZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCkBAIC0z
Myw2ICszMyw3IEBACiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgIlBhZ2UuaCIKKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXll
ZFJlbGVhc2VyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbXBvcnQgIlJl
Z2lvbi5oIgogI2ltcG9ydCAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCkBAIC0xNDIsOSArMTQzLDE1
IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmRpZENvbXBsZXRlUmVuZGVyaW5nVXBk
YXRlKCkKICAgICAgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKIH0KIAordm9pZCBTY3Jv
bGxpbmdDb29yZGluYXRvck1hYzo6d2lsbFN0YXJ0UGxhdGZvcm1SZW5kZXJpbmdVcGRhdGUoKQor
eworICAgIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjpzaW5nbGV0b24o
KS5tYWluVGhyZWFkQ29tbWl0V2lsbFN0YXJ0KCk7Cit9CisKIHZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3JNYWM6OmRpZENvbXBsZXRlUGxhdGZvcm1SZW5kZXJpbmdVcGRhdGUoKQogewogICAgIGRv
d25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSgpKS0+ZGlkQ29tcGxl
dGVQbGF0Zm9ybVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRz
RGVsYXllZFJlbGVhc2VyOjpzaW5nbGV0b24oKS5tYWluVGhyZWFkQ29tbWl0RGlkRW5kKCk7CiB9
CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6Omhhc05vZGVXaXRoQW5pbWF0ZWRTY3Jv
bGxDaGFuZ2VkKGJvb2wgaGFzQW5pbWF0aW5nTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5oCmluZGV4IDg4ZGFkMWVkZDFi
OTA1MjBkMWYwY2I2Yjc3MDZmZWQwMjI0MDY3YWUuLjUxYjk5MjUyMWY5ZTBkNzdjZWNmMDJkOTQ4
YzA1NDdhY2JkYjlmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMuaApAQCAtNTUsNiArNTUsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6RGVmZXJSZWFzb24pIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21w
bGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxl
QXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGZpbmFs
OwogCisgICAgdm9pZCByZWdpc3RlckZvclBsYXRmb3JtUmVuZGVyaW5nVXBkYXRlQ2FsbGJhY2so
KTsKKyAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnNJbnRlcm5hbCgpIGZpbmFsIFdURl9SRVFV
SVJFU19MT0NLKG1fdHJlZUxvY2spOworCiAgICAgdm9pZCBsb2NrTGF5ZXJzRm9ySGl0VGVzdGlu
ZygpIGZpbmFsIFdURl9BQ1FVSVJFU19MT0NLKG1fbGF5ZXJIaXRUZXN0TXV0ZXgpOwogICAgIHZv
aWQgdW5sb2NrTGF5ZXJzRm9ySGl0VGVzdGluZygpIGZpbmFsIFdURl9SRUxFQVNFU19MT0NLKG1f
bGF5ZXJIaXRUZXN0TXV0ZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCmluZGV4IDM1ZmNlMWEyZDAwNDBhNzA1OWMz
OGYyYjg5MTgwMmIxNjVkMzdlN2QuLmEzMWI0YmRkYTFhYWMzZGJjZDc4YmFkZWVkNzUzMjZlNzdj
ZWE1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlTWFjLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgorI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVy
Q29udGVudHNEZWxheWVkUmVsZWFzZXIuaCIKICNpbXBvcnQgIlNjcm9sbGluZ1RyZWVGaXhlZE5v
ZGUuaCIKICNpbXBvcnQgIlNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlLmgiCiAjaW1wb3J0
ICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgiCkBAIC0zOCw2ICszOSw3IEBA
CiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgogI2ltcG9ydCAiV2ViTGF5ZXIuaCIK
ICNpbXBvcnQgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKQEAg
LTI0MCw2ICsyNDIsMjUgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTWFjOjp1bmxvY2tMYXllcnNGb3JI
aXRUZXN0aW5nKCkKICAgICBtX2xheWVySGl0VGVzdE11dGV4LnVubG9jaygpOwogfQogCit2b2lk
IFNjcm9sbGluZ1RyZWVNYWM6OmFwcGx5TGF5ZXJQb3NpdGlvbnNJbnRlcm5hbCgpCit7CisgICAg
aWYgKFNjcm9sbGluZ1RocmVhZDo6aXNDdXJyZW50VGhyZWFkKCkpCisgICAgICAgIHJlZ2lzdGVy
Rm9yUGxhdGZvcm1SZW5kZXJpbmdVcGRhdGVDYWxsYmFjaygpOworCisgICAgVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlOjphcHBseUxheWVyUG9zaXRpb25zSW50ZXJuYWwoKTsKK30KKwordm9pZCBTY3Jv
bGxpbmdUcmVlTWFjOjpyZWdpc3RlckZvclBsYXRmb3JtUmVuZGVyaW5nVXBkYXRlQ2FsbGJhY2so
KQoreworICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W10geworICAgICAgICBQ
bGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6c2luZ2xldG9uKCkuc2Nyb2xs
aW5nVGhyZWFkQ29tbWl0V2lsbFN0YXJ0KCk7CisgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlv
blBoYXNlUHJlTGF5b3V0XTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6
W10geworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6c2lu
Z2xldG9uKCkuc2Nyb2xsaW5nVGhyZWFkQ29tbWl0RGlkRW5kKCk7CisgICAgfSBmb3JQaGFzZTpr
Q0FUcmFuc2FjdGlvblBoYXNlUG9zdENvbW1pdF07Cit9CisKIHZvaWQgU2Nyb2xsaW5nVHJlZU1h
Yzo6c2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+
JiYgbW9uaXRvcikKIHsKICAgICBtX3doZWVsRXZlbnRUZXN0TW9uaXRvciA9IFdURk1vdmUobW9u
aXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBhMTgyYzUyNTRlODAyY2E3OWEwNGE2NzZhYWRmMWE1
MWJkNjA4ZTQ3Li43NzI3YTI1ODg1OGM0M2I0OGM0ZDc2NGIwYjJmMWVjNzAzM2IwZmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAKQEAgLTIzNTEsNyArMjM1MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVDb250ZW50c1Zpc2liaWxpdHkoKQogICAgICAgICBpZiAobV9iYWNrZHJvcExheWVyKQog
ICAgICAgICAgICAgbV9iYWNrZHJvcExheWVyLT5zZXRIaWRkZW4oZmFsc2UpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzKG51bGxwdHIpOworICAgICAgICBtX2xh
eWVyLT5jbGVhckNvbnRlbnRzKCk7CiAKICAgICAgICAgaWYgKG1fbGF5ZXJDbG9uZXMpIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgbGF5ZXIgOiBtX2xheWVyQ2xvbmVzLT5wcmltYXJ5TGF5ZXJD
bG9uZXMudmFsdWVzKCkpCkBAIC0yNjc0LDcgKzI2NzQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6dXBkYXRlRHJhd3NDb250ZW50KCkKICAgICAgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5
KCk7CiAgICAgICAgIG1faGFzRXZlclBhaW50ZWQgPSBmYWxzZTsKICAgICB9IGVsc2UgewotICAg
ICAgICBtX2xheWVyLT5zZXRDb250ZW50cyhudWxscHRyKTsKKyAgICAgICAgbV9sYXllci0+Y2xl
YXJDb250ZW50cygpOwogICAgICAgICBpZiAobV9sYXllckNsb25lcykgewogICAgICAgICAgICAg
Zm9yIChhdXRvJiBsYXllciA6IG1fbGF5ZXJDbG9uZXMtPnByaW1hcnlMYXllckNsb25lcy52YWx1
ZXMoKSkKICAgICAgICAgICAgICAgICBsYXllci0+c2V0Q29udGVudHMobnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcAppbmRleCAxZWU4OWIzZWVkNTdmZDQ2MDAwMGIzMzMwNDcyYzljMWE1ZmM1YmRjLi44
NTIzNDZmNmI1YzU2N2RlMjlmMzUxNzdkYzQ4NzIzNjVkZjI3ZDQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAK
QEAgLTE5OSw2ICsxOTksMTEgQEAgTGF5ZXJQb29sJiBQbGF0Zm9ybUNBTGF5ZXI6OmxheWVyUG9v
bCgpCiAgICAgcmV0dXJuICpzaGFyZWRQb29sOwogfQogCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6
Y2xlYXJDb250ZW50cygpCit7CisgICAgc2V0Q29udGVudHMobnVsbHB0cik7Cit9CisKIHZvaWQg
UGxhdGZvcm1DQUxheWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIE9w
dGlvblNldDxQbGF0Zm9ybUxheWVyVHJlZUFzVGV4dEZsYWdzPikKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKaW5k
ZXggOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZS4uMTg5ZWQzZDU5MmU1
ZjA1OTBmZTM0OTVjMjBlYzA2MGM2NGU4YWZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTE5OSw2ICsxOTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRzKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJD
b250ZW50cygpOwogCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oCmluZGV4IDgxOTk1N2NhY2RhYjVmMjE4YWYzZTNhZmFlODRhY2Y3ZTA0OWIy
YjQuLjRiMzAwMThhNmM0ZWE2ZWNmMDlhNjJlYTFiMGY4YzA2YzM4YmE0ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTIwLDYgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xlYXJDb250ZW50cygpIG92ZXJyaWRlOwogI2lmIEhBVkUoSU9TVVJG
QUNFKQogICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMmE0NWRkYzQ1
OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMwZC4uMDA0NGZhMmMxZDQzNDhlNjgzZDQzNmZi
ZmY4YWM1M2VlOWViOTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAg
LTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIk1vZGVsLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2EuaCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FGaWx0ZXJzLmgiCisjaW1wb3J0ICJQ
bGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlci5oIgogI2ltcG9ydCAiU2Nyb2xs
YmFyVGhlbWVNYWMuaCIKICNpbXBvcnQgIlRpbGVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJUaWxl
ZEJhY2tpbmcuaCIKQEAgLTY3OCw3ICs2NzksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sIGF0dGFjaGVkKQogICAgIGlmIChhdHRhY2hl
ZCkKICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgZWxzZQotICAgICAgICBzZXRDb250
ZW50cyhudWxscHRyKTsKKyAgICAgICAgY2xlYXJDb250ZW50cygpOwogfQogCiBib29sIFBsYXRm
b3JtQ0FMYXllckNvY29hOjpiYWNraW5nU3RvcmVBdHRhY2hlZCgpIGNvbnN0CkBAIC03ODQsNiAr
Nzg1LDE1IEBAIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29udGVudHMoKSBjb25z
dAogICAgIHJldHVybiAoX19icmlkZ2UgQ0ZUeXBlUmVmKVttX2xheWVyIGNvbnRlbnRzXTsKIH0K
IAordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y2xlYXJDb250ZW50cygpCit7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjpz
aW5nbGV0b24oKS50YWtlTGF5ZXJDb250ZW50cygqdGhpcyk7CisjZWxzZQorICAgIHNldENvbnRl
bnRzKG51bGxwdHIpOworI2VuZGlmCit9CisKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0Rl
bGF5ZWRSZWxlYXNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwNGFjNWZlY2IyZjBiMGU2MDBkNmQxZGNlZjI3
MzE2ZTY0ODU4MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlci5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1DQUxheWVyOworCisvLyBUaGlzIGNsYXNz
IGV4aXN0cyB0byB3b3JrIGFyb3VuZCByZGFyOi8vODU4OTI5NTksIHdoZXJlIENBQmFja2luZ1N0
b3JlIG9iamVjdHMgd291bGQgZ2V0IHJlbGVhc2VkIG9uIHRoZSBTY3JvbGxpbmdUaHJlYWQKKy8v
IGR1cmluZyBzY3JvbGxpbmcgY29tbWl0cywgd2hpY2ggY2FuIHRha2UgbG9uZyBlbm91Z2ggdG8g
Y2F1c2Ugc2Nyb2xsaW5nIGZyYW1lIGRyb3BzLgorY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29udGVu
dHNEZWxheWVkUmVsZWFzZXIgOiBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5ZXJD
b250ZW50c0RlbGF5ZWRSZWxlYXNlcj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRm
b3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXImIHNpbmdsZXRvbigpOworCisg
ICAgdm9pZCB0YWtlTGF5ZXJDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXImKTsKKyAgICAKKyAgICB2
b2lkIG1haW5UaHJlYWRDb21taXRXaWxsU3RhcnQoKTsKKyAgICB2b2lkIG1haW5UaHJlYWRDb21t
aXREaWRFbmQoKTsKKworICAgIHZvaWQgc2Nyb2xsaW5nVGhyZWFkQ29tbWl0V2lsbFN0YXJ0KCk7
CisgICAgdm9pZCBzY3JvbGxpbmdUaHJlYWRDb21taXREaWRFbmQoKTsKKworcHJpdmF0ZToKKyAg
ICBmcmllbmQgTGF6eU5ldmVyRGVzdHJveWVkPFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXll
ZFJlbGVhc2VyPjsKKyAgICAKKyAgICBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxl
YXNlcigpOworCisgICAgdm9pZCB1cGRhdGVTYXdPdmVybGFwcGluZ0NvbW1pdCgpIFdURl9SRVFV
SVJFU19MT0NLKG1fbG9jayk7CisgICAgdm9pZCBjbGVhclJldGFpbmVkQ29udGVudHMoKTsKKwor
ICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0ZUeXBlUmVmPj4gbV9yZXRhaW5lZENvbnRlbnRzOworCisg
ICAgTG9jayBtX2xvY2s7CisgICAgdW5zaWduZWQgbV9pbk1haW5UaHJlYWRDb21taXRFbnRyeUNv
dW50IFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3Nj
cm9sbGluZ1RocmVhZENvbW1pdEVudHJ5Q291bnQgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2sp
IHsgMCB9OworICAgIGJvb2wgbV9oYWRPdmVybGFwcGluZ0NvbW1pdCBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fbG9jaykgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFz
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjAyZDI4Njk0
ZjY5NGEwMWNlNTU2NWIwNWYzNTIwYTc2YjhhZTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29udGVu
dHNEZWxheWVkUmVsZWFzZXIubW0KQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlci5oIgorCisjaWYgUExBVEZP
Uk0oTUFDKQorCisjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKKyNpbXBvcnQgPHd0Zi9SdW5M
b29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1DQUxheWVyQ29udGVudHNE
ZWxheWVkUmVsZWFzZXImIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjpz
aW5nbGV0b24oKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UGxhdGZvcm1DQUxh
eWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI+IGRlbGF5ZWRSZWxlYXNlcjsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKKyAgICAgICAgZGVsYXllZFJlbGVhc2VyLmNvbnN0cnVjdCgpOworICAgIH0pOworCisgICAg
cmV0dXJuIGRlbGF5ZWRSZWxlYXNlcjsKK30KKworUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxh
eWVkUmVsZWFzZXI6OlBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyKCkgPSBk
ZWZhdWx0OworCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjp0
YWtlTGF5ZXJDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHJldGFpbmVkQ29udGVudHMgPSBSZXRhaW5QdHIg
eyBsYXllci5jb250ZW50cygpIH07CisgICAgaWYgKHJldGFpbmVkQ29udGVudHMpCisgICAgICAg
IG1fcmV0YWluZWRDb250ZW50cy5hcHBlbmQoV1RGTW92ZShyZXRhaW5lZENvbnRlbnRzKSk7Cisg
ICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
Q29udGVudHNEZWxheWVkUmVsZWFzZXI6Om1haW5UaHJlYWRDb21taXRXaWxsU3RhcnQoKQorewor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICArK21faW5NYWluVGhyZWFkQ29tbWl0
RW50cnlDb3VudDsKKyAgICB1cGRhdGVTYXdPdmVybGFwcGluZ0NvbW1pdCgpOworfQorCit2b2lk
IFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2VyOjptYWluVGhyZWFkQ29tbWl0
RGlkRW5kKCkKK3sKKyAgICBib29sIGJvdGhDb21taXRzRG9uZTsKKyAgICBib29sIGhhZE92ZXJs
YXBwaW5nQ29tbWl0OworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owor
ICAgICAgICBBU1NFUlQobV9pbk1haW5UaHJlYWRDb21taXRFbnRyeUNvdW50KTsKKyAgICAgICAg
LS1tX2luTWFpblRocmVhZENvbW1pdEVudHJ5Q291bnQ7CisgICAgICAgIGJvdGhDb21taXRzRG9u
ZSA9ICFtX3Njcm9sbGluZ1RocmVhZENvbW1pdEVudHJ5Q291bnQgJiYgIW1faW5NYWluVGhyZWFk
Q29tbWl0RW50cnlDb3VudDsKKyAgICAgICAgaGFkT3ZlcmxhcHBpbmdDb21taXQgPSBtX2hhZE92
ZXJsYXBwaW5nQ29tbWl0OworICAgIH0KKworICAgIGlmIChib3RoQ29tbWl0c0RvbmUpIHsKKyAg
ICAgICAgaWYgKGhhZE92ZXJsYXBwaW5nQ29tbWl0ICYmIG1fcmV0YWluZWRDb250ZW50cy5zaXpl
KCkpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CisgICAgICAg
ICAgICAgICAgUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI6OnNpbmdsZXRv
bigpLmNsZWFyUmV0YWluZWRDb250ZW50cygpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjbGVhclJldGFpbmVkQ29udGVudHMoKTsK
KyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI6
OnNjcm9sbGluZ1RocmVhZENvbW1pdFdpbGxTdGFydCgpCit7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgICsrbV9zY3JvbGxp
bmdUaHJlYWRDb21taXRFbnRyeUNvdW50OworICAgIHVwZGF0ZVNhd092ZXJsYXBwaW5nQ29tbWl0
KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29udGVudHNEZWxheWVkUmVsZWFzZXI6OnNj
cm9sbGluZ1RocmVhZENvbW1pdERpZEVuZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgQVNTRVJUKG1fc2Nyb2xs
aW5nVGhyZWFkQ29tbWl0RW50cnlDb3VudCk7CisgICAgLS1tX3Njcm9sbGluZ1RocmVhZENvbW1p
dEVudHJ5Q291bnQ7CisgICAgaWYgKCFtX3Njcm9sbGluZ1RocmVhZENvbW1pdEVudHJ5Q291bnQg
JiYgIW1faW5NYWluVGhyZWFkQ29tbWl0RW50cnlDb3VudCkgeworICAgICAgICBpZiAobV9oYWRP
dmVybGFwcGluZ0NvbW1pdCkgeworICAgICAgICAgICAgLy8gbV9yZXRhaW5lZENvbnRlbnRzIG1p
Z2h0IGJlIGVtcHR5IChpdCdzIG5vdCBwcm90ZWN0ZWQgYnkgdGhlIGxvY2sgc28gd2UgY2FuJ3Qg
Y2hlY2sgaXQgaGVyZSksCisgICAgICAgICAgICAvLyBzbyB0aGlzIG1pZ2h0IGJlIGEgcG9pbnRs
ZXNzIGRpc3BhdGNoLCBidXQgbV9oYWRPdmVybGFwcGluZ0NvbW1pdCBpcyByYXJlLgorICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKKyAgICAgICAgICAgICAgICBQbGF0
Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6c2luZ2xldG9uKCkuY2xlYXJSZXRh
aW5lZENvbnRlbnRzKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb250ZW50c0RlbGF5ZWRSZWxlYXNlcjo6dXBkYXRlU2F3T3Zl
cmxhcHBpbmdDb21taXQoKQoreworICAgIG1faGFkT3ZlcmxhcHBpbmdDb21taXQgfD0gKG1faW5N
YWluVGhyZWFkQ29tbWl0RW50cnlDb3VudCAmJiBtX3Njcm9sbGluZ1RocmVhZENvbW1pdEVudHJ5
Q291bnQpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvbnRlbnRzRGVsYXllZFJlbGVhc2Vy
OjpjbGVhclJldGFpbmVkQ29udGVudHMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgbV9yZXRhaW5lZENvbnRlbnRzLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCisK
</data>
<flag name="commit-queue"
          id="472877"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>