<?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>239712</bug_id>
          
          <creation_ts>2022-04-24 14:56:16 -0700</creation_ts>
          <short_desc>[macOS] Only show a context menu action to &quot;Copy Cropped Image&quot; when appropriate</short_desc>
          <delta_ts>2022-04-25 15:25:32 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>darin</cc>
    
    <cc>hi</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1863996</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-24 14:56:16 -0700</bug_when>
    <thetext>rdar://92239384</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864101</commentid>
    <comment_count>1</comment_count>
      <attachid>458271</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-25 08:25:22 -0700</bug_when>
    <thetext>Created attachment 458271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864116</commentid>
    <comment_count>2</comment_count>
      <attachid>458271</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-25 09:08:44 -0700</bug_when>
    <thetext>Comment on attachment 458271
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1194
&gt;  #if ENABLE(CONTEXT_MENUS)
&gt;      m_activeContextMenu = nullptr;
&gt; -#endif
&gt; +#if ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
&gt; +    m_croppedImageForContextMenu = nullptr;
&gt; +#endif // ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
&gt; +#endif // ENABLE(CONTEXT_MENUS)

I find &amp;&amp; works much better than nesting for #if since we don’t indent. Even when it’s right next to another block. Also, #endif comments are so heavy for short sequences. So I would have written:

    #if ENABLE(CONTEXT_MENUS)
        m_activeContextMenu = nullptr;
    #endif

    #if ENABLE(CONTEXT_MENUS) &amp;&amp; ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
        m_croppedImageForContextMenu = nullptr
    #endif

Even if, below, we use nesting instead of &amp;&amp;. Not sure about the order, I noticed elsewhere you used the reverse order.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2800
&gt;  #if ENABLE(CONTEXT_MENUS)
&gt;      RefPtr&lt;WebContextMenuProxy&gt; m_activeContextMenu;
&gt;      ContextMenuContextData m_activeContextMenuContextData;
&gt; -#endif
&gt; +#if ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
&gt; +    RetainPtr&lt;CGImageRef&gt; m_croppedImageForContextMenu;
&gt; +#endif // ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
&gt; +#endif // ENABLE(CONTEXT_MENUS)

Same here as above:

    #if ENABLE(CONTEXT_MENUS)
        RefPtr&lt;WebContextMenuProxy&gt; m_activeContextMenu;
        ContextMenuContextData m_activeContextMenuContextData;
    #endif

    #if ENABLE(CONTEXT_MENUS) &amp;&amp; ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
        RetainPtr&lt;CGImageRef&gt; m_croppedImageForContextMenu;
    #endif

&gt; Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:609
&gt; +        auto action = item.action();

Maybe a switch here instead of two if statements? I like how that eliminates the local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864122</commentid>
    <comment_count>3</comment_count>
      <attachid>458271</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-25 09:29:11 -0700</bug_when>
    <thetext>Comment on attachment 458271
Patch

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

Thanks for the review!

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1194
&gt;&gt; +#endif // ENABLE(CONTEXT_MENUS)
&gt; 
&gt; I find &amp;&amp; works much better than nesting for #if since we don’t indent. Even when it’s right next to another block. Also, #endif comments are so heavy for short sequences. So I would have written:
&gt; 
&gt;     #if ENABLE(CONTEXT_MENUS)
&gt;         m_activeContextMenu = nullptr;
&gt;     #endif
&gt; 
&gt;     #if ENABLE(CONTEXT_MENUS) &amp;&amp; ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
&gt;         m_croppedImageForContextMenu = nullptr
&gt;     #endif
&gt; 
&gt; Even if, below, we use nesting instead of &amp;&amp;. Not sure about the order, I noticed elsewhere you used the reverse order.

Sounds good! Changed to use `ENABLE(CONTEXT_MENUS) &amp;&amp; ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)` here.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2800
&gt;&gt; +#endif // ENABLE(CONTEXT_MENUS)
&gt; 
&gt; Same here as above:
&gt; 
&gt;     #if ENABLE(CONTEXT_MENUS)
&gt;         RefPtr&lt;WebContextMenuProxy&gt; m_activeContextMenu;
&gt;         ContextMenuContextData m_activeContextMenuContextData;
&gt;     #endif
&gt; 
&gt;     #if ENABLE(CONTEXT_MENUS) &amp;&amp; ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
&gt;         RetainPtr&lt;CGImageRef&gt; m_croppedImageForContextMenu;
&gt;     #endif

👍🏻

&gt;&gt; Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:609
&gt;&gt; +        auto action = item.action();
&gt; 
&gt; Maybe a switch here instead of two if statements? I like how that eliminates the local variable.

Makes sense — changed to use a switch case here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864135</commentid>
    <comment_count>4</comment_count>
      <attachid>458280</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-25 09:53:24 -0700</bug_when>
    <thetext>Created attachment 458280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864136</commentid>
    <comment_count>5</comment_count>
      <attachid>458281</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-25 10:00:43 -0700</bug_when>
    <thetext>Created attachment 458281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864198</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-25 13:01:32 -0700</bug_when>
    <thetext>Committed r293340 (249961@main): &lt;https://commits.webkit.org/249961@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458281.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864243</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-25 15:01:25 -0700</bug_when>
    <thetext>Oops, this broke the macOS Montery builds for me:

/Users/nzimmermann/Software/GitRepositories/WebKitVanilla/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:661:27: error: no member named &apos;setCroppedImageForContextMenu&apos; in
      &apos;WebKit::WebPageProxy&apos;
                    page-&gt;setCroppedImageForContextMenu(nullptr);
                    ~~~~~~^
/Users/nzimmermann/Software/GitRepositories/WebKitVanilla/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:670:31: error: no member named &apos;setCroppedImageForContextMenu&apos; in
      &apos;WebKit::WebPageProxy&apos;
                        page-&gt;setCroppedImageForContextMenu(result);
                        ~~~~~~^
