<?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>235598</bug_id>
          
          <creation_ts>2022-01-25 10:42:35 -0800</creation_ts>
          <short_desc>Data detectors sometimes show up in the wrong place when resizing images with Live Text</short_desc>
          <delta_ts>2023-02-15 00:34:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>252302</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1833775</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-25 10:42:35 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833777</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-25 10:42:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/88032375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833968</commentid>
    <comment_count>2</comment_count>
      <attachid>449990</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-25 19:01:46 -0800</bug_when>
    <thetext>Created attachment 449990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834109</commentid>
    <comment_count>3</comment_count>
      <attachid>449990</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-26 08:44:22 -0800</bug_when>
    <thetext>Comment on attachment 449990
Patch

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834112</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-26 08:50:19 -0800</bug_when>
    <thetext>Committed r288621 (246440@main): &lt;https://commits.webkit.org/246440@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449990.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834148</commentid>
    <comment_count>5</comment_count>
      <attachid>449990</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-26 10:11:00 -0800</bug_when>
    <thetext>Comment on attachment 449990
Patch

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

&gt; Source/WebCore/dom/ImageOverlay.cpp:215
&gt; +            return { };

While I love using { } and not being too specific about type when just trying to return something like an empty vector or any empty object, when the value is &quot;nullptr&quot; I think I prefer to write that. What do you think?

&gt; Source/WebCore/testing/Internals.cpp:5821
&gt; +        , dataDetectors.map([] (auto&amp; dataDetector) -&gt; TextRecognitionDataDetector {
&gt; +            return TextRecognitionDataDetector { fakeDataDetectorResultForTesting(), { getQuad(dataDetector) } };
&gt; +        })

I don’t think we need to write TextRecognitionDataDetector twice. Either we don’t need to specify it after the &quot;-&gt;&quot; or we don’t need to specify it in the return statement.

Also, Yusuke told me our style does *not* include a space between the capture list and the argument list, so &quot;[](auto&amp; dataDetector)&quot; is the style, although we are certainly not consistent about this.

&gt; Source/WebCore/testing/Internals.mm:182
&gt; +    static NeverDestroyed result = ([]() -&gt; RetainPtr&lt;DDScannerResult&gt; {

I am surprised that we needed the outer parentheses. I would normally leave them out. I think you can just call a lambda without putting it into parentheses.

Also, we can write &quot;[]&quot; instead of &quot;[]()&quot;.

&gt; Source/WebCore/testing/Internals.mm:184
&gt; +        auto stringToScan = CFSTR(&quot;webkit.org&quot;);

Not sure we need a local variable for this, but OK if you think it makes things clearer.

&gt; Source/WebCore/testing/Internals.mm:187
&gt; +            return { };

Same thought as above, I would use &quot;nil&quot; here instead of &quot;{ }&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834178</commentid>
    <comment_count>6</comment_count>
      <attachid>449990</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-26 11:14:53 -0800</bug_when>
    <thetext>Comment on attachment 449990
Patch

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

Thanks for taking a look!

&gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:215
&gt;&gt; +            return { };
&gt; 
&gt; While I love using { } and not being too specific about type when just trying to return something like an empty vector or any empty object, when the value is &quot;nullptr&quot; I think I prefer to write that. What do you think?

Sounds good! I don&apos;t have a strong preference for this, but I can see how `nullptr` would be more clear. I&apos;ll change it to that.

&gt;&gt; Source/WebCore/testing/Internals.cpp:5821
&gt;&gt; +        })
&gt; 
&gt; I don’t think we need to write TextRecognitionDataDetector twice. Either we don’t need to specify it after the &quot;-&gt;&quot; or we don’t need to specify it in the return statement.
&gt; 
&gt; Also, Yusuke told me our style does *not* include a space between the capture list and the argument list, so &quot;[](auto&amp; dataDetector)&quot; is the style, although we are certainly not consistent about this.

Good catch! Fixed both issues.

