<?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>226227</bug_id>
          
          <creation_ts>2021-05-25 10:59:42 -0700</creation_ts>
          <short_desc>[macOS] Support painting data detector highlights inside image overlays</short_desc>
          <delta_ts>2021-06-04 16:34:31 -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>Platform</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>
          <dependson>209788</dependson>
          <blocked>226267</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763577</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-25 10:59:42 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763598</commentid>
    <comment_count>1</comment_count>
      <attachid>429669</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-25 11:58:21 -0700</bug_when>
    <thetext>Created attachment 429669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763608</commentid>
    <comment_count>2</comment_count>
      <attachid>429674</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-25 12:15:22 -0700</bug_when>
    <thetext>Created attachment 429674
Fix pre-macOS 11 build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763997</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-26 11:54:07 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 429674 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763998</commentid>
    <comment_count>4</comment_count>
      <attachid>429779</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-26 11:59:30 -0700</bug_when>
    <thetext>Created attachment 429779
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764018</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-26 13:06:40 -0700</bug_when>
    <thetext>Committed r278121 (238171@main): &lt;https://commits.webkit.org/238171@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429779.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764019</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-26 13:07:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/78528218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766784</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-06-04 08:53:41 -0700</bug_when>
    <thetext>(In reply to EWS from comment #5)
&gt; Committed r278121 (238171@main): &lt;https://commits.webkit.org/238171@main&gt;
&gt; 
&gt; All reviewed patches have been landed. Closing bug and clearing flags on
&gt; attachment 429779 [details].

Follow-up build fix for coverage+release builds due to weak external symbol:

    REGRESSION (r278121): Fix build failure due to weak external symbol

Committed r278461 (278461@main): &lt;https://commits.webkit.org/278461@main&gt;

I believe this happened because the weak symbol (DDHighlightCreateWithRectsInVisibleRectWithStyleScaleAndDirection) was added to a second source file:

    Source/WebCore/page/mac/ImageOverlayControllerMac.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766787</commentid>
    <comment_count>8</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-04 08:59:58 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #7)
&gt; (In reply to EWS from comment #5)
&gt; &gt; Committed r278121 (238171@main): &lt;https://commits.webkit.org/238171@main&gt;
&gt; &gt; 
&gt; &gt; All reviewed patches have been landed. Closing bug and clearing flags on
&gt; &gt; attachment 429779 [details].
&gt; 
&gt; Follow-up build fix for coverage+release builds due to weak external symbol:
&gt; 
&gt;     REGRESSION (r278121): Fix build failure due to weak external symbol
&gt; 
&gt; Committed r278461 (278461@main): &lt;https://commits.webkit.org/278461@main&gt;
&gt; 
&gt; I believe this happened because the weak symbol
&gt; (DDHighlightCreateWithRectsInVisibleRectWithStyleScaleAndDirection) was
&gt; added to a second source file:
&gt; 
&gt;     Source/WebCore/page/mac/ImageOverlayControllerMac.mm

Ideally, these would be declared a softlinking header in PAL. I can do this refactoring in a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766994</commentid>
    <comment_count>9</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-04 16:34:31 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #8)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #7)
&gt; &gt; (In reply to EWS from comment #5)
&gt; &gt; &gt; Committed r278121 (238171@main): &lt;https://commits.webkit.org/238171@main&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; All reviewed patches have been landed. Closing bug and clearing flags on
&gt; &gt; &gt; attachment 429779 [details].
&gt; &gt; 
&gt; &gt; Follow-up build fix for coverage+release builds due to weak external symbol:
&gt; &gt; 
&gt; &gt;     REGRESSION (r278121): Fix build failure due to weak external symbol
&gt; &gt; 
&gt; &gt; Committed r278461 (278461@main): &lt;https://commits.webkit.org/278461@main&gt;
&gt; &gt; 
&gt; &gt; I believe this happened because the weak symbol
&gt; &gt; (DDHighlightCreateWithRectsInVisibleRectWithStyleScaleAndDirection) was
&gt; &gt; added to a second source file:
&gt; &gt; 
&gt; &gt;     Source/WebCore/page/mac/ImageOverlayControllerMac.mm
&gt; 
&gt; Ideally, these would be declared a softlinking header in PAL. I can do this
&gt; refactoring in a followup.

Doing this in https://bugs.webkit.org/show_bug.cgi?id=226669.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429669</attachid>
            <date>2021-05-25 11:58:21 -0700</date>
            <delta_ts>2021-05-25 12:45:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226227-20210525115820.patch</filename>
            <type>text/plain</type>
            <size>28110</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFjNDEyY2U2Y2ZkYTFk
ZWNmZDg1OWQxNGY4N2Y0OTFjMmI2NDJhZi4uZGQzOThmYTBiNTRlNDRjMDA1MWE4ZThmOTBlZjdm
MTUzNDAzMzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIxLTA1LTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gU3Vw
cG9ydCBwYWludGluZyBkYXRhIGRldGVjdG9yIGhpZ2hsaWdodHMgaW5zaWRlIGltYWdlIG92ZXJs
YXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYy
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgcGFpbnRpbmcgZGF0YSBkZXRlY3RvciBoaWdobGlnaHRzIGluc2lkZSBpbWFn
ZSBvdmVybGF5cyBieSBsZXZlcmFnaW5nIGBEYXRhRGV0ZWN0b3JIaWdobGlnaHRgLgorICAgICAg
ICBTZWUgY29tbWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYW5G
b3JUZWxlcGhvbmVOdW1iZXJzKToKKworICAgICAgICBBdm9pZCBwYWludGluZyBzZXJ2aWNlLWNv
bnRyb2xzLWJhc2VkIHRlbGVwaG9uZSBudW1iZXIgaGlnaGxpZ2h0cyBmb3Igc2VsZWN0ZWQgdGV4
dCBpbnNpZGUgaW1hZ2Ugb3ZlcmxheXMsIGluCisgICAgICAgIG9yZGVyIHRvIGF2b2lkIHBhaW50
aW5nIGEgcmVkdW5kYW50IGRhdGEgZGV0ZWN0b3IgaGlnaGxpZ2h0IGZvciB0ZWxlcGhvbmUgbnVt
YmVycyBpbiBpbWFnZSBvdmVybGF5cy4KKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VPdmVybGF5RGF0YURldGVjdG9yQ2xhc3NOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojppc0ltYWdlT3ZlcmxheURhdGFEZXRlY3Rv
clJlc3VsdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6dXBkYXRlV2l0
aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6CisgICAgICAgIChkaXYuaW1h
Z2Utb3ZlcmxheS1kYXRhLWRldGVjdG9yLXJlc3VsdCk6CisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIGluamVjdGluZyBlbGVtZW50cyBpbiB0aGUgRE9NIHRoYXQgcmVwcmVzZW50IGRhdGEgZGV0
ZWN0aW9uIHJlc3VsdHM7IHRoZXNlIGFyZSB0cmFuc2Zvcm1lZCBhbmQKKyAgICAgICAgb3Zlcmxh
aWQgb24gdGhlIGltYWdlIGluIHRoZSBzYW1lIHdheSBhcyBleGlzdGluZyB0ZXh0IGNvbnRhaW5l
cnMuIE5vdGUgdGhhdCB3ZSBsYXkgb3V0IHRoZXNlIGVsZW1lbnRzIG9uIHRvcAorICAgICAgICBv
ZiB0ZXh0LCBidXQgbWFrZSB0aGVtIGludmlzaWJsZSB0byBoaXQtdGVzdGluZyB1bmxlc3MgdGhl
IGBJZ25vcmVDU1NQb2ludGVyRXZlbnRzUHJvcGVydHlgIG9wdGlvbiBpcyBzcGVjaWZpZWQuCisg
ICAgICAgIFdlJ2xsIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgYmVoYXZpb3IgaW4gYSBmdXR1cmUg
cGF0Y2guCisKKyAgICAgICAgKiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUXVhZHNEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dW5pbnN0
YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlD
b250cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250
cm9sbGVyOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvSW1hZ2VP
dmVybGF5Q29udHJvbGxlci5oOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBpbWFnZSBvdmVybGF5
IGNvbnRyb2xsZXIsIHN1Y2ggdGhhdCB3ZSBpbnN0YWxsIHRoZSBwYWdlIG92ZXJsYXkgaWYgdGhl
cmUgaXMgYW55IHNlbGVjdGlvbiBpbnNpZGUKKyAgICAgICAgdGhlIGltYWdlIG92ZXJsYXkgKGFz
IG9wcG9zZWQgdG8gb25seSB3aGVuIHdlIG5lZWQgdG8gdXNlIHRoaXMgb3ZlcmxheSB0byBwYWlu
dCB0aGUgdGV4dCBzZWxlY3Rpb24gZm9yCisgICAgICAgIHRyYW5zcGFyZW50IGltYWdlcykuIElm
IGRhdGEgZGV0ZWN0b3JzIGFyZSBwcmVzZW50LCB3ZSdsbCBhZGRpdGlvbmFsbHkgc2V0IHVwIG91
dCBgRGF0YURldGVjdG9ySGlnaGxpZ2h0YHMgKG9uZQorICAgICAgICBmb3IgZWFjaCBkYXRhIGRl
dGVjdGlvbiByZXN1bHQgY29udGFpbmVyKS4KKworICAgICAgICAqIHBhZ2UvbWFjL0ltYWdlT3Zl
cmxheUNvbnRyb2xsZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVy
bGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVjdG9ySGlnaGxpZ2h0cyk6CisKKyAgICAgICAg
VHJhdmVyc2UgdGhlIGltYWdlIG92ZXJsYXkncyBzdWJ0cmVlIGluIHNlYXJjaCBvZiBjb250YWlu
ZXIgZWxlbWVudHMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHM7Cisg
ICAgICAgIGZvciBlYWNoIG9mIHRoZXNlIGVsZW1lbnRzLCB3ZSBjcmVhdGUgYSBuZXcgYERhdGFE
ZXRlY3RvckhpZ2hsaWdodGAgdXNpbmcgdGhlIGVsZW1lbnQncyBib3VuZHMsIGFuZCBzYXZlIHRo
ZQorICAgICAgICBwYWlyIGluIGBtX2RhdGFEZXRlY3RvckNvbnRhaW5lcnNBbmRIaWdobGlnaHRz
YC4gTm90ZSB0aGF0IHdlIGhvbGQgYSB3ZWFrIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5lciBlbGVt
ZW50LCBzdWNoCisgICAgICAgIHRoYXQgdGhlcmUncyBubyByaXNrIG9mIGxlYWtpbmcgYW55IG9m
IHRoZXNlIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdCBjb250YWluZXJzIChvciB0aGVpciBkb2N1bWVu
dHMpLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpwbGF0Zm9y
bUhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJv
bGxlcjo6aGFuZGxlRGF0YURldGVjdG9yQWN0aW9uKToKKworICAgICAgICBBZGQgYSBGSVhNRSBy
ZWZlcmVuY2luZyB0aGUgbmV4dCBwYXRjaCBpbiB0aGUgc2VxdWVuY2UuCisKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmNsZWFyRGF0YURldGVjdG9ySGlnaGxpZ2h0
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQubW06CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvckltYWdlT3ZlcmxheSk6CisK
KyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBjcmVhdGUgYSBgRGF0YURldGVjdG9ySGln
aGxpZ2h0YCBmb3IgaW1hZ2Ugb3ZlcmxheXMuCisKIDIwMjEtMDUtMjUgIEVucmlxdWUgT2Nhw7Fh
IEdvbnrDoWxleiAgPGVvY2FuaGFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBMYXlvdXQg
dGVzdCBtZWRpYS90cmFjay90cmFjay1jdWUtbWlzc2luZy5odG1sIGlzIGZhaWxpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CmluZGV4IGFkOTgyMThhZjhmZjNmZjcwZGNhODhjMDVjMjU4ZjNiZGFl
NGUwMzQuLjdiY2Q4ZDFkNGVlMDlhYzZlYzIwNWE3MDk0ODU0OTFjODc4YTIzNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dApAQCAtMTkyLDYgKzE5Miw3IEBAIHBhZ2UvaW9zL1dlYkV2ZW50UmVn
aW9uLm1tCiBwYWdlL21hYy9DaHJvbWVNYWMubW0KIHBhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFj
Lm1tCiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KK3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNv
bnRyb2xsZXJNYWMubW0KIHBhZ2UvbWFjL1BhZ2VNYWMubW0KIHBhZ2UvbWFjL1NlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXIubW0KIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
ZjBmZGY0MjkyODc1NGE5ZjRmMjdhYjczZThjYWFjYmQ1ODM4ZWZkLi5kYjljY2E3ZDYzY2Y5Njc2
NDcxMzZlYjJjZDNlYzI4ZGUzMzVmYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjg0OSw2ICsxNjg0OSw3IEBACiAJCUY0
OUU5OEU0MjFERUU2QzEwMDlBRTU1RSAvKiBFZGl0QWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVkaXRBY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEIyQTkw
NjI2NTAyQkEwMDA5RTcyODYgLyogRGF0YURldGVjdG9ySGlnaGxpZ2h0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERhdGFEZXRlY3RvckhpZ2hsaWdodC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEIyQTkwODI2NTAyQkMwMDA5RTcyODYgLyogRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNEIyQTkwQzI2NTA4N0U0MDA5RTcyODYgLyogSW1hZ2VPdmVy
bGF5Q29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEltYWdlT3ZlcmxheUNv
bnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QjQyMkMyMjIw
QzAwMDAwMDlFMUU3RCAvKiBET01QYXN0ZUFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01QYXN0
ZUFjY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEM1RjIwNTI0NzlFN0VF
MDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDNUYyMDgy
NDc5RTlDODAwRTlCNEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENsaXBib2FyZEltYWdlUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzNjEyLDYgKzIzNjEzLDcgQEAKIAkJCQlBQkFGMjIwNzBDMDNCMUM3MDBCMEJDRjAg
LyogQ2hyb21lTWFjLm1tICovLAogCQkJCUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFn
Q29udHJvbGxlck1hYy5tbSAqLywKIAkJCQk5M0MwOUE3RTBCMDY0RUVGMDA1QUJENEQgLyogRXZl
bnRIYW5kbGVyTWFjLm1tICovLAorCQkJCUY0QjJBOTBDMjY1MDg3RTQwMDlFNzI4NiAvKiBJbWFn
ZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tICovLAogCQkJCTgzNERENEYzMUJFMDg5ODkwMDJDOUMz
RSAvKiBQYWdlTWFjLm1tICovLAogCQkJCTJEOTNBRUUxMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLmggKi8sCiAJCQkJMkQ5M0FFRTIxOURGNTY0MTAwMkE4NkMz
IC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gKi8sCkBAIC0zMjMwMCw3ICszMjMwMiw2
IEBACiAJCQkJMUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZl
cklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJD
QSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFD
OUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QkMzRTYyNDMyNjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAw
N0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDUzOCw2
ICszNDUzOSw3IEBACiAJCQkJNDk5QjNFQzUxMjhDQ0M0NzAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FM
YXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDkzRTVFMDkxMkQ2NDIwNTAwMDIwMDgxIC8qIFBs
YXRmb3JtQ0FMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3MEJBMTMxODA3NERE
RjAwMDE5MDhBIC8qIFBsYXRmb3JtQ0FMYXllckNvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
QzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMTQ5Nzg3MTFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1Db250ZW50Rmls
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBCQzQ3NzUgLyogUGxh
dGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIzQjlBRDAwMTJDMEZF
IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCBjOWEzODAyODc4NDJiM2Q0MDFjYTYxZWI5MjExZTVmNDBmYjU0
OGM0Li40NTk3YmRlYTVkOTNkN2NkM2FmMTgwMWMzZjU5MjgwZmI5MzYzOWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zNjc5LDYgKzM2NzksMTAgQEAgc3RhdGljIFZlY3RvcjxT
aW1wbGVSYW5nZT4gc2NhbkZvclRlbGVwaG9uZU51bWJlcnMoY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlKQogICAgIC8vIERvbid0IHNjYW4gZm9yIHBob25lIG51bWJlcnMgaW5zaWRlIGVkaXRhYmxl
IHJlZ2lvbnMuCiAgICAgaWYgKGF1dG8gc3RhcnROb2RlID0gbWFrZVJlZihyYW5nZS5zdGFydENv
bnRhaW5lcigpKTsgc3RhcnROb2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpCiAgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBpZiAoSFRNTEVsZW1lbnQ6OmlzSW5zaWRlSW1hZ2VPdmVybGF5KHJhbmdl
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIGF1dG8gdGV4dCA9IHBsYWluVGV4dChyYW5n
ZSk7CiAgICAgVmVjdG9yPFNpbXBsZVJhbmdlPiByZXN1bHQ7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGV4dC5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggYmI3
NjhhMjE5YjA2N2Y1ODVkMDZiYmU1ZGM3OTRmYWQ3MWI1YjAxZi4uMDJiNTc5ODhlNDdkYjQ5ZjA5
ZjY0YWQ0Y2QzODQwNWFiMjE4YTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTEyMzQsNiArMTIzNCwxMiBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VPdmVy
bGF5RWxlbWVudElkZW50aWZpZXIoKQogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCitzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VPdmVybGF5RGF0YURldGVjdG9yQ2xhc3NOYW1lKCkK
K3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IGNsYXNzTmFtZSgiaW1hZ2Utb3ZlcmxheS1kYXRhLWRldGVjdG9yLXJlc3VsdCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gY2xhc3NOYW1lOworfQorCiBi
b29sIEhUTUxFbGVtZW50OjpzaG91bGRFeHRlbmRTZWxlY3Rpb25Ub1RhcmdldE5vZGUoY29uc3Qg
Tm9kZSYgdGFyZ2V0Tm9kZSwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQmVmb3Jl
VXBkYXRlKQogewogICAgIGlmICghaXM8SFRNTERpdkVsZW1lbnQ+KHRhcmdldE5vZGUpKQpAQCAt
MTI3Nyw2ICsxMjgzLDExIEBAIHN0YXRpYyBSZWZQdHI8SFRNTEVsZW1lbnQ+IGltYWdlT3Zlcmxh
eUhvc3QoY29uc3QgTm9kZSYgbm9kZSkKICAgICByZXR1cm4gZWxlbWVudC0+aGFzSW1hZ2VPdmVy
bGF5KCkgPyBlbGVtZW50IDogbnVsbHB0cjsKIH0KIAorYm9vbCBIVE1MRWxlbWVudDo6aXNJbWFn
ZU92ZXJsYXlEYXRhRGV0ZWN0b3JSZXN1bHQoKSBjb25zdAoreworICAgIHJldHVybiBpbWFnZU92
ZXJsYXlIb3N0KCp0aGlzKSAmJiBoYXNDbGFzcygpICYmIGNsYXNzTmFtZXMoKS5jb250YWlucyhp
bWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUoKSk7Cit9CisKIGJvb2wgSFRNTEVsZW1l
bnQ6OmlzSW5zaWRlSW1hZ2VPdmVybGF5KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKICAg
ICBhdXRvIGNvbW1vbkFuY2VzdG9yID0gbWFrZVJlZlB0cihjb21tb25JbmNsdXNpdmVBbmNlc3Rv
cjxDb21wb3NlZFRyZWU+KHJhbmdlKSk7CkBAIC0xNDY3LDYgKzE0NzgsMzEgQEAgdm9pZCBIVE1M
RWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4dHJhY3Rpb25S
ZXN1bHQmJiByZXN1bHQKICAgICAgICAgICAgIGxpbmVDb250YWluZXItPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlDdXJzb3IsIENTU1ZhbHVlVGV4dCk7CiAgICAgfQogCisjaWYg
RU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgIGZvciAoYXV0byYgZGF0YURldGVjdG9yIDogcmVz
dWx0LmRhdGFEZXRlY3RvcnMpIHsKKyAgICAgICAgaWYgKGRhdGFEZXRlY3Rvci5ub3JtYWxpemVk
UXVhZHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBk
YXRhRGV0ZWN0b3JDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkp
OworICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92
ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUoKSk7CisgICAgICAgIGNvbnRhaW5lci0+YXBwZW5k
Q2hpbGQoZGF0YURldGVjdG9yQ29udGFpbmVyKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGNvbWUgdXAgd2l0aCBhIHdheSB0byBjb2FsZXNjZSB0aGUgYm91bmRpbmcgcXVhZHMgaW50
byBvbmUgb3IgbW9yZSByb3RhdGVkIHJlY3RzIHdpdGggdGhlIHNhbWUgYW5nbGUgb2Ygcm90YXRp
b24uCisgICAgICAgIGF1dG8gdGFyZ2V0UXVhZCA9IGRhdGFEZXRlY3Rvci5ub3JtYWxpemVkUXVh
ZHMuZmlyc3QoKTsKKyAgICAgICAgdGFyZ2V0UXVhZC5zY2FsZShjb250YWluZXJTaXplLndpZHRo
KCksIGNvbnRhaW5lclNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIGF1dG8gdGFyZ2V0Qm91bmRz
ID0gcm90YXRlZEJvdW5kaW5nUmVjdFdpdGhNaW5pbXVtQW5nbGVPZlJvdGF0aW9uKHRhcmdldFF1
YWQsIDAuMDEpOworICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgdGFyZ2V0Qm91bmRzLnNpemUud2lkdGgoKSwgQ1NT
VW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgIGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgdGFyZ2V0Qm91bmRzLnNpemUuaGVp
Z2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWlu
ZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIG1ha2VTdHJp
bmcoCisgICAgICAgICAgICAidHJhbnNsYXRlKCJfcywKKyAgICAgICAgICAgIHN0ZDo6cm91bmQo
dGFyZ2V0Qm91bmRzLmNlbnRlci54KCkgLSAodGFyZ2V0Qm91bmRzLnNpemUud2lkdGgoKSAvIDIp
KSwgInB4LCAiX3MsCisgICAgICAgICAgICBzdGQ6OnJvdW5kKHRhcmdldEJvdW5kcy5jZW50ZXIu
eSgpIC0gKHRhcmdldEJvdW5kcy5zaXplLmhlaWdodCgpIC8gMikpLCAicHgpICJfcywKKyAgICAg
ICAgICAgIHRhcmdldEJvdW5kcy5hbmdsZUluUmFkaWFucyA/IG1ha2VTdHJpbmcoInJvdGF0ZSgi
X3MsIHRhcmdldEJvdW5kcy5hbmdsZUluUmFkaWFucywgInJhZCkgIl9zKSA6IGVtcHR5U3RyaW5n
KCkKKyAgICAgICAgKSk7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
KwogICAgIGlmIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZyYW1lKCkpKQog
ICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2NoZWR1bGVDdXJzb3JVcGRhdGUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCAxODY2YTYwNDkyZjkzNWRkYTEwMzlhMmFh
ZDFhNWNmZjc1ZDUxNDVjLi4wMWU2MjVmZWI2MWFjNzJkZDU3ZWIwZDIzNDliY2VhM2I3MDQ0ZTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xMzUsNiArMTM1LDcgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkRXh0ZW5kU2VsZWN0aW9u
VG9UYXJnZXROb2RlKGNvbnN0IE5vZGUmIHRhcmdldE5vZGUsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbkJlZm9yZVVwZGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNJ
bWFnZU92ZXJsYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzSW1hZ2VPdmVy
bGF5RGF0YURldGVjdG9yUmVzdWx0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaXNJbnNpZGVJbWFnZU92ZXJsYXkoY29uc3QgU2ltcGxlUmFuZ2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0luc2lkZUltYWdlT3ZlcmxheShjb25zdCBOb2RlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNJbWFnZU92ZXJsYXlUZXh0KGNvbnN0
IE5vZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3Zl
cmxheS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCmlu
ZGV4IDBlMWE5MmZjNWQwMWY0N2VkODA5ZjRkOGE2NDJkOTNmOGVhNzZjZjEuLjgxNTJjOTA0MmQ1
NWY3NzE0YjNhMzAxZjI4NzhhMmZhODJmMWE4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvaW1hZ2VPdmVybGF5LmNzcwpAQCAtNDMsMyArNDMsOSBAQCBkaXYuaW1hZ2Utb3Zlcmxh
eS1saW5lLCAuaW1hZ2Utb3ZlcmxheS10ZXh0IHsKICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAg
ICAgYmFja2dyb3VuZC1jb2xvcjogaGlnaGxpZ2h0OwogfQorCitkaXYuaW1hZ2Utb3ZlcmxheS1k
YXRhLWRldGVjdG9yLXJlc3VsdCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAppbmRleCA0ZTAw
YWQ3NzQ1MWI0OWIzODY1OTc3Y2IyZTE3ZDQxNjEwYWZhN2Q4Li5iY2IzYmIzYTUwZTdlYTVhMzdl
OTExYmVhYjY0MTFlMDI0OTQ2Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lt
YWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VP
dmVybGF5Q29udHJvbGxlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJMYXlvdXRS
ZWN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdl
LmgiCkBAIC02MCwzNyArNjEsNDcgQEAgdm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpzZWxl
Y3Rpb25RdWFkc0RpZENoYW5nZShGcmFtZSYgZnJhbWUsIGNvbnN0IFZlY3RvcjwKICAgICBpZiAo
ZnJhbWUuZWRpdG9yKCkuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIG92ZXJsYXlIb3N0UmVuZGVyZXIgPSAoWyZdICgpIC0+IFJlbmRlckVsZW1l
bnQqIHsKLSAgICAgICAgaWYgKHF1YWRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotCisgICAgYXV0byBvdmVybGF5SG9zdCA9IChbJl0gKCkgLT4gUmVmUHRyPEhUTUxF
bGVtZW50PiB7CiAgICAgICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9IGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnJhbmdlKCk7CiAgICAgICAgIGlmICghc2VsZWN0ZWRSYW5nZSkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGlmICghSFRNTEVsZW1lbnQ6OmlzSW5z
aWRlSW1hZ2VPdmVybGF5KCpzZWxlY3RlZFJhbmdlKSB8fCBzZWxlY3RlZFJhbmdlLT5jb2xsYXBz
ZWQoKSkKKyAgICAgICAgaWYgKCFIVE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkoKnNl
bGVjdGVkUmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0
byBvdmVybGF5SG9zdCA9IG1ha2VSZWZQdHIoc2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWluZXIo
KS5zaGFkb3dIb3N0KCkpOwotICAgICAgICBpZiAoIW92ZXJsYXlIb3N0KSB7Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICB9CisgICAgICAgIGlmIChhdXRvIGhvc3QgPSBtYWtlUmVmUHRyKHNlbGVjdGVkUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCkuc2hhZG93SG9zdCgpKTsgaXM8SFRNTEVsZW1lbnQ+KGhvc3QpKQor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpob3N0
KSk7CiAKLSAgICAgICAgcmV0dXJuIG92ZXJsYXlIb3N0LT5yZW5kZXJlcigpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9KSgpOwogCi0gICAgaWYgKCFvdmVybGF5SG9zdFJlbmRlcmVy
IHx8ICFzaG91bGRVc2VQYWdlT3ZlcmxheVRvUGFpbnRTZWxlY3Rpb24oKm92ZXJsYXlIb3N0UmVu
ZGVyZXIpKSB7CisgICAgaWYgKCFvdmVybGF5SG9zdCkgeworICAgICAgICB1bmluc3RhbGxQYWdl
T3ZlcmxheUlmTmVlZGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG92
ZXJsYXlIb3N0UmVuZGVyZXIgPSBvdmVybGF5SG9zdC0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIW92
ZXJsYXlIb3N0UmVuZGVyZXIpIHsKICAgICAgICAgdW5pbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRl
ZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9vdmVybGF5U2VsZWN0aW9uUXVh
ZHMgPSBxdWFkczsKLSAgICBtX3NlbGVjdGlvbk92ZXJsYXlCb3VuZHMgPSBvdmVybGF5SG9zdFJl
bmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAgIG1fc2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yID0gb3ZlcmxheUhvc3RSZW5kZXJlci0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCk7Ci0gICAgbV9jdXJyZW50T3ZlcmxheURvY3VtZW50ID0gbWFrZVdlYWtQdHIob3ZlcmxheUhv
c3RSZW5kZXJlci0+ZG9jdW1lbnQoKSk7CisgICAgaWYgKHNob3VsZFVzZVBhZ2VPdmVybGF5VG9Q
YWludFNlbGVjdGlvbigqb3ZlcmxheUhvc3RSZW5kZXJlcikpIHsKKyAgICAgICAgbV9vdmVybGF5
U2VsZWN0aW9uUXVhZHMgPSBxdWFkczsKKyAgICAgICAgbV9zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IgPSBvdmVybGF5SG9zdFJlbmRlcmVyLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX292ZXJsYXlTZWxlY3Rpb25RdWFkcy5jbGVhcigpOworICAg
ICAgICBtX3NlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
OworICAgIH0KKworICAgIG1faW1hZ2VPdmVybGF5Qm91bmRzID0gb3ZlcmxheUhvc3RSZW5kZXJl
ci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB1
cGRhdGVEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKCpvdmVybGF5SG9zdCk7CisjZW5kaWYKIAotICAg
IGluc3RhbGxQYWdlT3ZlcmxheUlmTmVlZGVkKCkuc2V0TmVlZHNEaXNwbGF5KCk7CisgICAgaWYg
KGF1dG8mIG92ZXJsYXkgPSBpbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpOyAhbV9vdmVybGF5
U2VsZWN0aW9uUXVhZHMuaXNFbXB0eSgpKQorICAgICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxh
eSgpOwogfQogCiBib29sIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnNob3VsZFVzZVBhZ2VPdmVy
bGF5VG9QYWludFNlbGVjdGlvbihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKQEAgLTEx
OCwxMSArMTI5LDE1IEBAIFBhZ2VPdmVybGF5JiBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjppbnN0
YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpCiAKIHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6
dW5pbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpCiB7Ci0gICAgbV9zZWxlY3Rpb25PdmVybGF5
Qm91bmRzID0geyB9OworICAgIG1faW1hZ2VPdmVybGF5Qm91bmRzID0geyB9OwogICAgIG1fb3Zl
cmxheVNlbGVjdGlvblF1YWRzLmNsZWFyKCk7CiAgICAgbV9zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IgPSBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKICAgICBtX2N1cnJlbnRPdmVybGF5RG9jdW1l
bnQgPSBudWxscHRyOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNsZWFyRGF0YURldGVjdG9y
SGlnaGxpZ2h0cygpOworI2VuZGlmCisKICAgICBhdXRvIG92ZXJsYXlUb1VuaW5zdGFsbCA9IHN0
ZDo6ZXhjaGFuZ2UobV9vdmVybGF5LCBudWxscHRyKTsKICAgICBpZiAoIW1fcGFnZSB8fCAhb3Zl
cmxheVRvVW5pbnN0YWxsKQogICAgICAgICByZXR1cm47CkBAIC0xNjAsOCArMTc1LDE3IEBAIHZv
aWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIHBhZ2VPdmVy
bGF5LCBHcmFwaGljc0NvbnRleHQmCiAgICAgfQogCiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
bV9zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOwotICAgIGNvbnRleHQuY2xpcChtX3NlbGVjdGlv
bk92ZXJsYXlCb3VuZHMpOworICAgIGNvbnRleHQuY2xpcChtX2ltYWdlT3ZlcmxheUJvdW5kcyk7
CiAgICAgY29udGV4dC5maWxsUGF0aChjb2FsZXNjZWRTZWxlY3Rpb25QYXRoKTsKIH0KIAorI2lm
ICFQTEFURk9STShNQUMpCisKK2Jvb2wgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6cGxhdGZvcm1I
YW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCisjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaApp
bmRleCA2YzI3NmJjOGZiMTNmNTUzYzYzYjA1YjVkYTRiOWM2MTU1MmNiMWYyLi4xMGRmZmI0MzU1
NjIxYTY5OTVlZjhjNDRiYWQzOWVlYmI2ZGMxYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaApAQCAtMzEsMTggKzMxLDI3IEBACiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBQTEFURk9STShN
QUMpCisjaW5jbHVkZSAiRGF0YURldGVjdG9ySGlnaGxpZ2h0LmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OworY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3Mg
RmxvYXRRdWFkOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiBzdHJ1Y3QgR2Fw
UmVjdHM7CiAKLWNsYXNzIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIgZmluYWwgOiBwcml2YXRlIFBh
Z2VPdmVybGF5OjpDbGllbnQgeworY2xhc3MgSW1hZ2VPdmVybGF5Q29udHJvbGxlciBmaW5hbCA6
IHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIERh
dGFEZXRlY3RvckhpZ2hsaWdodENsaWVudAorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcihQ
YWdlJik7CkBAIC01NCwxOSArNjMsMzUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxNb3ZlVG9Q
YWdlKFBhZ2VPdmVybGF5JiwgUGFnZSopIGZpbmFsOwogICAgIHZvaWQgZGlkTW92ZVRvUGFnZShQ
YWdlT3ZlcmxheSYsIFBhZ2UqKSBmaW5hbCB7IH0KICAgICB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVy
bGF5JiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBmaW5hbDsK
LSAgICBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3Zl
cmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGZpbmFsIHsgcmV0dXJuIHBs
YXRmb3JtSGFuZGxlTW91c2VFdmVudChldmVudCk7IH0KIAogICAgIGJvb2wgc2hvdWxkVXNlUGFn
ZU92ZXJsYXlUb1BhaW50U2VsZWN0aW9uKGNvbnN0IFJlbmRlckVsZW1lbnQmKTsKIAogICAgIFBh
Z2VPdmVybGF5JiBpbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpOwogICAgIHZvaWQgdW5pbnN0
YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQg
dXBkYXRlRGF0YURldGVjdG9ySGlnaGxpZ2h0cyhjb25zdCBIVE1MRWxlbWVudCYpOworICAgIHZv
aWQgY2xlYXJEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKCk7CisgICAgYm9vbCBoYW5kbGVEYXRhRGV0
ZWN0b3JBY3Rpb24oY29uc3QgSFRNTEVsZW1lbnQmLCBjb25zdCBJbnRQb2ludCYpOworCisgICAg
RGF0YURldGVjdG9ySGlnaGxpZ2h0KiBhY3RpdmVIaWdobGlnaHQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodC5nZXQoKTsgfQorI2VuZGlmCisKKyAg
ICBib29sIHBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKKwogICAgIFdlYWtQdHI8UGFnZT4gbV9wYWdlOwogICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4g
bV9vdmVybGF5OwogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fY3VycmVudE92ZXJsYXlEb2N1bWVu
dDsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBtX292ZXJsYXlTZWxlY3Rpb25RdWFkczsKLSAgICBM
YXlvdXRSZWN0IG1fc2VsZWN0aW9uT3ZlcmxheUJvdW5kczsKKyAgICBMYXlvdXRSZWN0IG1faW1h
Z2VPdmVybGF5Qm91bmRzOwogICAgIENvbG9yIG1fc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yIHsg
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB1c2lu
ZyBDb250YWluZXJBbmRIaWdobGlnaHQgPSBzdGQ6OnBhaXI8V2Vha1B0cjxIVE1MRWxlbWVudD4s
IFJlZjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+PjsKKyAgICBWZWN0b3I8Q29udGFpbmVyQW5kSGln
aGxpZ2h0PiBtX2RhdGFEZXRlY3RvckNvbnRhaW5lcnNBbmRIaWdobGlnaHRzOworICAgIFJlZlB0
cjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IG1fYWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0Owor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
Yjc2MzM0MjMxYWNjMTgxNzVhOGE2MzAwM2JiN2RiOTE0OGE2NjQ2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQpA
QCAtMCwwICsxLDE1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1w
b3J0ICJEYXRhRGV0ZWN0aW9uLmgiCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkhU
TUxFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MTmFtZXMuaCIKKyNpbXBvcnQgIkludFJlY3QuaCIK
KyNpbXBvcnQgIlBhZ2UuaCIKKyNpbXBvcnQgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2ltcG9y
dCAiU2ltcGxlUmFuZ2UuaCIKKyNpbXBvcnQgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oIgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxwYWwvc3Bp
L21hYy9EYXRhRGV0ZWN0b3JzU1BJLmg+CisjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgorI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVjdG9y
SGlnaGxpZ2h0cyhjb25zdCBIVE1MRWxlbWVudCYgb3ZlcmxheUhvc3QpCit7CisgICAgaWYgKCFv
dmVybGF5SG9zdC5oYXNJbWFnZU92ZXJsYXkoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgY2xlYXJEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmPEhUTUxFbGVtZW50Pj4gZGF0YURldGVjdG9y
UmVzdWx0RWxlbWVudHM7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGRlc2NlbmRhbnRzT2ZUeXBl
PEhUTUxFbGVtZW50Pigqb3ZlcmxheUhvc3QudXNlckFnZW50U2hhZG93Um9vdCgpKSkgeworICAg
ICAgICBpZiAoY2hpbGQuaXNJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JSZXN1bHQoKSAmJiBjaGls
ZC5yZW5kZXJlcigpKQorICAgICAgICAgICAgZGF0YURldGVjdG9yUmVzdWx0RWxlbWVudHMuYXBw
ZW5kKG1ha2VSZWYoY2hpbGQpKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFJlZjxIVE1MRWxlbWVu
dD4+IGRhdGFEZXRlY3RvclJlc3VsdEVsZW1lbnRzV2l0aEhpZ2hsaWdodHM7CisgICAgZm9yIChh
dXRvJiBjb250YWluZXJBbmRIaWdobGlnaHQgOiBtX2RhdGFEZXRlY3RvckNvbnRhaW5lcnNBbmRI
aWdobGlnaHRzKSB7CisgICAgICAgIGlmIChjb250YWluZXJBbmRIaWdobGlnaHQuZmlyc3QpCisg
ICAgICAgICAgICBkYXRhRGV0ZWN0b3JSZXN1bHRFbGVtZW50c1dpdGhIaWdobGlnaHRzLmFkZCgq
Y29udGFpbmVyQW5kSGlnaGxpZ2h0LmZpcnN0KTsKKyAgICB9CisKKyAgICBpZiAoZGF0YURldGVj
dG9yUmVzdWx0RWxlbWVudHNXaXRoSGlnaGxpZ2h0cyA9PSBkYXRhRGV0ZWN0b3JSZXN1bHRFbGVt
ZW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBtYWluRnJhbWVWaWV3ID0gbWFrZVJl
ZlB0cihtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgaWYgKCFtYWluRnJhbWVWaWV3
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIob3Zl
cmxheUhvc3QuZG9jdW1lbnQoKS52aWV3KCkpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCA9IG51bGxwdHI7
CisgICAgbV9kYXRhRGV0ZWN0b3JDb250YWluZXJzQW5kSGlnaGxpZ2h0cy5jbGVhcigpOworICAg
IG1fZGF0YURldGVjdG9yQ29udGFpbmVyc0FuZEhpZ2hsaWdodHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShkYXRhRGV0ZWN0b3JSZXN1bHRFbGVtZW50cy5zaXplKCkpOworCisgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZGF0YURldGVjdG9yUmVzdWx0RWxlbWVudHMpIHsKKyAgICAgICAgQ0dSZWN0
IGVsZW1lbnRCb3VuZHMgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpOworICAgICAgICBlbGVtZW50Qm91bmRzLm9yaWdpbiA9IG1haW5GcmFtZVZpZXctPndp
bmRvd1RvQ29udGVudHMoZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KHJvdW5kZWRJbnRQb2lu
dChlbGVtZW50Qm91bmRzLm9yaWdpbikpKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHRlYWNoIERhdGFEZXRlY3RvckhpZ2hsaWdodCB0byByZW5kZXIgcXVhZHMgaW5zdGVhZCBvZiBh
bHdheXMgZmFsbGluZyBiYWNrIHRvIGF4aXMtYWxpZ25lZCBib3VuZGluZyByZWN0cy4KKyAgICAg
ICAgYXV0byBkZEhpZ2hsaWdodCA9IGFkb3B0Q0YoRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJ
blZpc2libGVSZWN0V2l0aFN0eWxlU2NhbGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmVsZW1lbnRC
b3VuZHMsIDEsIG1haW5GcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLCBEREhpZ2hsaWdo
dFN0eWxlQnViYmxlU3RhbmRhcmQgfCBEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3cs
IFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUywgMCkpOworICAgICAgICBt
X2RhdGFEZXRlY3RvckNvbnRhaW5lcnNBbmRIaWdobGlnaHRzLmFwcGVuZCh7IG1ha2VXZWFrUHRy
KGVsZW1lbnQuZ2V0KCkpLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvckltYWdlT3Zl
cmxheSgqbV9wYWdlLCAqdGhpcywgV1RGTW92ZShkZEhpZ2hsaWdodCksICptYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlKGVsZW1lbnQuZ2V0KCkpKSB9KTsKKyAgICB9Cit9CisKK2Jvb2wgSW1hZ2VPdmVy
bGF5Q29udHJvbGxlcjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQpCit7CisgICAgYXV0byBtYWluRnJhbWVWaWV3ID0gbWFrZVJlZlB0ciht
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgaWYgKCFtYWluRnJhbWVWaWV3KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGFjdGl2ZURhdGFE
ZXRlY3RvckVsZW1lbnQ7CisgICAgYXV0byBwcmV2aW91c0FjdGl2ZUhpZ2hsaWdodCA9IHN0ZDo6
ZXhjaGFuZ2UobV9hY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQsIG51bGxwdHIpOworICAgIGF1
dG8gbW91c2VQb3NpdGlvbkluQ29udGVudHMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRl
bnRzKGV2ZW50LnBvc2l0aW9uKCkpOworICAgIGJvb2wgbW91c2VJc092ZXJBY3RpdmVEYXRhRGV0
ZWN0b3JIaWdobGlnaHRCdXR0b24gPSBmYWxzZTsKKworICAgIGZvciAoYXV0byYgW2VsZW1lbnQs
IGhpZ2hsaWdodF0gOiBtX2RhdGFEZXRlY3RvckNvbnRhaW5lcnNBbmRIaWdobGlnaHRzKSB7Cisg
ICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEJv
b2xlYW4gaXNPdmVyQnV0dG9uID0gTk87CisgICAgICAgIGlmICghRERIaWdobGlnaHRQb2ludElz
T25IaWdobGlnaHQoaGlnaGxpZ2h0LT5oaWdobGlnaHQoKSwgbW91c2VQb3NpdGlvbkluQ29udGVu
dHMsICZpc092ZXJCdXR0b24pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbW91
c2VJc092ZXJBY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHRCdXR0b24gPSBpc092ZXJCdXR0b247
CisgICAgICAgIG1fYWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0ID0gaGlnaGxpZ2h0LmNvcHlS
ZWYoKTsKKyAgICAgICAgYWN0aXZlRGF0YURldGVjdG9yRWxlbWVudCA9IG1ha2VSZWZQdHIoKmVs
ZW1lbnQpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAocHJldmlvdXNBY3RpdmVI
aWdobGlnaHQgIT0gbV9hY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQpIHsKKyAgICAgICAgaWYg
KHByZXZpb3VzQWN0aXZlSGlnaGxpZ2h0KQorICAgICAgICAgICAgcHJldmlvdXNBY3RpdmVIaWdo
bGlnaHQtPmZhZGVPdXQoKTsKKworICAgICAgICBpZiAobV9hY3RpdmVEYXRhRGV0ZWN0b3JIaWdo
bGlnaHQpIHsKKyAgICAgICAgICAgIG1fb3ZlcmxheS0+bGF5ZXIoKS5hZGRDaGlsZChtX2FjdGl2
ZURhdGFEZXRlY3RvckhpZ2hsaWdodC0+bGF5ZXIoKSk7CisgICAgICAgICAgICBtX2FjdGl2ZURh
dGFEZXRlY3RvckhpZ2hsaWdodC0+ZmFkZUluKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCAmJiBtb3VzZUlz
T3ZlckFjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIGhh
bmRsZURhdGFEZXRlY3RvckFjdGlvbigqYWN0aXZlRGF0YURldGVjdG9yRWxlbWVudCwgbW91c2VQ
b3NpdGlvbkluQ29udGVudHMpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEltYWdl
T3ZlcmxheUNvbnRyb2xsZXI6OmhhbmRsZURhdGFEZXRlY3RvckFjdGlvbihjb25zdCBIVE1MRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uSW5Db250ZW50cykKK3sKKyAg
ICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBmcmFtZSA9
IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0
cihlbGVtZW50LmRvY3VtZW50KCkudmlldygpKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IENhbGwgb3V0IHRvIHRoZSBjbGllbnQg
bGF5ZXIgdG8gaGFuZGxlIHRoZSBjbGljay4KKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb25JbkNv
bnRlbnRzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBJbWFnZU92ZXJsYXlDb250cm9s
bGVyOjpjbGVhckRhdGFEZXRlY3RvckhpZ2hsaWdodHMoKQoreworICAgIG1fZGF0YURldGVjdG9y
Q29udGFpbmVyc0FuZEhpZ2hsaWdodHMuY2xlYXIoKTsKKyAgICBtX2FjdGl2ZURhdGFEZXRlY3Rv
ckhpZ2hsaWdodCA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQuaAppbmRleCBhMzQ3NjdiNmVhNGEzMDQ0OWEzYTQzMGM5
YjhhMWQwOTM0NjU1ZGFmLi5iMGYzMWQ5YTM3OGM0MTZjZWFiMjc4N2VjZjM3YzEyYzFkNDI3NDIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGln
aGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3Rvckhp
Z2hsaWdodC5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIERhdGFEZXRlY3RvckhpZ2hsaWdodCA6
IHB1YmxpYyBSZWZDb3VudGVkPERhdGFEZXRlY3RvckhpZ2hsaWdodD4sIHByaXZhdGUKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPERhdGFEZXRlY3RvckhpZ2hsaWdodD4gY3JlYXRlRm9yU2VsZWN0
aW9uKFBhZ2UmLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQmLCBSZXRhaW5QdHI8RERIaWdo
bGlnaHRSZWY+JiYsIFNpbXBsZVJhbmdlJiYpOwogICAgIHN0YXRpYyBSZWY8RGF0YURldGVjdG9y
SGlnaGxpZ2h0PiBjcmVhdGVGb3JUZWxlcGhvbmVOdW1iZXIoUGFnZSYsIERhdGFEZXRlY3Rvckhp
Z2hsaWdodENsaWVudCYsIFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4mJiwgU2ltcGxlUmFuZ2Um
Jik7CisgICAgc3RhdGljIFJlZjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IGNyZWF0ZUZvckltYWdl
T3ZlcmxheShQYWdlJiwgRGF0YURldGVjdG9ySGlnaGxpZ2h0Q2xpZW50JiwgUmV0YWluUHRyPERE
SGlnaGxpZ2h0UmVmPiYmLCBTaW1wbGVSYW5nZSYmKTsKIAogICAgIH5EYXRhRGV0ZWN0b3JIaWdo
bGlnaHQoKSA9IGRlZmF1bHQ7CiAKQEAgLTY5LDYgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBO
b25lID0gMCwKICAgICAgICAgVGVsZXBob25lTnVtYmVyID0gMSA8PCAwLAogICAgICAgICBTZWxl
Y3Rpb24gPSAxIDw8IDEsCisgICAgICAgIEltYWdlT3ZlcmxheSA9IDEgPDwgMiwKICAgICB9Owog
CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5tbQppbmRleCBk
NDQ3MTI1YjFjMDg0YTRkMDAxMjU0OGZiZjI0N2ZmNGUxMjk1MWVkLi45MWQ1MGRmMjk1YmQ1Y2E4
ZGMxN2I2OWJkMzdhYTJhOTFkMTZkMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQubW0KQEAgLTU3LDYgKzU3LDExIEBAIFJl
ZjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9y
VGVsZXBob25lTnVtYmVyKFBhZ2UmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YURldGVj
dG9ySGlnaGxpZ2h0KHBhZ2UsIGNsaWVudCwgRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpU
ZWxlcGhvbmVOdW1iZXIsIFdURk1vdmUoZGRIaWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSkpOwog
fQogCitSZWY8RGF0YURldGVjdG9ySGlnaGxpZ2h0PiBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNy
ZWF0ZUZvckltYWdlT3ZlcmxheShQYWdlJiBwYWdlLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGll
bnQmIGNsaWVudCwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYmIGRkSGlnaGxpZ2h0LCBTaW1w
bGVSYW5nZSYmIHJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFEZXRlY3Rv
ckhpZ2hsaWdodChwYWdlLCBjbGllbnQsIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6SW1h
Z2VPdmVybGF5LCBXVEZNb3ZlKGRkSGlnaGxpZ2h0KSwgV1RGTW92ZShyYW5nZSkpKTsKK30KKwog
RGF0YURldGVjdG9ySGlnaGxpZ2h0OjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQoUGFnZSYgcGFnZSwg
RGF0YURldGVjdG9ySGlnaGxpZ2h0Q2xpZW50JiBjbGllbnQsIFR5cGUgdHlwZSwgUmV0YWluUHRy
PERESGlnaGxpZ2h0UmVmPiYmIGRkSGlnaGxpZ2h0LCBTaW1wbGVSYW5nZSYmIHJhbmdlKQogICAg
IDogbV9jbGllbnQobWFrZVdlYWtQdHIoY2xpZW50KSkKICAgICAsIG1fcGFnZShtYWtlV2Vha1B0
cihwYWdlKSkK
</data>
<flag name="commit-queue"
          id="450913"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429674</attachid>
            <date>2021-05-25 12:15:22 -0700</date>
            <delta_ts>2021-05-26 11:59:28 -0700</delta_ts>
            <desc>Fix pre-macOS 11 build</desc>
            <filename>bug-226227-20210525121521.patch</filename>
            <type>text/plain</type>
            <size>28434</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFjNDEyY2U2Y2ZkYTFk
ZWNmZDg1OWQxNGY4N2Y0OTFjMmI2NDJhZi4uZGQzOThmYTBiNTRlNDRjMDA1MWE4ZThmOTBlZjdm
MTUzNDAzMzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIxLTA1LTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gU3Vw
cG9ydCBwYWludGluZyBkYXRhIGRldGVjdG9yIGhpZ2hsaWdodHMgaW5zaWRlIGltYWdlIG92ZXJs
YXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYy
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgcGFpbnRpbmcgZGF0YSBkZXRlY3RvciBoaWdobGlnaHRzIGluc2lkZSBpbWFn
ZSBvdmVybGF5cyBieSBsZXZlcmFnaW5nIGBEYXRhRGV0ZWN0b3JIaWdobGlnaHRgLgorICAgICAg
ICBTZWUgY29tbWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYW5G
b3JUZWxlcGhvbmVOdW1iZXJzKToKKworICAgICAgICBBdm9pZCBwYWludGluZyBzZXJ2aWNlLWNv
bnRyb2xzLWJhc2VkIHRlbGVwaG9uZSBudW1iZXIgaGlnaGxpZ2h0cyBmb3Igc2VsZWN0ZWQgdGV4
dCBpbnNpZGUgaW1hZ2Ugb3ZlcmxheXMsIGluCisgICAgICAgIG9yZGVyIHRvIGF2b2lkIHBhaW50
aW5nIGEgcmVkdW5kYW50IGRhdGEgZGV0ZWN0b3IgaGlnaGxpZ2h0IGZvciB0ZWxlcGhvbmUgbnVt
YmVycyBpbiBpbWFnZSBvdmVybGF5cy4KKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VPdmVybGF5RGF0YURldGVjdG9yQ2xhc3NOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojppc0ltYWdlT3ZlcmxheURhdGFEZXRlY3Rv
clJlc3VsdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6dXBkYXRlV2l0
aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6CisgICAgICAgIChkaXYuaW1h
Z2Utb3ZlcmxheS1kYXRhLWRldGVjdG9yLXJlc3VsdCk6CisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIGluamVjdGluZyBlbGVtZW50cyBpbiB0aGUgRE9NIHRoYXQgcmVwcmVzZW50IGRhdGEgZGV0
ZWN0aW9uIHJlc3VsdHM7IHRoZXNlIGFyZSB0cmFuc2Zvcm1lZCBhbmQKKyAgICAgICAgb3Zlcmxh
aWQgb24gdGhlIGltYWdlIGluIHRoZSBzYW1lIHdheSBhcyBleGlzdGluZyB0ZXh0IGNvbnRhaW5l
cnMuIE5vdGUgdGhhdCB3ZSBsYXkgb3V0IHRoZXNlIGVsZW1lbnRzIG9uIHRvcAorICAgICAgICBv
ZiB0ZXh0LCBidXQgbWFrZSB0aGVtIGludmlzaWJsZSB0byBoaXQtdGVzdGluZyB1bmxlc3MgdGhl
IGBJZ25vcmVDU1NQb2ludGVyRXZlbnRzUHJvcGVydHlgIG9wdGlvbiBpcyBzcGVjaWZpZWQuCisg
ICAgICAgIFdlJ2xsIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgYmVoYXZpb3IgaW4gYSBmdXR1cmUg
cGF0Y2guCisKKyAgICAgICAgKiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUXVhZHNEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dW5pbnN0
YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlD
b250cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250
cm9sbGVyOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvSW1hZ2VP
dmVybGF5Q29udHJvbGxlci5oOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBpbWFnZSBvdmVybGF5
IGNvbnRyb2xsZXIsIHN1Y2ggdGhhdCB3ZSBpbnN0YWxsIHRoZSBwYWdlIG92ZXJsYXkgaWYgdGhl
cmUgaXMgYW55IHNlbGVjdGlvbiBpbnNpZGUKKyAgICAgICAgdGhlIGltYWdlIG92ZXJsYXkgKGFz
IG9wcG9zZWQgdG8gb25seSB3aGVuIHdlIG5lZWQgdG8gdXNlIHRoaXMgb3ZlcmxheSB0byBwYWlu
dCB0aGUgdGV4dCBzZWxlY3Rpb24gZm9yCisgICAgICAgIHRyYW5zcGFyZW50IGltYWdlcykuIElm
IGRhdGEgZGV0ZWN0b3JzIGFyZSBwcmVzZW50LCB3ZSdsbCBhZGRpdGlvbmFsbHkgc2V0IHVwIG91
dCBgRGF0YURldGVjdG9ySGlnaGxpZ2h0YHMgKG9uZQorICAgICAgICBmb3IgZWFjaCBkYXRhIGRl
dGVjdGlvbiByZXN1bHQgY29udGFpbmVyKS4KKworICAgICAgICAqIHBhZ2UvbWFjL0ltYWdlT3Zl
cmxheUNvbnRyb2xsZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVy
bGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVjdG9ySGlnaGxpZ2h0cyk6CisKKyAgICAgICAg
VHJhdmVyc2UgdGhlIGltYWdlIG92ZXJsYXkncyBzdWJ0cmVlIGluIHNlYXJjaCBvZiBjb250YWlu
ZXIgZWxlbWVudHMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHM7Cisg
ICAgICAgIGZvciBlYWNoIG9mIHRoZXNlIGVsZW1lbnRzLCB3ZSBjcmVhdGUgYSBuZXcgYERhdGFE
ZXRlY3RvckhpZ2hsaWdodGAgdXNpbmcgdGhlIGVsZW1lbnQncyBib3VuZHMsIGFuZCBzYXZlIHRo
ZQorICAgICAgICBwYWlyIGluIGBtX2RhdGFEZXRlY3RvckNvbnRhaW5lcnNBbmRIaWdobGlnaHRz
YC4gTm90ZSB0aGF0IHdlIGhvbGQgYSB3ZWFrIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5lciBlbGVt
ZW50LCBzdWNoCisgICAgICAgIHRoYXQgdGhlcmUncyBubyByaXNrIG9mIGxlYWtpbmcgYW55IG9m
IHRoZXNlIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdCBjb250YWluZXJzIChvciB0aGVpciBkb2N1bWVu
dHMpLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpwbGF0Zm9y
bUhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJv
bGxlcjo6aGFuZGxlRGF0YURldGVjdG9yQWN0aW9uKToKKworICAgICAgICBBZGQgYSBGSVhNRSBy
ZWZlcmVuY2luZyB0aGUgbmV4dCBwYXRjaCBpbiB0aGUgc2VxdWVuY2UuCisKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmNsZWFyRGF0YURldGVjdG9ySGlnaGxpZ2h0
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQubW06CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvckltYWdlT3ZlcmxheSk6CisK
KyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBjcmVhdGUgYSBgRGF0YURldGVjdG9ySGln
aGxpZ2h0YCBmb3IgaW1hZ2Ugb3ZlcmxheXMuCisKIDIwMjEtMDUtMjUgIEVucmlxdWUgT2Nhw7Fh
IEdvbnrDoWxleiAgPGVvY2FuaGFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBMYXlvdXQg
dGVzdCBtZWRpYS90cmFjay90cmFjay1jdWUtbWlzc2luZy5odG1sIGlzIGZhaWxpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CmluZGV4IGFkOTgyMThhZjhmZjNmZjcwZGNhODhjMDVjMjU4ZjNiZGFl
NGUwMzQuLjdiY2Q4ZDFkNGVlMDlhYzZlYzIwNWE3MDk0ODU0OTFjODc4YTIzNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dApAQCAtMTkyLDYgKzE5Miw3IEBAIHBhZ2UvaW9zL1dlYkV2ZW50UmVn
aW9uLm1tCiBwYWdlL21hYy9DaHJvbWVNYWMubW0KIHBhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFj
Lm1tCiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KK3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNv
bnRyb2xsZXJNYWMubW0KIHBhZ2UvbWFjL1BhZ2VNYWMubW0KIHBhZ2UvbWFjL1NlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXIubW0KIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
ZjBmZGY0MjkyODc1NGE5ZjRmMjdhYjczZThjYWFjYmQ1ODM4ZWZkLi5kYjljY2E3ZDYzY2Y5Njc2
NDcxMzZlYjJjZDNlYzI4ZGUzMzVmYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjg0OSw2ICsxNjg0OSw3IEBACiAJCUY0
OUU5OEU0MjFERUU2QzEwMDlBRTU1RSAvKiBFZGl0QWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVkaXRBY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEIyQTkw
NjI2NTAyQkEwMDA5RTcyODYgLyogRGF0YURldGVjdG9ySGlnaGxpZ2h0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERhdGFEZXRlY3RvckhpZ2hsaWdodC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEIyQTkwODI2NTAyQkMwMDA5RTcyODYgLyogRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNEIyQTkwQzI2NTA4N0U0MDA5RTcyODYgLyogSW1hZ2VPdmVy
bGF5Q29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEltYWdlT3ZlcmxheUNv
bnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QjQyMkMyMjIw
QzAwMDAwMDlFMUU3RCAvKiBET01QYXN0ZUFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01QYXN0
ZUFjY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEM1RjIwNTI0NzlFN0VF
MDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDNUYyMDgy
NDc5RTlDODAwRTlCNEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENsaXBib2FyZEltYWdlUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzNjEyLDYgKzIzNjEzLDcgQEAKIAkJCQlBQkFGMjIwNzBDMDNCMUM3MDBCMEJDRjAg
LyogQ2hyb21lTWFjLm1tICovLAogCQkJCUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFn
Q29udHJvbGxlck1hYy5tbSAqLywKIAkJCQk5M0MwOUE3RTBCMDY0RUVGMDA1QUJENEQgLyogRXZl
bnRIYW5kbGVyTWFjLm1tICovLAorCQkJCUY0QjJBOTBDMjY1MDg3RTQwMDlFNzI4NiAvKiBJbWFn
ZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tICovLAogCQkJCTgzNERENEYzMUJFMDg5ODkwMDJDOUMz
RSAvKiBQYWdlTWFjLm1tICovLAogCQkJCTJEOTNBRUUxMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLmggKi8sCiAJCQkJMkQ5M0FFRTIxOURGNTY0MTAwMkE4NkMz
IC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gKi8sCkBAIC0zMjMwMCw3ICszMjMwMiw2
IEBACiAJCQkJMUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZl
cklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJD
QSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFD
OUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QkMzRTYyNDMyNjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAw
N0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDUzOCw2
ICszNDUzOSw3IEBACiAJCQkJNDk5QjNFQzUxMjhDQ0M0NzAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FM
YXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDkzRTVFMDkxMkQ2NDIwNTAwMDIwMDgxIC8qIFBs
YXRmb3JtQ0FMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3MEJBMTMxODA3NERE
RjAwMDE5MDhBIC8qIFBsYXRmb3JtQ0FMYXllckNvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
QzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMTQ5Nzg3MTFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1Db250ZW50Rmls
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBCQzQ3NzUgLyogUGxh
dGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIzQjlBRDAwMTJDMEZF
IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCBjOWEzODAyODc4NDJiM2Q0MDFjYTYxZWI5MjExZTVmNDBmYjU0
OGM0Li40NTk3YmRlYTVkOTNkN2NkM2FmMTgwMWMzZjU5MjgwZmI5MzYzOWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zNjc5LDYgKzM2NzksMTAgQEAgc3RhdGljIFZlY3RvcjxT
aW1wbGVSYW5nZT4gc2NhbkZvclRlbGVwaG9uZU51bWJlcnMoY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlKQogICAgIC8vIERvbid0IHNjYW4gZm9yIHBob25lIG51bWJlcnMgaW5zaWRlIGVkaXRhYmxl
IHJlZ2lvbnMuCiAgICAgaWYgKGF1dG8gc3RhcnROb2RlID0gbWFrZVJlZihyYW5nZS5zdGFydENv
bnRhaW5lcigpKTsgc3RhcnROb2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpCiAgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBpZiAoSFRNTEVsZW1lbnQ6OmlzSW5zaWRlSW1hZ2VPdmVybGF5KHJhbmdl
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIGF1dG8gdGV4dCA9IHBsYWluVGV4dChyYW5n
ZSk7CiAgICAgVmVjdG9yPFNpbXBsZVJhbmdlPiByZXN1bHQ7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGV4dC5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggYmI3
NjhhMjE5YjA2N2Y1ODVkMDZiYmU1ZGM3OTRmYWQ3MWI1YjAxZi4uMDJiNTc5ODhlNDdkYjQ5ZjA5
ZjY0YWQ0Y2QzODQwNWFiMjE4YTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTEyMzQsNiArMTIzNCwxMiBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VPdmVy
bGF5RWxlbWVudElkZW50aWZpZXIoKQogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCitzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VPdmVybGF5RGF0YURldGVjdG9yQ2xhc3NOYW1lKCkK
K3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IGNsYXNzTmFtZSgiaW1hZ2Utb3ZlcmxheS1kYXRhLWRldGVjdG9yLXJlc3VsdCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gY2xhc3NOYW1lOworfQorCiBi
b29sIEhUTUxFbGVtZW50OjpzaG91bGRFeHRlbmRTZWxlY3Rpb25Ub1RhcmdldE5vZGUoY29uc3Qg
Tm9kZSYgdGFyZ2V0Tm9kZSwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQmVmb3Jl
VXBkYXRlKQogewogICAgIGlmICghaXM8SFRNTERpdkVsZW1lbnQ+KHRhcmdldE5vZGUpKQpAQCAt
MTI3Nyw2ICsxMjgzLDExIEBAIHN0YXRpYyBSZWZQdHI8SFRNTEVsZW1lbnQ+IGltYWdlT3Zlcmxh
eUhvc3QoY29uc3QgTm9kZSYgbm9kZSkKICAgICByZXR1cm4gZWxlbWVudC0+aGFzSW1hZ2VPdmVy
bGF5KCkgPyBlbGVtZW50IDogbnVsbHB0cjsKIH0KIAorYm9vbCBIVE1MRWxlbWVudDo6aXNJbWFn
ZU92ZXJsYXlEYXRhRGV0ZWN0b3JSZXN1bHQoKSBjb25zdAoreworICAgIHJldHVybiBpbWFnZU92
ZXJsYXlIb3N0KCp0aGlzKSAmJiBoYXNDbGFzcygpICYmIGNsYXNzTmFtZXMoKS5jb250YWlucyhp
bWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUoKSk7Cit9CisKIGJvb2wgSFRNTEVsZW1l
bnQ6OmlzSW5zaWRlSW1hZ2VPdmVybGF5KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKICAg
ICBhdXRvIGNvbW1vbkFuY2VzdG9yID0gbWFrZVJlZlB0cihjb21tb25JbmNsdXNpdmVBbmNlc3Rv
cjxDb21wb3NlZFRyZWU+KHJhbmdlKSk7CkBAIC0xNDY3LDYgKzE0NzgsMzEgQEAgdm9pZCBIVE1M
RWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4dHJhY3Rpb25S
ZXN1bHQmJiByZXN1bHQKICAgICAgICAgICAgIGxpbmVDb250YWluZXItPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlDdXJzb3IsIENTU1ZhbHVlVGV4dCk7CiAgICAgfQogCisjaWYg
RU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgIGZvciAoYXV0byYgZGF0YURldGVjdG9yIDogcmVz
dWx0LmRhdGFEZXRlY3RvcnMpIHsKKyAgICAgICAgaWYgKGRhdGFEZXRlY3Rvci5ub3JtYWxpemVk
UXVhZHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBk
YXRhRGV0ZWN0b3JDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkp
OworICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92
ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUoKSk7CisgICAgICAgIGNvbnRhaW5lci0+YXBwZW5k
Q2hpbGQoZGF0YURldGVjdG9yQ29udGFpbmVyKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGNvbWUgdXAgd2l0aCBhIHdheSB0byBjb2FsZXNjZSB0aGUgYm91bmRpbmcgcXVhZHMgaW50
byBvbmUgb3IgbW9yZSByb3RhdGVkIHJlY3RzIHdpdGggdGhlIHNhbWUgYW5nbGUgb2Ygcm90YXRp
b24uCisgICAgICAgIGF1dG8gdGFyZ2V0UXVhZCA9IGRhdGFEZXRlY3Rvci5ub3JtYWxpemVkUXVh
ZHMuZmlyc3QoKTsKKyAgICAgICAgdGFyZ2V0UXVhZC5zY2FsZShjb250YWluZXJTaXplLndpZHRo
KCksIGNvbnRhaW5lclNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIGF1dG8gdGFyZ2V0Qm91bmRz
ID0gcm90YXRlZEJvdW5kaW5nUmVjdFdpdGhNaW5pbXVtQW5nbGVPZlJvdGF0aW9uKHRhcmdldFF1
YWQsIDAuMDEpOworICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWluZXItPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgdGFyZ2V0Qm91bmRzLnNpemUud2lkdGgoKSwgQ1NT
VW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgIGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgdGFyZ2V0Qm91bmRzLnNpemUuaGVp
Z2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOworICAgICAgICBkYXRhRGV0ZWN0b3JDb250YWlu
ZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIG1ha2VTdHJp
bmcoCisgICAgICAgICAgICAidHJhbnNsYXRlKCJfcywKKyAgICAgICAgICAgIHN0ZDo6cm91bmQo
dGFyZ2V0Qm91bmRzLmNlbnRlci54KCkgLSAodGFyZ2V0Qm91bmRzLnNpemUud2lkdGgoKSAvIDIp
KSwgInB4LCAiX3MsCisgICAgICAgICAgICBzdGQ6OnJvdW5kKHRhcmdldEJvdW5kcy5jZW50ZXIu
eSgpIC0gKHRhcmdldEJvdW5kcy5zaXplLmhlaWdodCgpIC8gMikpLCAicHgpICJfcywKKyAgICAg
ICAgICAgIHRhcmdldEJvdW5kcy5hbmdsZUluUmFkaWFucyA/IG1ha2VTdHJpbmcoInJvdGF0ZSgi
X3MsIHRhcmdldEJvdW5kcy5hbmdsZUluUmFkaWFucywgInJhZCkgIl9zKSA6IGVtcHR5U3RyaW5n
KCkKKyAgICAgICAgKSk7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
KwogICAgIGlmIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZyYW1lKCkpKQog
ICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2NoZWR1bGVDdXJzb3JVcGRhdGUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCAxODY2YTYwNDkyZjkzNWRkYTEwMzlhMmFh
ZDFhNWNmZjc1ZDUxNDVjLi4wMWU2MjVmZWI2MWFjNzJkZDU3ZWIwZDIzNDliY2VhM2I3MDQ0ZTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xMzUsNiArMTM1LDcgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkRXh0ZW5kU2VsZWN0aW9u
VG9UYXJnZXROb2RlKGNvbnN0IE5vZGUmIHRhcmdldE5vZGUsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbkJlZm9yZVVwZGF0ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNJ
bWFnZU92ZXJsYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzSW1hZ2VPdmVy
bGF5RGF0YURldGVjdG9yUmVzdWx0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaXNJbnNpZGVJbWFnZU92ZXJsYXkoY29uc3QgU2ltcGxlUmFuZ2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0luc2lkZUltYWdlT3ZlcmxheShjb25zdCBOb2RlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNJbWFnZU92ZXJsYXlUZXh0KGNvbnN0
IE5vZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3Zl
cmxheS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCmlu
ZGV4IDBlMWE5MmZjNWQwMWY0N2VkODA5ZjRkOGE2NDJkOTNmOGVhNzZjZjEuLjgxNTJjOTA0MmQ1
NWY3NzE0YjNhMzAxZjI4NzhhMmZhODJmMWE4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvaW1hZ2VPdmVybGF5LmNzcwpAQCAtNDMsMyArNDMsOSBAQCBkaXYuaW1hZ2Utb3Zlcmxh
eS1saW5lLCAuaW1hZ2Utb3ZlcmxheS10ZXh0IHsKICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAg
ICAgYmFja2dyb3VuZC1jb2xvcjogaGlnaGxpZ2h0OwogfQorCitkaXYuaW1hZ2Utb3ZlcmxheS1k
YXRhLWRldGVjdG9yLXJlc3VsdCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAppbmRleCA0ZTAw
YWQ3NzQ1MWI0OWIzODY1OTc3Y2IyZTE3ZDQxNjEwYWZhN2Q4Li5iY2IzYmIzYTUwZTdlYTVhMzdl
OTExYmVhYjY0MTFlMDI0OTQ2Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lt
YWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VP
dmVybGF5Q29udHJvbGxlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJMYXlvdXRS
ZWN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdl
LmgiCkBAIC02MCwzNyArNjEsNDcgQEAgdm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpzZWxl
Y3Rpb25RdWFkc0RpZENoYW5nZShGcmFtZSYgZnJhbWUsIGNvbnN0IFZlY3RvcjwKICAgICBpZiAo
ZnJhbWUuZWRpdG9yKCkuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIG92ZXJsYXlIb3N0UmVuZGVyZXIgPSAoWyZdICgpIC0+IFJlbmRlckVsZW1l
bnQqIHsKLSAgICAgICAgaWYgKHF1YWRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotCisgICAgYXV0byBvdmVybGF5SG9zdCA9IChbJl0gKCkgLT4gUmVmUHRyPEhUTUxF
bGVtZW50PiB7CiAgICAgICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9IGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnJhbmdlKCk7CiAgICAgICAgIGlmICghc2VsZWN0ZWRSYW5nZSkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGlmICghSFRNTEVsZW1lbnQ6OmlzSW5z
aWRlSW1hZ2VPdmVybGF5KCpzZWxlY3RlZFJhbmdlKSB8fCBzZWxlY3RlZFJhbmdlLT5jb2xsYXBz
ZWQoKSkKKyAgICAgICAgaWYgKCFIVE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkoKnNl
bGVjdGVkUmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0
byBvdmVybGF5SG9zdCA9IG1ha2VSZWZQdHIoc2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWluZXIo
KS5zaGFkb3dIb3N0KCkpOwotICAgICAgICBpZiAoIW92ZXJsYXlIb3N0KSB7Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICB9CisgICAgICAgIGlmIChhdXRvIGhvc3QgPSBtYWtlUmVmUHRyKHNlbGVjdGVkUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCkuc2hhZG93SG9zdCgpKTsgaXM8SFRNTEVsZW1lbnQ+KGhvc3QpKQor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpob3N0
KSk7CiAKLSAgICAgICAgcmV0dXJuIG92ZXJsYXlIb3N0LT5yZW5kZXJlcigpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9KSgpOwogCi0gICAgaWYgKCFvdmVybGF5SG9zdFJlbmRlcmVy
IHx8ICFzaG91bGRVc2VQYWdlT3ZlcmxheVRvUGFpbnRTZWxlY3Rpb24oKm92ZXJsYXlIb3N0UmVu
ZGVyZXIpKSB7CisgICAgaWYgKCFvdmVybGF5SG9zdCkgeworICAgICAgICB1bmluc3RhbGxQYWdl
T3ZlcmxheUlmTmVlZGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG92
ZXJsYXlIb3N0UmVuZGVyZXIgPSBvdmVybGF5SG9zdC0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIW92
ZXJsYXlIb3N0UmVuZGVyZXIpIHsKICAgICAgICAgdW5pbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRl
ZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9vdmVybGF5U2VsZWN0aW9uUXVh
ZHMgPSBxdWFkczsKLSAgICBtX3NlbGVjdGlvbk92ZXJsYXlCb3VuZHMgPSBvdmVybGF5SG9zdFJl
bmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAgIG1fc2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yID0gb3ZlcmxheUhvc3RSZW5kZXJlci0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCk7Ci0gICAgbV9jdXJyZW50T3ZlcmxheURvY3VtZW50ID0gbWFrZVdlYWtQdHIob3ZlcmxheUhv
c3RSZW5kZXJlci0+ZG9jdW1lbnQoKSk7CisgICAgaWYgKHNob3VsZFVzZVBhZ2VPdmVybGF5VG9Q
YWludFNlbGVjdGlvbigqb3ZlcmxheUhvc3RSZW5kZXJlcikpIHsKKyAgICAgICAgbV9vdmVybGF5
U2VsZWN0aW9uUXVhZHMgPSBxdWFkczsKKyAgICAgICAgbV9zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IgPSBvdmVybGF5SG9zdFJlbmRlcmVyLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX292ZXJsYXlTZWxlY3Rpb25RdWFkcy5jbGVhcigpOworICAg
ICAgICBtX3NlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
OworICAgIH0KKworICAgIG1faW1hZ2VPdmVybGF5Qm91bmRzID0gb3ZlcmxheUhvc3RSZW5kZXJl
ci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB1
cGRhdGVEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKCpvdmVybGF5SG9zdCk7CisjZW5kaWYKIAotICAg
IGluc3RhbGxQYWdlT3ZlcmxheUlmTmVlZGVkKCkuc2V0TmVlZHNEaXNwbGF5KCk7CisgICAgaWYg
KGF1dG8mIG92ZXJsYXkgPSBpbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpOyAhbV9vdmVybGF5
U2VsZWN0aW9uUXVhZHMuaXNFbXB0eSgpKQorICAgICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxh
eSgpOwogfQogCiBib29sIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnNob3VsZFVzZVBhZ2VPdmVy
bGF5VG9QYWludFNlbGVjdGlvbihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKQEAgLTEx
OCwxMSArMTI5LDE1IEBAIFBhZ2VPdmVybGF5JiBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjppbnN0
YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpCiAKIHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6
dW5pbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpCiB7Ci0gICAgbV9zZWxlY3Rpb25PdmVybGF5
Qm91bmRzID0geyB9OworICAgIG1faW1hZ2VPdmVybGF5Qm91bmRzID0geyB9OwogICAgIG1fb3Zl
cmxheVNlbGVjdGlvblF1YWRzLmNsZWFyKCk7CiAgICAgbV9zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IgPSBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKICAgICBtX2N1cnJlbnRPdmVybGF5RG9jdW1l
bnQgPSBudWxscHRyOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNsZWFyRGF0YURldGVjdG9y
SGlnaGxpZ2h0cygpOworI2VuZGlmCisKICAgICBhdXRvIG92ZXJsYXlUb1VuaW5zdGFsbCA9IHN0
ZDo6ZXhjaGFuZ2UobV9vdmVybGF5LCBudWxscHRyKTsKICAgICBpZiAoIW1fcGFnZSB8fCAhb3Zl
cmxheVRvVW5pbnN0YWxsKQogICAgICAgICByZXR1cm47CkBAIC0xNjAsOCArMTc1LDE3IEBAIHZv
aWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIHBhZ2VPdmVy
bGF5LCBHcmFwaGljc0NvbnRleHQmCiAgICAgfQogCiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
bV9zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOwotICAgIGNvbnRleHQuY2xpcChtX3NlbGVjdGlv
bk92ZXJsYXlCb3VuZHMpOworICAgIGNvbnRleHQuY2xpcChtX2ltYWdlT3ZlcmxheUJvdW5kcyk7
CiAgICAgY29udGV4dC5maWxsUGF0aChjb2FsZXNjZWRTZWxlY3Rpb25QYXRoKTsKIH0KIAorI2lm
ICFQTEFURk9STShNQUMpCisKK2Jvb2wgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6cGxhdGZvcm1I
YW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCisjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaApp
bmRleCA2YzI3NmJjOGZiMTNmNTUzYzYzYjA1YjVkYTRiOWM2MTU1MmNiMWYyLi4xMGRmZmI0MzU1
NjIxYTY5OTVlZjhjNDRiYWQzOWVlYmI2ZGMxYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaApAQCAtMzEsMTggKzMxLDI3IEBACiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBQTEFURk9STShN
QUMpCisjaW5jbHVkZSAiRGF0YURldGVjdG9ySGlnaGxpZ2h0LmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OworY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3Mg
RmxvYXRRdWFkOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiBzdHJ1Y3QgR2Fw
UmVjdHM7CiAKLWNsYXNzIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIgZmluYWwgOiBwcml2YXRlIFBh
Z2VPdmVybGF5OjpDbGllbnQgeworY2xhc3MgSW1hZ2VPdmVybGF5Q29udHJvbGxlciBmaW5hbCA6
IHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIERh
dGFEZXRlY3RvckhpZ2hsaWdodENsaWVudAorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcihQ
YWdlJik7CkBAIC01NCwxOSArNjMsMzUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxNb3ZlVG9Q
YWdlKFBhZ2VPdmVybGF5JiwgUGFnZSopIGZpbmFsOwogICAgIHZvaWQgZGlkTW92ZVRvUGFnZShQ
YWdlT3ZlcmxheSYsIFBhZ2UqKSBmaW5hbCB7IH0KICAgICB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVy
bGF5JiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBmaW5hbDsK
LSAgICBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3Zl
cmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGZpbmFsIHsgcmV0dXJuIHBs
YXRmb3JtSGFuZGxlTW91c2VFdmVudChldmVudCk7IH0KIAogICAgIGJvb2wgc2hvdWxkVXNlUGFn
ZU92ZXJsYXlUb1BhaW50U2VsZWN0aW9uKGNvbnN0IFJlbmRlckVsZW1lbnQmKTsKIAogICAgIFBh
Z2VPdmVybGF5JiBpbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpOwogICAgIHZvaWQgdW5pbnN0
YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQg
dXBkYXRlRGF0YURldGVjdG9ySGlnaGxpZ2h0cyhjb25zdCBIVE1MRWxlbWVudCYpOworICAgIHZv
aWQgY2xlYXJEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKCk7CisgICAgYm9vbCBoYW5kbGVEYXRhRGV0
ZWN0b3JBY3Rpb24oY29uc3QgSFRNTEVsZW1lbnQmLCBjb25zdCBJbnRQb2ludCYpOworCisgICAg
RGF0YURldGVjdG9ySGlnaGxpZ2h0KiBhY3RpdmVIaWdobGlnaHQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodC5nZXQoKTsgfQorI2VuZGlmCisKKyAg
ICBib29sIHBsYXRmb3JtSGFuZGxlTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKKwogICAgIFdlYWtQdHI8UGFnZT4gbV9wYWdlOwogICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4g
bV9vdmVybGF5OwogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fY3VycmVudE92ZXJsYXlEb2N1bWVu
dDsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBtX292ZXJsYXlTZWxlY3Rpb25RdWFkczsKLSAgICBM
YXlvdXRSZWN0IG1fc2VsZWN0aW9uT3ZlcmxheUJvdW5kczsKKyAgICBMYXlvdXRSZWN0IG1faW1h
Z2VPdmVybGF5Qm91bmRzOwogICAgIENvbG9yIG1fc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yIHsg
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2sgfTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB1c2lu
ZyBDb250YWluZXJBbmRIaWdobGlnaHQgPSBzdGQ6OnBhaXI8V2Vha1B0cjxIVE1MRWxlbWVudD4s
IFJlZjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+PjsKKyAgICBWZWN0b3I8Q29udGFpbmVyQW5kSGln
aGxpZ2h0PiBtX2RhdGFEZXRlY3RvckNvbnRhaW5lcnNBbmRIaWdobGlnaHRzOworICAgIFJlZlB0
cjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IG1fYWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0Owor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MTE1ZmZmYjM1NzkwNzQxMGU0ZDMxOGViNDIwZTY2OTkwNDNjNDM2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQpA
QCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1w
b3J0ICJEYXRhRGV0ZWN0aW9uLmgiCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkhU
TUxFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MTmFtZXMuaCIKKyNpbXBvcnQgIkludFJlY3QuaCIK
KyNpbXBvcnQgIlBhZ2UuaCIKKyNpbXBvcnQgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2ltcG9y
dCAiU2ltcGxlUmFuZ2UuaCIKKyNpbXBvcnQgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oIgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxwYWwvc3Bp
L21hYy9EYXRhRGV0ZWN0b3JzU1BJLmg+CisjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgorI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVjdG9y
SGlnaGxpZ2h0cyhjb25zdCBIVE1MRWxlbWVudCYgb3ZlcmxheUhvc3QpCit7CisgICAgaWYgKCFv
dmVybGF5SG9zdC5oYXNJbWFnZU92ZXJsYXkoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgY2xlYXJEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmPEhUTUxFbGVtZW50Pj4gZGF0YURldGVjdG9y
UmVzdWx0RWxlbWVudHM7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGRlc2NlbmRhbnRzT2ZUeXBl
PEhUTUxFbGVtZW50Pigqb3ZlcmxheUhvc3QudXNlckFnZW50U2hhZG93Um9vdCgpKSkgeworICAg
ICAgICBpZiAoY2hpbGQuaXNJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JSZXN1bHQoKSAmJiBjaGls
ZC5yZW5kZXJlcigpKQorICAgICAgICAgICAgZGF0YURldGVjdG9yUmVzdWx0RWxlbWVudHMuYXBw
ZW5kKG1ha2VSZWYoY2hpbGQpKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFJlZjxIVE1MRWxlbWVu
dD4+IGRhdGFEZXRlY3RvclJlc3VsdEVsZW1lbnRzV2l0aEhpZ2hsaWdodHM7CisgICAgZm9yIChh
dXRvJiBjb250YWluZXJBbmRIaWdobGlnaHQgOiBtX2RhdGFEZXRlY3RvckNvbnRhaW5lcnNBbmRI
aWdobGlnaHRzKSB7CisgICAgICAgIGlmIChjb250YWluZXJBbmRIaWdobGlnaHQuZmlyc3QpCisg
ICAgICAgICAgICBkYXRhRGV0ZWN0b3JSZXN1bHRFbGVtZW50c1dpdGhIaWdobGlnaHRzLmFkZCgq
Y29udGFpbmVyQW5kSGlnaGxpZ2h0LmZpcnN0KTsKKyAgICB9CisKKyAgICBpZiAoZGF0YURldGVj
dG9yUmVzdWx0RWxlbWVudHNXaXRoSGlnaGxpZ2h0cyA9PSBkYXRhRGV0ZWN0b3JSZXN1bHRFbGVt
ZW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBtYWluRnJhbWVWaWV3ID0gbWFrZVJl
ZlB0cihtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgaWYgKCFtYWluRnJhbWVWaWV3
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIob3Zl
cmxheUhvc3QuZG9jdW1lbnQoKS52aWV3KCkpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCA9IG51bGxwdHI7
CisgICAgbV9kYXRhRGV0ZWN0b3JDb250YWluZXJzQW5kSGlnaGxpZ2h0cy5jbGVhcigpOworICAg
IG1fZGF0YURldGVjdG9yQ29udGFpbmVyc0FuZEhpZ2hsaWdodHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShkYXRhRGV0ZWN0b3JSZXN1bHRFbGVtZW50cy5zaXplKCkpOworCisgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZGF0YURldGVjdG9yUmVzdWx0RWxlbWVudHMpIHsKKyAgICAgICAgQ0dSZWN0
IGVsZW1lbnRCb3VuZHMgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpOworICAgICAgICBlbGVtZW50Qm91bmRzLm9yaWdpbiA9IG1haW5GcmFtZVZpZXctPndp
bmRvd1RvQ29udGVudHMoZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KHJvdW5kZWRJbnRQb2lu
dChlbGVtZW50Qm91bmRzLm9yaWdpbikpKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHRlYWNoIERhdGFEZXRlY3RvckhpZ2hsaWdodCB0byByZW5kZXIgcXVhZHMgaW5zdGVhZCBvZiBh
bHdheXMgZmFsbGluZyBiYWNrIHRvIGF4aXMtYWxpZ25lZCBib3VuZGluZyByZWN0cy4KKyNpZiBI
QVZFKEREX0hJR0hMSUdIVF9DUkVBVEVfV0lUSF9TQ0FMRSkKKyAgICAgICAgYXV0byBoaWdobGln
aHQgPSBhZG9wdENGKERESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdFdpdGhT
dHlsZVNjYWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZlbGVtZW50Qm91bmRzLCAxLCBtYWluRnJh
bWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKSwgRERIaWdobGlnaHRTdHlsZUJ1YmJsZVN0YW5k
YXJkIHwgRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93LCBZRVMsIE5TV3JpdGluZ0Rp
cmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMsIDApKTsKKyNlbHNlCisgICAgICAgIGF1dG8gaGlnaGxp
Z2h0ID0gYWRvcHRDRihEREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRo
U3R5bGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmVsZW1lbnRCb3VuZHMsIDEsIG1haW5GcmFtZVZp
ZXctPnZpc2libGVDb250ZW50UmVjdCgpLCBEREhpZ2hsaWdodFN0eWxlQnViYmxlU3RhbmRhcmQg
fCBEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3csIFlFUywgTlNXcml0aW5nRGlyZWN0
aW9uTmF0dXJhbCwgTk8sIFlFUykpOworI2VuZGlmCisgICAgICAgIG1fZGF0YURldGVjdG9yQ29u
dGFpbmVyc0FuZEhpZ2hsaWdodHMuYXBwZW5kKHsgbWFrZVdlYWtQdHIoZWxlbWVudC5nZXQoKSks
IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9ySW1hZ2VPdmVybGF5KCptX3BhZ2UsICp0
aGlzLCBXVEZNb3ZlKGhpZ2hsaWdodCksICptYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQu
Z2V0KCkpKSB9KTsKKyAgICB9Cit9CisKK2Jvb2wgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6cGxh
dGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7
CisgICAgYXV0byBtYWluRnJhbWVWaWV3ID0gbWFrZVJlZlB0cihtX3BhZ2UtPm1haW5GcmFtZSgp
LnZpZXcoKSk7CisgICAgaWYgKCFtYWluRnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGFjdGl2ZURhdGFEZXRlY3RvckVsZW1lbnQ7Cisg
ICAgYXV0byBwcmV2aW91c0FjdGl2ZUhpZ2hsaWdodCA9IHN0ZDo6ZXhjaGFuZ2UobV9hY3RpdmVE
YXRhRGV0ZWN0b3JIaWdobGlnaHQsIG51bGxwdHIpOworICAgIGF1dG8gbW91c2VQb3NpdGlvbklu
Q29udGVudHMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9u
KCkpOworICAgIGJvb2wgbW91c2VJc092ZXJBY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHRCdXR0
b24gPSBmYWxzZTsKKworICAgIGZvciAoYXV0byYgW2VsZW1lbnQsIGhpZ2hsaWdodF0gOiBtX2Rh
dGFEZXRlY3RvckNvbnRhaW5lcnNBbmRIaWdobGlnaHRzKSB7CisgICAgICAgIGlmICghZWxlbWVu
dCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEJvb2xlYW4gaXNPdmVyQnV0dG9u
ID0gTk87CisgICAgICAgIGlmICghRERIaWdobGlnaHRQb2ludElzT25IaWdobGlnaHQoaGlnaGxp
Z2h0LT5oaWdobGlnaHQoKSwgbW91c2VQb3NpdGlvbkluQ29udGVudHMsICZpc092ZXJCdXR0b24p
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbW91c2VJc092ZXJBY3RpdmVEYXRh
RGV0ZWN0b3JIaWdobGlnaHRCdXR0b24gPSBpc092ZXJCdXR0b247CisgICAgICAgIG1fYWN0aXZl
RGF0YURldGVjdG9ySGlnaGxpZ2h0ID0gaGlnaGxpZ2h0LmNvcHlSZWYoKTsKKyAgICAgICAgYWN0
aXZlRGF0YURldGVjdG9yRWxlbWVudCA9IG1ha2VSZWZQdHIoKmVsZW1lbnQpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBpZiAocHJldmlvdXNBY3RpdmVIaWdobGlnaHQgIT0gbV9hY3Rp
dmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQpIHsKKyAgICAgICAgaWYgKHByZXZpb3VzQWN0aXZlSGln
aGxpZ2h0KQorICAgICAgICAgICAgcHJldmlvdXNBY3RpdmVIaWdobGlnaHQtPmZhZGVPdXQoKTsK
KworICAgICAgICBpZiAobV9hY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQpIHsKKyAgICAgICAg
ICAgIG1fb3ZlcmxheS0+bGF5ZXIoKS5hZGRDaGlsZChtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hs
aWdodC0+bGF5ZXIoKSk7CisgICAgICAgICAgICBtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdo
dC0+ZmFkZUluKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZXZlbnQudHlwZSgpID09
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCAmJiBtb3VzZUlzT3ZlckFjdGl2ZURhdGFEZXRl
Y3RvckhpZ2hsaWdodEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIGhhbmRsZURhdGFEZXRlY3RvckFj
dGlvbigqYWN0aXZlRGF0YURldGVjdG9yRWxlbWVudCwgbW91c2VQb3NpdGlvbkluQ29udGVudHMp
OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6
OmhhbmRsZURhdGFEZXRlY3RvckFjdGlvbihjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgSW50UG9pbnQmIGxvY2F0aW9uSW5Db250ZW50cykKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVu
dC5kb2N1bWVudCgpLmZyYW1lKCkpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihlbGVtZW50LmRvY3VtZW50
KCkudmlldygpKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gRklYTUU6IENhbGwgb3V0IHRvIHRoZSBjbGllbnQgbGF5ZXIgdG8gaGFuZGxlIHRo
ZSBjbGljay4KKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb25JbkNvbnRlbnRzKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpjbGVhckRhdGFEZXRl
Y3RvckhpZ2hsaWdodHMoKQoreworICAgIG1fZGF0YURldGVjdG9yQ29udGFpbmVyc0FuZEhpZ2hs
aWdodHMuY2xlYXIoKTsKKyAgICBtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCA9IG51bGxw
dHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JI
aWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdo
bGlnaHQuaAppbmRleCBhMzQ3NjdiNmVhNGEzMDQ0OWEzYTQzMGM5YjhhMWQwOTM0NjU1ZGFmLi5i
MGYzMWQ5YTM3OGM0MTZjZWFiMjc4N2VjZjM3YzEyYzFkNDI3NDIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5oCkBAIC01Niw2
ICs1Niw3IEBAIGNsYXNzIERhdGFEZXRlY3RvckhpZ2hsaWdodCA6IHB1YmxpYyBSZWZDb3VudGVk
PERhdGFEZXRlY3RvckhpZ2hsaWdodD4sIHByaXZhdGUKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PERhdGFEZXRlY3RvckhpZ2hsaWdodD4gY3JlYXRlRm9yU2VsZWN0aW9uKFBhZ2UmLCBEYXRhRGV0
ZWN0b3JIaWdobGlnaHRDbGllbnQmLCBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+JiYsIFNpbXBs
ZVJhbmdlJiYpOwogICAgIHN0YXRpYyBSZWY8RGF0YURldGVjdG9ySGlnaGxpZ2h0PiBjcmVhdGVG
b3JUZWxlcGhvbmVOdW1iZXIoUGFnZSYsIERhdGFEZXRlY3RvckhpZ2hsaWdodENsaWVudCYsIFJl
dGFpblB0cjxEREhpZ2hsaWdodFJlZj4mJiwgU2ltcGxlUmFuZ2UmJik7CisgICAgc3RhdGljIFJl
ZjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IGNyZWF0ZUZvckltYWdlT3ZlcmxheShQYWdlJiwgRGF0
YURldGVjdG9ySGlnaGxpZ2h0Q2xpZW50JiwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYmLCBT
aW1wbGVSYW5nZSYmKTsKIAogICAgIH5EYXRhRGV0ZWN0b3JIaWdobGlnaHQoKSA9IGRlZmF1bHQ7
CiAKQEAgLTY5LDYgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBOb25lID0gMCwKICAgICAgICAg
VGVsZXBob25lTnVtYmVyID0gMSA8PCAwLAogICAgICAgICBTZWxlY3Rpb24gPSAxIDw8IDEsCisg
ICAgICAgIEltYWdlT3ZlcmxheSA9IDEgPDwgMiwKICAgICB9OwogCiAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5tbQppbmRleCBkNDQ3MTI1YjFjMDg0YTRkMDAx
MjU0OGZiZjI0N2ZmNGUxMjk1MWVkLi45MWQ1MGRmMjk1YmQ1Y2E4ZGMxN2I2OWJkMzdhYTJhOTFk
MTZkMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVj
dG9ySGlnaGxpZ2h0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0
ZWN0b3JIaWdobGlnaHQubW0KQEAgLTU3LDYgKzU3LDExIEBAIFJlZjxEYXRhRGV0ZWN0b3JIaWdo
bGlnaHQ+IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9yVGVsZXBob25lTnVtYmVyKFBh
Z2UmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YURldGVjdG9ySGlnaGxpZ2h0KHBhZ2Us
IGNsaWVudCwgRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpUZWxlcGhvbmVOdW1iZXIsIFdU
Rk1vdmUoZGRIaWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSkpOwogfQogCitSZWY8RGF0YURldGVj
dG9ySGlnaGxpZ2h0PiBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvckltYWdlT3Zlcmxh
eShQYWdlJiBwYWdlLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQmIGNsaWVudCwgUmV0YWlu
UHRyPERESGlnaGxpZ2h0UmVmPiYmIGRkSGlnaGxpZ2h0LCBTaW1wbGVSYW5nZSYmIHJhbmdlKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFEZXRlY3RvckhpZ2hsaWdodChwYWdlLCBj
bGllbnQsIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6SW1hZ2VPdmVybGF5LCBXVEZNb3Zl
KGRkSGlnaGxpZ2h0KSwgV1RGTW92ZShyYW5nZSkpKTsKK30KKwogRGF0YURldGVjdG9ySGlnaGxp
Z2h0OjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQoUGFnZSYgcGFnZSwgRGF0YURldGVjdG9ySGlnaGxp
Z2h0Q2xpZW50JiBjbGllbnQsIFR5cGUgdHlwZSwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYm
IGRkSGlnaGxpZ2h0LCBTaW1wbGVSYW5nZSYmIHJhbmdlKQogICAgIDogbV9jbGllbnQobWFrZVdl
YWtQdHIoY2xpZW50KSkKICAgICAsIG1fcGFnZShtYWtlV2Vha1B0cihwYWdlKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429779</attachid>
            <date>2021-05-26 11:59:30 -0700</date>
            <delta_ts>2021-06-04 16:32:17 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-226227-20210526115929.patch</filename>
            <type>text/plain</type>
            <size>27389</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjNGRlNDU0Y2NhNTM3
ZTMwMTIwMWI5YzRkY2MzYzkzODdkMjdlZS4uMTYwOGU5NTIzZTc0NmYzYThkZWIyYWI1NzMzZTBk
MzRhZGY3MDJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIxLTA1LTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gU3Vw
cG9ydCBwYWludGluZyBkYXRhIGRldGVjdG9yIGhpZ2hsaWdodHMgaW5zaWRlIGltYWdlIG92ZXJs
YXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYy
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBwYWludGluZyBkYXRhIGRldGVjdG9yIGhpZ2hsaWdodHMgaW5zaWRlIGltYWdlIG92
ZXJsYXlzIGJ5IGxldmVyYWdpbmcgYERhdGFEZXRlY3RvckhpZ2hsaWdodGAuCisgICAgICAgIFNl
ZSBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NhbkZvclRl
bGVwaG9uZU51bWJlcnMpOgorCisgICAgICAgIEF2b2lkIHBhaW50aW5nIHNlcnZpY2UtY29udHJv
bHMtYmFzZWQgdGVsZXBob25lIG51bWJlciBoaWdobGlnaHRzIGZvciBzZWxlY3RlZCB0ZXh0IGlu
c2lkZSBpbWFnZSBvdmVybGF5cywgaW4KKyAgICAgICAgb3JkZXIgdG8gYXZvaWQgcGFpbnRpbmcg
YSByZWR1bmRhbnQgZGF0YSBkZXRlY3RvciBoaWdobGlnaHQgZm9yIHRlbGVwaG9uZSBudW1iZXJz
IGluIGltYWdlIG92ZXJsYXlzLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmlzSW1hZ2VPdmVybGF5RGF0YURldGVjdG9yUmVz
dWx0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoSW1h
Z2VFeHRyYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzczoKKyAgICAgICAgKGRpdi5pbWFnZS1v
dmVybGF5LWRhdGEtZGV0ZWN0b3ItcmVzdWx0KToKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5qZWN0aW5nIGVsZW1lbnRzIGluIHRoZSBET00gdGhhdCByZXByZXNlbnQgZGF0YSBkZXRlY3Rp
b24gcmVzdWx0czsgdGhlc2UgYXJlIHRyYW5zZm9ybWVkIGFuZAorICAgICAgICBvdmVybGFpZCBv
biB0aGUgaW1hZ2UgaW4gdGhlIHNhbWUgd2F5IGFzIGV4aXN0aW5nIHRleHQgY29udGFpbmVycy4g
Tm90ZSB0aGF0IHdlIGxheSBvdXQgdGhlc2UgZWxlbWVudHMgb24gdG9wCisgICAgICAgIG9mIHRl
eHQsIGJ1dCBtYWtlIHRoZW0gaW52aXNpYmxlIHRvIGhpdC10ZXN0aW5nIHVubGVzcyB0aGUgYEln
bm9yZUNTU1BvaW50ZXJFdmVudHNQcm9wZXJ0eWAgb3B0aW9uIGlzIHNwZWNpZmllZC4KKyAgICAg
ICAgV2UnbGwgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcyBiZWhhdmlvciBpbiBhIGZ1dHVyZSBwYXRj
aC4KKworICAgICAgICAqIHBhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpzZWxlY3Rpb25RdWFkc0RpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1bmluc3RhbGxQ
YWdlT3ZlcmxheUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRy
b2xsZXI6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xs
ZXI6OnBsYXRmb3JtSGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgICogcGFnZS9JbWFnZU92ZXJs
YXlDb250cm9sbGVyLmg6CisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGltYWdlIG92ZXJsYXkgY29u
dHJvbGxlciwgc3VjaCB0aGF0IHdlIGluc3RhbGwgdGhlIHBhZ2Ugb3ZlcmxheSBpZiB0aGVyZSBp
cyBhbnkgc2VsZWN0aW9uIGluc2lkZQorICAgICAgICB0aGUgaW1hZ2Ugb3ZlcmxheSAoYXMgb3Bw
b3NlZCB0byBvbmx5IHdoZW4gd2UgbmVlZCB0byB1c2UgdGhpcyBvdmVybGF5IHRvIHBhaW50IHRo
ZSB0ZXh0IHNlbGVjdGlvbiBmb3IKKyAgICAgICAgdHJhbnNwYXJlbnQgaW1hZ2VzKS4gSWYgZGF0
YSBkZXRlY3RvcnMgYXJlIHByZXNlbnQsIHdlJ2xsIGFkZGl0aW9uYWxseSBzZXQgdXAgb3V0IGBE
YXRhRGV0ZWN0b3JIaWdobGlnaHRgcyAob25lCisgICAgICAgIGZvciBlYWNoIGRhdGEgZGV0ZWN0
aW9uIHJlc3VsdCBjb250YWluZXIpLgorCisgICAgICAgICogcGFnZS9tYWMvSW1hZ2VPdmVybGF5
Q29udHJvbGxlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlD
b250cm9sbGVyOjp1cGRhdGVEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKToKKworICAgICAgICBUcmF2
ZXJzZSB0aGUgaW1hZ2Ugb3ZlcmxheSdzIHN1YnRyZWUgaW4gc2VhcmNoIG9mIGNvbnRhaW5lciBl
bGVtZW50cyB0aGF0IGNvcnJlc3BvbmQgdG8gZGF0YSBkZXRlY3Rpb24gcmVzdWx0czsKKyAgICAg
ICAgZm9yIGVhY2ggb2YgdGhlc2UgZWxlbWVudHMsIHdlIGNyZWF0ZSBhIG5ldyBgRGF0YURldGVj
dG9ySGlnaGxpZ2h0YCB1c2luZyB0aGUgZWxlbWVudCdzIGJvdW5kcywgYW5kIHNhdmUgdGhlCisg
ICAgICAgIHBhaXIgaW4gYG1fZGF0YURldGVjdG9yQ29udGFpbmVyc0FuZEhpZ2hsaWdodHNgLiBO
b3RlIHRoYXQgd2UgaG9sZCBhIHdlYWsgcG9pbnRlciB0byB0aGUgY29udGFpbmVyIGVsZW1lbnQs
IHN1Y2gKKyAgICAgICAgdGhhdCB0aGVyZSdzIG5vIHJpc2sgb2YgbGVha2luZyBhbnkgb2YgdGhl
c2UgZGF0YSBkZXRlY3Rpb24gcmVzdWx0IGNvbnRhaW5lcnMgKG9yIHRoZWlyIGRvY3VtZW50cyku
CisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBsYXRmb3JtSGFu
ZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVy
OjpoYW5kbGVEYXRhRGV0ZWN0b3JBY3Rpb24pOgorCisgICAgICAgIEFkZCBhIEZJWE1FIHJlZmVy
ZW5jaW5nIHRoZSBuZXh0IHBhdGNoIGluIHRoZSBzZXF1ZW5jZS4KKworICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6Y2xlYXJEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9ySW1hZ2VPdmVybGF5KToKKworICAg
ICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIGNyZWF0ZSBhIGBEYXRhRGV0ZWN0b3JIaWdobGln
aHRgIGZvciBpbWFnZSBvdmVybGF5cy4KKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVu
dCdzIGJsb2NrZWRVUkwgJiBkb2N1bWVudFVSTCBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBhZDk4MjE4YWY4ZmYzZmY3MGRjYTg4YzA1YzI1OGYzYmRhZTRlMDM0Li43YmNk
OGQxZDRlZTA5YWM2ZWMyMDVhNzA5NDg1NDkxYzg3OGEyMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTE5Miw2ICsxOTIsNyBAQCBwYWdlL2lvcy9XZWJFdmVudFJlZ2lvbi5tbQogcGFn
ZS9tYWMvQ2hyb21lTWFjLm1tCiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQogcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCitwYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFj
Lm1tCiBwYWdlL21hYy9QYWdlTWFjLm1tCiBwYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyLm1tCiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTAwYjEzMzljYjU5
YWY2NDMzZGYyMWFlNjFlYzUyZWRlZjMwZTdhMy4uNDcyNjVlYWM4N2U4NjVhMDFhNjg3NTQ4Y2I3
Yzc1YTdiNDAwOTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTY4NTAsNiArMTY4NTAsNyBAQAogCQlGNDlFOThFNDIxREVF
NkMxMDA5QUU1NUUgLyogRWRpdEFjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFZGl0QWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCMkE5MDYyNjUwMkJBMDAw
OUU3Mjg2IC8qIERhdGFEZXRlY3RvckhpZ2hsaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRGV0
ZWN0b3JIaWdobGlnaHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCMkE5MDgy
NjUwMkJDMDAwOUU3Mjg2IC8qIERhdGFEZXRlY3RvckhpZ2hsaWdodC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERhdGFEZXRlY3RvckhpZ2hsaWdodC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjRCMkE5MEMyNjUwODdFNDAwOUU3Mjg2IC8qIEltYWdlT3ZlcmxheUNvbnRyb2xs
ZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbWFnZU92ZXJsYXlDb250cm9sbGVyTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEI0MjJDMjIyMEMwMDAwMDA5RTFF
N0QgLyogRE9NUGFzdGVBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUGFzdGVBY2Nlc3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDNUYyMDUyNDc5RTdFRTAwRTlCNEY1IC8q
IENsaXBib2FyZEltYWdlUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZEltYWdlUmVh
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QzVGMjA4MjQ3OUU5QzgwMEU5
QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlw
Ym9hcmRJbWFnZVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzYx
NCw2ICsyMzYxNSw3IEBACiAJCQkJQUJBRjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1h
Yy5tbSAqLywKIAkJCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJN
YWMubW0gKi8sCiAJCQkJOTNDMDlBN0UwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1h
Yy5tbSAqLywKKwkJCQlGNEIyQTkwQzI2NTA4N0U0MDA5RTcyODYgLyogSW1hZ2VPdmVybGF5Q29u
dHJvbGxlck1hYy5tbSAqLywKIAkJCQk4MzRERDRGMzFCRTA4OTg5MDAyQzlDM0UgLyogUGFnZU1h
Yy5tbSAqLywKIAkJCQkyRDkzQUVFMTE5REY1NjQxMDAyQTg2QzMgLyogU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5oICovLAogCQkJCTJEOTNBRUUyMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IGM5YTM4MDI4Nzg0MmIzZDQwMWNhNjFlYjkyMTFlNWY0MGZiNTQ4YzQuLjQ1OTdiZGVhNWQ5M2Q3
Y2QzYWYxODAxYzNmNTkyODBmYjkzNjM5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTM2NzksNiArMzY3OSwxMCBAQCBzdGF0aWMgVmVjdG9yPFNpbXBsZVJhbmdlPiBzY2FuRm9y
VGVsZXBob25lTnVtYmVycyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAgICAgLy8gRG9uJ3Qg
c2NhbiBmb3IgcGhvbmUgbnVtYmVycyBpbnNpZGUgZWRpdGFibGUgcmVnaW9ucy4KICAgICBpZiAo
YXV0byBzdGFydE5vZGUgPSBtYWtlUmVmKHJhbmdlLnN0YXJ0Q29udGFpbmVyKCkpOyBzdGFydE5v
ZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChI
VE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkocmFuZ2UpKQorICAgICAgICByZXR1cm4g
eyB9OworCiAgICAgYXV0byB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdlKTsKICAgICBWZWN0b3I8U2lt
cGxlUmFuZ2U+IHJlc3VsdDsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBiYjc2OGEyMTliMDY3ZjU4NWQwNmJi
ZTVkYzc5NGZhZDcxYjViMDFmLi4wMmI1Nzk4OGU0N2RiNDlmMDlmNjRhZDRjZDM4NDA1YWIyMThh
OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTIzNCw2ICsxMjM0LDEy
IEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmll
cigpCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBpbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUoKQoreworICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY2xhc3NOYW1lKCJpbWFnZS1v
dmVybGF5LWRhdGEtZGV0ZWN0b3ItcmVzdWx0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHJldHVybiBjbGFzc05hbWU7Cit9CisKIGJvb2wgSFRNTEVsZW1lbnQ6OnNo
b3VsZEV4dGVuZFNlbGVjdGlvblRvVGFyZ2V0Tm9kZShjb25zdCBOb2RlJiB0YXJnZXROb2RlLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb25CZWZvcmVVcGRhdGUpCiB7CiAgICAgaWYg
KCFpczxIVE1MRGl2RWxlbWVudD4odGFyZ2V0Tm9kZSkpCkBAIC0xMjc3LDYgKzEyODMsMTEgQEAg
c3RhdGljIFJlZlB0cjxIVE1MRWxlbWVudD4gaW1hZ2VPdmVybGF5SG9zdChjb25zdCBOb2RlJiBu
b2RlKQogICAgIHJldHVybiBlbGVtZW50LT5oYXNJbWFnZU92ZXJsYXkoKSA/IGVsZW1lbnQgOiBu
dWxscHRyOwogfQogCitib29sIEhUTUxFbGVtZW50Ojppc0ltYWdlT3ZlcmxheURhdGFEZXRlY3Rv
clJlc3VsdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGltYWdlT3ZlcmxheUhvc3QoKnRoaXMpICYm
IGhhc0NsYXNzKCkgJiYgY2xhc3NOYW1lcygpLmNvbnRhaW5zKGltYWdlT3ZlcmxheURhdGFEZXRl
Y3RvckNsYXNzTmFtZSgpKTsKK30KKwogYm9vbCBIVE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92
ZXJsYXkoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIGF1dG8gY29tbW9uQW5jZXN0
b3IgPSBtYWtlUmVmUHRyKGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yPENvbXBvc2VkVHJlZT4ocmFu
Z2UpKTsKQEAgLTE0NjcsNiArMTQ3OCwzMSBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRo
SW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdAogICAg
ICAgICAgICAgbGluZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUN1cnNvciwgQ1NTVmFsdWVUZXh0KTsKICAgICB9CiAKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJ
T04pCisgICAgZm9yIChhdXRvJiBkYXRhRGV0ZWN0b3IgOiByZXN1bHQuZGF0YURldGVjdG9ycykg
eworICAgICAgICBpZiAoZGF0YURldGVjdG9yLm5vcm1hbGl6ZWRRdWFkcy5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGRhdGFEZXRlY3RvckNvbnRhaW5l
ciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgICAgIGRhdGFEZXRl
Y3RvckNvbnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRkKGltYWdlT3ZlcmxheURhdGFEZXRlY3RvckNs
YXNzTmFtZSgpKTsKKyAgICAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChkYXRhRGV0ZWN0b3JD
b250YWluZXIpOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29tZSB1cCB3aXRoIGEg
d2F5IHRvIGNvYWxlc2NlIHRoZSBib3VuZGluZyBxdWFkcyBpbnRvIG9uZSBvciBtb3JlIHJvdGF0
ZWQgcmVjdHMgd2l0aCB0aGUgc2FtZSBhbmdsZSBvZiByb3RhdGlvbi4KKyAgICAgICAgYXV0byB0
YXJnZXRRdWFkID0gZGF0YURldGVjdG9yLm5vcm1hbGl6ZWRRdWFkcy5maXJzdCgpOworICAgICAg
ICB0YXJnZXRRdWFkLnNjYWxlKGNvbnRhaW5lclNpemUud2lkdGgoKSwgY29udGFpbmVyU2l6ZS5o
ZWlnaHQoKSk7CisKKyAgICAgICAgYXV0byB0YXJnZXRCb3VuZHMgPSByb3RhdGVkQm91bmRpbmdS
ZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24odGFyZ2V0UXVhZCwgMC4wMSk7CisgICAgICAg
IGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdpZHRoLCB0YXJnZXRCb3VuZHMuc2l6ZS53aWR0aCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsK
KyAgICAgICAgZGF0YURldGVjdG9yQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5SGVpZ2h0LCB0YXJnZXRCb3VuZHMuc2l6ZS5oZWlnaHQoKSwgQ1NTVW5pdFR5cGU6
OkNTU19QWCk7CisgICAgICAgIGRhdGFEZXRlY3RvckNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgbWFrZVN0cmluZygKKyAgICAgICAgICAgICJ0
cmFuc2xhdGUoIl9zLAorICAgICAgICAgICAgc3RkOjpyb3VuZCh0YXJnZXRCb3VuZHMuY2VudGVy
LngoKSAtICh0YXJnZXRCb3VuZHMuc2l6ZS53aWR0aCgpIC8gMikpLCAicHgsICJfcywKKyAgICAg
ICAgICAgIHN0ZDo6cm91bmQodGFyZ2V0Qm91bmRzLmNlbnRlci55KCkgLSAodGFyZ2V0Qm91bmRz
LnNpemUuaGVpZ2h0KCkgLyAyKSksICJweCkgIl9zLAorICAgICAgICAgICAgdGFyZ2V0Qm91bmRz
LmFuZ2xlSW5SYWRpYW5zID8gbWFrZVN0cmluZygicm90YXRlKCJfcywgdGFyZ2V0Qm91bmRzLmFu
Z2xlSW5SYWRpYW5zLCAicmFkKSAiX3MpIDogZW1wdHlTdHJpbmcoKQorICAgICAgICApKTsKKyAg
ICB9CisjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQorCiAgICAgaWYgKGF1dG8gZnJh
bWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUoKSkpCiAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS5zY2hlZHVsZUN1cnNvclVwZGF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCmluZGV4IDE4NjZhNjA0OTJmOTM1ZGRhMTAzOWEyYWFkMWE1Y2ZmNzVkNTE0NWMuLjAx
ZTYyNWZlYjYxYWM3MmRkNTdlYjBkMjM0OWJjZWEzYjcwNDRlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBzaG91bGRFeHRlbmRTZWxlY3Rpb25Ub1RhcmdldE5vZGUoY29uc3Qg
Tm9kZSYgdGFyZ2V0Tm9kZSwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQmVmb3Jl
VXBkYXRlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0ltYWdlT3ZlcmxheSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JSZXN1
bHQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0luc2lkZUltYWdl
T3ZlcmxheShjb25zdCBTaW1wbGVSYW5nZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGlzSW5zaWRlSW1hZ2VPdmVybGF5KGNvbnN0IE5vZGUmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpc0ltYWdlT3ZlcmxheVRleHQoY29uc3QgTm9kZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKaW5kZXggMGUxYTkyZmM1ZDAxZjQ3
ZWQ4MDlmNGQ4YTY0MmQ5M2Y4ZWE3NmNmMS4uODE1MmM5MDQyZDU1Zjc3MTRiM2EzMDFmMjg3OGEy
ZmE4MmYxYTgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VP
dmVybGF5LmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXku
Y3NzCkBAIC00MywzICs0Myw5IEBAIGRpdi5pbWFnZS1vdmVybGF5LWxpbmUsIC5pbWFnZS1vdmVy
bGF5LXRleHQgewogICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBoaWdobGlnaHQ7CiB9CisKK2Rpdi5pbWFnZS1vdmVybGF5LWRhdGEtZGV0ZWN0b3ItcmVzdWx0
IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9u
ZTsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCmluZGV4IDRlMDBhZDc3NDUxYjQ5YjM4NjU5Nzdj
YjJlMTdkNDE2MTBhZmE3ZDguLmJjYjNiYjNhNTBlN2VhNWEzN2U5MTFiZWFiNjQxMWUwMjQ5NDZm
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmNw
cApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXlDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKQEAgLTYwLDM3ICs2MSw0
NyBAQCB2b2lkIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnNlbGVjdGlvblF1YWRzRGlkQ2hhbmdl
KEZyYW1lJiBmcmFtZSwgY29uc3QgVmVjdG9yPAogICAgIGlmIChmcmFtZS5lZGl0b3IoKS5pZ25v
cmVTZWxlY3Rpb25DaGFuZ2VzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gb3Zlcmxh
eUhvc3RSZW5kZXJlciA9IChbJl0gKCkgLT4gUmVuZGVyRWxlbWVudCogewotICAgICAgICBpZiAo
cXVhZHMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICBhdXRv
IG92ZXJsYXlIb3N0ID0gKFsmXSAoKSAtPiBSZWZQdHI8SFRNTEVsZW1lbnQ+IHsKICAgICAgICAg
YXV0byBzZWxlY3RlZFJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucmFuZ2Uo
KTsKICAgICAgICAgaWYgKCFzZWxlY3RlZFJhbmdlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgaWYgKCFIVE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkoKnNl
bGVjdGVkUmFuZ2UpIHx8IHNlbGVjdGVkUmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgICAgICBpZiAo
IUhUTUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3ZlcmxheSgqc2VsZWN0ZWRSYW5nZSkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIG92ZXJsYXlIb3N0ID0gbWFr
ZVJlZlB0cihzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLnNoYWRvd0hvc3QoKSk7Ci0g
ICAgICAgIGlmICghb3ZlcmxheUhvc3QpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGF1dG8gaG9zdCA9IG1ha2VSZWZQdHIoc2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS5z
aGFkb3dIb3N0KCkpOyBpczxIVE1MRWxlbWVudD4oaG9zdCkpCisgICAgICAgICAgICByZXR1cm4g
bWFrZVJlZlB0cihkb3duY2FzdDxIVE1MRWxlbWVudD4oKmhvc3QpKTsKIAotICAgICAgICByZXR1
cm4gb3ZlcmxheUhvc3QtPnJlbmRlcmVyKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0pKCk7CiAKLSAgICBpZiAoIW92ZXJsYXlIb3N0UmVuZGVyZXIgfHwgIXNob3VsZFVzZVBhZ2VP
dmVybGF5VG9QYWludFNlbGVjdGlvbigqb3ZlcmxheUhvc3RSZW5kZXJlcikpIHsKKyAgICBpZiAo
IW92ZXJsYXlIb3N0KSB7CisgICAgICAgIHVuaW5zdGFsbFBhZ2VPdmVybGF5SWZOZWVkZWQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gb3ZlcmxheUhvc3RSZW5kZXJlciA9
IG92ZXJsYXlIb3N0LT5yZW5kZXJlcigpOworICAgIGlmICghb3ZlcmxheUhvc3RSZW5kZXJlcikg
ewogICAgICAgICB1bmluc3RhbGxQYWdlT3ZlcmxheUlmTmVlZGVkKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX292ZXJsYXlTZWxlY3Rpb25RdWFkcyA9IHF1YWRzOwotICAgIG1f
c2VsZWN0aW9uT3ZlcmxheUJvdW5kcyA9IG92ZXJsYXlIb3N0UmVuZGVyZXItPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KCk7Ci0gICAgbV9zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgPSBvdmVybGF5
SG9zdFJlbmRlcmVyLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICBtX2N1cnJlbnRP
dmVybGF5RG9jdW1lbnQgPSBtYWtlV2Vha1B0cihvdmVybGF5SG9zdFJlbmRlcmVyLT5kb2N1bWVu
dCgpKTsKKyAgICBpZiAoc2hvdWxkVXNlUGFnZU92ZXJsYXlUb1BhaW50U2VsZWN0aW9uKCpvdmVy
bGF5SG9zdFJlbmRlcmVyKSkgeworICAgICAgICBtX292ZXJsYXlTZWxlY3Rpb25RdWFkcyA9IHF1
YWRzOworICAgICAgICBtX3NlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IG92ZXJsYXlIb3N0UmVu
ZGVyZXItPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fb3ZlcmxheVNlbGVjdGlvblF1YWRzLmNsZWFyKCk7CisgICAgICAgIG1fc2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7CisgICAgfQorCisgICAgbV9p
bWFnZU92ZXJsYXlCb3VuZHMgPSBvdmVybGF5SG9zdFJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHVwZGF0ZURhdGFEZXRlY3Rvckhp
Z2hsaWdodHMoKm92ZXJsYXlIb3N0KTsKKyNlbmRpZgogCi0gICAgaW5zdGFsbFBhZ2VPdmVybGF5
SWZOZWVkZWQoKS5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBpZiAoYXV0byYgb3ZlcmxheSA9IGlu
c3RhbGxQYWdlT3ZlcmxheUlmTmVlZGVkKCk7ICFtX292ZXJsYXlTZWxlY3Rpb25RdWFkcy5pc0Vt
cHR5KCkpCisgICAgICAgIG92ZXJsYXkuc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKIGJvb2wgSW1h
Z2VPdmVybGF5Q29udHJvbGxlcjo6c2hvdWxkVXNlUGFnZU92ZXJsYXlUb1BhaW50U2VsZWN0aW9u
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQpAQCAtMTE4LDExICsxMjksMTUgQEAgUGFn
ZU92ZXJsYXkmIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6Omluc3RhbGxQYWdlT3ZlcmxheUlmTmVl
ZGVkKCkKIAogdm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1bmluc3RhbGxQYWdlT3Zlcmxh
eUlmTmVlZGVkKCkKIHsKLSAgICBtX3NlbGVjdGlvbk92ZXJsYXlCb3VuZHMgPSB7IH07CisgICAg
bV9pbWFnZU92ZXJsYXlCb3VuZHMgPSB7IH07CiAgICAgbV9vdmVybGF5U2VsZWN0aW9uUXVhZHMu
Y2xlYXIoKTsKICAgICBtX3NlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yOjp0cmFuc3Bh
cmVudEJsYWNrOwogICAgIG1fY3VycmVudE92ZXJsYXlEb2N1bWVudCA9IG51bGxwdHI7CiAKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgY2xlYXJEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKCk7CisjZW5k
aWYKKwogICAgIGF1dG8gb3ZlcmxheVRvVW5pbnN0YWxsID0gc3RkOjpleGNoYW5nZShtX292ZXJs
YXksIG51bGxwdHIpOwogICAgIGlmICghbV9wYWdlIHx8ICFvdmVybGF5VG9Vbmluc3RhbGwpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE2MCw4ICsxNzUsMTcgQEAgdm9pZCBJbWFnZU92ZXJsYXlDb250
cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIEdyYXBoaWNzQ29udGV4
dCYKICAgICB9CiAKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3NlbGVjdGlvbkJhY2tncm91
bmRDb2xvcik7Ci0gICAgY29udGV4dC5jbGlwKG1fc2VsZWN0aW9uT3ZlcmxheUJvdW5kcyk7Cisg
ICAgY29udGV4dC5jbGlwKG1faW1hZ2VPdmVybGF5Qm91bmRzKTsKICAgICBjb250ZXh0LmZpbGxQ
YXRoKGNvYWxlc2NlZFNlbGVjdGlvblBhdGgpOwogfQogCisjaWYgIVBMQVRGT1JNKE1BQykKKwor
Ym9vbCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oTUFDKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oCmluZGV4IDZjMjc2YmM4ZmIxM2Y1
NTNjNjNiMDViNWRhNGI5YzYxNTUyY2IxZjIuLjEwZGZmYjQzNTU2MjFhNjk5NWVmOGM0NGJhZDM5
ZWViYjZkYzFhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJv
bGxlci5oCkBAIC0zMSwxOCArMzEsMjcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJEYXRh
RGV0ZWN0b3JIaWdobGlnaHQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFz
cyBIVE1MRWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUmVuZGVyRWxlbWVudDsKIHN0cnVjdCBHYXBSZWN0czsKIAotY2xhc3MgSW1h
Z2VPdmVybGF5Q29udHJvbGxlciBmaW5hbCA6IHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7
CitjbGFzcyBJbWFnZU92ZXJsYXlDb250cm9sbGVyIGZpbmFsIDogcHJpdmF0ZSBQYWdlT3Zlcmxh
eTo6Q2xpZW50CisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgRGF0YURldGVjdG9ySGlnaGxpZ2h0
Q2xpZW50CisjZW5kaWYKK3sKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBJbWFnZU92ZXJsYXlDb250cm9sbGVyKFBhZ2UmKTsKQEAgLTU0LDE5ICs2
MywzNSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQ
YWdlKikgZmluYWw7CiAgICAgdm9pZCBkaWRNb3ZlVG9QYWdlKFBhZ2VPdmVybGF5JiwgUGFnZSop
IGZpbmFsIHsgfQogICAgIHZvaWQgZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIGZpbmFsOwotICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkgZmluYWwgeyByZXR1cm4gcGxhdGZvcm1IYW5kbGVNb3VzZUV2
ZW50KGV2ZW50KTsgfQogCiAgICAgYm9vbCBzaG91bGRVc2VQYWdlT3ZlcmxheVRvUGFpbnRTZWxl
Y3Rpb24oY29uc3QgUmVuZGVyRWxlbWVudCYpOwogCiAgICAgUGFnZU92ZXJsYXkmIGluc3RhbGxQ
YWdlT3ZlcmxheUlmTmVlZGVkKCk7CiAgICAgdm9pZCB1bmluc3RhbGxQYWdlT3ZlcmxheUlmTmVl
ZGVkKCk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCB1cGRhdGVEYXRhRGV0ZWN0b3JI
aWdobGlnaHRzKGNvbnN0IEhUTUxFbGVtZW50Jik7CisgICAgdm9pZCBjbGVhckRhdGFEZXRlY3Rv
ckhpZ2hsaWdodHMoKTsKKyAgICBib29sIGhhbmRsZURhdGFEZXRlY3RvckFjdGlvbihjb25zdCBI
VE1MRWxlbWVudCYsIGNvbnN0IEludFBvaW50Jik7CisKKyAgICBEYXRhRGV0ZWN0b3JIaWdobGln
aHQqIGFjdGl2ZUhpZ2hsaWdodCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWN0aXZlRGF0YURl
dGVjdG9ySGlnaGxpZ2h0LmdldCgpOyB9CisjZW5kaWYKKworICAgIGJvb2wgcGxhdGZvcm1IYW5k
bGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworCiAgICAgV2Vha1B0cjxQ
YWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBtX292ZXJsYXk7CiAgICAgV2Vh
a1B0cjxEb2N1bWVudD4gbV9jdXJyZW50T3ZlcmxheURvY3VtZW50OwogICAgIFZlY3RvcjxGbG9h
dFF1YWQ+IG1fb3ZlcmxheVNlbGVjdGlvblF1YWRzOwotICAgIExheW91dFJlY3QgbV9zZWxlY3Rp
b25PdmVybGF5Qm91bmRzOworICAgIExheW91dFJlY3QgbV9pbWFnZU92ZXJsYXlCb3VuZHM7CiAg
ICAgQ29sb3IgbV9zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgeyBDb2xvcjo6dHJhbnNwYXJlbnRC
bGFjayB9OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHVzaW5nIENvbnRhaW5lckFuZEhpZ2hs
aWdodCA9IHN0ZDo6cGFpcjxXZWFrUHRyPEhUTUxFbGVtZW50PiwgUmVmPERhdGFEZXRlY3Rvckhp
Z2hsaWdodD4+OworICAgIFZlY3RvcjxDb250YWluZXJBbmRIaWdobGlnaHQ+IG1fZGF0YURldGVj
dG9yQ29udGFpbmVyc0FuZEhpZ2hsaWdodHM7CisgICAgUmVmUHRyPERhdGFEZXRlY3RvckhpZ2hs
aWdodD4gbV9hY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQ7CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0lt
YWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9JbWFn
ZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxMTVmZmZiMzU3OTA3NDEwZTRk
MzE4ZWI0MjBlNjY5OTA0M2M0MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCkBAIC0wLDAgKzEsMTYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbWFnZU92ZXJsYXlDb250
cm9sbGVyLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkRhdGFEZXRlY3Rpb24u
aCIKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgorI2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKKyNpbXBv
cnQgIkhUTUxOYW1lcy5oIgorI2ltcG9ydCAiSW50UmVjdC5oIgorI2ltcG9ydCAiUGFnZS5oIgor
I2ltcG9ydCAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgor
I2ltcG9ydCAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL0RhdGFEZXRlY3RvcnNT
UEkuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBJbWFn
ZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVEYXRhRGV0ZWN0b3JIaWdobGlnaHRzKGNvbnN0IEhU
TUxFbGVtZW50JiBvdmVybGF5SG9zdCkKK3sKKyAgICBpZiAoIW92ZXJsYXlIb3N0Lmhhc0ltYWdl
T3ZlcmxheSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjbGVh
ckRhdGFEZXRlY3RvckhpZ2hsaWdodHMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFZlY3RvcjxSZWY8SFRNTEVsZW1lbnQ+PiBkYXRhRGV0ZWN0b3JSZXN1bHRFbGVtZW50czsKKyAg
ICBmb3IgKGF1dG8mIGNoaWxkIDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KCpvdmVy
bGF5SG9zdC51c2VyQWdlbnRTaGFkb3dSb290KCkpKSB7CisgICAgICAgIGlmIChjaGlsZC5pc0lt
YWdlT3ZlcmxheURhdGFEZXRlY3RvclJlc3VsdCgpICYmIGNoaWxkLnJlbmRlcmVyKCkpCisgICAg
ICAgICAgICBkYXRhRGV0ZWN0b3JSZXN1bHRFbGVtZW50cy5hcHBlbmQobWFrZVJlZihjaGlsZCkp
OworICAgIH0KKworICAgIEhhc2hTZXQ8UmVmPEhUTUxFbGVtZW50Pj4gZGF0YURldGVjdG9yUmVz
dWx0RWxlbWVudHNXaXRoSGlnaGxpZ2h0czsKKyAgICBmb3IgKGF1dG8mIGNvbnRhaW5lckFuZEhp
Z2hsaWdodCA6IG1fZGF0YURldGVjdG9yQ29udGFpbmVyc0FuZEhpZ2hsaWdodHMpIHsKKyAgICAg
ICAgaWYgKGNvbnRhaW5lckFuZEhpZ2hsaWdodC5maXJzdCkKKyAgICAgICAgICAgIGRhdGFEZXRl
Y3RvclJlc3VsdEVsZW1lbnRzV2l0aEhpZ2hsaWdodHMuYWRkKCpjb250YWluZXJBbmRIaWdobGln
aHQuZmlyc3QpOworICAgIH0KKworICAgIGlmIChkYXRhRGV0ZWN0b3JSZXN1bHRFbGVtZW50c1dp
dGhIaWdobGlnaHRzID09IGRhdGFEZXRlY3RvclJlc3VsdEVsZW1lbnRzKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIG1haW5GcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1fcGFnZS0+bWFpbkZy
YW1lKCkudmlldygpKTsKKyAgICBpZiAoIW1haW5GcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihvdmVybGF5SG9zdC5kb2N1bWVudCgp
LnZpZXcoKSk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
YWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0ID0gbnVsbHB0cjsKKyAgICBtX2RhdGFEZXRlY3Rv
ckNvbnRhaW5lcnNBbmRIaWdobGlnaHRzLmNsZWFyKCk7CisgICAgbV9kYXRhRGV0ZWN0b3JDb250
YWluZXJzQW5kSGlnaGxpZ2h0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFEZXRlY3RvclJl
c3VsdEVsZW1lbnRzLnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkYXRhRGV0
ZWN0b3JSZXN1bHRFbGVtZW50cykgeworICAgICAgICBDR1JlY3QgZWxlbWVudEJvdW5kcyA9IGVs
ZW1lbnQtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgICAgIGVs
ZW1lbnRCb3VuZHMub3JpZ2luID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhmcmFt
ZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocm91bmRlZEludFBvaW50KGVsZW1lbnRCb3VuZHMub3Jp
Z2luKSkpOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGVhY2ggRGF0YURldGVjdG9y
SGlnaGxpZ2h0IHRvIHJlbmRlciBxdWFkcyBpbnN0ZWFkIG9mIGFsd2F5cyBmYWxsaW5nIGJhY2sg
dG8gYXhpcy1hbGlnbmVkIGJvdW5kaW5nIHJlY3RzLgorI2lmIEhBVkUoRERfSElHSExJR0hUX0NS
RUFURV9XSVRIX1NDQUxFKQorICAgICAgICBhdXRvIGhpZ2hsaWdodCA9IGFkb3B0Q0YoRERIaWdo
bGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxlU2NhbGVBbmREaXJlY3Rp
b24obnVsbHB0ciwgJmVsZW1lbnRCb3VuZHMsIDEsIG1haW5GcmFtZVZpZXctPnZpc2libGVDb250
ZW50UmVjdCgpLCBEREhpZ2hsaWdodFN0eWxlQnViYmxlU3RhbmRhcmQgfCBEREhpZ2hsaWdodFN0
eWxlU3RhbmRhcmRJY29uQXJyb3csIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8s
IFlFUywgMCkpOworI2Vsc2UKKyAgICAgICAgYXV0byBoaWdobGlnaHQgPSBhZG9wdENGKERESGln
aGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdFdpdGhTdHlsZUFuZERpcmVjdGlvbihu
dWxscHRyLCAmZWxlbWVudEJvdW5kcywgMSwgbWFpbkZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRS
ZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCB8IERESGlnaGxpZ2h0U3R5bGVT
dGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVT
KSk7CisjZW5kaWYKKyAgICAgICAgbV9kYXRhRGV0ZWN0b3JDb250YWluZXJzQW5kSGlnaGxpZ2h0
cy5hcHBlbmQoeyBtYWtlV2Vha1B0cihlbGVtZW50LmdldCgpKSwgRGF0YURldGVjdG9ySGlnaGxp
Z2h0OjpjcmVhdGVGb3JJbWFnZU92ZXJsYXkoKm1fcGFnZSwgKnRoaXMsIFdURk1vdmUoaGlnaGxp
Z2h0KSwgKm1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudC5nZXQoKSkpIH0pOworICAgIH0K
K30KKworYm9vbCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZl
bnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBhdXRvIG1haW5GcmFt
ZVZpZXcgPSBtYWtlUmVmUHRyKG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpKTsKKyAgICBpZiAo
IW1haW5GcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxIVE1M
RWxlbWVudD4gYWN0aXZlRGF0YURldGVjdG9yRWxlbWVudDsKKyAgICBhdXRvIHByZXZpb3VzQWN0
aXZlSGlnaGxpZ2h0ID0gc3RkOjpleGNoYW5nZShtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdo
dCwgbnVsbHB0cik7CisgICAgYXV0byBtb3VzZVBvc2l0aW9uSW5Db250ZW50cyA9IG1haW5GcmFt
ZVZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CisgICAgYm9vbCBtb3Vz
ZUlzT3ZlckFjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodEJ1dHRvbiA9IGZhbHNlOworCisgICAg
Zm9yIChhdXRvJiBbZWxlbWVudCwgaGlnaGxpZ2h0XSA6IG1fZGF0YURldGVjdG9yQ29udGFpbmVy
c0FuZEhpZ2hsaWdodHMpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50KQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgQm9vbGVhbiBpc092ZXJCdXR0b24gPSBOTzsKKyAgICAgICAgaWYg
KCFEREhpZ2hsaWdodFBvaW50SXNPbkhpZ2hsaWdodChoaWdobGlnaHQtPmhpZ2hsaWdodCgpLCBt
b3VzZVBvc2l0aW9uSW5Db250ZW50cywgJmlzT3ZlckJ1dHRvbikpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBtb3VzZUlzT3ZlckFjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodEJ1
dHRvbiA9IGlzT3ZlckJ1dHRvbjsKKyAgICAgICAgbV9hY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGln
aHQgPSBoaWdobGlnaHQuY29weVJlZigpOworICAgICAgICBhY3RpdmVEYXRhRGV0ZWN0b3JFbGVt
ZW50ID0gbWFrZVJlZlB0cigqZWxlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGlmIChwcmV2aW91c0FjdGl2ZUhpZ2hsaWdodCAhPSBtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hs
aWdodCkgeworICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVIaWdobGlnaHQpCisgICAgICAgICAg
ICBwcmV2aW91c0FjdGl2ZUhpZ2hsaWdodC0+ZmFkZU91dCgpOworCisgICAgICAgIGlmIChtX2Fj
dGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCkgeworICAgICAgICAgICAgbV9vdmVybGF5LT5sYXll
cigpLmFkZENoaWxkKG1fYWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0LT5sYXllcigpKTsKKyAg
ICAgICAgICAgIG1fYWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0LT5mYWRlSW4oKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91
c2VQcmVzc2VkICYmIG1vdXNlSXNPdmVyQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0QnV0dG9u
KQorICAgICAgICByZXR1cm4gaGFuZGxlRGF0YURldGVjdG9yQWN0aW9uKCphY3RpdmVEYXRhRGV0
ZWN0b3JFbGVtZW50LCBtb3VzZVBvc2l0aW9uSW5Db250ZW50cyk7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlRGF0YURldGVjdG9y
QWN0aW9uKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRQb2ludCYgbG9jYXRp
b25JbkNvbnRlbnRzKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUo
KSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBm
cmFtZVZpZXcgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZG9jdW1lbnQoKS52aWV3KCkpOworICAgIGlm
ICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogQ2Fs
bCBvdXQgdG8gdGhlIGNsaWVudCBsYXllciB0byBoYW5kbGUgdGhlIGNsaWNrLgorICAgIFVOVVNF
RF9QQVJBTShsb2NhdGlvbkluQ29udGVudHMpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmNsZWFyRGF0YURldGVjdG9ySGlnaGxpZ2h0cygpCit7
CisgICAgbV9kYXRhRGV0ZWN0b3JDb250YWluZXJzQW5kSGlnaGxpZ2h0cy5jbGVhcigpOworICAg
IG1fYWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0ID0gbnVsbHB0cjsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5oCmluZGV4IGEzNDc2
N2I2ZWE0YTMwNDQ5YTNhNDMwYzliOGExZDA5MzQ2NTVkYWYuLmIwZjMxZDlhMzc4YzQxNmNlYWIy
Nzg3ZWNmMzdjMTJjMWQ0Mjc0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0LmgKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3MgRGF0
YURldGVjdG9ySGlnaGxpZ2h0IDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YURldGVjdG9ySGlnaGxp
Z2h0PiwgcHJpdmF0ZQogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RGF0YURldGVjdG9ySGlnaGxp
Z2h0PiBjcmVhdGVGb3JTZWxlY3Rpb24oUGFnZSYsIERhdGFEZXRlY3RvckhpZ2hsaWdodENsaWVu
dCYsIFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4mJiwgU2ltcGxlUmFuZ2UmJik7CiAgICAgc3Rh
dGljIFJlZjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IGNyZWF0ZUZvclRlbGVwaG9uZU51bWJlcihQ
YWdlJiwgRGF0YURldGVjdG9ySGlnaGxpZ2h0Q2xpZW50JiwgUmV0YWluUHRyPERESGlnaGxpZ2h0
UmVmPiYmLCBTaW1wbGVSYW5nZSYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFEZXRlY3RvckhpZ2hs
aWdodD4gY3JlYXRlRm9ySW1hZ2VPdmVybGF5KFBhZ2UmLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHRD
bGllbnQmLCBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+JiYsIFNpbXBsZVJhbmdlJiYpOwogCiAg
ICAgfkRhdGFEZXRlY3RvckhpZ2hsaWdodCgpID0gZGVmYXVsdDsKIApAQCAtNjksNiArNzAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBUZWxlcGhvbmVOdW1iZXIgPSAx
IDw8IDAsCiAgICAgICAgIFNlbGVjdGlvbiA9IDEgPDwgMSwKKyAgICAgICAgSW1hZ2VPdmVybGF5
ID0gMSA8PCAyLAogICAgIH07CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0
b3JIaWdobGlnaHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9y
SGlnaGxpZ2h0Lm1tCmluZGV4IGQ0NDcxMjViMWMwODRhNGQwMDEyNTQ4ZmJmMjQ3ZmY0ZTEyOTUx
ZWQuLjkxZDUwZGYyOTViZDVjYThkYzE3YjY5YmQzN2FhMmE5MWQxNmQxYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5tbQpA
QCAtNTcsNiArNTcsMTEgQEAgUmVmPERhdGFEZXRlY3RvckhpZ2hsaWdodD4gRGF0YURldGVjdG9y
SGlnaGxpZ2h0OjpjcmVhdGVGb3JUZWxlcGhvbmVOdW1iZXIoUGFnZSYKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhRGV0ZWN0b3JIaWdobGlnaHQocGFnZSwgY2xpZW50LCBEYXRhRGV0ZWN0
b3JIaWdobGlnaHQ6OlR5cGU6OlRlbGVwaG9uZU51bWJlciwgV1RGTW92ZShkZEhpZ2hsaWdodCks
IFdURk1vdmUocmFuZ2UpKSk7CiB9CiAKK1JlZjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IERhdGFE
ZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9ySW1hZ2VPdmVybGF5KFBhZ2UmIHBhZ2UsIERhdGFE
ZXRlY3RvckhpZ2hsaWdodENsaWVudCYgY2xpZW50LCBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+
JiYgZGRIaWdobGlnaHQsIFNpbXBsZVJhbmdlJiYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YURldGVjdG9ySGlnaGxpZ2h0KHBhZ2UsIGNsaWVudCwgRGF0YURldGVjdG9y
SGlnaGxpZ2h0OjpUeXBlOjpJbWFnZU92ZXJsYXksIFdURk1vdmUoZGRIaWdobGlnaHQpLCBXVEZN
b3ZlKHJhbmdlKSkpOworfQorCiBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OkRhdGFEZXRlY3Rvckhp
Z2hsaWdodChQYWdlJiBwYWdlLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQmIGNsaWVudCwg
VHlwZSB0eXBlLCBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+JiYgZGRIaWdobGlnaHQsIFNpbXBs
ZVJhbmdlJiYgcmFuZ2UpCiAgICAgOiBtX2NsaWVudChtYWtlV2Vha1B0cihjbGllbnQpKQogICAg
ICwgbV9wYWdlKG1ha2VXZWFrUHRyKHBhZ2UpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>