/Users/nzimmermann/Software/GitRepositories/WebKitVanilla/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:662:21: error: use of undeclared identifier
      &apos;requestImageAnalysisMarkup&apos;
                    requestImageAnalysisMarkup(image.get(), [weakPage, protectedThis, copyCroppedImageItem = WTFMove(*copyCroppedImageItem)](auto result, auto) {
                    ^
3 errors generated.
...

Th relevant code section is only guarded by &quot;#if ENABLE(IMAGE_ANALYSIS)&quot; - I guess you meant to test &apos;IMAGE_ANALYSIS_ENHANCEMENTS&apos; instead?

#if ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS) 
void WebPageProxy::setCroppedImageForContextMenu(CGImageRef image)
{
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864245</commentid>
    <comment_count>8</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-25 15:02:25 -0700</bug_when>
    <thetext>(In reply to Nikolas Zimmermann from comment #7)
&gt; Oops, this broke the macOS Montery builds for me:
&gt; 
&gt; /Users/nzimmermann/Software/GitRepositories/WebKitVanilla/Source/WebKit/
&gt; UIProcess/mac/WebContextMenuProxyMac.mm:661:27: error: no member named
&gt; &apos;setCroppedImageForContextMenu&apos; in
&gt;       &apos;WebKit::WebPageProxy&apos;
&gt;                     page-&gt;setCroppedImageForContextMenu(nullptr);
&gt;                     ~~~~~~^
&gt; /Users/nzimmermann/Software/GitRepositories/WebKitVanilla/Source/WebKit/
&gt; UIProcess/mac/WebContextMenuProxyMac.mm:670:31: error: no member named
&gt; &apos;setCroppedImageForContextMenu&apos; in
&gt;       &apos;WebKit::WebPageProxy&apos;
&gt;                         page-&gt;setCroppedImageForContextMenu(result);
&gt;                         ~~~~~~^
&gt; /Users/nzimmermann/Software/GitRepositories/WebKitVanilla/Source/WebKit/
&gt; UIProcess/mac/WebContextMenuProxyMac.mm:662:21: error: use of undeclared
&gt; identifier
&gt;       &apos;requestImageAnalysisMarkup&apos;
&gt;                     requestImageAnalysisMarkup(image.get(), [weakPage,
&gt; protectedThis, copyCroppedImageItem = WTFMove(*copyCroppedImageItem)](auto
&gt; result, auto) {
&gt;                     ^
&gt; 3 errors generated.
&gt; ...
&gt; 
&gt; Th relevant code section is only guarded by &quot;#if ENABLE(IMAGE_ANALYSIS)&quot; - I
&gt; guess you meant to test &apos;IMAGE_ANALYSIS_ENHANCEMENTS&apos; instead?
&gt; 
&gt; #if ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS) 
&gt; void WebPageProxy::setCroppedImageForContextMenu(CGImageRef image)
&gt; {
&gt; ...

Sorry about that — I&apos;m landing a fix for that momentarily!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864247</commentid>
    <comment_count>9</comment_count>
      <attachid>458281</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-25 15:11:23 -0700</bug_when>
    <thetext>Comment on attachment 458281
Patch

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

&gt; Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:659
&gt; +            if (copyCroppedImageItem) {

The whole if body needs to be guarded by #if ENABLE(IMAGE_ANALYSIS_ENHANCMENTS) -- not sure why EWS is not affected - I&apos;m using &apos;vanilla&apos; build options macOS Monterey debug / release builds.
Otherwise setCroppedImageForContextMenu() is undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864248</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-25 15:11:56 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #8) 
&gt; Sorry about that — I&apos;m landing a fix for that momentarily!

No worries, thanks for the prompt fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864250</commentid>
    <comment_count>11</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-25 15:13:23 -0700</bug_when>
    <thetext>(In reply to Nikolas Zimmermann from comment #9)
&gt; Comment on attachment 458281 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458281&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:659
&gt; &gt; +            if (copyCroppedImageItem) {
&gt; 
&gt; The whole if body needs to be guarded by #if
&gt; ENABLE(IMAGE_ANALYSIS_ENHANCMENTS) -- not sure why EWS is not affected - I&apos;m
&gt; using &apos;vanilla&apos; build options macOS Monterey debug / release builds.
&gt; Otherwise setCroppedImageForContextMenu() is undefined.

Indeed — I&apos;m changing it to this:

```
#if ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)

if (copyCroppedImageItem) {
    …
}

#else

UNUSED_PARAM(copyCroppedImageItem);

#endif
```

EWS didn&apos;t catch this, because the EWS bots are only on Big Sur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864256</commentid>
    <comment_count>12</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-04-25 15:25:32 -0700</bug_when>
    <thetext>Committed r293363: &lt;https://commits.webkit.org/r293363&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458271</attachid>
            <date>2022-04-25 08:25:22 -0700</date>
            <delta_ts>2022-04-25 09:08:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239712-20220425082521.patch</filename>
            <type>text/plain</type>
            <size>11773</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIyYjRkYTE2NTc5MTI1Zjc5
OWZkMjcwMzVmZTE0ODZlNTk3MDdkMjEuLjVhODUxMDk2NzM0YTZjMmZiM2IzNGVlNDEwZWJiNTZm
MTkyMDNkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDQtMjQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBPbmx5IHNo
b3cgYSBjb250ZXh0IG1lbnUgYWN0aW9uIHRvICJDb3B5IENyb3BwZWQgSW1hZ2UiIHdoZW4gYXBw
cm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTcxMgorICAgICAgICByZGFyOi8vOTIyMzkzODQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgZ2F0aW5nIGZvciB0aGUgIkNvcHkg
Q3JvcHBlZCBJbWFnZSIgY29udGV4dCBtZW51IGl0ZW0uIFRoaXMgaXMgc2ltaWxhciB0byB0aGUg
Y3VycmVudCBnYXRpbmcgbWVjaGFuaXNtCisgICAgICAgIHVzZWQgZm9yIHZpc3VhbCBsb29rIHVw
LCB3aGVyZWluIHRoZSBMb29rIFVwIG1lbnUgaXRlbSBpcyBhc3luY2hyb25vdXNseSBhcHBlbmRl
ZCB0byB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIEluIHRoaXMgY2FzZSwgd2Ugb25seSBh
cHBlbmQgdGhlICJDb3B5IENyb3BwZWQgSW1hZ2UiIG1lbnUgaXRlbSBpbiB0aGUgY2FzZSB3aGVy
ZSBgcmVxdWVzdEltYWdlQW5hbHlzaXNNYXJrdXBgCisgICAgICAgIGNvbXBsZXRlcyB3aXRoIGEg
bm9uLW51bGwgcmVzdWx0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKworICAgICAgICBDYWNoZSB0aGUgaW1hZ2UgYW5hbHlzaXMgcmVzdWx0
cyBmb3IgIkNvcHkgQ3JvcHBlZCBJbWFnZSIgaW4gYSBtZW1iZXIgdmFyaWFibGUsIGBtX2Nyb3Bw
ZWRJbWFnZUZvckNvbnRleHRNZW51YC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94
eU1hYzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENy
b3BwZWRJbWFnZUZvckNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpoYW5kbGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UpOgorCiAyMDIyLTA0LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXZlbnQgaW5s
aW5lIHRleHQgc2VsZWN0aW9uIGluIGltYWdlcyB3aGVuIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVS
TkFMUykgaXMgc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAyZWY5MDBkZjhlMDY4YjI2OGE4OWJkNGM0MDJmMzY0YjI0MzQxNjA0Li45MzBhZDBhNGU5NDA1
NjU5MDZmMDIxZmYyMWM5MjdlNGI3YThlMWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTExODgsNyArMTE4OCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2xvc2UoKQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgbV9hY3RpdmVDb250ZXh0
TWVudSA9IG51bGxwdHI7Ci0jZW5kaWYKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5D
RU1FTlRTKQorICAgIG1fY3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnUgPSBudWxscHRyOworI2Vu
ZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisjZW5kaWYgLy8gRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAKICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CiAK
QEAgLTcwODMsNiArNzA4NiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51
KENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0TWVudUNvbnRleHREYQogICAgIC8vIE1v
dXNlRG93biBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGlzIFNob3dDb250ZXh0TWVudSBtZXNzYWdl
LiBUaGlzIGNhbiBoYXBwZW4gaWYgd2UgdGFrZSB0b28gbG9uZyB0byBlbnRlciB0aGUgbmVzdGVk
IHJ1bmxvb3AuCiAgICAgZGlzY2FyZFF1ZXVlZE1vdXNlRXZlbnRzKCk7CiAKKyNpZiBFTkFCTEUo
SU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIG1fY3JvcHBlZEltYWdlRm9yQ29udGV4
dE1lbnUgPSBudWxscHRyOworI2VuZGlmCisKICAgICBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4
dERhdGEgPSBjb250ZXh0TWVudUNvbnRleHREYXRhOwogCiAgICAgbV9hY3RpdmVDb250ZXh0TWVu
dSA9IHBhZ2VDbGllbnQoKS5jcmVhdGVDb250ZXh0TWVudVByb3h5KCp0aGlzLCBXVEZNb3ZlKGNv
bnRleHRNZW51Q29udGV4dERhdGEpLCB1c2VyRGF0YSk7CkBAIC03MjEzLDggKzcyMjAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4
dE1lbnVJdGVtRGF0YSYgaXRlbSkKIAogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUNy
b3BwZWRJbWFnZToKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQotICAg
ICAgICBpZiAoaGl0VGVzdERhdGEuaW1hZ2VCaXRtYXApCi0gICAgICAgICAgICBoYW5kbGVDb250
ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UoKmhpdFRlc3REYXRhLmltYWdlQml0bWFwLCBoaXRUZXN0
RGF0YS5zb3VyY2VJbWFnZU1JTUVUeXBlKTsKKyAgICAgICAgaGFuZGxlQ29udGV4dE1lbnVDb3B5
Q3JvcHBlZEltYWdlKGhpdFRlc3REYXRhLnNvdXJjZUltYWdlTUlNRVR5cGUpOwogI2VuZGlmCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBkM2FkNGYwMzNlMjE5ZTc1MTBjNjY0ZWRlYjcyNDZlZDQ3ODE2NzgxLi5kMjI1ZDQ4OGM4MGQ5
NDMwYTIzOGUxNDRiMjFjYTgwZTIzNDE3MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMjAzNSw3ICsyMDM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxl
Q29udGV4dE1lbnVMb29rVXBJbWFnZSgpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZ
U0lTX0VOSEFOQ0VNRU5UUykKLSAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51Q29weUNyb3BwZWRJ
bWFnZShTaGFyZWFibGVCaXRtYXAmLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZE1JTUVUeXBlKTsK
KyAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51Q29weUNyb3BwZWRJbWFnZShjb25zdCBTdHJpbmcm
IHByZWZlcnJlZE1JTUVUeXBlKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01F
TlVTKQogCkBAIC0yMTAyLDYgKzIxMDIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZXh0cmFjdFZp
ZGVvSW5FbGVtZW50RnVsbFNjcmVlbihXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIFdl
YkNvcmU6OkZsb2F0UmVjdCB2aWRlb0JvdW5kcyk7CiAgICAgdm9pZCBjYW5jZWxWaWRlb0V4dHJh
Y3Rpb25JbkVsZW1lbnRGdWxsU2NyZWVuKCk7CiAKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNf
RU5IQU5DRU1FTlRTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2b2lkIHNldENyb3Bw
ZWRJbWFnZUZvckNvbnRleHRNZW51KENHSW1hZ2VSZWYpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAg
LTI3OTAsNyArMjc5NCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQog
ICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBtX2FjdGl2ZUNvbnRleHRNZW51OwogICAg
IENvbnRleHRNZW51Q29udGV4dERhdGEgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhOwot
I2VuZGlmCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudTsKKyNlbmRpZiAv
LyBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorI2VuZGlmIC8vIEVOQUJMRShD
T05URVhUX01FTlVTKQogICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IG1fbGFzdE1vdXNl
TW92ZUhpdFRlc3RSZXN1bHQ7CiAKICAgICBSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eT4gbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KaW5kZXggMmZkOTI5
MWMxN2U1OGYyNmQzMDlhYzIzMjI0NmI1MDVlODZjZTRlZS4uOWY3ZWU1M2MyZmUxMzQ5ZGIxYjA0
M2ZiZTRlOWNkNzRkNWFmNjgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KQEAgLTYwMSwxNyArNjAxLDI3IEBAIHZv
aWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMoY29uc3Qg
VmVjdG9yPFdlYkNvbnRleHRNZW51CiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gY29weUNyb3BwZWRJbWFnZUl0ZW07CiAgICAg
c3RkOjpvcHRpb25hbDxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBsb29rVXBJbWFnZUl0ZW07CiAK
ICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCi0gICAgZmlsdGVyZWRJdGVtcy5yZW1vdmVGaXJz
dE1hdGNoaW5nKFsmXSAoYXV0byYgaXRlbSkgewotICAgICAgICBpZiAoaXRlbS5hY3Rpb24oKSAh
PSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbWFnZSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBmaWx0ZXJlZEl0ZW1zLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoYXV0
byYgaXRlbSkgeworICAgICAgICBhdXRvIGFjdGlvbiA9IGl0ZW0uYWN0aW9uKCk7CisgICAgICAg
IGlmIChhY3Rpb24gPT0gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW1hZ2UpIHsK
KyAgICAgICAgICAgIEFTU0VSVCghbG9va1VwSW1hZ2VJdGVtKTsKKyAgICAgICAgICAgIGxvb2tV
cEltYWdlSXRlbSA9IHsgaXRlbSB9OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoYWN0aW9uID09IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0Nv
cHlDcm9wcGVkSW1hZ2UpIHsKKyAgICAgICAgICAgIEFTU0VSVCghY29weUNyb3BwZWRJbWFnZUl0
ZW0pOworICAgICAgICAgICAgY29weUNyb3BwZWRJbWFnZUl0ZW0gPSB7IGl0ZW0gfTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAKLSAgICAgICAgbG9va1VwSW1hZ2VJdGVt
ID0geyBpdGVtIH07Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfSk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKICNp
ZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKQogICAgIGlmICghcGFnZSgpLT5jYW5IYW5k
bGVDb250ZXh0TWVudVRyYW5zbGF0aW9uKCkgfHwgaXNQb3BvdmVyKSB7CkBAIC02MjgsNyArNjM4
LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpnZXRDb250ZXh0TWVudUZyb21JdGVt
cyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnUKICAgICBhdXRvIGltYWdlQml0bWFwID0gaGl0
VGVzdERhdGEuaW1hZ2VCaXRtYXA7CiAKICAgICBSZXRhaW5QdHIgc3BhcnNlTWVudUl0ZW1zID0g
W05TUG9pbnRlckFycmF5IHN0cm9uZ09iamVjdHNQb2ludGVyQXJyYXldOwotICAgIGF1dG8gaW5z
ZXJ0TWVudUl0ZW0gPSBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCB3ZWFrUGFnZSA9IFdlYWtQdHIgeyBwYWdlKCkgfSwgaW1hZ2VVUkwgPSBXVEZNb3ZlKGltYWdl
VVJMKSwgaW1hZ2VCaXRtYXAgPSBXVEZNb3ZlKGltYWdlQml0bWFwKSwgbG9va1VwSW1hZ2VJdGVt
ID0gV1RGTW92ZShsb29rVXBJbWFnZUl0ZW0pLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBpdGVtc1JlbWFpbmluZyA9IGZpbHRlcmVkSXRlbXMuc2l6ZSgp
LCBtZW51ID0gV1RGTW92ZShtZW51KSwgc3BhcnNlTWVudUl0ZW1zXShOU01lbnVJdGVtICppdGVt
LCBOU1VJbnRlZ2VyIGluZGV4KSBtdXRhYmxlIHsKKyAgICBhdXRvIGluc2VydE1lbnVJdGVtID0g
bWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgd2Vha1BhZ2UgPSBX
ZWFrUHRyIHsgcGFnZSgpIH0sIGltYWdlVVJMID0gV1RGTW92ZShpbWFnZVVSTCksIGltYWdlQml0
bWFwID0gV1RGTW92ZShpbWFnZUJpdG1hcCksIGxvb2tVcEltYWdlSXRlbSA9IFdURk1vdmUobG9v
a1VwSW1hZ2VJdGVtKSwgY29weUNyb3BwZWRJbWFnZUl0ZW0gPSBXVEZNb3ZlKGNvcHlDcm9wcGVk
SW1hZ2VJdGVtKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgaXRlbXNSZW1haW5pbmcgPSBmaWx0ZXJlZEl0ZW1zLnNpemUoKSwgbWVudSA9IFdURk1vdmUo
bWVudSksIHNwYXJzZU1lbnVJdGVtc10oTlNNZW51SXRlbSAqaXRlbSwgTlNVSW50ZWdlciBpbmRl
eCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpbmRleCA8IFtzcGFyc2VNZW51SXRlbXMgY291
bnRdKTsKICAgICAgICAgQVNTRVJUKCFbc3BhcnNlTWVudUl0ZW1zIHBvaW50ZXJBdEluZGV4Omlu
ZGV4XSk7CiAgICAgICAgIFtzcGFyc2VNZW51SXRlbXMgcmVwbGFjZVBvaW50ZXJBdEluZGV4Omlu
ZGV4IHdpdGhQb2ludGVyOml0ZW1dOwpAQCAtNjM4LDEyICs2NDgsMzEgQEAgdm9pZCBXZWJDb250
ZXh0TWVudVByb3h5TWFjOjpnZXRDb250ZXh0TWVudUZyb21JdGVtcyhjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnUKICAgICAgICAgW21lbnUgc2V0SXRlbUFycmF5OltzcGFyc2VNZW51SXRlbXMg
YWxsT2JqZWN0c11dOwogCiAgICAgICAgIFJlZlB0ciBwYWdlID0gd2Vha1BhZ2UuZ2V0KCk7Ci0g
ICAgICAgIGlmIChsb29rVXBJbWFnZUl0ZW0gJiYgcGFnZSAmJiBpbWFnZUJpdG1hcCkgeworICAg
ICAgICBpZiAocGFnZSAmJiBpbWFnZUJpdG1hcCkgewogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
UykKLSAgICAgICAgICAgIHBhZ2UtPmNvbXB1dGVIYXNWaXN1YWxTZWFyY2hSZXN1bHRzKGltYWdl
VVJMLCAqaW1hZ2VCaXRtYXAsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgbG9va1VwSW1hZ2VJdGVtID0gV1RGTW92ZSgqbG9va1VwSW1hZ2VJdGVtKV0gKGJvb2wgaGFz
VmlzdWFsU2VhcmNoUmVzdWx0cykgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGhhc1Zp
c3VhbFNlYXJjaFJlc3VsdHMpCi0gICAgICAgICAgICAgICAgICAgIFtwcm90ZWN0ZWRUaGlzLT5t
X21lbnUgYWRkSXRlbTpjcmVhdGVNZW51QWN0aW9uSXRlbShsb29rVXBJbWFnZUl0ZW0pLmdldCgp
XTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaWYgKGxvb2tVcEltYWdlSXRlbSkgewor
ICAgICAgICAgICAgICAgIHBhZ2UtPmNvbXB1dGVIYXNWaXN1YWxTZWFyY2hSZXN1bHRzKGltYWdl
VVJMLCAqaW1hZ2VCaXRtYXAsIFtwcm90ZWN0ZWRUaGlzLCBsb29rVXBJbWFnZUl0ZW0gPSBXVEZN
b3ZlKCpsb29rVXBJbWFnZUl0ZW0pXSAoYm9vbCBoYXNWaXN1YWxTZWFyY2hSZXN1bHRzKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1Zpc3VhbFNlYXJjaFJlc3VsdHMpCisg
ICAgICAgICAgICAgICAgICAgICAgICBbcHJvdGVjdGVkVGhpcy0+bV9tZW51IGFkZEl0ZW06Y3Jl
YXRlTWVudUFjdGlvbkl0ZW0obG9va1VwSW1hZ2VJdGVtKS5nZXQoKV07CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb3B5Q3JvcHBlZEltYWdl
SXRlbSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGltYWdlID0gaW1hZ2VCaXRtYXAtPm1h
a2VDR0ltYWdlQ29weSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldENyb3BwZWRJ
bWFnZUZvckNvbnRleHRNZW51KG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
SW1hZ2VBbmFseXNpc01hcmt1cChpbWFnZS5nZXQoKSwgW3dlYWtQYWdlLCBwcm90ZWN0ZWRUaGlz
LCBjb3B5Q3JvcHBlZEltYWdlSXRlbSA9IFdURk1vdmUoKmNvcHlDcm9wcGVkSW1hZ2VJdGVtKV0o
YXV0byByZXN1bHQsIGF1dG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyIHBhZ2UgPSB3ZWFrUGFnZS5nZXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghcGFnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNldENyb3BwZWRJbWFnZUZvckNvbnRleHRN
ZW51KHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBbcHJvdGVjdGVkVGhpcy0+bV9t
ZW51IGFkZEl0ZW06Y3JlYXRlTWVudUFjdGlvbkl0ZW0oY29weUNyb3BwZWRJbWFnZUl0ZW0pLmdl
dCgpXTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQogI2Vsc2UKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShpbWFnZVVSTCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmlu
ZGV4IGM1OGRmYjExOGFjYTM1NDQ4MGU0OGY1MmVkM2Q1NjRlZjJmOTgxMDcuLmY0MjFkOTc2OTA1
Mzc1MDkyMDA2NmU0YTIyOTg1ZjEzNGRlNzFhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNzgxLDI5ICs3ODEsMjQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNob3dJbWFnZUluUXVpY2tMb29rUHJldmlld1BhbmVsKFNoYXJlYWJsZUJp
dG1hcCYgaW1hZ2VCaXRtYXAKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVO
VFMpCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1h
Z2UoU2hhcmVhYmxlQml0bWFwJiBpbWFnZUJpdG1hcCwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRN
SU1FVHlwZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRDcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVu
dShDR0ltYWdlUmVmIGltYWdlKQogewotICAgIGF1dG8gY2hhbmdlQ291bnQgPSBOU1Bhc3RlYm9h
cmQuZ2VuZXJhbFBhc3RlYm9hcmQuY2hhbmdlQ291bnQ7Ci0gICAgYXV0byBwZXJmb3JtQ29weSA9
IFtjaGFuZ2VDb3VudCwgcHJlZmVycmVkTUlNRVR5cGVdKENHSW1hZ2VSZWYgcmVzdWx0SW1hZ2Up
IHsKLSAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJv
YXJkOwotICAgICAgICBpZiAoY2hhbmdlQ291bnQgIT0gcGFzdGVib2FyZC5jaGFuZ2VDb3VudCB8
fCAhcmVzdWx0SW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBbZGF0
YSwgdHlwZV0gPSB0cmFuc2NvZGVXaXRoUHJlZmVycmVkTUlNRVR5cGUocmVzdWx0SW1hZ2UsIHBy
ZWZlcnJlZE1JTUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilVVFR5cGVUSUZGLmlkZW50aWZpZXIpOwotICAgICAgICBpZiAoIWRhdGEpCi0gICAgICAg
ICAgICByZXR1cm47CisgICAgbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudSA9IGltYWdlOwor
fQogCi0gICAgICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpAWyhfX2JyaWRnZSBOU1N0cmlu
ZyAqKXR5cGUuZ2V0KCldIG93bmVyOm5pbF07Ci0gICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6
ZGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKXR5cGUuZ2V0KCldOwotICAg
IH07Cit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVDb3B5Q3JvcHBlZEltYWdl
KGNvbnN0IFN0cmluZyYgcHJlZmVycmVkTUlNRVR5cGUpCit7CisgICAgaWYgKCFtX2Nyb3BwZWRJ
bWFnZUZvckNvbnRleHRNZW51KQorICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG9yaWdpbmFs
SW1hZ2UgPSBpbWFnZUJpdG1hcC5tYWtlQ0dJbWFnZUNvcHkoKTsKLSAgICBpZiAoIW9yaWdpbmFs
SW1hZ2UpCisgICAgYXV0byBbZGF0YSwgdHlwZV0gPSB0cmFuc2NvZGVXaXRoUHJlZmVycmVkTUlN
RVR5cGUobV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudS5nZXQoKSwgcHJlZmVycmVkTUlNRVR5
cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKVVUVHlwZVRJ
RkYuaWRlbnRpZmllcik7CisgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZXF1ZXN0SW1hZ2VBbmFseXNpc01hcmt1cChvcmlnaW5hbEltYWdlLmdldCgpLCBbcGVyZm9ybUNv
cHkgPSBXVEZNb3ZlKHBlcmZvcm1Db3B5KV0oYXV0byBpbWFnZSwgYXV0bykgewotICAgICAgICBw
ZXJmb3JtQ29weShpbWFnZSk7Ci0gICAgfSk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gTlNQYXN0
ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkOworICAgIGF1dG8gcGFzdGVib2FyZFR5cGUgPSAoX19i
cmlkZ2UgTlNTdHJpbmcgKil0eXBlLmdldCgpOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBl
czpAW3Bhc3RlYm9hcmRUeXBlXSBvd25lcjpuaWxdOworICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6
ZGF0YS5nZXQoKSBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCg==
</data>
<flag name="review"
          id="487105"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458280</attachid>
            <date>2022-04-25 09:53:24 -0700</date>
            <delta_ts>2022-04-25 09:53:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239712-20220425095323.patch</filename>
            <type>text/plain</type>
            <size>11658</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIyYjRkYTE2NTc5MTI1Zjc5
OWZkMjcwMzVmZTE0ODZlNTk3MDdkMjEuLmEwY2M1Mzg1Nzg5MTY1NzUwYzYwYTFjZjdjOGRmZjIx
MWQyNDJjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDQtMjQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBPbmx5IHNo
b3cgYSBjb250ZXh0IG1lbnUgYWN0aW9uIHRvICJDb3B5IENyb3BwZWQgSW1hZ2UiIHdoZW4gYXBw
cm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTcxMgorICAgICAgICByZGFyOi8vOTIyMzkzODQKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICBJbXBsZW1lbnQgZ2F0aW5nIGZvciB0aGUgIkNvcHkgQ3Jv
cHBlZCBJbWFnZSIgY29udGV4dCBtZW51IGl0ZW0uIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgY3Vy
cmVudCBnYXRpbmcgbWVjaGFuaXNtCisgICAgICAgIHVzZWQgZm9yIHZpc3VhbCBsb29rIHVwLCB3
aGVyZWluIHRoZSBMb29rIFVwIG1lbnUgaXRlbSBpcyBhc3luY2hyb25vdXNseSBhcHBlbmRlZCB0
byB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIEluIHRoaXMgY2FzZSwgd2Ugb25seSBhcHBl
bmQgdGhlICJDb3B5IENyb3BwZWQgSW1hZ2UiIG1lbnUgaXRlbSBpbiB0aGUgY2FzZSB3aGVyZSBg
cmVxdWVzdEltYWdlQW5hbHlzaXNNYXJrdXBgCisgICAgICAgIGNvbXBsZXRlcyB3aXRoIGEgbm9u
LW51bGwgcmVzdWx0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKworICAgICAgICBDYWNoZSB0aGUgaW1hZ2UgYW5hbHlzaXMgcmVzdWx0cyBm
b3IgIkNvcHkgQ3JvcHBlZCBJbWFnZSIgaW4gYSBtZW1iZXIgdmFyaWFibGUsIGBtX2Nyb3BwZWRJ
bWFnZUZvckNvbnRleHRNZW51YC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENyb3Bw
ZWRJbWFnZUZvckNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpo
YW5kbGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UpOgorCiAyMDIyLTA0LTI0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXZlbnQgaW5saW5l
IHRleHQgc2VsZWN0aW9uIGluIGltYWdlcyB3aGVuIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFM
UykgaXMgc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAy
ZWY5MDBkZjhlMDY4YjI2OGE4OWJkNGM0MDJmMzY0YjI0MzQxNjA0Li4zM2QwOWRmYzI4YmI0NmYy
OGRjYTQ2MmMxYTU1NjhkN2M4OGRmYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTExOTAsNiArMTE5MCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xv
c2UoKQogICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBudWxscHRyOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5U
UykKKyAgICBtX2Nyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51ID0gbnVsbHB0cjsKKyNlbmRpZgor
CiAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwogCiAgICAgbV9pbnNwZWN0b3ItPmlu
dmFsaWRhdGUoKTsKQEAgLTcwODMsNiArNzA4NywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hv
d0NvbnRleHRNZW51KENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0TWVudUNvbnRleHRE
YQogICAgIC8vIE1vdXNlRG93biBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGlzIFNob3dDb250ZXh0
TWVudSBtZXNzYWdlLiBUaGlzIGNhbiBoYXBwZW4gaWYgd2UgdGFrZSB0b28gbG9uZyB0byBlbnRl
ciB0aGUgbmVzdGVkIHJ1bmxvb3AuCiAgICAgZGlzY2FyZFF1ZXVlZE1vdXNlRXZlbnRzKCk7CiAK
KyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIG1fY3JvcHBlZElt
YWdlRm9yQ29udGV4dE1lbnUgPSBudWxscHRyOworI2VuZGlmCisKICAgICBtX2FjdGl2ZUNvbnRl
eHRNZW51Q29udGV4dERhdGEgPSBjb250ZXh0TWVudUNvbnRleHREYXRhOwogCiAgICAgbV9hY3Rp
dmVDb250ZXh0TWVudSA9IHBhZ2VDbGllbnQoKS5jcmVhdGVDb250ZXh0TWVudVByb3h5KCp0aGlz
LCBXVEZNb3ZlKGNvbnRleHRNZW51Q29udGV4dERhdGEpLCB1c2VyRGF0YSk7CkBAIC03MjEzLDgg
KzcyMjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKIAogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weUNyb3BwZWRJbWFnZToKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5D
RU1FTlRTKQotICAgICAgICBpZiAoaGl0VGVzdERhdGEuaW1hZ2VCaXRtYXApCi0gICAgICAgICAg
ICBoYW5kbGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UoKmhpdFRlc3REYXRhLmltYWdlQml0
bWFwLCBoaXRUZXN0RGF0YS5zb3VyY2VJbWFnZU1JTUVUeXBlKTsKKyAgICAgICAgaGFuZGxlQ29u
dGV4dE1lbnVDb3B5Q3JvcHBlZEltYWdlKGhpdFRlc3REYXRhLnNvdXJjZUltYWdlTUlNRVR5cGUp
OwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBkM2FkNGYwMzNlMjE5ZTc1MTBjNjY0ZWRlYjcyNDZlZDQ3ODE2NzgxLi5j
OTM1Mzk5NzYzYjAyNWU0MmVkNzQxZDdhZWE4NDNmYTRkM2NhMTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAzNSw3ICsyMDM1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlQ29udGV4dE1lbnVMb29rVXBJbWFnZSgpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKLSAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51
Q29weUNyb3BwZWRJbWFnZShTaGFyZWFibGVCaXRtYXAmLCBjb25zdCBTdHJpbmcmIHByZWZlcnJl
ZE1JTUVUeXBlKTsKKyAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51Q29weUNyb3BwZWRJbWFnZShj
b25zdCBTdHJpbmcmIHByZWZlcnJlZE1JTUVUeXBlKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJM
RShDT05URVhUX01FTlVTKQogCkBAIC0yMTAyLDYgKzIxMDIsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgZXh0cmFjdFZpZGVvSW5FbGVtZW50RnVsbFNjcmVlbihXZWJDb3JlOjpNZWRpYVBsYXllcklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aWRlb0JvdW5kcyk7CiAgICAgdm9pZCBjYW5j
ZWxWaWRlb0V4dHJhY3Rpb25JbkVsZW1lbnRGdWxsU2NyZWVuKCk7CiAKKyNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICB2
b2lkIHNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KENHSW1hZ2VSZWYpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkm
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKQEAgLTI3OTEsNiArMjc5NSwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBtX2FjdGl2ZUNvbnRleHRNZW51OwogICAgIENvbnRleHRNZW51Q29u
dGV4dERhdGEgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhOwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5U
UykKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVu
dTsKKyNlbmRpZgorCiAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gbV9sYXN0TW91c2VN
b3ZlSGl0VGVzdFJlc3VsdDsKIAogICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5PiBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCAyZmQ5Mjkx
YzE3ZTU4ZjI2ZDMwOWFjMjMyMjQ2YjUwNWU4NmNlNGVlLi45ZjdlZTUzYzJmZTEzNDlkYjFiMDQz
ZmJlNGU5Y2Q3NGQ1YWY2ODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQpAQCAtNjAxLDE3ICs2MDEsMjcgQEAgdm9p
ZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpnZXRDb250ZXh0TWVudUZyb21JdGVtcyhjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnUKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBjb3B5Q3JvcHBlZEltYWdlSXRlbTsKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGxvb2tVcEltYWdlSXRlbTsKIAog
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKLSAgICBmaWx0ZXJlZEl0ZW1zLnJlbW92ZUZpcnN0
TWF0Y2hpbmcoWyZdIChhdXRvJiBpdGVtKSB7Ci0gICAgICAgIGlmIChpdGVtLmFjdGlvbigpICE9
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEltYWdlKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGZpbHRlcmVkSXRlbXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdIChhdXRv
JiBpdGVtKSB7CisgICAgICAgIGF1dG8gYWN0aW9uID0gaXRlbS5hY3Rpb24oKTsKKyAgICAgICAg
aWYgKGFjdGlvbiA9PSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbWFnZSkgewor
ICAgICAgICAgICAgQVNTRVJUKCFsb29rVXBJbWFnZUl0ZW0pOworICAgICAgICAgICAgbG9va1Vw
SW1hZ2VJdGVtID0geyBpdGVtIH07CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChhY3Rpb24gPT0gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29w
eUNyb3BwZWRJbWFnZSkgeworICAgICAgICAgICAgQVNTRVJUKCFjb3B5Q3JvcHBlZEltYWdlSXRl
bSk7CisgICAgICAgICAgICBjb3B5Q3JvcHBlZEltYWdlSXRlbSA9IHsgaXRlbSB9OworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KIAotICAgICAgICBsb29rVXBJbWFnZUl0ZW0g
PSB7IGl0ZW0gfTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9KTsKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAogI2lm
IEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpCiAgICAgaWYgKCFwYWdlKCktPmNhbkhhbmRs
ZUNvbnRleHRNZW51VHJhbnNsYXRpb24oKSB8fCBpc1BvcG92ZXIpIHsKQEAgLTYyOCw3ICs2Mzgs
NyBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1z
KGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudQogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBoaXRU
ZXN0RGF0YS5pbWFnZUJpdG1hcDsKIAogICAgIFJldGFpblB0ciBzcGFyc2VNZW51SXRlbXMgPSBb
TlNQb2ludGVyQXJyYXkgc3Ryb25nT2JqZWN0c1BvaW50ZXJBcnJheV07Ci0gICAgYXV0byBpbnNl
cnRNZW51SXRlbSA9IG1ha2VCbG9ja1B0cihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHdlYWtQYWdlID0gV2Vha1B0ciB7IHBhZ2UoKSB9LCBpbWFnZVVSTCA9IFdURk1vdmUoaW1hZ2VV
UkwpLCBpbWFnZUJpdG1hcCA9IFdURk1vdmUoaW1hZ2VCaXRtYXApLCBsb29rVXBJbWFnZUl0ZW0g
PSBXVEZNb3ZlKGxvb2tVcEltYWdlSXRlbSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGl0ZW1zUmVtYWluaW5nID0gZmlsdGVyZWRJdGVtcy5zaXplKCks
IG1lbnUgPSBXVEZNb3ZlKG1lbnUpLCBzcGFyc2VNZW51SXRlbXNdKE5TTWVudUl0ZW0gKml0ZW0s
IE5TVUludGVnZXIgaW5kZXgpIG11dGFibGUgeworICAgIGF1dG8gaW5zZXJ0TWVudUl0ZW0gPSBt
YWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB3ZWFrUGFnZSA9IFdl
YWtQdHIgeyBwYWdlKCkgfSwgaW1hZ2VVUkwgPSBXVEZNb3ZlKGltYWdlVVJMKSwgaW1hZ2VCaXRt
YXAgPSBXVEZNb3ZlKGltYWdlQml0bWFwKSwgbG9va1VwSW1hZ2VJdGVtID0gV1RGTW92ZShsb29r
VXBJbWFnZUl0ZW0pLCBjb3B5Q3JvcHBlZEltYWdlSXRlbSA9IFdURk1vdmUoY29weUNyb3BwZWRJ
bWFnZUl0ZW0pLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBpdGVtc1JlbWFpbmluZyA9IGZpbHRlcmVkSXRlbXMuc2l6ZSgpLCBtZW51ID0gV1RGTW92ZSht
ZW51KSwgc3BhcnNlTWVudUl0ZW1zXShOU01lbnVJdGVtICppdGVtLCBOU1VJbnRlZ2VyIGluZGV4
KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGluZGV4IDwgW3NwYXJzZU1lbnVJdGVtcyBjb3Vu
dF0pOwogICAgICAgICBBU1NFUlQoIVtzcGFyc2VNZW51SXRlbXMgcG9pbnRlckF0SW5kZXg6aW5k
ZXhdKTsKICAgICAgICAgW3NwYXJzZU1lbnVJdGVtcyByZXBsYWNlUG9pbnRlckF0SW5kZXg6aW5k
ZXggd2l0aFBvaW50ZXI6aXRlbV07CkBAIC02MzgsMTIgKzY0OCwzMSBAQCB2b2lkIFdlYkNvbnRl
eHRNZW51UHJveHlNYWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJD
b250ZXh0TWVudQogICAgICAgICBbbWVudSBzZXRJdGVtQXJyYXk6W3NwYXJzZU1lbnVJdGVtcyBh
bGxPYmplY3RzXV07CiAKICAgICAgICAgUmVmUHRyIHBhZ2UgPSB3ZWFrUGFnZS5nZXQoKTsKLSAg
ICAgICAgaWYgKGxvb2tVcEltYWdlSXRlbSAmJiBwYWdlICYmIGltYWdlQml0bWFwKSB7CisgICAg
ICAgIGlmIChwYWdlICYmIGltYWdlQml0bWFwKSB7CiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lT
KQotICAgICAgICAgICAgcGFnZS0+Y29tcHV0ZUhhc1Zpc3VhbFNlYXJjaFJlc3VsdHMoaW1hZ2VV
UkwsICppbWFnZUJpdG1hcCwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBsb29rVXBJbWFnZUl0ZW0gPSBXVEZNb3ZlKCpsb29rVXBJbWFnZUl0ZW0pXSAoYm9vbCBoYXNW
aXN1YWxTZWFyY2hSZXN1bHRzKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoaGFzVmlz
dWFsU2VhcmNoUmVzdWx0cykKLSAgICAgICAgICAgICAgICAgICAgW3Byb3RlY3RlZFRoaXMtPm1f
bWVudSBhZGRJdGVtOmNyZWF0ZU1lbnVBY3Rpb25JdGVtKGxvb2tVcEltYWdlSXRlbSkuZ2V0KCld
OwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAobG9va1VwSW1hZ2VJdGVtKSB7Cisg
ICAgICAgICAgICAgICAgcGFnZS0+Y29tcHV0ZUhhc1Zpc3VhbFNlYXJjaFJlc3VsdHMoaW1hZ2VV
UkwsICppbWFnZUJpdG1hcCwgW3Byb3RlY3RlZFRoaXMsIGxvb2tVcEltYWdlSXRlbSA9IFdURk1v
dmUoKmxvb2tVcEltYWdlSXRlbSldIChib29sIGhhc1Zpc3VhbFNlYXJjaFJlc3VsdHMpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmlzdWFsU2VhcmNoUmVzdWx0cykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFtwcm90ZWN0ZWRUaGlzLT5tX21lbnUgYWRkSXRlbTpjcmVh
dGVNZW51QWN0aW9uSXRlbShsb29rVXBJbWFnZUl0ZW0pLmdldCgpXTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvcHlDcm9wcGVkSW1hZ2VJ
dGVtKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2UgPSBpbWFnZUJpdG1hcC0+bWFr
ZUNHSW1hZ2VDb3B5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0Q3JvcHBlZElt
YWdlRm9yQ29udGV4dE1lbnUobnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJ
bWFnZUFuYWx5c2lzTWFya3VwKGltYWdlLmdldCgpLCBbd2Vha1BhZ2UsIHByb3RlY3RlZFRoaXMs
IGNvcHlDcm9wcGVkSW1hZ2VJdGVtID0gV1RGTW92ZSgqY29weUNyb3BwZWRJbWFnZUl0ZW0pXShh
dXRvIHJlc3VsdCwgYXV0bykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHIgcGFnZSA9IHdlYWtQYWdlLmdldCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0Q3JvcHBlZEltYWdlRm9yQ29udGV4dE1l
bnUocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFtwcm90ZWN0ZWRUaGlzLT5tX21l
bnUgYWRkSXRlbTpjcmVhdGVNZW51QWN0aW9uSXRlbShjb3B5Q3JvcHBlZEltYWdlSXRlbSkuZ2V0
KCldOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CiAjZWxzZQogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGltYWdlVVJMKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5k
ZXggYzU4ZGZiMTE4YWNhMzU0NDgwZTQ4ZjUyZWQzZDU2NGVmMmY5ODEwNy4uZjQyMWQ5NzY5MDUz
NzUwOTIwMDY2ZTRhMjI5ODVmMTM0ZGU3MWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC03ODEsMjkgKzc4MSwyNCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2hvd0ltYWdlSW5RdWlja0xvb2tQcmV2aWV3UGFuZWwoU2hhcmVhYmxlQml0
bWFwJiBpbWFnZUJpdG1hcAogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5U
UykKIAotdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUNvbnRleHRNZW51Q29weUNyb3BwZWRJbWFn
ZShTaGFyZWFibGVCaXRtYXAmIGltYWdlQml0bWFwLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZE1J
TUVUeXBlKQordm9pZCBXZWJQYWdlUHJveHk6OnNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51
KENHSW1hZ2VSZWYgaW1hZ2UpCiB7Ci0gICAgYXV0byBjaGFuZ2VDb3VudCA9IE5TUGFzdGVib2Fy
ZC5nZW5lcmFsUGFzdGVib2FyZC5jaGFuZ2VDb3VudDsKLSAgICBhdXRvIHBlcmZvcm1Db3B5ID0g
W2NoYW5nZUNvdW50LCBwcmVmZXJyZWRNSU1FVHlwZV0oQ0dJbWFnZVJlZiByZXN1bHRJbWFnZSkg
ewotICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9h
cmQ7Ci0gICAgICAgIGlmIChjaGFuZ2VDb3VudCAhPSBwYXN0ZWJvYXJkLmNoYW5nZUNvdW50IHx8
ICFyZXN1bHRJbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIFtkYXRh
LCB0eXBlXSA9IHRyYW5zY29kZVdpdGhQcmVmZXJyZWRNSU1FVHlwZShyZXN1bHRJbWFnZSwgcHJl
ZmVycmVkTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5n
UmVmKVVUVHlwZVRJRkYuaWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghZGF0YSkKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICBtX2Nyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51ID0gaW1hZ2U7Cit9
CiAKLSAgICAgICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOkBbKF9fYnJpZGdlIE5TU3RyaW5n
ICopdHlwZS5nZXQoKV0gb3duZXI6bmlsXTsKLSAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpk
YXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopdHlwZS5nZXQoKV07Ci0gICAg
fTsKK3ZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBwcmVmZXJyZWRNSU1FVHlwZSkKK3sKKyAgICBpZiAoIW1fY3JvcHBlZElt
YWdlRm9yQ29udGV4dE1lbnUpCisgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gb3JpZ2luYWxJ
bWFnZSA9IGltYWdlQml0bWFwLm1ha2VDR0ltYWdlQ29weSgpOwotICAgIGlmICghb3JpZ2luYWxJ
bWFnZSkKKyAgICBhdXRvIFtkYXRhLCB0eXBlXSA9IHRyYW5zY29kZVdpdGhQcmVmZXJyZWRNSU1F
VHlwZShtX2Nyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51LmdldCgpLCBwcmVmZXJyZWRNSU1FVHlw
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElG
Ri5pZGVudGlmaWVyKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJl
cXVlc3RJbWFnZUFuYWx5c2lzTWFya3VwKG9yaWdpbmFsSW1hZ2UuZ2V0KCksIFtwZXJmb3JtQ29w
eSA9IFdURk1vdmUocGVyZm9ybUNvcHkpXShhdXRvIGltYWdlLCBhdXRvKSB7Ci0gICAgICAgIHBl
cmZvcm1Db3B5KGltYWdlKTsKLSAgICB9KTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBOU1Bhc3Rl
Ym9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQ7CisgICAgYXV0byBwYXN0ZWJvYXJkVHlwZSA9IChfX2Jy
aWRnZSBOU1N0cmluZyAqKXR5cGUuZ2V0KCk7CisgICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVz
OkBbcGFzdGVib2FyZFR5cGVdIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpk
YXRhLmdldCgpIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458281</attachid>
            <date>2022-04-25 10:00:43 -0700</date>
            <delta_ts>2022-04-25 13:01:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239712-20220425100042.patch</filename>
            <type>text/plain</type>
            <size>11639</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIyYjRkYTE2NTc5MTI1Zjc5
OWZkMjcwMzVmZTE0ODZlNTk3MDdkMjEuLmEwY2M1Mzg1Nzg5MTY1NzUwYzYwYTFjZjdjOGRmZjIx
MWQyNDJjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDQtMjQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBPbmx5IHNo
b3cgYSBjb250ZXh0IG1lbnUgYWN0aW9uIHRvICJDb3B5IENyb3BwZWQgSW1hZ2UiIHdoZW4gYXBw
cm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTcxMgorICAgICAgICByZGFyOi8vOTIyMzkzODQKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICBJbXBsZW1lbnQgZ2F0aW5nIGZvciB0aGUgIkNvcHkgQ3Jv
cHBlZCBJbWFnZSIgY29udGV4dCBtZW51IGl0ZW0uIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgY3Vy
cmVudCBnYXRpbmcgbWVjaGFuaXNtCisgICAgICAgIHVzZWQgZm9yIHZpc3VhbCBsb29rIHVwLCB3
aGVyZWluIHRoZSBMb29rIFVwIG1lbnUgaXRlbSBpcyBhc3luY2hyb25vdXNseSBhcHBlbmRlZCB0
byB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIEluIHRoaXMgY2FzZSwgd2Ugb25seSBhcHBl
bmQgdGhlICJDb3B5IENyb3BwZWQgSW1hZ2UiIG1lbnUgaXRlbSBpbiB0aGUgY2FzZSB3aGVyZSBg
cmVxdWVzdEltYWdlQW5hbHlzaXNNYXJrdXBgCisgICAgICAgIGNvbXBsZXRlcyB3aXRoIGEgbm9u
LW51bGwgcmVzdWx0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKworICAgICAgICBDYWNoZSB0aGUgaW1hZ2UgYW5hbHlzaXMgcmVzdWx0cyBm
b3IgIkNvcHkgQ3JvcHBlZCBJbWFnZSIgaW4gYSBtZW1iZXIgdmFyaWFibGUsIGBtX2Nyb3BwZWRJ
bWFnZUZvckNvbnRleHRNZW51YC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENyb3Bw
ZWRJbWFnZUZvckNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpo
YW5kbGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UpOgorCiAyMDIyLTA0LTI0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXZlbnQgaW5saW5l
IHRleHQgc2VsZWN0aW9uIGluIGltYWdlcyB3aGVuIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFM
UykgaXMgc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAy
ZWY5MDBkZjhlMDY4YjI2OGE4OWJkNGM0MDJmMzY0YjI0MzQxNjA0Li4zM2QwOWRmYzI4YmI0NmYy
OGRjYTQ2MmMxYTU1NjhkN2M4OGRmYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTExOTAsNiArMTE5MCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xv
c2UoKQogICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBudWxscHRyOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5U
UykKKyAgICBtX2Nyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51ID0gbnVsbHB0cjsKKyNlbmRpZgor
CiAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwogCiAgICAgbV9pbnNwZWN0b3ItPmlu
dmFsaWRhdGUoKTsKQEAgLTcwODMsNiArNzA4NywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hv
d0NvbnRleHRNZW51KENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0TWVudUNvbnRleHRE
YQogICAgIC8vIE1vdXNlRG93biBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGlzIFNob3dDb250ZXh0
TWVudSBtZXNzYWdlLiBUaGlzIGNhbiBoYXBwZW4gaWYgd2UgdGFrZSB0b28gbG9uZyB0byBlbnRl
ciB0aGUgbmVzdGVkIHJ1bmxvb3AuCiAgICAgZGlzY2FyZFF1ZXVlZE1vdXNlRXZlbnRzKCk7CiAK
KyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIG1fY3JvcHBlZElt
YWdlRm9yQ29udGV4dE1lbnUgPSBudWxscHRyOworI2VuZGlmCisKICAgICBtX2FjdGl2ZUNvbnRl
eHRNZW51Q29udGV4dERhdGEgPSBjb250ZXh0TWVudUNvbnRleHREYXRhOwogCiAgICAgbV9hY3Rp
dmVDb250ZXh0TWVudSA9IHBhZ2VDbGllbnQoKS5jcmVhdGVDb250ZXh0TWVudVByb3h5KCp0aGlz
LCBXVEZNb3ZlKGNvbnRleHRNZW51Q29udGV4dERhdGEpLCB1c2VyRGF0YSk7CkBAIC03MjEzLDgg
KzcyMjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKIAogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weUNyb3BwZWRJbWFnZToKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5D
RU1FTlRTKQotICAgICAgICBpZiAoaGl0VGVzdERhdGEuaW1hZ2VCaXRtYXApCi0gICAgICAgICAg
ICBoYW5kbGVDb250ZXh0TWVudUNvcHlDcm9wcGVkSW1hZ2UoKmhpdFRlc3REYXRhLmltYWdlQml0
bWFwLCBoaXRUZXN0RGF0YS5zb3VyY2VJbWFnZU1JTUVUeXBlKTsKKyAgICAgICAgaGFuZGxlQ29u
dGV4dE1lbnVDb3B5Q3JvcHBlZEltYWdlKGhpdFRlc3REYXRhLnNvdXJjZUltYWdlTUlNRVR5cGUp
OwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBkM2FkNGYwMzNlMjE5ZTc1MTBjNjY0ZWRlYjcyNDZlZDQ3ODE2NzgxLi5j
OTM1Mzk5NzYzYjAyNWU0MmVkNzQxZDdhZWE4NDNmYTRkM2NhMTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAzNSw3ICsyMDM1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlQ29udGV4dE1lbnVMb29rVXBJbWFnZSgpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKLSAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51
Q29weUNyb3BwZWRJbWFnZShTaGFyZWFibGVCaXRtYXAmLCBjb25zdCBTdHJpbmcmIHByZWZlcnJl
ZE1JTUVUeXBlKTsKKyAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51Q29weUNyb3BwZWRJbWFnZShj
b25zdCBTdHJpbmcmIHByZWZlcnJlZE1JTUVUeXBlKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJM
RShDT05URVhUX01FTlVTKQogCkBAIC0yMTAyLDYgKzIxMDIsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgZXh0cmFjdFZpZGVvSW5FbGVtZW50RnVsbFNjcmVlbihXZWJDb3JlOjpNZWRpYVBsYXllcklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aWRlb0JvdW5kcyk7CiAgICAgdm9pZCBjYW5j
ZWxWaWRlb0V4dHJhY3Rpb25JbkVsZW1lbnRGdWxsU2NyZWVuKCk7CiAKKyNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICB2
b2lkIHNldENyb3BwZWRJbWFnZUZvckNvbnRleHRNZW51KENHSW1hZ2VSZWYpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkm
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKQEAgLTI3OTEsNiArMjc5NSwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBtX2FjdGl2ZUNvbnRleHRNZW51OwogICAgIENvbnRleHRNZW51Q29u
dGV4dERhdGEgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhOwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5U
UykKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVu
dTsKKyNlbmRpZgorCiAgICAgUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gbV9sYXN0TW91c2VN
b3ZlSGl0VGVzdFJlc3VsdDsKIAogICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5PiBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCAyZmQ5Mjkx
YzE3ZTU4ZjI2ZDMwOWFjMjMyMjQ2YjUwNWU4NmNlNGVlLi43ZmRhMDYyYTc1ZWM1ZjdlZGMxMDY2
ZGViM2JjMGMzNDI5MGU3OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQpAQCAtNjAxLDE3ICs2MDEsMjYgQEAgdm9p
ZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpnZXRDb250ZXh0TWVudUZyb21JdGVtcyhjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnUKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBjb3B5Q3JvcHBlZEltYWdlSXRlbTsKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGxvb2tVcEltYWdlSXRlbTsKIAog
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKLSAgICBmaWx0ZXJlZEl0ZW1zLnJlbW92ZUZpcnN0
TWF0Y2hpbmcoWyZdIChhdXRvJiBpdGVtKSB7Ci0gICAgICAgIGlmIChpdGVtLmFjdGlvbigpICE9
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEltYWdlKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIGxvb2tVcEltYWdlSXRlbSA9IHsgaXRlbSB9OwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBmaWx0ZXJlZEl0ZW1zLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAo
YXV0byYgaXRlbSkgeworICAgICAgICBzd2l0Y2ggKGl0ZW0uYWN0aW9uKCkpIHsKKyAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbWFnZToKKyAgICAgICAgICAgIEFTU0VSVCgh
bG9va1VwSW1hZ2VJdGVtKTsKKyAgICAgICAgICAgIGxvb2tVcEltYWdlSXRlbSA9IHsgaXRlbSB9
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnQ29weUNyb3BwZWRJbWFnZToKKyAgICAgICAgICAgIEFTU0VSVCghY29weUNyb3BwZWRJbWFn
ZUl0ZW0pOworICAgICAgICAgICAgY29weUNyb3BwZWRJbWFnZUl0ZW0gPSB7IGl0ZW0gfTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwotI2VuZGlmCisj
ZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCiAjaWYgSEFWRShUUkFOU0xBVElPTl9V
SV9TRVJWSUNFUykKICAgICBpZiAoIXBhZ2UoKS0+Y2FuSGFuZGxlQ29udGV4dE1lbnVUcmFuc2xh
dGlvbigpIHx8IGlzUG9wb3ZlcikgewpAQCAtNjI4LDcgKzYzNyw3IEBAIHZvaWQgV2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMoY29uc3QgVmVjdG9yPFdlYkNv
bnRleHRNZW51CiAgICAgYXV0byBpbWFnZUJpdG1hcCA9IGhpdFRlc3REYXRhLmltYWdlQml0bWFw
OwogCiAgICAgUmV0YWluUHRyIHNwYXJzZU1lbnVJdGVtcyA9IFtOU1BvaW50ZXJBcnJheSBzdHJv
bmdPYmplY3RzUG9pbnRlckFycmF5XTsKLSAgICBhdXRvIGluc2VydE1lbnVJdGVtID0gbWFrZUJs
b2NrUHRyKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgd2Vha1BhZ2UgPSBXZWFrUHRy
IHsgcGFnZSgpIH0sIGltYWdlVVJMID0gV1RGTW92ZShpbWFnZVVSTCksIGltYWdlQml0bWFwID0g
V1RGTW92ZShpbWFnZUJpdG1hcCksIGxvb2tVcEltYWdlSXRlbSA9IFdURk1vdmUobG9va1VwSW1h
Z2VJdGVtKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
aXRlbXNSZW1haW5pbmcgPSBmaWx0ZXJlZEl0ZW1zLnNpemUoKSwgbWVudSA9IFdURk1vdmUobWVu
dSksIHNwYXJzZU1lbnVJdGVtc10oTlNNZW51SXRlbSAqaXRlbSwgTlNVSW50ZWdlciBpbmRleCkg
bXV0YWJsZSB7CisgICAgYXV0byBpbnNlcnRNZW51SXRlbSA9IG1ha2VCbG9ja1B0cihbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHdlYWtQYWdlID0gV2Vha1B0ciB7IHBhZ2UoKSB9LCBp
bWFnZVVSTCA9IFdURk1vdmUoaW1hZ2VVUkwpLCBpbWFnZUJpdG1hcCA9IFdURk1vdmUoaW1hZ2VC
aXRtYXApLCBsb29rVXBJbWFnZUl0ZW0gPSBXVEZNb3ZlKGxvb2tVcEltYWdlSXRlbSksIGNvcHlD
cm9wcGVkSW1hZ2VJdGVtID0gV1RGTW92ZShjb3B5Q3JvcHBlZEltYWdlSXRlbSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGl0ZW1zUmVtYWluaW5nID0g
ZmlsdGVyZWRJdGVtcy5zaXplKCksIG1lbnUgPSBXVEZNb3ZlKG1lbnUpLCBzcGFyc2VNZW51SXRl
bXNdKE5TTWVudUl0ZW0gKml0ZW0sIE5TVUludGVnZXIgaW5kZXgpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlQoaW5kZXggPCBbc3BhcnNlTWVudUl0ZW1zIGNvdW50XSk7CiAgICAgICAgIEFTU0VS
VCghW3NwYXJzZU1lbnVJdGVtcyBwb2ludGVyQXRJbmRleDppbmRleF0pOwogICAgICAgICBbc3Bh
cnNlTWVudUl0ZW1zIHJlcGxhY2VQb2ludGVyQXRJbmRleDppbmRleCB3aXRoUG9pbnRlcjppdGVt
XTsKQEAgLTYzOCwxMiArNjQ3LDMxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Z2V0
Q29udGV4dE1lbnVGcm9tSXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51CiAgICAgICAg
IFttZW51IHNldEl0ZW1BcnJheTpbc3BhcnNlTWVudUl0ZW1zIGFsbE9iamVjdHNdXTsKIAogICAg
ICAgICBSZWZQdHIgcGFnZSA9IHdlYWtQYWdlLmdldCgpOwotICAgICAgICBpZiAobG9va1VwSW1h
Z2VJdGVtICYmIHBhZ2UgJiYgaW1hZ2VCaXRtYXApIHsKKyAgICAgICAgaWYgKHBhZ2UgJiYgaW1h
Z2VCaXRtYXApIHsKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCi0gICAgICAgICAgICBwYWdl
LT5jb21wdXRlSGFzVmlzdWFsU2VhcmNoUmVzdWx0cyhpbWFnZVVSTCwgKmltYWdlQml0bWFwLCBb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGxvb2tVcEltYWdlSXRlbSA9
IFdURk1vdmUoKmxvb2tVcEltYWdlSXRlbSldIChib29sIGhhc1Zpc3VhbFNlYXJjaFJlc3VsdHMp
IG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChoYXNWaXN1YWxTZWFyY2hSZXN1bHRzKQot
ICAgICAgICAgICAgICAgICAgICBbcHJvdGVjdGVkVGhpcy0+bV9tZW51IGFkZEl0ZW06Y3JlYXRl
TWVudUFjdGlvbkl0ZW0obG9va1VwSW1hZ2VJdGVtKS5nZXQoKV07Ci0gICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIGlmIChsb29rVXBJbWFnZUl0ZW0pIHsKKyAgICAgICAgICAgICAgICBwYWdl
LT5jb21wdXRlSGFzVmlzdWFsU2VhcmNoUmVzdWx0cyhpbWFnZVVSTCwgKmltYWdlQml0bWFwLCBb
cHJvdGVjdGVkVGhpcywgbG9va1VwSW1hZ2VJdGVtID0gV1RGTW92ZSgqbG9va1VwSW1hZ2VJdGVt
KV0gKGJvb2wgaGFzVmlzdWFsU2VhcmNoUmVzdWx0cykgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChoYXNWaXN1YWxTZWFyY2hSZXN1bHRzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgW3Byb3RlY3RlZFRoaXMtPm1fbWVudSBhZGRJdGVtOmNyZWF0ZU1lbnVBY3Rpb25JdGVtKGxv
b2tVcEltYWdlSXRlbSkuZ2V0KCldOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoY29weUNyb3BwZWRJbWFnZUl0ZW0pIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byBpbWFnZSA9IGltYWdlQml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKSkgewor
ICAgICAgICAgICAgICAgICAgICBwYWdlLT5zZXRDcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudShu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEltYWdlQW5hbHlzaXNNYXJrdXAo
aW1hZ2UuZ2V0KCksIFt3ZWFrUGFnZSwgcHJvdGVjdGVkVGhpcywgY29weUNyb3BwZWRJbWFnZUl0
ZW0gPSBXVEZNb3ZlKCpjb3B5Q3JvcHBlZEltYWdlSXRlbSldKGF1dG8gcmVzdWx0LCBhdXRvKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0ciBwYWdl
ID0gd2Vha1BhZ2UuZ2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhZ2UpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBwYWdlLT5zZXRDcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudShyZXN1bHQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgW3Byb3RlY3RlZFRoaXMtPm1fbWVudSBhZGRJdGVtOmNyZWF0ZU1l
bnVBY3Rpb25JdGVtKGNvcHlDcm9wcGVkSW1hZ2VJdGVtKS5nZXQoKV07CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICNlbHNlCiAgICAg
ICAgICAgICBVTlVTRURfUEFSQU0oaW1hZ2VVUkwpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjNThkZmIxMThhY2EzNTQ0
ODBlNDhmNTJlZDNkNTY0ZWYyZjk4MTA3Li5mNDIxZDk3NjkwNTM3NTA5MjAwNjZlNGEyMjk4NWYx
MzRkZTcxYWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KQEAgLTc4MSwyOSArNzgxLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93SW1h
Z2VJblF1aWNrTG9va1ByZXZpZXdQYW5lbChTaGFyZWFibGVCaXRtYXAmIGltYWdlQml0bWFwCiAK
ICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6aGFuZGxlQ29udGV4dE1lbnVDb3B5Q3JvcHBlZEltYWdlKFNoYXJlYWJsZUJpdG1hcCYg
aW1hZ2VCaXRtYXAsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkTUlNRVR5cGUpCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnUoQ0dJbWFnZVJlZiBpbWFnZSkK
IHsKLSAgICBhdXRvIGNoYW5nZUNvdW50ID0gTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJk
LmNoYW5nZUNvdW50OwotICAgIGF1dG8gcGVyZm9ybUNvcHkgPSBbY2hhbmdlQ291bnQsIHByZWZl
cnJlZE1JTUVUeXBlXShDR0ltYWdlUmVmIHJlc3VsdEltYWdlKSB7Ci0gICAgICAgIGF1dG8gcGFz
dGVib2FyZCA9IE5TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZDsKLSAgICAgICAgaWYgKGNo
YW5nZUNvdW50ICE9IHBhc3RlYm9hcmQuY2hhbmdlQ291bnQgfHwgIXJlc3VsdEltYWdlKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gW2RhdGEsIHR5cGVdID0gdHJhbnNjb2Rl
V2l0aFByZWZlcnJlZE1JTUVUeXBlKHJlc3VsdEltYWdlLCBwcmVmZXJyZWRNSU1FVHlwZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5pZGVu
dGlmaWVyKTsKLSAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuOworICAgIG1f
Y3JvcHBlZEltYWdlRm9yQ29udGV4dE1lbnUgPSBpbWFnZTsKK30KIAotICAgICAgICBbcGFzdGVi
b2FyZCBkZWNsYXJlVHlwZXM6QFsoX19icmlkZ2UgTlNTdHJpbmcgKil0eXBlLmdldCgpXSBvd25l
cjpuaWxdOwotICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmRhdGEuZ2V0KCkgZm9yVHlwZToo
X19icmlkZ2UgTlNTdHJpbmcgKil0eXBlLmdldCgpXTsKLSAgICB9Owordm9pZCBXZWJQYWdlUHJv
eHk6OmhhbmRsZUNvbnRleHRNZW51Q29weUNyb3BwZWRJbWFnZShjb25zdCBTdHJpbmcmIHByZWZl
cnJlZE1JTUVUeXBlKQoreworICAgIGlmICghbV9jcm9wcGVkSW1hZ2VGb3JDb250ZXh0TWVudSkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBvcmlnaW5hbEltYWdlID0gaW1hZ2VCaXRtYXAu
bWFrZUNHSW1hZ2VDb3B5KCk7Ci0gICAgaWYgKCFvcmlnaW5hbEltYWdlKQorICAgIGF1dG8gW2Rh
dGEsIHR5cGVdID0gdHJhbnNjb2RlV2l0aFByZWZlcnJlZE1JTUVUeXBlKG1fY3JvcHBlZEltYWdl
Rm9yQ29udGV4dE1lbnUuZ2V0KCksIHByZWZlcnJlZE1JTUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZilVVFR5cGVUSUZGLmlkZW50aWZpZXIpOworICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdEltYWdlQW5hbHlzaXNN
YXJrdXAob3JpZ2luYWxJbWFnZS5nZXQoKSwgW3BlcmZvcm1Db3B5ID0gV1RGTW92ZShwZXJmb3Jt
Q29weSldKGF1dG8gaW1hZ2UsIGF1dG8pIHsKLSAgICAgICAgcGVyZm9ybUNvcHkoaW1hZ2UpOwot
ICAgIH0pOworICAgIGF1dG8gcGFzdGVib2FyZCA9IE5TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVi
b2FyZDsKKyAgICBhdXRvIHBhc3RlYm9hcmRUeXBlID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdHlw
ZS5nZXQoKTsKKyAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6QFtwYXN0ZWJvYXJkVHlwZV0g
b3duZXI6bmlsXTsKKyAgICBbcGFzdGVib2FyZCBzZXREYXRhOmRhdGEuZ2V0KCkgZm9yVHlwZTpw
YXN0ZWJvYXJkVHlwZV07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5I
QU5DRU1FTlRTKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>