&gt;&gt; Source/WebCore/testing/Internals.mm:182
&gt;&gt; +    static NeverDestroyed result = ([]() -&gt; RetainPtr&lt;DDScannerResult&gt; {
&gt; 
&gt; I am surprised that we needed the outer parentheses. I would normally leave them out. I think you can just call a lambda without putting it into parentheses.
&gt; 
&gt; Also, we can write &quot;[]&quot; instead of &quot;[]()&quot;.

Removed the parentheses!

Regarding the &quot;[]()&quot;, I tried to do that initially, but got this error:

```
/…/OpenSource/Source/WebCore/testing/Internals.mm:182:39: error: lambda without a parameter clause is a C++2b extension [-Werror,-Wc++2b-extensions]
    static NeverDestroyed result = [] -&gt; RetainPtr&lt;DDScannerResult&gt; {
1 error generated.
```

&gt;&gt; Source/WebCore/testing/Internals.mm:184
&gt;&gt; +        auto stringToScan = CFSTR(&quot;webkit.org&quot;);
&gt; 
&gt; Not sure we need a local variable for this, but OK if you think it makes things clearer.

So I pulled this out into a local variable here because I use `stringToScan` twice below — I think I&apos;ll keep the local here.

&gt;&gt; Source/WebCore/testing/Internals.mm:187
&gt;&gt; +            return { };
&gt; 
&gt; Same thought as above, I would use &quot;nil&quot; here instead of &quot;{ }&quot;.

Changed these to return `nil`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834184</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-26 11:21:08 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834185</commentid>
    <comment_count>8</comment_count>
      <attachid>450041</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-26 11:21:10 -0800</bug_when>
    <thetext>Created attachment 450041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834345</commentid>
    <comment_count>9</comment_count>
      <attachid>449990</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-26 16:11:59 -0800</bug_when>
    <thetext>Comment on attachment 449990
Patch

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

&gt;&gt;&gt; Source/WebCore/testing/Internals.mm:182
&gt;&gt;&gt; +    static NeverDestroyed result = ([]() -&gt; RetainPtr&lt;DDScannerResult&gt; {
&gt;&gt; 
&gt;&gt; I am surprised that we needed the outer parentheses. I would normally leave them out. I think you can just call a lambda without putting it into parentheses.
&gt;&gt; 
&gt;&gt; Also, we can write &quot;[]&quot; instead of &quot;[]()&quot;.
&gt; 
&gt; Removed the parentheses!
&gt; 
&gt; Regarding the &quot;[]()&quot;, I tried to do that initially, but got this error:
&gt; 
&gt; ```
&gt; /…/OpenSource/Source/WebCore/testing/Internals.mm:182:39: error: lambda without a parameter clause is a C++2b extension [-Werror,-Wc++2b-extensions]
&gt;     static NeverDestroyed result = [] -&gt; RetainPtr&lt;DDScannerResult&gt; {
&gt; 1 error generated.
&gt; ```

Oh, yes, forgot that when you specify a return type the empty arguments list is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834346</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-26 16:17:00 -0800</bug_when>
    <thetext>Committed r288654 (246462@main): &lt;https://commits.webkit.org/246462@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450041.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449990</attachid>
            <date>2022-01-25 19:01:46 -0800</date>
            <delta_ts>2022-01-26 11:21:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235598-20220125190146.patch</filename>
            <type>text/plain</type>
            <size>31081</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmNzUzMTc3MmY0ZTdi
YWZiMmRhMGQ0NzcwNWE4OWZkMjBjOTM0MC4uNzY3NmNjYWExYjUzNDIwYWQ5MDQyMzkzZWM2NjI5
MjlmZjc5OTA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIyLTAxLTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGEgZGV0ZWN0
b3JzIHNvbWV0aW1lcyBzaG93IHVwIGluIHRoZSB3cm9uZyBwbGFjZSB3aGVuIHJlc2l6aW5nIGlt
YWdlcyB3aXRoIExpdmUgVGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1NTk4CisgICAgICAgIHJkYXI6Ly84ODAzMjM3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uIG1hY09TLCBMaXZlIFRleHQg
ZGF0YSBkZXRlY3RvcnMgc29tZXRpbWVzIHNob3cgdXAgaW4gdGhlIHdyb25nIHBsYWNlIHdoZW4g
aW1hZ2VzIGFyZSByZXNpemVkOyB0aGlzIGNhbiBoYXBwZW4KKyAgICAgICAgaW4gdGhlIGNhc2Ug
d2hlcmUgaW1hZ2UgYW5hbHlzaXMgaW5qZWN0cyBkYXRhIGRldGVjdGlvbiByZXN1bHRzIGludG8g
dGhlIGltYWdlLCBidXQgdGhlbiB0aGUgaW1hZ2UgaXMgcmVzaXplZAorICAgICAgICBmcm9tIHVu
ZGVybmVhdGggdGhlIHVzZXIncyBtb3VzZSBjdXJzb3IuIFRvIGZpeCB0aGlzLCBhZGQgc29tZSBs
b2dpYyB0byBpbnZhbGlkYXRlIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIncworICAgICAgICBjYWNo
ZWQgZGF0YSBkZXRlY3RvciBoaWdobGlnaHQgaW5mb3JtYXRpb24gaW4gdGhlIGNhc2Ugd2hlcmUg
dGhlIGltYWdlIG92ZXJsYXkgbGF5b3V0IGhhcyBiZWVuIGNoYW5nZWQuCisKKyAgICAgICAgVGVz
dDogZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9tYWMvaW1hZ2Utb3ZlcmxheS1kYXRhLWRl
dGVjdG9ycy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKKyAgICAgICAgSGF2ZSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQgYWRkaXRpb25hbGx5IGxp
bmsgYWdhaW5zdCBsaWJQQUwsIHNvIHRoYXQgd2UgY2FuIHVzZSBQQUwncyBEYXRhRGV0ZWN0b3Jz
Q29yZSBzb2Z0LQorICAgICAgICBsaW5raW5nIHV0aWxpdGllcy4KKworICAgICAgICAqIGRvbS9J
bWFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojp1cGRhdGVT
dWJ0cmVlKToKKworICAgICAgICBEcml2ZS1ieSBmaXggaW4gYWRqYWNlbnQgY29kZTogd2hlbiBp
bnN0YWxsaW5nIGltYWdlIG92ZXJsYXlzIGluIG1lZGlhIGVsZW1lbnRzLCBtYWtlIHN1cmUgdGhh
dCB3ZSBpbnN0YWxsIHRoZW0KKyAgICAgICAgaW5zaWRlIHRoZSBtZWRpYSBjb250cm9scyByb290
IGNvbnRhaW5lciBieSBjYWxsaW5nIGBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KClgIGJlZm9y
ZSBpbnNlcnRpbmcgdGhlIG92ZXJsYXkKKyAgICAgICAgY29udGVudDsgdGhpcyBlbnN1cmVzIHRo
YXQgd2UgZG9uJ3QgZW5kIHVwIHdpdGggYSByZWR1bmRhbnQgaW1hZ2Ugb3ZlcmxheSBpbiB0aGUg
c2hhZG93IHJvb3QuIFRlc3RzIGZvciB0aGlzCisgICAgICAgIHdpbGwgYmUgYWRkZWQgaW4gIzIz
NTYyMy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojp1cGRhdGVXaXRoVGV4dFJl
Y29nbml0aW9uUmVzdWx0KToKKyAgICAgICAgKiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dGV4dFJlY29n
bml0aW9uUmVzdWx0c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29u
dHJvbGxlcjo6aGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0Rm9yVGVzdGluZyBjb25zdCk6
CisgICAgICAgICogcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmg6CisgICAgICAgICogcGFn
ZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlT3ZlcmxheUNvbnRyb2xsZXI6OnRleHRSZWNvZ25pdGlvblJlc3VsdHNDaGFuZ2VkKToKKwor
ICAgICAgICBBZGQgYSBob29rIHRvIGluZm9ybSBJbWFnZU92ZXJsYXlDb250cm9sbGVyIHdoZW4g
aW1hZ2Ugb3ZlcmxheSBjb250ZW50IGNoYW5nZXMuIElmIHRoZSBpbWFnZSBvdmVybGF5IGhvc3QK
KyAgICAgICAgbWF0Y2hlcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBob3N0IGVsZW1lbnQgc2hvd2lu
ZyBkYXRhIGRldGVjdG9yIGhpZ2hsaWdodHMsIHRoZW4gaW52YWxpZGF0ZSB0aGUgaGlnaGxpZ2h0
czsKKyAgICAgICAgdGhlc2UgaGlnaGxpZ2h0cyB3aWxsIGJlIHJlY29tcHV0ZWQgb25jZSB0aGUg
dXNlciBob3ZlcnMgb3ZlciB0aGUgZGF0YSBkZXRlY3RvciBlbGVtZW50cyBhZ2Fpbi4KKworICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6aGFzQWN0aXZlRGF0YURldGVj
dG9ySGlnaGxpZ2h0Rm9yVGVzdGluZyBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgdGVzdGluZy1v
bmx5IGhlbHBlciBtZXRob2QgdG8gcXVlcnkgd2hldGhlciBvciBub3QgdGhlcmUgaXMgYW4gYWN0
aXZlIGRhdGEgZGV0ZWN0b3IgaGlnaGxpZ2h0LiBTZWUgYmVsb3cKKyAgICAgICAgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKworICAgICAgICBB
ZGQgc29tZSBtb3JlIFdlYkNvcmUgdGVzdGluZyBzdXBwb3J0IHRvIG1ha2UgaXQgcG9zc2libGUg
dG8gdGVzdCBkYXRhIGRldGVjdG9yIGhpZ2hsaWdodHMgaW4gTGl2ZSBUZXh0IG9uCisgICAgICAg
IG1hY09TLgorCisgICAgICAgIChXZWJDb3JlOjptYWtlRGF0YUZvckxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjppbnN0YWxsSW1hZ2VPdmVybGF5KToKKworICAgICAgICBBZGQg
YW4gb3B0aW9uYWwgYXJndW1lbnQgdG8gcHJvdmlkZSBhIGxpc3Qgb2YgZGF0YSBkZXRlY3RvciBx
dWFkcyB0byBpbmplY3QgaW50byB0aGUgb3ZlcmxheSBob3N0LiBGb3Igbm93LCBlYWNoCisgICAg
ICAgIGRhdGEgZGV0ZWN0b3IgZWxlbWVudCBzaW1wbHkgY29ycmVzcG9uZHMgdG8gYSBkdW1teSBg
RERTY2FubmVyUmVzdWx0YCByZXR1cm5lZCBieSB0aGUgc3RhdGljCisgICAgICAgIGBmYWtlRGF0
YURldGVjdG9yUmVzdWx0Rm9yVGVzdGluZygpYCBoZWxwZXIgYmVsb3cuCisKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6aGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0IGNvbnN0KToK
KworICAgICAgICBBZGQgYW4gaW50ZXJuYWwgdGVzdGluZyBob29rIHRvIHF1ZXJ5IHdoZXRoZXIg
b3Igbm90IEltYWdlT3ZlcmxheUNvbnRyb2xsZXIgaXMgdHJhY2tpbmcgYW4gYWN0aXZlIGRhdGEg
ZGV0ZWN0b3IKKyAgICAgICAgaGlnaGxpZ2h0LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMubW06CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmZha2VEYXRhRGV0
ZWN0b3JSZXN1bHRGb3JUZXN0aW5nKToKKwogMjAyMi0wMS0yMiAgQW5kcmVzIEdvbnphbGV6ICA8
YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIGFuY2VzdHJ5IG9mIGlzb2xh
dGVkIG9iamVjdHMgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIHRoZSBlbnRpcmUgc3VidHJlZSBmb3Ig
YW4gYW5jZXN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAzMjgwOTg5ZDgwMWM5NWQwYzRmMjRl
MmMwNWU5NjhjMTU2NTk3MzZiLi44Y2Y5NTEzNTg5N2FmNjNjYmE4OTBjY2E3MmU2YzI3N2E1MzA2
YzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMS0yNSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBEYXRhIGRldGVj
dG9ycyBzb21ldGltZXMgc2hvdyB1cCBpbiB0aGUgd3JvbmcgcGxhY2Ugd2hlbiByZXNpemluZyBp
bWFnZXMgd2l0aCBMaXZlIFRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTU5OAorICAgICAgICByZGFyOi8vODgwMzIzNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHNvbWUgc29mdC1saW5r
ZWQgRGF0YURldGVjdG9yc0NvcmUgQVBJIG91dCBvZiB0aGUgaU9TLXNwZWNpZmljIGRlZmluZSwg
c28gdGhhdCB3ZSBjYW4gY2FsbCB0aGVtIG9uIG1hY09TLgorICAgICAgICBTZWUgV2ViQ29yZS9D
aGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIHBhbC9jb2NvYS9EYXRhRGV0
ZWN0b3JzQ29yZVNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2NvY29hL0RhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsubW06CisKIDIwMjItMDEtMjEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBDRlVSTENhY2hlIGluIFdlYktpdDIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTb2Z0TGlu
ay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRM
aW5rLmgKaW5kZXggM2ZhMWYxYmEwMjk5NDBmMGJlOGQ2N2M5ZWI2YThjYWJmOTgwY2U3ZS4uZGU5
YzM0YzQzMzgxMmJkNWZiNjUyZmJlZTk2ODNhMGQ5ZGQyYjkyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmgK
QEAgLTM1LDEwICszNSw2IEBAIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgRERTY2Fu
bmVyUmVzdWx0KQogI2lmIFBMQVRGT1JNKE1BQykKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFBBTCwgRGF0YURldGVjdG9yc0NvcmUsIEREQmluZGVyUGhvbmVOdW1iZXJLZXksIENGU3Ry
aW5nUmVmKQogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLVNPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFBBTCwgRGF0YURldGVjdG9yc0NvcmUsIEREU2Nhbm5lckNyZWF0ZSwgRERTY2Fu
bmVyUmVmLCAoRERTY2FubmVyVHlwZSB0eXBlLCBERFNjYW5uZXJPcHRpb25zIG9wdGlvbnMsIENG
RXJyb3JSZWYgKiBlcnJvclJlZiksICh0eXBlLCBvcHRpb25zLCBlcnJvclJlZikpCi1TT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIERhdGFEZXRlY3RvcnNDb3JlLCBERFNjYW5uZXJT
Y2FuUXVlcnksIEJvb2xlYW4sIChERFNjYW5uZXJSZWYgc2Nhbm5lciwgRERTY2FuUXVlcnlSZWYg
cXVlcnkpLCAoc2Nhbm5lciwgcXVlcnkpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2FuUXVlcnlDcmVhdGUsIEREU2NhblF1ZXJ5UmVm
LCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yKSwgKGFsbG9jYXRvcikpCi1TT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIERhdGFEZXRlY3RvcnNDb3JlLCBERFNjYW5uZXJDb3B5UmVz
dWx0c1dpdGhPcHRpb25zLCBDRkFycmF5UmVmLCAoRERTY2FubmVyUmVmIHNjYW5uZXIsIEREU2Nh
bm5lckNvcHlSZXN1bHRzT3B0aW9ucyBvcHRpb25zKSwgKHNjYW5uZXIsIG9wdGlvbnMpKQogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERSZXN1
bHRHZXRSYW5nZSwgQ0ZSYW5nZSwgKEREUmVzdWx0UmVmIHJlc3VsdCksIChyZXN1bHQpKQogU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERSZXN1
bHRHZXRUeXBlLCBDRlN0cmluZ1JlZiwgKEREUmVzdWx0UmVmIHJlc3VsdCksIChyZXN1bHQpKQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERS
ZXN1bHRHZXRDYXRlZ29yeSwgRERSZXN1bHRDYXRlZ29yeSwgKEREUmVzdWx0UmVmIHJlc3VsdCks
IChyZXN1bHQpKQpAQCAtNjcsNSArNjMsMTAgQEAgU09GVF9MSU5LX1BPSU5URVJfRk9SX0hFQURF
UihQQUwsIERhdGFEZXRlY3RvcnNDb3JlLCBEREJpbmRlclNpZ25hdHVyZUJsb2NrS2V5LAogU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2Fu
bmVyQ29weVJlc3VsdHNPcHRpb25zRm9yUGFzc2l2ZVVzZSwgRERTY2FubmVyQ29weVJlc3VsdHNP
cHRpb25zKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBEYXRhRGV0ZWN0b3Jz
Q29yZSwgRERTY2FubmVyRW5hYmxlT3B0aW9uYWxTb3VyY2UsIHZvaWQsIChERFNjYW5uZXJSZWYg
c2Nhbm5lciwgRERTY2FubmVyU291cmNlIHNvdXJjZSwgQm9vbGVhbiBlbmFibGUpLCAoc2Nhbm5l
ciwgc291cmNlLCBlbmFibGUpKQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIERhdGFEZXRlY3RvcnNDb3JlLCBERFNjYW5u
ZXJDcmVhdGUsIEREU2Nhbm5lclJlZiwgKEREU2Nhbm5lclR5cGUgdHlwZSwgRERTY2FubmVyT3B0
aW9ucyBvcHRpb25zLCBDRkVycm9yUmVmICogZXJyb3JSZWYpLCAodHlwZSwgb3B0aW9ucywgZXJy
b3JSZWYpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBEYXRhRGV0ZWN0b3Jz
Q29yZSwgRERTY2FubmVyU2NhblF1ZXJ5LCBCb29sZWFuLCAoRERTY2FubmVyUmVmIHNjYW5uZXIs
IEREU2NhblF1ZXJ5UmVmIHF1ZXJ5KSwgKHNjYW5uZXIsIHF1ZXJ5KSkKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgRGF0YURldGVjdG9yc0NvcmUsIEREU2NhblF1ZXJ5Q3JlYXRl
LCBERFNjYW5RdWVyeVJlZiwgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciksIChhbGxvY2F0b3Ip
KQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBEYXRhRGV0ZWN0b3JzQ29yZSwg
RERTY2FuUXVlcnlDcmVhdGVGcm9tU3RyaW5nLCBERFNjYW5RdWVyeVJlZiwgKENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgc3RyaW5nLCBDRlJhbmdlIHJhbmdlKSwgKGFsbG9j
YXRvciwgc3RyaW5nLCByYW5nZSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IERhdGFEZXRlY3RvcnNDb3JlLCBERFNjYW5uZXJDb3B5UmVzdWx0c1dpdGhPcHRpb25zLCBDRkFy
cmF5UmVmLCAoRERTY2FubmVyUmVmIHNjYW5uZXIsIEREU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9u
cyBvcHRpb25zKSwgKHNjYW5uZXIsIG9wdGlvbnMpKQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFf
REVURUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9EYXRh
RGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9E
YXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tCmluZGV4IDJiNjQ0N2YwOTExYTc2ZWM0NTBhNjQ0
NWQ2OGIyNWQ5NTU2NmEyMGEuLmFkYjgwYmEwM2Y2NGFhZWJhNDRlMTNmZmYxZTUyOGNjNmU3NzBl
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvRGF0YURldGVjdG9y
c0NvcmVTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0RhdGFE
ZXRlY3RvcnNDb3JlU29mdExpbmsubW0KQEAgLTM2LDEwICszNiw2IEBAIFNPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgRGF0YURldGVjdG9yc0NvcmUsIEREU2Nhbm5l
clJlc3VsdCwKICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIERhdGFEZXRlY3RvcnNDb3JlLCBEREJpbmRlclBob25lTnVtYmVy
S2V5LCBDRlN0cmluZ1JlZiwgUEFMX0VYUE9SVCkKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIERhdGFEZXRlY3RvcnNDb3JlLCBE
RFNjYW5uZXJDcmVhdGUsIEREU2Nhbm5lclJlZiwgKEREU2Nhbm5lclR5cGUgdHlwZSwgRERTY2Fu
bmVyT3B0aW9ucyBvcHRpb25zLCBDRkVycm9yUmVmICogZXJyb3JSZWYpLCAodHlwZSwgb3B0aW9u
cywgZXJyb3JSZWYpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBEYXRhRGV0
ZWN0b3JzQ29yZSwgRERTY2FubmVyU2NhblF1ZXJ5LCBCb29sZWFuLCAoRERTY2FubmVyUmVmIHNj
YW5uZXIsIEREU2NhblF1ZXJ5UmVmIHF1ZXJ5KSwgKHNjYW5uZXIsIHF1ZXJ5KSkKLVNPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgRGF0YURldGVjdG9yc0NvcmUsIEREU2NhblF1ZXJ5
Q3JlYXRlLCBERFNjYW5RdWVyeVJlZiwgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciksIChhbGxv
Y2F0b3IpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBEYXRhRGV0ZWN0b3Jz
Q29yZSwgRERTY2FubmVyQ29weVJlc3VsdHNXaXRoT3B0aW9ucywgQ0ZBcnJheVJlZiwgKEREU2Nh
bm5lclJlZiBzY2FubmVyLCBERFNjYW5uZXJDb3B5UmVzdWx0c09wdGlvbnMgb3B0aW9ucyksIChz
Y2FubmVyLCBvcHRpb25zKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgRGF0
YURldGVjdG9yc0NvcmUsIEREUmVzdWx0R2V0UmFuZ2UsIENGUmFuZ2UsIChERFJlc3VsdFJlZiBy
ZXN1bHQpLCAocmVzdWx0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgRGF0
YURldGVjdG9yc0NvcmUsIEREUmVzdWx0R2V0VHlwZSwgQ0ZTdHJpbmdSZWYsIChERFJlc3VsdFJl
ZiByZXN1bHQpLCAocmVzdWx0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
RGF0YURldGVjdG9yc0NvcmUsIEREUmVzdWx0R2V0Q2F0ZWdvcnksIEREUmVzdWx0Q2F0ZWdvcnks
IChERFJlc3VsdFJlZiByZXN1bHQpLCAocmVzdWx0KSkKQEAgLTY4LDUgKzY0LDkgQEAgU09GVF9M
SU5LX1BPSU5URVJfRk9SX1NPVVJDRShQQUwsIERhdGFEZXRlY3RvcnNDb3JlLCBEREJpbmRlclNp
Z25hdHVyZUJsb2NrS2V5LAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBEYXRh
RGV0ZWN0b3JzQ29yZSwgRERTY2FubmVyQ29weVJlc3VsdHNPcHRpb25zRm9yUGFzc2l2ZVVzZSwg
RERTY2FubmVyQ29weVJlc3VsdHNPcHRpb25zKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBEYXRhRGV0ZWN0b3JzQ29yZSwgRERTY2FubmVyRW5hYmxlT3B0aW9uYWxTb3VyY2Us
IHZvaWQsIChERFNjYW5uZXJSZWYgc2Nhbm5lciwgRERTY2FubmVyU291cmNlIHNvdXJjZSwgQm9v
bGVhbiBlbmFibGUpLCAoc2Nhbm5lciwgc291cmNlLCBlbmFibGUpKQogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0KK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgRGF0
YURldGVjdG9yc0NvcmUsIEREU2Nhbm5lckNyZWF0ZSwgRERTY2FubmVyUmVmLCAoRERTY2FubmVy
VHlwZSB0eXBlLCBERFNjYW5uZXJPcHRpb25zIG9wdGlvbnMsIENGRXJyb3JSZWYgKiBlcnJvclJl
ZiksICh0eXBlLCBvcHRpb25zLCBlcnJvclJlZikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIERhdGFEZXRlY3RvcnNDb3JlLCBERFNjYW5uZXJTY2FuUXVlcnksIEJvb2xlYW4s
IChERFNjYW5uZXJSZWYgc2Nhbm5lciwgRERTY2FuUXVlcnlSZWYgcXVlcnkpLCAoc2Nhbm5lciwg
cXVlcnkpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBEYXRhRGV0ZWN0b3Jz
Q29yZSwgRERTY2FuUXVlcnlDcmVhdGUsIEREU2NhblF1ZXJ5UmVmLCAoQ0ZBbGxvY2F0b3JSZWYg
YWxsb2NhdG9yKSwgKGFsbG9jYXRvcikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIERhdGFEZXRlY3RvcnNDb3JlLCBERFNjYW5RdWVyeUNyZWF0ZUZyb21TdHJpbmcsIEREU2Nh
blF1ZXJ5UmVmLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBzdHJpbmcs
IENGUmFuZ2UgcmFuZ2UpLCAoYWxsb2NhdG9yLCBzdHJpbmcsIHJhbmdlKSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgRGF0YURldGVjdG9yc0NvcmUsIEREU2Nhbm5lckNvcHlS
ZXN1bHRzV2l0aE9wdGlvbnMsIENGQXJyYXlSZWYsIChERFNjYW5uZXJSZWYgc2Nhbm5lciwgRERT
Y2FubmVyQ29weVJlc3VsdHNPcHRpb25zIG9wdGlvbnMpLCAoc2Nhbm5lciwgb3B0aW9ucykpCiAj
ZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg5OTlhMmVhMTk2ZTg1NzkwMjBi
MDEzYjRmNTA3ZTc1NmM5NWFiYzMuLjU0MzMzMTJiNDRjNmQ2NjE5ZjM5N2E0ZTMxNWExZjIwNzRl
MmJjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU1MDgsNiArNTUwOCw3IEBACiAJCUY0NkM0NDdFMjM0NjU0NTQwMDM5QTc5
RCAvKiBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZDNDQ3QzIzNDY1NDU0MDAzOUE3OUQgLyog
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oICovOyB9OwogCQlGNDZENTM4NjI3M0Q3
RTQ2MDAwOUZBODAgLyogSW1hZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZENTM4NTI3M0Q3RTNGMDAwOUZBODAgLyogSW1hZ2VPdmVy
bGF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RjQ2RDUzQTEyNzNFRUZBMDAwMDlGQTgwIC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2RDUzOUQyNzNFRUNGNzAw
MDlGQTgwIC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0NzExMzc1MjdBMEFGQTYwMDFCQzdDQSAvKiBsaWJQ
QUwuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MDlEMDUwMUUzMUMzMjkwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLzsgfTsKIAkJRjQ3Mzg0NTgyNURE
RTlGQjAwNkRFOEREIC8qIERhdGFPd25lclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NzM4NDU3MjVEREU5RkIwMDZERThERCAvKiBEYXRhT3du
ZXJUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRjQ3QTA5RDEyMEE5M0E5NzAwMjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0EwOUNGMjBBOTM5
RjYwMDI0MEZBRSAvKiBEaXNhYmxlZEFkYXB0YXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ3QTVFM0UxOTVCOEM4QTAwNDgzMTAwIC8q
IFN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ3QTVFM0IxOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25h
cFBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xODI2MSw2ICsxODI2Miw3IEBACiAJCQkJQUE1RjNCOTExNkNDNUJFQjAwNDU1RUIwIC8q
IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCUExNUU2QkYx
MUUyMTJBNkEwMDgwQUYzNCAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LAogCQkJCTQxMjMwOTEzMTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlGNDcxMTM3NTI3QTBBRkE2MDAxQkM3Q0EgLyogbGli
UEFMLmEgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyog
V2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbWFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5j
cHAKaW5kZXggMGY5OTNmYTFkZWE0Y2M0YjI2N2EzMDJkM2UwNjgyY2E0ODAzNjRkNy4uNjlkMzBh
ZjFmYTM5MTRjMWJjMzdhMzU0MDM3OTJhNjBhNDNiNGZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdl
T3ZlcmxheS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1l
ZGlhQ29udHJvbHNIb3N0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlF1aXJrcy5o
IgpAQCAtMjA3LDIwICsyMDgsMzAgQEAgc3RhdGljIEVsZW1lbnRzIHVwZGF0ZVN1YnRyZWUoSFRN
TEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYKICAgICBib29s
IGhhZEV4aXN0aW5nRWxlbWVudHMgPSBmYWxzZTsKICAgICBFbGVtZW50cyBlbGVtZW50czsKICAg
ICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1lZGlhQ29udHJvbHNDb250YWluZXI7Ci0gICAgaWYgKFJl
ZlB0ciBzaGFkb3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290KCkpIHsKICNpZiBFTkFCTEUoTU9E
RVJOX01FRElBX0NPTlRST0xTKQotICAgICAgICBpZiAoaXM8SFRNTE1lZGlhRWxlbWVudD4oZWxl
bWVudCkpIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHIgY29udHJvbHNIb3N0ID0gZG93bmNhc3Q8
SFRNTE1lZGlhRWxlbWVudD4oZWxlbWVudCkubWVkaWFDb250cm9sc0hvc3QoKSkgewotICAgICAg
ICAgICAgICAgIGF1dG8mIGNvbnRhaW5lckNsYXNzID0gY29udHJvbHNIb3N0LT5tZWRpYUNvbnRy
b2xzQ29udGFpbmVyQ2xhc3NOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBjaGls
ZCA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxEaXZFbGVtZW50Pigqc2hhZG93Um9vdCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkLmhhc0NsYXNzKCkgJiYgY2hpbGQuY2xhc3NOYW1lcygp
LmNvbnRhaW5zKGNvbnRhaW5lckNsYXNzKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbWVk
aWFDb250cm9sc0NvbnRhaW5lciA9ICZjaGlsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQorICAgIG1lZGlhQ29udHJvbHNDb250YWluZXIgPSAoWyZdKCkgLT4gUmVmUHRyPEhUTUxF
bGVtZW50PiB7CisgICAgICAgIFJlZlB0ciBtZWRpYUVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8
SFRNTE1lZGlhRWxlbWVudD4oZWxlbWVudCk7CisgICAgICAgIGlmICghbWVkaWFFbGVtZW50KQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBSZWYgc2hhZG93Um9vdCA9IG1lZGlh
RWxlbWVudC0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOworICAgICAgICBSZWZQdHIgY29u
dHJvbHNIb3N0ID0gbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpOworICAgICAgICBp
ZiAoIWNvbnRyb2xzSG9zdCkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0jZW5kaWYKKworICAgICAgICBhdXRv
JiBjb250YWluZXJDbGFzcyA9IGNvbnRyb2xzSG9zdC0+bWVkaWFDb250cm9sc0NvbnRhaW5lckNs
YXNzTmFtZSgpOworICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8SFRN
TERpdkVsZW1lbnQ+KHNoYWRvd1Jvb3QuZ2V0KCkpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQu
aGFzQ2xhc3MoKSAmJiBjaGlsZC5jbGFzc05hbWVzKCkuY29udGFpbnMoY29udGFpbmVyQ2xhc3Mp
KQorICAgICAgICAgICAgICAgIHJldHVybiAmY2hpbGQ7CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSkoKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoTU9ERVJOX01FRElBX0NPTlRST0xTKQorCisgICAgaWYgKFJlZlB0ciBzaGFk
b3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKGhhc092ZXJsYXko
ZWxlbWVudCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBjb250YWluZXJG
b3JJbWFnZU92ZXJsYXk7CiAgICAgICAgICAgICBpZiAobWVkaWFDb250cm9sc0NvbnRhaW5lcikK
QEAgLTUxMSw2ICs1MjIsMTIgQEAgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0
KEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUZXh0UmVjb2duaXRpb24KICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBjb21lIHVwIHdpdGggYSB3YXkgdG8gY29hbGVzY2UgdGhlIGJvdW5k
aW5nIHF1YWRzIGludG8gb25lIG9yIG1vcmUgcm90YXRlZCByZWN0cyB3aXRoIHRoZSBzYW1lIGFu
Z2xlIG9mIHJvdGF0aW9uLgogICAgICAgICBmaXRFbGVtZW50VG9RdWFkKGRhdGFEZXRlY3RvckNv
bnRhaW5lci5nZXQoKSwgY29udmVydFRvQ29udGFpbmVyQ29vcmRpbmF0ZXMoZmlyc3RRdWFkKSk7
CiAgICAgfQorCisgICAgaWYgKCFyZXN1bHQuZGF0YURldGVjdG9ycy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChhdXRvKiBv
dmVybGF5Q29udHJvbGxlciA9IHBhZ2UgPyBwYWdlLT5pbWFnZU92ZXJsYXlDb250cm9sbGVySWZF
eGlzdHMoKSA6IG51bGxwdHIpCisgICAgICAgICAgICBvdmVybGF5Q29udHJvbGxlci0+dGV4dFJl
Y29nbml0aW9uUmVzdWx0c0NoYW5nZWQoZWxlbWVudCk7CisgICAgfQogI2VuZGlmIC8vIEVOQUJM
RShEQVRBX0RFVEVDVElPTikKIAogICAgIGNvbnN0ZXhwciBmbG9hdCBtaW5TY2FsZUZvckZvbnRT
aXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIu
Y3BwCmluZGV4IDhmODljNjIzMDk2YzlmNjg2M2NhNjFmODExYzdhY2M5YjA1MDZmNmYuLjlkYWRm
MDkxNGNhMmIxMGU0ZWY0OTBmYjNhMzQwOTA5OTI2NmFiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtMjExLDYgKzIxMSwxOSBAQCB2
b2lkIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmVsZW1lbnRVbmRlck1vdXNlRGlkQ2hhbmdlKEZy
YW1lJiwgRWxlbWVudCopCiB7CiB9CiAKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKK3Zv
aWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dGV4dFJlY29nbml0aW9uUmVzdWx0c0NoYW5nZWQo
SFRNTEVsZW1lbnQmKQoreworfQorCitib29sIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6Omhhc0Fj
dGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodEZvclRlc3RpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKwogI2VuZGlm
IC8vICFQTEFURk9STShNQUMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmgKaW5kZXggY2ZlNDljZjZlMDBhZWEw
MWVmYjkxNjlmNTQ5MzI3YzU2NzNlOGFhMi4uMmUxZjc4NjNlN2QyMTJjZTMyMWE3ODMwZWE2ODcw
ZTM2NGE4YzdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250cm9s
bGVyLmgKQEAgLTYwLDYgKzYwLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbGVjdGlvblF1YWRz
RGlkQ2hhbmdlKEZyYW1lJiwgY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mKTsKICAgICB2b2lkIGVs
ZW1lbnRVbmRlck1vdXNlRGlkQ2hhbmdlKEZyYW1lJiwgRWxlbWVudCopOwogCisjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQWN0aXZlRGF0YURl
dGVjdG9ySGlnaGxpZ2h0Rm9yVGVzdGluZygpIGNvbnN0OworICAgIHZvaWQgdGV4dFJlY29nbml0
aW9uUmVzdWx0c0NoYW5nZWQoSFRNTEVsZW1lbnQmKTsKKyNlbmRpZgorCiAgICAgdm9pZCBkb2N1
bWVudERldGFjaGVkKGNvbnN0IERvY3VtZW50Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQppbmRleCBk
YTM2ODgyODIyMmRlYTYwYTQ5MWI0ODdlZDU2ZTEzMWNiZDhkNzQ4Li5hZWQ1OGI5MDYwZjkyNDNj
NDc3OWEwNDhmNTE1ZjZiYWRkMTk0NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0KQEAgLTE4Myw2ICsxODMsMjAgQEAg
dm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpjbGVhckRhdGFEZXRlY3RvckhpZ2hsaWdodHMo
KQogICAgIG1fYWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0ID0gbnVsbHB0cjsKIH0KIAordm9p
ZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp0ZXh0UmVjb2duaXRpb25SZXN1bHRzQ2hhbmdlZChI
VE1MRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBpZiAobV9ob3N0RWxlbWVudEZvckRhdGFEZXRl
Y3RvcnMgIT0gJmVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNsZWFyRGF0YURldGVj
dG9ySGlnaGxpZ2h0cygpOworICAgIHVuaW5zdGFsbFBhZ2VPdmVybGF5SWZOZWVkZWQoKTsKK30K
KworYm9vbCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpoYXNBY3RpdmVEYXRhRGV0ZWN0b3JIaWdo
bGlnaHRGb3JUZXN0aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2FjdGl2ZURhdGFEZXRl
Y3RvckhpZ2hsaWdodDsKK30KKwogdm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjplbGVtZW50
VW5kZXJNb3VzZURpZENoYW5nZShGcmFtZSYgZnJhbWUsIEVsZW1lbnQqIGVsZW1lbnRVbmRlck1v
dXNlKQogewogICAgIGlmIChtX2FjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA3ZThmM2ZhZTM2MTk2MjkyOWRjZDA2OTE0ZWIx
OTdiMzY0OWY0OTI2Li43YzY5ZGIzYmE2MWZlZWY4N2ZkM2ZkYWQ2NDdjYmNmMDg5MDc3MzM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMTIsNiArMTEyLDcgQEAKICNp
bmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNs
dWRlICJJbWFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlICJJbWFnZU92ZXJsYXlDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2FibGVUeXBlLmgiCkBAIC01NzU0LDYg
KzU3NTUsNyBAQCBNb2NrUGF5bWVudENvb3JkaW5hdG9yJiBJbnRlcm5hbHM6Om1vY2tQYXltZW50
Q29vcmRpbmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50KQogSW50ZXJuYWxzOjpJbWFnZU92ZXJsYXlM
aW5lOjp+SW1hZ2VPdmVybGF5TGluZSgpID0gZGVmYXVsdDsKIEludGVybmFsczo6SW1hZ2VPdmVy
bGF5VGV4dDo6fkltYWdlT3ZlcmxheVRleHQoKSA9IGRlZmF1bHQ7CiBJbnRlcm5hbHM6OkltYWdl
T3ZlcmxheUJsb2NrOjp+SW1hZ2VPdmVybGF5QmxvY2soKSA9IGRlZmF1bHQ7CitJbnRlcm5hbHM6
OkltYWdlT3ZlcmxheURhdGFEZXRlY3Rvcjo6fkltYWdlT3ZlcmxheURhdGFEZXRlY3RvcigpID0g
ZGVmYXVsdDsKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIApAQCAtNTc3Myw3ICs1Nzc1
LDcgQEAgc3RhdGljIFRleHRSZWNvZ25pdGlvbkxpbmVEYXRhIG1ha2VEYXRhRm9yTGluZShjb25z
dCBJbnRlcm5hbHM6OkltYWdlT3ZlcmxheUxpbmUKICAgICByZXR1cm4gewogICAgICAgICBnZXRR
dWFkPEludGVybmFsczo6SW1hZ2VPdmVybGF5TGluZT4obGluZSksCiAgICAgICAgIGxpbmUuY2hp
bGRyZW4ubWFwKFtdKGF1dG8mIHRleHRDaGlsZCkgLT4gVGV4dFJlY29nbml0aW9uV29yZERhdGEg
ewotICAgICAgICAgICAgcmV0dXJuIHsgdGV4dENoaWxkLnRleHQsIGdldFF1YWQ8SW50ZXJuYWxz
OjpJbWFnZU92ZXJsYXlUZXh0Pih0ZXh0Q2hpbGQpLCB0ZXh0Q2hpbGQuaGFzTGVhZGluZ1doaXRl
c3BhY2UgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHRleHRDaGlsZC50ZXh0LCBnZXRRdWFkKHRl
eHRDaGlsZCksIHRleHRDaGlsZC5oYXNMZWFkaW5nV2hpdGVzcGFjZSB9OwogICAgICAgICB9KSwK
ICAgICAgICAgbGluZS5oYXNUcmFpbGluZ05ld2xpbmUKICAgICB9OwpAQCAtNTgwMyw3ICs1ODA1
LDcgQEAgUmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6dGV4dFJlY29nbml0aW9uQ2FuZGlkYXRl
KCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAotdm9pZCBJbnRl
cm5hbHM6Omluc3RhbGxJbWFnZU92ZXJsYXkoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPEltYWdl
T3ZlcmxheUxpbmU+JiYgbGluZXMsIFZlY3RvcjxJbWFnZU92ZXJsYXlCbG9jaz4mJiBibG9ja3Mp
Cit2b2lkIEludGVybmFsczo6aW5zdGFsbEltYWdlT3ZlcmxheShFbGVtZW50JiBlbGVtZW50LCBW
ZWN0b3I8SW1hZ2VPdmVybGF5TGluZT4mJiBsaW5lcywgVmVjdG9yPEltYWdlT3ZlcmxheUJsb2Nr
PiYmIGJsb2NrcywgVmVjdG9yPEltYWdlT3ZlcmxheURhdGFEZXRlY3Rvcj4mJiBkYXRhRGV0ZWN0
b3JzKQogewogICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1
cm47CkBAIC01ODE0LDE4ICs1ODE2LDMwIEBAIHZvaWQgSW50ZXJuYWxzOjppbnN0YWxsSW1hZ2VP
dmVybGF5KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxJbWFnZU92ZXJsYXlMaW5lPiYmCiAgICAg
ICAgICAgICByZXR1cm4gbWFrZURhdGFGb3JMaW5lKGxpbmUpOwogICAgICAgICB9KQogI2lmIEVO
QUJMRShEQVRBX0RFVEVDVElPTikKLSAgICAgICAgLCBWZWN0b3I8VGV4dFJlY29nbml0aW9uRGF0
YURldGVjdG9yPigpCi0jZW5kaWYKKyAgICAgICAgLCBkYXRhRGV0ZWN0b3JzLm1hcChbXSAoYXV0
byYgZGF0YURldGVjdG9yKSAtPiBUZXh0UmVjb2duaXRpb25EYXRhRGV0ZWN0b3IgeworICAgICAg
ICAgICAgcmV0dXJuIFRleHRSZWNvZ25pdGlvbkRhdGFEZXRlY3RvciB7IGZha2VEYXRhRGV0ZWN0
b3JSZXN1bHRGb3JUZXN0aW5nKCksIHsgZ2V0UXVhZChkYXRhRGV0ZWN0b3IpIH0gfTsKKyAgICAg
ICAgfSkKKyNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAgICAgICAgICwgYmxvY2tz
Lm1hcChbXSAoYXV0byYgYmxvY2spIHsKLSAgICAgICAgICAgIHJldHVybiBUZXh0UmVjb2duaXRp
b25CbG9ja0RhdGEgeyBibG9jay50ZXh0LCBnZXRRdWFkPEltYWdlT3ZlcmxheUJsb2NrPihibG9j
aykgfTsKKyAgICAgICAgICAgIHJldHVybiBUZXh0UmVjb2duaXRpb25CbG9ja0RhdGEgeyBibG9j
ay50ZXh0LCBnZXRRdWFkKGJsb2NrKSB9OwogICAgICAgICB9KQogICAgIH0pOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oYmxvY2tzKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YURldGVjdG9ycyk7
CiAgICAgVU5VU0VEX1BBUkFNKGxpbmVzKTsKICNlbmRpZgogfQogCitib29sIEludGVybmFsczo6
aGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0KCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAgICBpZiAoYXV0byogY29u
dHJvbGxlciA9IGNvbnRleHREb2N1bWVudCgpLT5wYWdlKCktPmltYWdlT3ZlcmxheUNvbnRyb2xs
ZXJJZkV4aXN0cygpKQorICAgICAgICByZXR1cm4gY29udHJvbGxlci0+aGFzQWN0aXZlRGF0YURl
dGVjdG9ySGlnaGxpZ2h0Rm9yVGVzdGluZygpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBib29sIEludGVybmFsczo6aXNTeXN0ZW1QcmV2aWV3TGluayhFbGVtZW50JiBlbGVtZW50
KSBjb25zdAogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IDZhMzM4OGFmYjNlMGVmOTU3YzE4NGRiM2I5YzJlYTE0NGIxNTVhYzguLjMw
M2U0NzI1M2Y4MWI1ZDYyNjcxNDIwN2YzMDZhOWM4YTYwZGJjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1ZGUgIk1lZGlhVW5pcXVlSWRl
bnRpZmllci5oIgogI2VuZGlmCiAKK09CSkNfQ0xBU1MgRERTY2FubmVyUmVzdWx0OworCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFic3RyYWN0UmFuZ2U7CkBAIC05MzgsNyArOTQwLDE3
IEBAIHB1YmxpYzoKICAgICAgICAgfkltYWdlT3ZlcmxheUJsb2NrKCk7CiAgICAgfTsKIAotICAg
IHZvaWQgaW5zdGFsbEltYWdlT3ZlcmxheShFbGVtZW50JiwgVmVjdG9yPEltYWdlT3ZlcmxheUxp
bmU+JiYsIFZlY3RvcjxJbWFnZU92ZXJsYXlCbG9jaz4mJiA9IHsgfSk7CisgICAgc3RydWN0IElt
YWdlT3ZlcmxheURhdGFEZXRlY3RvciB7CisgICAgICAgIFJlZlB0cjxET01Qb2ludFJlYWRPbmx5
PiB0b3BMZWZ0OworICAgICAgICBSZWZQdHI8RE9NUG9pbnRSZWFkT25seT4gdG9wUmlnaHQ7Cisg
ICAgICAgIFJlZlB0cjxET01Qb2ludFJlYWRPbmx5PiBib3R0b21SaWdodDsKKyAgICAgICAgUmVm
UHRyPERPTVBvaW50UmVhZE9ubHk+IGJvdHRvbUxlZnQ7CisKKyAgICAgICAgfkltYWdlT3Zlcmxh
eURhdGFEZXRlY3RvcigpOworICAgIH07CisKKyAgICB2b2lkIGluc3RhbGxJbWFnZU92ZXJsYXko
RWxlbWVudCYsIFZlY3RvcjxJbWFnZU92ZXJsYXlMaW5lPiYmLCBWZWN0b3I8SW1hZ2VPdmVybGF5
QmxvY2s+JiYgPSB7IH0sIFZlY3RvcjxJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3I+JiYgPSB7IH0p
OworICAgIGJvb2wgaGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0KCkgY29uc3Q7CiAKICNp
ZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdm9pZCByZXF1ZXN0VGV4dFJlY29nbml0aW9u
KEVsZW1lbnQmLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKQEAgLTEyNTksNiArMTI3MSwxMCBA
QCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqPiBtYXJr
ZXJBdChOb2RlJiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCk7CiAg
ICAgRXhjZXB0aW9uT3I8U2Nyb2xsYWJsZUFyZWEqPiBzY3JvbGxhYmxlQXJlYUZvck5vZGUoTm9k
ZSopIGNvbnN0OwogCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgIHN0YXRpYyBERFNj
YW5uZXJSZXN1bHQgKmZha2VEYXRhRGV0ZWN0b3JSZXN1bHRGb3JUZXN0aW5nKCk7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
T2JzZXJ2ZXIgQVBJCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYs
IFZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCmluZGV4IDAyODJjMjllNzBhMzYzMDMwOTE3ZDU1OWVkNjViZDAxNDljODc2M2IuLmQ3MzFm
MmE1NzhjMGQzMjY0M2VhMGMxMTUyNmJlMzQ5NTI3YmIwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKQEAgLTMwNiw2ICszMDYsMTYgQEAgZW51bSBIRVZDUGFyYW1ldGVyQ29k
ZWMgewogICAgIHJlcXVpcmVkIERPTVBvaW50UmVhZE9ubHkgYm90dG9tTGVmdDsKIH07CiAKK1sK
KyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKKyAgICBKU0dlbmVy
YXRlVG9KU09iamVjdCwKK10gZGljdGlvbmFyeSBJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3Igewor
ICAgIHJlcXVpcmVkIERPTVBvaW50UmVhZE9ubHkgdG9wTGVmdDsKKyAgICByZXF1aXJlZCBET01Q
b2ludFJlYWRPbmx5IHRvcFJpZ2h0OworICAgIHJlcXVpcmVkIERPTVBvaW50UmVhZE9ubHkgYm90
dG9tUmlnaHQ7CisgICAgcmVxdWlyZWQgRE9NUG9pbnRSZWFkT25seSBib3R0b21MZWZ0OworfTsK
KwogdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0Owog
CiBbCkBAIC05NjcsNyArOTc3LDggQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVz
cG9uc2UpIEZldGNoT2JqZWN0OwogCiAgICAgW0NvbmRpdGlvbmFsPUlNQUdFX0FOQUxZU0lTXSBy
ZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudD8gdGV4dFJlY29nbml0aW9uQ2FuZGlkYXRlOwogICAg
IFtDb25kaXRpb25hbD1JTUFHRV9BTkFMWVNJU10gdW5kZWZpbmVkIHJlcXVlc3RUZXh0UmVjb2du
aXRpb24oRWxlbWVudCBlbGVtZW50LCBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOwotICAgIHVuZGVm
aW5lZCBpbnN0YWxsSW1hZ2VPdmVybGF5KEVsZW1lbnQgZWxlbWVudCwgc2VxdWVuY2U8SW1hZ2VP
dmVybGF5TGluZT4gbGluZXMsIG9wdGlvbmFsIHNlcXVlbmNlPEltYWdlT3ZlcmxheUJsb2NrPiBi
bG9ja3MgPSBbXSk7CisgICAgdW5kZWZpbmVkIGluc3RhbGxJbWFnZU92ZXJsYXkoRWxlbWVudCBl
bGVtZW50LCBzZXF1ZW5jZTxJbWFnZU92ZXJsYXlMaW5lPiBsaW5lcywgb3B0aW9uYWwgc2VxdWVu
Y2U8SW1hZ2VPdmVybGF5QmxvY2s+IGJsb2NrcyA9IFtdLCBvcHRpb25hbCBzZXF1ZW5jZTxJbWFn
ZU92ZXJsYXlEYXRhRGV0ZWN0b3I+IGRhdGFEZXRlY3RvcnMgPSBbXSk7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0OwogCiAgICAg
Ym9vbGVhbiB1c2luZ0FwcGxlSW50ZXJuYWxTREsoKTsKICAgICBib29sZWFuIHVzaW5nR1N0cmVh
bWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCmluZGV4IDQxNGUzZjUxYmIzMjQw
YWIwYzU0NDMzZDcxNjRmMTkyYmYwMTcwYjYuLjBiN2UzODU5ODI2NmJlYWEyODY0ZDM4ODA5N2Q5
Y2U3OWUwZGNkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCkBAIC00Miw2ICs0
Miw3IEBACiAjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgogI2VuZGlmCiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9zcGkv
ZGFyd2luL1NhbmRib3hTUEkuaD4KIApAQCAtNDksNyArNTAsOSBAQAogI2ltcG9ydCA8cGFsL2lv
cy9VSUtpdFNvZnRMaW5rLmg+CiAjZW5kaWYKIAotCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9O
KQorI2ltcG9ydCA8cGFsL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaD4KKyNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3Miw0ICsxNzUsMjYgQEAgYm9vbCBJbnRl
cm5hbHM6OnBsYXRmb3JtU3VwcG9ydHNNZXRhbChib29sIGlzV2ViR0wyKQogfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKK0REU2Nhbm5lclJlc3VsdCAqSW50ZXJuYWxz
OjpmYWtlRGF0YURldGVjdG9yUmVzdWx0Rm9yVGVzdGluZygpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIHJlc3VsdCA9IChbXSgpIC0+IFJldGFpblB0cjxERFNjYW5uZXJSZXN1bHQ+IHsK
KyAgICAgICAgYXV0byBzY2FubmVyID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNDb3JlX0REU2Nhbm5lckNyZWF0ZShERFNjYW5uZXJUeXBlU3RhbmRhcmQsIDAsIG51bGxwdHIp
KTsKKyAgICAgICAgYXV0byBzdHJpbmdUb1NjYW4gPSBDRlNUUigid2Via2l0Lm9yZyIpOworICAg
ICAgICBhdXRvIHF1ZXJ5ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3Jl
X0REU2NhblF1ZXJ5Q3JlYXRlRnJvbVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmdU
b1NjYW4sIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZ1RvU2NhbikpKSk7
CisgICAgICAgIGlmICghUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5uZXJT
Y2FuUXVlcnkoc2Nhbm5lci5nZXQoKSwgcXVlcnkuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgICAgICBhdXRvIHJlc3VsdHMgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0
YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ29weVJlc3VsdHNXaXRoT3B0aW9ucyhzY2FubmVyLmdl
dCgpLCBERFNjYW5uZXJDb3B5UmVzdWx0c09wdGlvbnNOb092ZXJsYXApKTsKKyAgICAgICAgaWYg
KCFDRkFycmF5R2V0Q291bnQocmVzdWx0cy5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4geyB9
OworCisgICAgICAgIHJldHVybiB7IFtbUEFMOjpnZXRERFNjYW5uZXJSZXN1bHRDbGFzcygpIHJl
c3VsdHNGcm9tQ29yZVJlc3VsdHM6cmVzdWx0cy5nZXQoKV0gZmlyc3RPYmplY3RdIH07CisgICAg
fSkoKTsKKyAgICByZXR1cm4gcmVzdWx0LT5nZXQoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShE
QVRBX0RFVEVDVElPTikKKwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNkZGZjYTg3MDVjNjk5YzI4OGU0MGFlN2RmMWRh
MDI2NjBlNzk2NzEuLjM4NmFmOGRiZjMxM2VjMWVkZWJkZjA0NzAwZjg0YzllMzcyODU2NDIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMi0wMS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBEYXRhIGRldGVjdG9ycyBzb21ldGltZXMgc2hvdyB1
cCBpbiB0aGUgd3JvbmcgcGxhY2Ugd2hlbiByZXNpemluZyBpbWFnZXMgd2l0aCBMaXZlIFRleHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTU5OAor
ICAgICAgICByZGFyOi8vODgwMzIzNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byBleGVyY2lzZSAoc29tZSkgb2Yg
dGhlIGNoYW5nZXMuIFRoaXMgbmV3IGxheW91dCB0ZXN0IGNvbnNpc3RzIG9mIDQgc3RlcHM6Cisg
ICAgICAgIDEuICBIb3ZlciBvdmVyIGEgZGF0YSBkZXRlY3RvciBpbiBMaXZlIFRleHQgYW5kIGNv
bmZpcm0gdGhhdCBhIGRhdGEgZGV0ZWN0b3IgaGlnaGxpZ2h0IGlzIGFjdGl2YXRlZC4KKyAgICAg
ICAgMi4gIFJlc2l6ZSB0aGUgaW1hZ2UgKHZpYSBzY3JpcHQpIHN1Y2ggdGhhdCB0aGUgY3Vyc29y
IGlzIG5vIGxvbmdlciBvdmVyIGEgZGF0YSBkZXRlY3RvcjsgY29uZmlybSB0aGF0IHRoZSBkYXRh
CisgICAgICAgICAgICBkZXRlY3RvciBoaWdobGlnaHQgaXMgY2xlYXJlZC4KKyAgICAgICAgMy4g
IE1vdmUgb3ZlciB0aGUgZGF0YSBkZXRlY3RvciBoaWdobGlnaHQgaW4gdGhlIHJlc2l6ZWQgaW1h
Z2UsIGFuZCBjb25maXJtIHRoYXQgdGhlIGhpZ2hsaWdodCBpcyBvbmNlIGFnYWluCisgICAgICAg
ICAgICBhY3RpdmF0ZWQuCisgICAgICAgIDQuICBNb3ZlIG91dCBvZiB0aGUgaW1hZ2UgYWx0b2dl
dGhlciBhbmQgY29uZmlybSB0aGF0IHRoZSBoaWdobGlnaHQgaXMgZGVhY3RpdmF0ZWQuCisKKyAg
ICAgICAgKiBmYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL21hYy9pbWFnZS1vdmVybGF5LWRh
dGEtZGV0ZWN0b3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMv
dGV4dC1yZWNvZ25pdGlvbi9tYWMvaW1hZ2Utb3ZlcmxheS1kYXRhLWRldGVjdG9ycy5odG1sOiBB
ZGRlZC4KKwogMjAyMi0wMS0yMiAgT3Jpb2wgQnJ1ZmF1ICA8b2JydWZhdUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtDU1MgQ2FzY2FkZSBMYXllcnNdIEVuYWJsZSBDU1NJbXBvcnRSdWxlLmxheWVy
TmFtZSBmb3IgV2ViS2l0R1RLCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90
ZXh0LXJlY29nbml0aW9uL21hYy9pbWFnZS1vdmVybGF5LWRhdGEtZGV0ZWN0b3JzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vbWFjL2ltYWdl
LW92ZXJsYXktZGF0YS1kZXRlY3RvcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkYzIxMzRj
ZjMyODg4OGNkZjdhMzNlZGJlYzhhNWJlMjNhNWM5MDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL21hYy9pbWFnZS1vdmVybGF5LWRh
dGEtZGV0ZWN0b3JzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitQQVNTIGludGVybmFs
cy5oYXNBY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQgYmVjYW1lIHRydWUKK1BBU1Mgb2JzZXJ2
ZWQgYWN0aXZlIGRhdGEgZGV0ZWN0b3IgaGlnaGxpZ2h0CitQQVNTIGludGVybmFscy5oYXNBY3Rp
dmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQgYmVjYW1lIGZhbHNlCitQQVNTIGNsZWFyZWQgYWN0aXZl
IGRhdGEgZGV0ZWN0b3IgaGlnaGxpZ2h0CitQQVNTIGludGVybmFscy5oYXNBY3RpdmVEYXRhRGV0
ZWN0b3JIaWdobGlnaHQgYmVjYW1lIHRydWUKK1BBU1Mgb2JzZXJ2ZWQgYWN0aXZlIGRhdGEgZGV0
ZWN0b3IgaGlnaGxpZ2h0IChhZ2FpbikKK1BBU1MgaW50ZXJuYWxzLmhhc0FjdGl2ZURhdGFEZXRl
Y3RvckhpZ2hsaWdodCBiZWNhbWUgZmFsc2UKK1BBU1MgY2xlYXJlZCBhY3RpdmUgZGF0YSBkZXRl
Y3RvciBoaWdobGlnaHQgKGFnYWluKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Rl
eHQtcmVjb2duaXRpb24vbWFjL2ltYWdlLW92ZXJsYXktZGF0YS1kZXRlY3RvcnMuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vbWFjL2ltYWdlLW92ZXJsYXkt
ZGF0YS1kZXRlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmM2OTg5MDBhZjdhMDdhZDIzNmYzMDlh
NWQ3ODFkOGQ3NzdhMTk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvdGV4dC1yZWNvZ25pdGlvbi9tYWMvaW1hZ2Utb3ZlcmxheS1kYXRhLWRldGVjdG9ycy5odG1s
CkBAIC0wLDAgKzEsNzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICBtYXJnaW46IDA7Cit9CisKK2ltZyB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIHdpZHRoOiAx
MDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PGltZyBzcmM9Ii4uLy4uL3Jlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI+PC9pbWc+Cis8c2Ny
aXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBh
c3luYyAoKSA9PiB7CisgICAgaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsK
KworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDQwMCwgNDAwKTsKKyAgICBpbnRlcm5hbHMu
aW5zdGFsbEltYWdlT3ZlcmxheShpbWFnZSwgWworICAgICAgICB7CisgICAgICAgICAgICB0b3BM
ZWZ0IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMCwgMC41KSwKKyAgICAgICAgICAgIHRvcFJpZ2h0
IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMSwgMC41KSwKKyAgICAgICAgICAgIGJvdHRvbVJpZ2h0
IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMSwgMSksCisgICAgICAgICAgICBib3R0b21MZWZ0IDog
bmV3IERPTVBvaW50UmVhZE9ubHkoMCwgMSksCisgICAgICAgICAgICBjaGlsZHJlbjogW3sKKyAg
ICAgICAgICAgICAgICB0ZXh0IDogIndlYmtpdC5vcmciLAorICAgICAgICAgICAgICAgIHRvcExl
ZnQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgwLCAwLjUpLAorICAgICAgICAgICAgICAgIHRvcFJp
Z2h0IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMSwgMC41KSwKKyAgICAgICAgICAgICAgICBib3R0
b21SaWdodCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDEsIDEpLAorICAgICAgICAgICAgICAgIGJv
dHRvbUxlZnQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgwLCAxKSwKKyAgICAgICAgICAgIH1dLAor
ICAgICAgICB9CisgICAgXSwgW10sIFsKKyAgICAgICAgeworICAgICAgICAgICAgdG9wTGVmdCA6
IG5ldyBET01Qb2ludFJlYWRPbmx5KDAsIDAuNSksCisgICAgICAgICAgICB0b3BSaWdodCA6IG5l
dyBET01Qb2ludFJlYWRPbmx5KDEsIDAuNSksCisgICAgICAgICAgICBib3R0b21SaWdodCA6IG5l
dyBET01Qb2ludFJlYWRPbmx5KDEsIDEpLAorICAgICAgICAgICAgYm90dG9tTGVmdCA6IG5ldyBE
T01Qb2ludFJlYWRPbmx5KDAsIDEpLAorICAgICAgICB9CisgICAgXSk7CisKKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyg0OSwgNzQpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUw
LCA3NSk7CisgICAgYXdhaXQgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5oYXNBY3RpdmVE
YXRhRGV0ZWN0b3JIaWdobGlnaHQiLCAidHJ1ZSIpOworICAgIHRlc3RQYXNzZWQoIm9ic2VydmVk
IGFjdGl2ZSBkYXRhIGRldGVjdG9yIGhpZ2hsaWdodCIpOworCisgICAgaW1hZ2Uuc3R5bGUud2lk
dGggPSAiNDAwcHgiOworICAgIGltYWdlLnN0eWxlLmhlaWdodCA9ICI0MDBweCI7CisKKyAgICBh
d2FpdCBzaG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLmhhc0FjdGl2ZURhdGFEZXRlY3Rvckhp
Z2hsaWdodCIsICJmYWxzZSIpOworICAgIHRlc3RQYXNzZWQoImNsZWFyZWQgYWN0aXZlIGRhdGEg
ZGV0ZWN0b3IgaGlnaGxpZ2h0Iik7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxOTks
IDI5OSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjAwLCAzMDApOworICAgIGF3YWl0
IHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaGFzQWN0aXZlRGF0YURldGVjdG9ySGlnaGxp
Z2h0IiwgInRydWUiKTsKKyAgICB0ZXN0UGFzc2VkKCJvYnNlcnZlZCBhY3RpdmUgZGF0YSBkZXRl
Y3RvciBoaWdobGlnaHQgKGFnYWluKSIpOworCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
MjAwLCA1MTApOworICAgIGF3YWl0IHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMuaGFzQWN0
aXZlRGF0YURldGVjdG9ySGlnaGxpZ2h0IiwgImZhbHNlIik7CisgICAgdGVzdFBhc3NlZCgiY2xl
YXJlZCBhY3RpdmUgZGF0YSBkZXRlY3RvciBoaWdobGlnaHQgKGFnYWluKSIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450041</attachid>
            <date>2022-01-26 11:21:10 -0800</date>
            <delta_ts>2022-01-26 16:17:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235598-20220126112109.patch</filename>
            <type>text/plain</type>
            <size>4552</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY3NmNjYWExYjUzNDIw
YWQ5MDQyMzkzZWM2NjI5MjlmZjc5OTA1MC4uY2NkYjhjY2QxZWU3NzAyZDU0NzdhYmRhOTYyMTdi
YzQ1MDAyNWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc29tZSBt
aW5vciBhZGp1c3RtZW50cyBhZnRlciByMjg4NjIxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1OTgKKyAgICAgICAgcmRhcjovLzg4MDMyMzc1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcmVzcyBz
b21lIHBvc3QtY29tbWl0IHJldmlldyBjb21tZW50cy4KKworICAgICAgICAqIGRvbS9JbWFnZU92
ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojp1cGRhdGVTdWJ0cmVl
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6Omluc3RhbGxJbWFnZU92ZXJsYXkpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmYWtlRGF0YURldGVjdG9yUmVz
dWx0Rm9yVGVzdGluZyk6CisKIDIwMjItMDEtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgRGF0YSBkZXRlY3RvcnMgc29tZXRpbWVzIHNob3cgdXAg
aW4gdGhlIHdyb25nIHBsYWNlIHdoZW4gcmVzaXppbmcgaW1hZ2VzIHdpdGggTGl2ZSBUZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCmluZGV4IDY5ZDMwYWYxZmEzOTE0YzFiYzM3YTM1
NDAzNzkyYTYwYTQzYjRmZWEuLjNkNDBlYWZhN2Y1NDBhMjA1OGRjMDAwZmYzMzg1OTdhMmE5ODQw
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwCkBAIC0yMTIsMTMgKzIxMiwxMyBA
QCBzdGF0aWMgRWxlbWVudHMgdXBkYXRlU3VidHJlZShIVE1MRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JgogICAgIG1lZGlhQ29udHJvbHNDb250YWluZXIgPSAo
WyZdKCkgLT4gUmVmUHRyPEhUTUxFbGVtZW50PiB7CiAgICAgICAgIFJlZlB0ciBtZWRpYUVsZW1l
bnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTE1lZGlhRWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAg
IGlmICghbWVkaWFFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgICAgIFJlZiBzaGFkb3dSb290ID0gbWVkaWFFbGVtZW50
LT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgICAgIFJlZlB0ciBjb250cm9sc0hv
c3QgPSBtZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCk7CiAgICAgICAgIGlmICghY29u
dHJvbHNIb3N0KSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQog
CiAgICAgICAgIGF1dG8mIGNvbnRhaW5lckNsYXNzID0gY29udHJvbHNIb3N0LT5tZWRpYUNvbnRy
b2xzQ29udGFpbmVyQ2xhc3NOYW1lKCk7CkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIEVsZW1l
bnRzIHVwZGF0ZVN1YnRyZWUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFRleHRSZWNvZ25p
dGlvblJlc3VsdCYKICAgICAgICAgICAgICAgICByZXR1cm4gJmNoaWxkOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9KSgpOwogI2VuZGlmIC8vIEVOQUJMRShNT0RFUk5fTUVE
SUFfQ09OVFJPTFMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA3YzY5
ZGIzYmE2MWZlZWY4N2ZkM2ZkYWQ2NDdjYmNmMDg5MDc3MzM4Li4xY2Q2MDI4NzQ3NmQ3NjhlOGYw
MDNjZDEyODk5MWVmM2IyNGE3MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC01ODE2LDggKzU4MTYsOCBAQCB2b2lkIEludGVybmFsczo6aW5zdGFsbEltYWdlT3Zlcmxh
eShFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8SW1hZ2VPdmVybGF5TGluZT4mJgogICAgICAgICAg
ICAgcmV0dXJuIG1ha2VEYXRhRm9yTGluZShsaW5lKTsKICAgICAgICAgfSkKICNpZiBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pCi0gICAgICAgICwgZGF0YURldGVjdG9ycy5tYXAoW10gKGF1dG8mIGRh
dGFEZXRlY3RvcikgLT4gVGV4dFJlY29nbml0aW9uRGF0YURldGVjdG9yIHsKLSAgICAgICAgICAg
IHJldHVybiBUZXh0UmVjb2duaXRpb25EYXRhRGV0ZWN0b3IgeyBmYWtlRGF0YURldGVjdG9yUmVz
dWx0Rm9yVGVzdGluZygpLCB7IGdldFF1YWQoZGF0YURldGVjdG9yKSB9IH07CisgICAgICAgICwg
ZGF0YURldGVjdG9ycy5tYXAoW10oYXV0byYgZGF0YURldGVjdG9yKSAtPiBUZXh0UmVjb2duaXRp
b25EYXRhRGV0ZWN0b3IgeworICAgICAgICAgICAgcmV0dXJuIHsgZmFrZURhdGFEZXRlY3RvclJl
c3VsdEZvclRlc3RpbmcoKSwgeyBnZXRRdWFkKGRhdGFEZXRlY3RvcikgfSB9OwogICAgICAgICB9
KQogI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICAgICAgLCBibG9ja3MubWFw
KFtdIChhdXRvJiBibG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMubW0gYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQppbmRleCAw
YjdlMzg1OTgyNjZiZWFhMjg2NGQzODgwOTdkOWNlNzllMGRjZDI1Li40OTJmMTZmNWIzYmQxNGZl
MWQwMDZlZTUxMmE4NTU0YWQyNjBlMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5t
bQpAQCAtMTc5LDE5ICsxNzksMTkgQEAgYm9vbCBJbnRlcm5hbHM6OnBsYXRmb3JtU3VwcG9ydHNN
ZXRhbChib29sIGlzV2ViR0wyKQogCiBERFNjYW5uZXJSZXN1bHQgKkludGVybmFsczo6ZmFrZURh
dGFEZXRlY3RvclJlc3VsdEZvclRlc3RpbmcoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZCByZXN1bHQgPSAoW10oKSAtPiBSZXRhaW5QdHI8RERTY2FubmVyUmVzdWx0PiB7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIHJlc3VsdCA9IFtdKCkgLT4gUmV0YWluUHRyPEREU2Nhbm5lclJl
c3VsdD4gewogICAgICAgICBhdXRvIHNjYW5uZXIgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0
YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nhbm5lclR5cGVTdGFuZGFyZCwgMCwg
bnVsbHB0cikpOwogICAgICAgICBhdXRvIHN0cmluZ1RvU2NhbiA9IENGU1RSKCJ3ZWJraXQub3Jn
Iik7CiAgICAgICAgIGF1dG8gcXVlcnkgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVj
dG9yc0NvcmVfRERTY2FuUXVlcnlDcmVhdGVGcm9tU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHN0cmluZ1RvU2NhbiwgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nVG9T
Y2FuKSkpKTsKICAgICAgICAgaWYgKCFQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0RE
U2Nhbm5lclNjYW5RdWVyeShzY2FubmVyLmdldCgpLCBxdWVyeS5nZXQoKSkpCi0gICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIHJl
c3VsdHMgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVy
Q29weVJlc3VsdHNXaXRoT3B0aW9ucyhzY2FubmVyLmdldCgpLCBERFNjYW5uZXJDb3B5UmVzdWx0
c09wdGlvbnNOb092ZXJsYXApKTsKICAgICAgICAgaWYgKCFDRkFycmF5R2V0Q291bnQocmVzdWx0
cy5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgcmV0dXJuIG5p
bDsKIAogICAgICAgICByZXR1cm4geyBbW1BBTDo6Z2V0RERTY2FubmVyUmVzdWx0Q2xhc3MoKSBy
ZXN1bHRzRnJvbUNvcmVSZXN1bHRzOnJlc3VsdHMuZ2V0KCldIGZpcnN0T2JqZWN0XSB9OwotICAg
IH0pKCk7CisgICAgfSgpOwogICAgIHJldHVybiByZXN1bHQtPmdldCgpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>