<?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>234669</bug_id>
          
          <creation_ts>2021-12-24 12:19:38 -0800</creation_ts>
          <short_desc>Modal containers are incorrectly detected in navigation elements and fixed document elements</short_desc>
          <delta_ts>2022-01-02 15:06:58 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234787</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>234652</dependson>
          
          <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>darin</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>1826749</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-24 12:19:38 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826768</commentid>
    <comment_count>1</comment_count>
      <attachid>447948</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-24 15:06:51 -0800</bug_when>
    <thetext>Created attachment 447948
Depends on #234652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827357</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-31 12:20:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/87030613&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827391</commentid>
    <comment_count>3</comment_count>
      <attachid>447948</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-31 21:35:49 -0800</bug_when>
    <thetext>Comment on attachment 447948
Depends on #234652

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

&gt; Source/WebCore/page/ModalContainerObserver.cpp:136
&gt; +static AccessibilityRole accessibilityRole(const HTMLElement&amp; element)
&gt; +{
&gt; +    return AccessibilityObject::ariaRoleToWebCoreRole(element.attributeWithoutSynchronization(HTMLNames::roleAttr));
&gt; +}

Not thrilled with the layering here. If the concept of a navigation element is needed outside the accessibility code, ideally we’d put the parsing of the role attribute in the core DOM implementation and have accessibility use that, rather than calling up to the accessibility code from the core DOM.

&gt; Source/WebCore/page/ModalContainerObserver.cpp:316
&gt; +            observer-&gt;revealModalContainer();

Seems unsafe to sprinkle this before 4 different return statements. Is there some more straightforward way to make sure we do this in all the appropriate cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827429</commentid>
    <comment_count>4</comment_count>
      <attachid>447948</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 10:51:32 -0800</bug_when>
    <thetext>Comment on attachment 447948
Depends on #234652

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

Thanks for the review!

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:136
&gt;&gt; +}
&gt; 
&gt; Not thrilled with the layering here. If the concept of a navigation element is needed outside the accessibility code, ideally we’d put the parsing of the role attribute in the core DOM implementation and have accessibility use that, rather than calling up to the accessibility code from the core DOM.

That makes sense. To clarify, are you suggesting that we should move `ariaRoleToWebCoreRole` into a method on `Element`, maybe as just `Element::accessibilityRole() const`, and then use that from both AX (and other parts of WebKit?).

If my understanding is correct, I&apos;ll work on that refactoring separately.

&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:316
&gt;&gt; +            observer-&gt;revealModalContainer();
&gt; 
&gt; Seems unsafe to sprinkle this before 4 different return statements. Is there some more straightforward way to make sure we do this in all the appropriate cases?

It&apos;s a little bit tricky, since there are cases where we do want to continue hiding the detected modal container, depending on the client decision (and availability of controls we were able to detect in the &quot;modal container&quot;).

However, after giving this some more thought, perhaps a RAII-like helper object might be appropriate here (with a method to explicitly prevent revealing the modal container upon destruction, that would be invoked in only one place). I&apos;ll do this refactoring as a part of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827435</commentid>
    <comment_count>5</comment_count>
      <attachid>447948</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-01 11:28:16 -0800</bug_when>
    <thetext>Comment on attachment 447948
Depends on #234652

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

&gt;&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:136
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Not thrilled with the layering here. If the concept of a navigation element is needed outside the accessibility code, ideally we’d put the parsing of the role attribute in the core DOM implementation and have accessibility use that, rather than calling up to the accessibility code from the core DOM.
&gt; 
&gt; That makes sense. To clarify, are you suggesting that we should move `ariaRoleToWebCoreRole` into a method on `Element`, maybe as just `Element::accessibilityRole() const`, and then use that from both AX (and other parts of WebKit?).
&gt; 
&gt; If my understanding is correct, I&apos;ll work on that refactoring separately.

That is my suggestion. Might need a little bit other straightening up to make it a good core DOM concept, but yes. It doesn’t absolutely *have* to be a member function of the Element class -- there may be some value of putting it in a separate header -- but it should not be in the accessibility directory, since the accessibility is generally layered on top of the core DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827443</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 12:25:25 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 447948 [details]
&gt; Depends on #234652
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=447948&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/page/ModalContainerObserver.cpp:136
&gt; &gt;&gt;&gt; +}
&gt; &gt;&gt; 
&gt; &gt;&gt; Not thrilled with the layering here. If the concept of a navigation element is needed outside the accessibility code, ideally we’d put the parsing of the role attribute in the core DOM implementation and have accessibility use that, rather than calling up to the accessibility code from the core DOM.
&gt; &gt; 
&gt; &gt; That makes sense. To clarify, are you suggesting that we should move `ariaRoleToWebCoreRole` into a method on `Element`, maybe as just `Element::accessibilityRole() const`, and then use that from both AX (and other parts of WebKit?).
&gt; &gt; 
&gt; &gt; If my understanding is correct, I&apos;ll work on that refactoring separately.
&gt; 
&gt; That is my suggestion. Might need a little bit other straightening up to
&gt; make it a good core DOM concept, but yes. It doesn’t absolutely *have* to be
&gt; a member function of the Element class -- there may be some value of putting
&gt; it in a separate header -- but it should not be in the accessibility
&gt; directory, since the accessibility is generally layered on top of the core
&gt; DOM.

Okay! Filed https://bugs.webkit.org/show_bug.cgi?id=234787 for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827451</commentid>
    <comment_count>7</comment_count>
      <attachid>448161</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 13:14:08 -0800</bug_when>
    <thetext>Created attachment 448161
Replace revealModalContainer calls with RAII helper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827454</commentid>
    <comment_count>8</comment_count>
      <attachid>448163</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 14:03:35 -0800</bug_when>
    <thetext>Created attachment 448163
Use WTF_MAKE_NONCOPYABLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827457</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-01 15:07:33 -0800</bug_when>
    <thetext>Committed r287505 (245640@main): &lt;https://commits.webkit.org/245640@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448163.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447948</attachid>
            <date>2021-12-24 15:06:51 -0800</date>
            <delta_ts>2022-01-01 13:14:06 -0800</delta_ts>
            <desc>Depends on #234652</desc>
            <filename>bug-234669-20211224150650.patch</filename>
            <type>text/plain</type>
            <size>11294</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE0Y2IxZDRiMmU2MzM4
NWFiMDgxNzU0OWYwYjAyNDkzZjgzYTgwMS4uN2JiYzEyMTkwZGIzOWY4YjY0ZTlkMzE1NjkyOGYz
NjA3Nzc2ZjJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEyLTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGFsIGNvbnRh
aW5lcnMgYXJlIGluY29ycmVjdGx5IGRldGVjdGVkIGluIG5hdmlnYXRpb24gZWxlbWVudHMgYW5k
IGZpeGVkIGRvY3VtZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQ2NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBdm9pZCBmYWxzZSBwb3NpdGl2ZXMgd2hlbiBkZXRlY3RpbmcgbW9k
YWwgY29udGFpbmVycyBpbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlvczoKKyAgICAgICAgLSBGaXhl
ZC1wb3NpdGlvbiBkb2N1bWVudCBlbGVtZW50cyB0aGF0IGNvbnRhaW4gdGhlIHNlYXJjaCB0ZXJt
LgorICAgICAgICAtIFRleHQgdGhhdCBjb250YWlucyB0aGUgc2VhcmNoIHRlcm0gaW5zaWRlIGZp
eGVkLXBvc2l0aW9uIG5hdmlnYXRpb24gZWxlbWVudHMuCisKKyAgICAgICAgQWRkaXRpb25hbGx5
LCBlbnN1cmUgdGhhdCB3ZSB1bmhpZGUgdGhlIGN1cnJlbnQgbW9kYWwgY29udGFpbmVyIGluIHRo
ZSBldmVudCBvZiBhIGZhbHNlIHBvc2l0aXZlIHdoZXJlIHdlIGZpbmQKKyAgICAgICAgbm8gZWxl
bWVudCB0aGF0IGZ1bGZpbGxzIHRoZSBjcml0ZXJpYSBmb3IgYmVpbmcgYSBjbGFzc2lmaWFibGUg
Y29udHJvbC4KKworICAgICAgICBUZXN0czogIE1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb24uSWdu
b3JlRml4ZWREb2N1bWVudEVsZW1lbnQKKyAgICAgICAgICAgICAgICBNb2RhbENvbnRhaW5lck9i
c2VydmF0aW9uLklnbm9yZU5hdmlnYXRpb25FbGVtZW50cworICAgICAgICAgICAgICAgIE1vZGFs
Q29udGFpbmVyT2JzZXJ2YXRpb24uU2hvd01vZGFsQ29udGFpbmVyQWZ0ZXJGYWxzZVBvc2l0aXZl
CisKKyAgICAgICAgKiBwYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJvbGUpOgorCisgICAgICAgIE1vdmUgdGhpcyBzdGF0aWMg
aGVscGVyIGZ1bmN0aW9uIGZhcnRoZXIgdXAgdGhpcyBzb3VyY2UgZmlsZSwgc28gdGhhdCB3ZSBj
YW4gdXNlIGl0IGluc2lkZQorICAgICAgICBgdXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRlZCgp
YC4KKworICAgICAgICAoV2ViQ29yZTo6aXNJbnNpZGVOYXZpZ2F0aW9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5lck9ic2VydmVyOjp1cGRhdGVNb2RhbENvbnRhaW5l
cklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNv
bGxlY3RDbGlja2FibGVFbGVtZW50c1RpbWVyRmlyZWQpOgorCiAyMDIxLTEyLTI0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEluY2x1ZGUgYSBmZXcg
bW9yZSB0YWcgbmFtZXMgdG8gc2VhcmNoIHdoZW4gcnVubmluZyBtb2RhbCBjb250YWluZXIgZGV0
ZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2Jz
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNw
cAppbmRleCA5Nzk4MDY3Mjc3OGQyZmE1M2ZjNDY5M2E3MWViOGY5MzA3ZTI4NDFjLi5iNTZkNTZm
ZGY3MjdhZWU2NTY3ZGIxMzMyZmQyYjRjZTRlNmYzYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAKQEAgLTEzMCw2ICsxMzAsMjAgQEAgc3Rh
dGljIGJvb2wgbWF0Y2hlc1NlYXJjaFRlcm0oY29uc3QgVGV4dCYgdGV4dE5vZGUsIGNvbnN0IEF0
b21TdHJpbmcmIHNlYXJjaFRlcm0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEFjY2Vz
c2liaWxpdHlSb2xlIGFjY2Vzc2liaWxpdHlSb2xlKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50
KQoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJv
bGUoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6cm9s
ZUF0dHIpKTsKK30KKworc3RhdGljIGJvb2wgaXNJbnNpZGVOYXZpZ2F0aW9uRWxlbWVudChjb25z
dCBUZXh0JiB0ZXh0Tm9kZSkKK3sKKyAgICBmb3IgKGF1dG8mIHBhcmVudCA6IGFuY2VzdG9yc09m
VHlwZTxIVE1MRWxlbWVudD4odGV4dE5vZGUpKSB7CisgICAgICAgIGlmIChwYXJlbnQuaGFzVGFn
TmFtZShIVE1MTmFtZXM6Om5hdlRhZykgfHwgYWNjZXNzaWJpbGl0eVJvbGUocGFyZW50KSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBNb2RhbENvbnRhaW5l
ck9ic2VydmVyOjp1cGRhdGVNb2RhbENvbnRhaW5lcklmTmVlZGVkKGNvbnN0IEZyYW1lVmlldyYg
dmlldykKIHsKICAgICBpZiAobV9jb250YWluZXIpCkBAIC0xNTUsNiArMTY5LDkgQEAgdm9pZCBN
b2RhbENvbnRhaW5lck9ic2VydmVyOjp1cGRhdGVNb2RhbENvbnRhaW5lcklmTmVlZGVkKGNvbnN0
IEZyYW1lVmlldyYgdmlldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRvJiByZW5k
ZXJlciA6ICp2aWV3LnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCkpIHsKKyAgICAgICAgaWYg
KHJlbmRlcmVyLmlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCiAgICAgICAgIFJlZlB0ciBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpOwogICAg
ICAgICBpZiAoIWVsZW1lbnQgfHwgaXM8SFRNTEJvZHlFbGVtZW50PigqZWxlbWVudCkgfHwgZWxl
bWVudC0+aXNEb2N1bWVudE5vZGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTY0LDYg
KzE4MSw5IEBAIHZvaWQgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6dXBkYXRlTW9kYWxDb250YWlu
ZXJJZk5lZWRlZChjb25zdCBGcmFtZVZpZXcmIHZpZXcpCiAKICAgICAgICAgZm9yIChhdXRvJiB0
ZXh0UmVuZGVyZXIgOiBkZXNjZW5kYW50c09mVHlwZTxSZW5kZXJUZXh0PihyZW5kZXJlcikpIHsK
ICAgICAgICAgICAgIGlmIChSZWZQdHIgdGV4dE5vZGUgPSB0ZXh0UmVuZGVyZXIudGV4dE5vZGUo
KTsgdGV4dE5vZGUgJiYgbWF0Y2hlc1NlYXJjaFRlcm0oKnRleHROb2RlLCBzZWFyY2hUZXJtKSkg
eworICAgICAgICAgICAgICAgIGlmIChpc0luc2lkZU5hdmlnYXRpb25FbGVtZW50KCp0ZXh0Tm9k
ZSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAgICAgbV9jb250
YWluZXIgPSBlbGVtZW50LmdldCgpOwogICAgICAgICAgICAgICAgIGVsZW1lbnQtPmludmFsaWRh
dGVTdHlsZSgpOwogICAgICAgICAgICAgICAgIHNjaGVkdWxlQ2xpY2thYmxlRWxlbWVudENvbGxl
Y3Rpb24oKTsKQEAgLTE3MywxMSArMTkzLDYgQEAgdm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVy
Ojp1cGRhdGVNb2RhbENvbnRhaW5lcklmTmVlZGVkKGNvbnN0IEZyYW1lVmlldyYgdmlldykKICAg
ICB9CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5Um9sZSBhY2Nlc3NpYmlsaXR5Um9sZShjb25z
dCBIVE1MRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVj
dDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OnJvbGVBdHRyKSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzQ2xpY2th
YmxlQ29udHJvbChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoZWxlbWVu
dC5pc0FjdHVhbGx5RGlzYWJsZWQoKSkKQEAgLTI5Nyw4ICszMTIsMTAgQEAgdm9pZCBNb2RhbENv
bnRhaW5lck9ic2VydmVyOjpjb2xsZWN0Q2xpY2thYmxlRWxlbWVudHNUaW1lckZpcmVkKCkKICAg
ICAgICAgfQogCiAgICAgICAgIGF1dG8gW2NsYXNzaWZpYWJsZUNvbnRyb2xzLCBjb250cm9sVGV4
dHNUb0NsYXNzaWZ5XSA9IG9ic2VydmVyLT5jb2xsZWN0Q2xpY2thYmxlRWxlbWVudHMoKTsKLSAg
ICAgICAgaWYgKGNsYXNzaWZpYWJsZUNvbnRyb2xzLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKGNs
YXNzaWZpYWJsZUNvbnRyb2xzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgb2JzZXJ2ZXItPnJl
dmVhbE1vZGFsQ29udGFpbmVyKCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAog
ICAgICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdl
KSB7CkBAIC0zMDcsOSArMzI0LDYgQEAgdm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjpjb2xs
ZWN0Q2xpY2thYmxlRWxlbWVudHNUaW1lckZpcmVkKCkKICAgICAgICAgfQogCiAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLmNsYXNzaWZ5TW9kYWxDb250YWluZXJDb250cm9scyhXVEZN
b3ZlKGNvbnRyb2xUZXh0c1RvQ2xhc3NpZnkpLCBbd2Vha0RvY3VtZW50ID0gV1RGTW92ZSh3ZWFr
RG9jdW1lbnQpLCBvYnNlcnZlciwgY29udHJvbHMgPSBXVEZNb3ZlKGNsYXNzaWZpYWJsZUNvbnRy
b2xzKV0gKGF1dG8mJiB0eXBlcykgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAodHlwZXMuc2l6
ZSgpICE9IGNvbnRyb2xzLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KICAgICAg
ICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IHdlYWtEb2N1bWVudC5nZXQoKTsKICAgICAgICAgICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzI1LDYgKzMzOSwx
MSBAQCB2b2lkIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNvbGxlY3RDbGlja2FibGVFbGVtZW50
c1RpbWVyRmlyZWQoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAor
ICAgICAgICAgICAgaWYgKHR5cGVzLnNpemUoKSAhPSBjb250cm9scy5zaXplKCkpIHsKKyAgICAg
ICAgICAgICAgICBvYnNlcnZlci0+cmV2ZWFsTW9kYWxDb250YWluZXIoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHN0cnVjdCBDbGFzc2lm
aWVkQ29udHJvbHMgewogICAgICAgICAgICAgICAgIFZlY3RvcjxXZWFrUHRyPEhUTUxFbGVtZW50
Pj4gcG9zaXRpdmU7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFdlYWtQdHI8SFRNTEVsZW1lbnQ+
PiBuZXV0cmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGNmYTkxNzQ4NTI3MDRkYzMyMzY4YTViMTFmYWZmMmNjZTk1NTJjYzkuLmI2MmExMjNm
ODAxMWQ1MDZlZjU1YzUzY2E5M2NkZDM1MWQ1OWY2MjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0xMi0yNCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBNb2RhbCBj
b250YWluZXJzIGFyZSBpbmNvcnJlY3RseSBkZXRlY3RlZCBpbiBuYXZpZ2F0aW9uIGVsZW1lbnRz
IGFuZCBmaXhlZCBkb2N1bWVudCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHNldmVyYWwgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lz
ZSB0aGUgY2hhbmdlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvTW9kYWxDb250YWluZXJPYnNlcnZhdGlvbi5tbToKKyAgICAgICAgKC1bTW9kYWxDb250YWlu
ZXJXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bTW9k
YWxDb250YWluZXJXZWJWaWV3IGxvYWRIVE1MOl0pOgorICAgICAgICAoLVtNb2RhbENvbnRhaW5l
cldlYlZpZXcgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTW9kYWxDb250YWluZXI6ZGVjaXNpb25I
YW5kbGVyOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMTItMjQg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jbHVk
ZSBhIGZldyBtb3JlIHRhZyBuYW1lcyB0byBzZWFyY2ggd2hlbiBydW5uaW5nIG1vZGFsIGNvbnRh
aW5lciBkZXRlY3Rpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTW9kYWxDb250YWluZXJPYnNlcnZhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTW9kYWxDb250YWluZXJPYnNlcnZhdGlvbi5tbQppbmRleCAz
NDVkOTdiNDhjNmZhOGFlMDI4MzNhNTZlODRlMzA1ZDRhMjkwMzFiLi40ZmY1YmQxMzBiMmQ4MTgx
OTQyODNlMDk1MmE0ZWM0MWRkNDM4MmYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL01vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb24ubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Nb2RhbENvbnRhaW5lck9ic2VydmF0
aW9uLm1tCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJUZXN0LmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJU
ZXN0UHJvdG9jb2wuaCIKQEAgLTg2LDYgKzg3LDcgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKIAogQGludGVyZmFjZSBNb2RhbENvbnRhaW5lcldlYlZpZXcgOiBUZXN0
V0tXZWJWaWV3IDxXS1VJRGVsZWdhdGVQcml2YXRlPgorQHByb3BlcnR5IChub25hdG9taWMpIF9X
S01vZGFsQ29udGFpbmVyRGVjaXNpb24gZGVjaXNpb247CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIF9XS01vZGFsQ29udGFpbmVySW5mbyAqbGFzdE1vZGFsQ29udGFpbmVySW5mbzsK
IEBlbmQKIApAQCAtOTMsNyArOTUsNiBAQCBAaW1wbGVtZW50YXRpb24gTW9kYWxDb250YWluZXJX
ZWJWaWV3IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFdlYktpdEFQSTo6Q2xhc3NpZmllck1v
ZGVsU3dpenpsZXI+IF9jbGFzc2lmaWVyTW9kZWxTd2l6emxlcjsKICAgICBSZXRhaW5QdHI8VGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZT4gX25hdmlnYXRpb25EZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8
X1dLTW9kYWxDb250YWluZXJJbmZvPiBfbGFzdE1vZGFsQ29udGFpbmVySW5mbzsKLSAgICBzdGQ6
Om9wdGlvbmFsPF9XS01vZGFsQ29udGFpbmVyRGVjaXNpb24+IF9kZWNpc2lvbjsKICAgICBib29s
IF9kb25lV2FpdGluZ0ZvckRlY2lzaW9uSGFuZGxlcjsKIH0KIApAQCAtMTA3LDYgKzEwOCw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAgICAgICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJX
aXRoU2NoZW1lOkAiaHR0cCJdOwogICAgIH0pOwogCisgICAgX2RlY2lzaW9uID0gX1dLTW9kYWxD
b250YWluZXJEZWNpc2lvblNob3c7CiAgICAgX2NsYXNzaWZpZXJNb2RlbFN3aXp6bGVyID0gbWFr
ZVVuaXF1ZTxUZXN0V2ViS2l0QVBJOjpDbGFzc2lmaWVyTW9kZWxTd2l6emxlcj4oKTsKICAgICBf
bmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKICAgICBfZG9uZVdhaXRpbmdGb3JEZWNpc2lvbkhhbmRsZXIgPSB0cnVlOwpA
QCAtMTQ4LDkgKzE1MCwyNiBAQCAtICh2b2lkKWxvYWRCdW5kbGVQYWdlOihOU1N0cmluZyAqKXBh
Z2UKICAgICBbX25hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbldp
dGhQcmVmZXJlbmNlczpwcmVmZXJlbmNlcy5nZXQoKV07CiB9CiAKKy0gKHZvaWQpbG9hZEhUTUw6
KE5TU3RyaW5nICopaHRtbAoreworICAgIE5TVVJMUmVxdWVzdCAqZmFrZVJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dl
YmtpdC5vcmciXV07CisgICAgW3NlbGYgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6ZmFrZVJlcXVlc3Qg
cmVzcG9uc2VIVE1MU3RyaW5nOmh0bWxdOworCisgICAgYXV0byBwcmVmZXJlbmNlcyA9IGFkb3B0
TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOworICAgIFtwcmVmZXJlbmNl
cyBfc2V0TW9kYWxDb250YWluZXJPYnNlcnZhdGlvblBvbGljeTpfV0tXZWJzaXRlTW9kYWxDb250
YWluZXJPYnNlcnZhdGlvblBvbGljeVByb21wdF07CisgICAgW19uYXZpZ2F0aW9uRGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25XaXRoUHJlZmVyZW5jZXM6cHJlZmVyZW5jZXMuZ2V0
KCldOworfQorCistICh2b2lkKXdhaXRGb3JUZXh0OihOU1N0cmluZyAqKXRleHQKK3sKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdKCkgLT4g
Ym9vbCB7CisgICAgICAgIHJldHVybiBbc2VsZi5jb250ZW50c0FzU3RyaW5nIGNvbnRhaW5zU3Ry
aW5nOnRleHRdOworICAgIH0sIDMsIEAiVGltZWQgb3V0IHdhaXRpbmcgZm9yICclQCciLCB0ZXh0
KTsKK30KKwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JNb2RhbENvbnRhaW5lcjooX1dLTW9kYWxDb250YWluZXJJbmZvICopY29udGFpbmVySW5m
byBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS01vZGFsQ29udGFpbmVyRGVjaXNpb24pKWhh
bmRsZXIKIHsKLSAgICBoYW5kbGVyKF9kZWNpc2lvbi52YWx1ZV9vcihfV0tNb2RhbENvbnRhaW5l
ckRlY2lzaW9uU2hvdykpOworICAgIGhhbmRsZXIoX2RlY2lzaW9uKTsKICAgICBfbGFzdE1vZGFs
Q29udGFpbmVySW5mbyA9IGNvbnRhaW5lckluZm87CiAgICAgX2RvbmVXYWl0aW5nRm9yRGVjaXNp
b25IYW5kbGVyID0gdHJ1ZTsKIH0KQEAgLTIzMiw0ICsyNTEsNDEgQEAgVEVTVChNb2RhbENvbnRh
aW5lck9ic2VydmF0aW9uLCBEZXRlY3RTZWFyY2hUZXJtSW5Cb2xkVGFnKQogICAgIEVYUEVDVF9F
UShbd2ViVmlldyBsYXN0TW9kYWxDb250YWluZXJJbmZvXS5hdmFpbGFibGVUeXBlcywgX1dLTW9k
YWxDb250YWluZXJDb250cm9sVHlwZVBvc2l0aXZlIHwgX1dLTW9kYWxDb250YWluZXJDb250cm9s
VHlwZU5lZ2F0aXZlKTsKIH0KIAorVEVTVChNb2RhbENvbnRhaW5lck9ic2VydmF0aW9uLCBJZ25v
cmVGaXhlZERvY3VtZW50RWxlbWVudCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVNb2Rh
bENvbnRhaW5lcldlYlZpZXcoKTsKKyAgICBbd2ViVmlldyBzZXREZWNpc2lvbjpfV0tNb2RhbENv
bnRhaW5lckRlY2lzaW9uSGlkZUFuZElnbm9yZV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUw6QCgi
PGhlYWQ+IgorICAgICAgICAiPHNjcmlwdD5pbnRlcm5hbHMub3ZlcnJpZGVNb2RhbENvbnRhaW5l
clNlYXJjaFRlcm1Gb3JUZXN0aW5nKCdmb28nKTwvc2NyaXB0PiIKKyAgICAgICAgIjxzdHlsZT5o
dG1sIHsgcG9zaXRpb246IGZpeGVkOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB0b3A6IDA7
IGxlZnQ6IDA7IH08L3N0eWxlPiIKKyAgICAgICAgIjwvaGVhZD48Ym9keT48aDE+Zm9vIGJhcjwv
aDE+PC9ib2R5PiIpXTsKKworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBjb250ZW50c0FzU3Ry
aW5nXSBjb250YWluc1N0cmluZzpAImZvbyBiYXIiXSk7CisgICAgRVhQRUNUX05VTEwoW3dlYlZp
ZXcgbGFzdE1vZGFsQ29udGFpbmVySW5mb10pOworfQorCitURVNUKE1vZGFsQ29udGFpbmVyT2Jz
ZXJ2YXRpb24sIElnbm9yZU5hdmlnYXRpb25FbGVtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBjcmVhdGVNb2RhbENvbnRhaW5lcldlYlZpZXcoKTsKKyAgICBbd2ViVmlldyBzZXREZWNpc2lv
bjpfV0tNb2RhbENvbnRhaW5lckRlY2lzaW9uSGlkZUFuZElnbm9yZV07CisgICAgW3dlYlZpZXcg
bG9hZEJ1bmRsZVBhZ2U6QCJtb2RhbC1jb250YWluZXItY3VzdG9tIl07CisgICAgW3dlYlZpZXcg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNob3coYDxuYXY+aGVsbG8gd29ybGQgMTwv
bmF2PjxkaXYgcm9sZT0nbmF2aWdhdGlvbic+aGVsbG8gd29ybGQgMjwvZGl2PmApIl07CisgICAg
W3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX1RS
VUUoW1t3ZWJWaWV3IGNvbnRlbnRzQXNTdHJpbmddIGNvbnRhaW5zU3RyaW5nOkAiaGVsbG8gd29y
bGQgMSJdKTsKKyAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgY29udGVudHNBc1N0cmluZ10gY29u
dGFpbnNTdHJpbmc6QCJoZWxsbyB3b3JsZCAyIl0pOworICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3
IGxhc3RNb2RhbENvbnRhaW5lckluZm9dKTsKK30KKworVEVTVChNb2RhbENvbnRhaW5lck9ic2Vy
dmF0aW9uLCBTaG93TW9kYWxDb250YWluZXJBZnRlckZhbHNlUG9zaXRpdmUpCit7CisgICAgYXV0
byB3ZWJWaWV3ID0gY3JlYXRlTW9kYWxDb250YWluZXJXZWJWaWV3KCk7CisgICAgW3dlYlZpZXcg
c2V0RGVjaXNpb246X1dLTW9kYWxDb250YWluZXJEZWNpc2lvbkhpZGVBbmRJZ25vcmVdOworICAg
IFt3ZWJWaWV3IGxvYWRCdW5kbGVQYWdlOkAibW9kYWwtY29udGFpbmVyLWN1c3RvbSJdOworICAg
IFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzaG93KGA8ZGl2PmhlbGxv
IHdvcmxkPC9kaXY+PGEgaHJlZj0naHR0cHM6Ly9hcHBsZS5jb20nPkNsaWNrIGhlcmU8L2E+YCki
XTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgW3dl
YlZpZXcgd2FpdEZvclRleHQ6QCJoZWxsbyB3b3JsZCJdOworICAgIEVYUEVDVF9OVUxMKFt3ZWJW
aWV3IGxhc3RNb2RhbENvbnRhaW5lckluZm9dKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448161</attachid>
            <date>2022-01-01 13:14:08 -0800</date>
            <delta_ts>2022-01-01 14:03:34 -0800</delta_ts>
            <desc>Replace revealModalContainer calls with RAII helper</desc>
            <filename>bug-234669-20220101131407.patch</filename>
            <type>text/plain</type>
            <size>16083</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc3ZTU3M2VlMjI0NTA1
NGJhMTNjMzJiODEyOGNjMTMwZGU5YjdlYy4uNGJmMmQ4MTg5NTA2ZTk5N2QwNzRmYzVjZWQ2OGQ1
MWI3NmIxMDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAxLTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGFsIGNvbnRh
aW5lcnMgYXJlIGluY29ycmVjdGx5IGRldGVjdGVkIGluIG5hdmlnYXRpb24gZWxlbWVudHMgYW5k
IGZpeGVkIGRvY3VtZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQ2NjkKKyAgICAgICAgcmRhcjovLzg3MDMwNjEzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQXZvaWQgZmFsc2UgcG9zaXRp
dmVzIHdoZW4gZGV0ZWN0aW5nIG1vZGFsIGNvbnRhaW5lcnMgaW4gdGhlIGZvbGxvd2luZyBzY2Vu
YXJpb3M6CisgICAgICAgIC0gRml4ZWQtcG9zaXRpb24gZG9jdW1lbnQgZWxlbWVudHMgdGhhdCBj
b250YWluIHRoZSBzZWFyY2ggdGVybS4KKyAgICAgICAgLSBUZXh0IHRoYXQgY29udGFpbnMgdGhl
IHNlYXJjaCB0ZXJtIGluc2lkZSBmaXhlZC1wb3NpdGlvbiBuYXZpZ2F0aW9uIGVsZW1lbnRzLgor
CisgICAgICAgIEFkZGl0aW9uYWxseSwgZW5zdXJlIHRoYXQgd2UgdW5oaWRlIHRoZSBjdXJyZW50
IG1vZGFsIGNvbnRhaW5lciBpbiB0aGUgZXZlbnQgb2YgYSBmYWxzZSBwb3NpdGl2ZSB3aGVyZSB3
ZSBmaW5kCisgICAgICAgIG5vIGVsZW1lbnQgdGhhdCBmdWxmaWxscyB0aGUgY3JpdGVyaWEgZm9y
IGJlaW5nIGEgY2xhc3NpZmlhYmxlIGNvbnRyb2wuCisKKyAgICAgICAgVGVzdHM6ICBNb2RhbENv
bnRhaW5lck9ic2VydmF0aW9uLklnbm9yZUZpeGVkRG9jdW1lbnRFbGVtZW50CisgICAgICAgICAg
ICAgICAgTW9kYWxDb250YWluZXJPYnNlcnZhdGlvbi5JZ25vcmVOYXZpZ2F0aW9uRWxlbWVudHMK
KyAgICAgICAgICAgICAgICBNb2RhbENvbnRhaW5lck9ic2VydmF0aW9uLlNob3dNb2RhbENvbnRh
aW5lckFmdGVyRmFsc2VQb3NpdGl2ZQorCisgICAgICAgICogcGFnZS9Nb2RhbENvbnRhaW5lck9i
c2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlKToKKworICAg
ICAgICBNb3ZlIHRoaXMgc3RhdGljIGhlbHBlciBmdW5jdGlvbiBmYXJ0aGVyIHVwIHRoaXMgc291
cmNlIGZpbGUsIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBpbnNpZGUKKyAgICAgICAgYHVwZGF0ZU1v
ZGFsQ29udGFpbmVySWZOZWVkZWQoKWAuCisKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5zaWRlTmF2
aWdhdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9kYWxDb250YWluZXJPYnNlcnZl
cjo6dXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Rh
bENvbnRhaW5lclBvbGljeURlY2lzaW9uU2NvcGU6Ok1vZGFsQ29udGFpbmVyUG9saWN5RGVjaXNp
b25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5lclBvbGljeURlY2lzaW9u
U2NvcGU6On5Nb2RhbENvbnRhaW5lclBvbGljeURlY2lzaW9uU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9kYWxDb250YWluZXJQb2xpY3lEZWNpc2lvblNjb3BlOjpjb250aW51ZUhpZGluZ01v
ZGFsQ29udGFpbmVyQWZ0ZXJTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5l
clBvbGljeURlY2lzaW9uU2NvcGU6OmRvY3VtZW50IGNvbnN0KToKKworICAgICAgICBBZGQgYSBS
QUlJIGhlbHBlciBvYmplY3QgdG8gZW5zdXJlIHRoYXQgdGhlIG1vZGFsIGNvbnRhaW5lciBpcyBy
ZXZlYWxlZCBhdCB0aGUgZW5kIG9mIHRoZSBtb2RhbCBjb250YWluZXIgcG9saWN5CisgICAgICAg
IGRlY2lzaW9uIHNjb3BlLCB1bmxlc3MgYGNvbnRpbnVlSGlkaW5nTW9kYWxDb250YWluZXJBZnRl
clNjb3BlKClgIGlzIGludm9rZWQuIFNpbmNlIHRoaXMgY2xhc3MgY29udGFpbnMgYQorICAgICAg
ICBgV2Vha1B0cjxEb2N1bWVudD5gIGFscmVhZHksIHdlIGNhbiByZXBsYWNlIHRoZSBgV2Vha1B0
cjxEb2N1bWVudD5gIHdlJ3JlIGN1cnJlbnRseSBwbHVtYmluZyB0aHJvdWdoIGVhY2ggb2YgdGhl
CisgICAgICAgIGFzeW5jIGNhbGxiYWNrcyB3aXRoIG9ubHkgdGhlIGBNb2RhbENvbnRhaW5lclBv
bGljeURlY2lzaW9uU2NvcGVgLCBhbmQganVzdCBncmFiIHRoZSBkb2N1bWVudCAob3IgbnVsbCBp
ZiBpdCB3YXMKKyAgICAgICAgZGVzdHJveWVkKSBmcm9tIHRoZSBzY29wZSBvYmplY3QuCisKKyAg
ICAgICAgVGhpcyBoZWxwZXIgb2JqZWN0IGFsbG93cyB1cyB0byBhdm9pZCBzcHJpbmtsaW5nIGFk
LWhvYyBjYWxscyB0byBgcmV2ZWFsTW9kYWxDb250YWluZXIoKWAgd2hlbiBleGl0aW5nIG1vZGFs
CisgICAgICAgIGNvbnRhaW5lciBjbGFzc2lmaWNhdGlvbiBjb2RlcGF0aHMuCisKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNvbGxlY3RDbGlja2FibGVFbGVtZW50
c1RpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5oOgor
CiAyMDIyLTAxLTAxICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgdXNlci12aXNpYmxlIGNvcHlyaWdodCBzdHJpbmdzIHRvIGluY2x1ZGUgMjAyMgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAKaW5kZXggOTc5
ODA2NzI3NzhkMmZhNTNmYzQ2OTNhNzFlYjhmOTMwN2UyODQxYy4uYWMwZGY1ODg3ZTE3YzE4Mjlh
ZTdhNTU3MTA4MzlmMDI1YTQzMDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9N
b2RhbENvbnRhaW5lck9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIuY3BwCkBAIC0xMzAsNiArMTMwLDIwIEBAIHN0YXRpYyBib29sIG1h
dGNoZXNTZWFyY2hUZXJtKGNvbnN0IFRleHQmIHRleHROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBz
ZWFyY2hUZXJtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5Um9s
ZSBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGVsZW1lbnQu
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnJvbGVBdHRyKSk7Cit9
CisKK3N0YXRpYyBib29sIGlzSW5zaWRlTmF2aWdhdGlvbkVsZW1lbnQoY29uc3QgVGV4dCYgdGV4
dE5vZGUpCit7CisgICAgZm9yIChhdXRvJiBwYXJlbnQgOiBhbmNlc3RvcnNPZlR5cGU8SFRNTEVs
ZW1lbnQ+KHRleHROb2RlKSkgeworICAgICAgICBpZiAocGFyZW50Lmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjpuYXZUYWcpIHx8IGFjY2Vzc2liaWxpdHlSb2xlKHBhcmVudCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6
dXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRlZChjb25zdCBGcmFtZVZpZXcmIHZpZXcpCiB7CiAg
ICAgaWYgKG1fY29udGFpbmVyKQpAQCAtMTU1LDYgKzE2OSw5IEBAIHZvaWQgTW9kYWxDb250YWlu
ZXJPYnNlcnZlcjo6dXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRlZChjb25zdCBGcmFtZVZpZXcm
IHZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiAqdmll
dy52aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKSB7CisgICAgICAgIGlmIChyZW5kZXJlci5p
c0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAg
ICAgICBSZWZQdHIgZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFl
bGVtZW50IHx8IGlzPEhUTUxCb2R5RWxlbWVudD4oKmVsZW1lbnQpIHx8IGVsZW1lbnQtPmlzRG9j
dW1lbnROb2RlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE2NCw2ICsxODEsOSBAQCB2
b2lkIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OnVwZGF0ZU1vZGFsQ29udGFpbmVySWZOZWVkZWQo
Y29uc3QgRnJhbWVWaWV3JiB2aWV3KQogCiAgICAgICAgIGZvciAoYXV0byYgdGV4dFJlbmRlcmVy
IDogZGVzY2VuZGFudHNPZlR5cGU8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSB7CiAgICAgICAgICAg
ICBpZiAoUmVmUHRyIHRleHROb2RlID0gdGV4dFJlbmRlcmVyLnRleHROb2RlKCk7IHRleHROb2Rl
ICYmIG1hdGNoZXNTZWFyY2hUZXJtKCp0ZXh0Tm9kZSwgc2VhcmNoVGVybSkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNJbnNpZGVOYXZpZ2F0aW9uRWxlbWVudCgqdGV4dE5vZGUpKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIG1fY29udGFpbmVyID0gZWxl
bWVudC5nZXQoKTsKICAgICAgICAgICAgICAgICBlbGVtZW50LT5pbnZhbGlkYXRlU3R5bGUoKTsK
ICAgICAgICAgICAgICAgICBzY2hlZHVsZUNsaWNrYWJsZUVsZW1lbnRDb2xsZWN0aW9uKCk7CkBA
IC0xNzMsMTEgKzE5Myw2IEBAIHZvaWQgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6dXBkYXRlTW9k
YWxDb250YWluZXJJZk5lZWRlZChjb25zdCBGcmFtZVZpZXcmIHZpZXcpCiAgICAgfQogfQogCi1z
dGF0aWMgQWNjZXNzaWJpbGl0eVJvbGUgYWNjZXNzaWJpbGl0eVJvbGUoY29uc3QgSFRNTEVsZW1l
bnQmIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xl
VG9XZWJDb3JlUm9sZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpyb2xlQXR0cikpOwotfQotCiBzdGF0aWMgYm9vbCBpc0NsaWNrYWJsZUNvbnRyb2wo
Y29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQuaXNBY3R1YWxs
eURpc2FibGVkKCkpCkBAIC0yODEsMTMgKzI5Niw0MSBAQCB2b2lkIE1vZGFsQ29udGFpbmVyT2Jz
ZXJ2ZXI6OnNjaGVkdWxlQ2xpY2thYmxlRWxlbWVudENvbGxlY3Rpb24oKQogICAgIG1fY29sbGVj
dENsaWNrYWJsZUVsZW1lbnRzVGltZXIuc3RhcnRPbmVTaG90KDIwMF9tcyk7CiB9CiAKK2NsYXNz
IE1vZGFsQ29udGFpbmVyUG9saWN5RGVjaXNpb25TY29wZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgTW9kYWxDb250YWluZXJQb2xpY3lEZWNpc2lvblNjb3Bl
KERvY3VtZW50JiBkb2N1bWVudCkKKyAgICAgICAgOiBtX2RvY3VtZW50IHsgZG9jdW1lbnQgfQor
ICAgIHsKKyAgICB9CisKKyAgICBNb2RhbENvbnRhaW5lclBvbGljeURlY2lzaW9uU2NvcGUoY29u
c3QgTW9kYWxDb250YWluZXJQb2xpY3lEZWNpc2lvblNjb3BlJikgPSBkZWxldGU7CisgICAgTW9k
YWxDb250YWluZXJQb2xpY3lEZWNpc2lvblNjb3BlKE1vZGFsQ29udGFpbmVyUG9saWN5RGVjaXNp
b25TY29wZSYmKSA9IGRlZmF1bHQ7CisKKyAgICB+TW9kYWxDb250YWluZXJQb2xpY3lEZWNpc2lv
blNjb3BlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2NvbnRpbnVlSGlkaW5nTW9kYWxDb250YWlu
ZXJBZnRlclNjb3BlIHx8ICFtX2RvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChhdXRvIG9ic2VydmVyID0gbV9kb2N1bWVudC0+bW9kYWxDb250YWluZXJPYnNlcnZl
cklmRXhpc3RzKCkpCisgICAgICAgICAgICBvYnNlcnZlci0+cmV2ZWFsTW9kYWxDb250YWluZXIo
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbnRpbnVlSGlkaW5nTW9kYWxDb250YWluZXJBZnRlclNj
b3BlKCkgeyBtX2NvbnRpbnVlSGlkaW5nTW9kYWxDb250YWluZXJBZnRlclNjb3BlID0gdHJ1ZTsg
fQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0
KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OworICAg
IGJvb2wgbV9jb250aW51ZUhpZGluZ01vZGFsQ29udGFpbmVyQWZ0ZXJTY29wZSB7IGZhbHNlIH07
Cit9OworCiB2b2lkIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNvbGxlY3RDbGlja2FibGVFbGVt
ZW50c1RpbWVyRmlyZWQoKQogewogICAgIGlmICghbV9jb250YWluZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fY29udGFpbmVyLT5kb2N1bWVudCgpLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhU
YXNrU291cmNlOjpJbnRlcm5hbEFzeW5jVGFzaywgW29ic2VydmVyID0gdGhpcywgd2Vha0RvY3Vt
ZW50ID0gV2Vha1B0ciB7IG1fY29udGFpbmVyLT5kb2N1bWVudCgpIH1dKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IHdlYWtEb2N1bWVudC5nZXQoKTsKKyAgICBtX2NvbnRh
aW5lci0+ZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJu
YWxBc3luY1Rhc2ssIFtvYnNlcnZlciA9IHRoaXMsIGRlY2lzaW9uU2NvcGUgPSBNb2RhbENvbnRh
aW5lclBvbGljeURlY2lzaW9uU2NvcGUgeyBtX2NvbnRhaW5lci0+ZG9jdW1lbnQoKSB9XSgpIG11
dGFibGUgeworICAgICAgICBSZWZQdHIgZG9jdW1lbnQgPSBkZWNpc2lvblNjb3BlLmRvY3VtZW50
KCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMw
NiwxMSArMzQ5LDggQEAgdm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjpjb2xsZWN0Q2xpY2th
YmxlRWxlbWVudHNUaW1lckZpcmVkKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmNsYXNzaWZ5TW9kYWxDb250YWluZXJD
b250cm9scyhXVEZNb3ZlKGNvbnRyb2xUZXh0c1RvQ2xhc3NpZnkpLCBbd2Vha0RvY3VtZW50ID0g
V1RGTW92ZSh3ZWFrRG9jdW1lbnQpLCBvYnNlcnZlciwgY29udHJvbHMgPSBXVEZNb3ZlKGNsYXNz
aWZpYWJsZUNvbnRyb2xzKV0gKGF1dG8mJiB0eXBlcykgbXV0YWJsZSB7Ci0gICAgICAgICAgICBp
ZiAodHlwZXMuc2l6ZSgpICE9IGNvbnRyb2xzLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IHdlYWtEb2N1bWVudC5nZXQoKTsK
KyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuY2xhc3NpZnlNb2RhbENvbnRhaW5lckNv
bnRyb2xzKFdURk1vdmUoY29udHJvbFRleHRzVG9DbGFzc2lmeSksIFtkZWNpc2lvblNjb3BlID0g
V1RGTW92ZShkZWNpc2lvblNjb3BlKSwgb2JzZXJ2ZXIsIGNvbnRyb2xzID0gV1RGTW92ZShjbGFz
c2lmaWFibGVDb250cm9scyldIChhdXRvJiYgdHlwZXMpIG11dGFibGUgeworICAgICAgICAgICAg
UmVmUHRyIGRvY3VtZW50ID0gZGVjaXNpb25TY29wZS5kb2N1bWVudCgpOwogICAgICAgICAgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMyNSw2ICszNjUs
OSBAQCB2b2lkIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNvbGxlY3RDbGlja2FibGVFbGVtZW50
c1RpbWVyRmlyZWQoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAor
ICAgICAgICAgICAgaWYgKHR5cGVzLnNpemUoKSAhPSBjb250cm9scy5zaXplKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBzdHJ1Y3QgQ2xhc3NpZmllZENvbnRyb2xz
IHsKICAgICAgICAgICAgICAgICBWZWN0b3I8V2Vha1B0cjxIVE1MRWxlbWVudD4+IHBvc2l0aXZl
OwogICAgICAgICAgICAgICAgIFZlY3RvcjxXZWFrUHRyPEhUTUxFbGVtZW50Pj4gbmV1dHJhbDsK
QEAgLTM5NSwyNiArNDM4LDI2IEBAIHZvaWQgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6Y29sbGVj
dENsaWNrYWJsZUVsZW1lbnRzVGltZXJGaXJlZCgpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICBhdXRvIGNsaWNrYWJsZUNvbnRyb2xUeXBlcyA9IGNsYXNzaWZpZWRDb250
cm9scy50eXBlcygpOwotICAgICAgICAgICAgaWYgKGNsaWNrYWJsZUNvbnRyb2xUeXBlcy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICBvYnNlcnZlci0+cmV2ZWFsTW9kYWxDb250YWluZXIo
KTsKKyAgICAgICAgICAgIGlmIChjbGlja2FibGVDb250cm9sVHlwZXMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCkuY2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTW9kYWxDb250YWluZXIoY2xpY2thYmxl
Q29udHJvbFR5cGVzLCBbd2Vha0RvY3VtZW50ID0gV1RGTW92ZSh3ZWFrRG9jdW1lbnQpLCBvYnNl
cnZlciwgY2xhc3NpZmllZENvbnRyb2xzID0gV1RGTW92ZShjbGFzc2lmaWVkQ29udHJvbHMpXShh
dXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBSZWZQdHIgZG9jdW1lbnQg
PSB3ZWFrRG9jdW1lbnQuZ2V0KCk7CisgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5kZWNpZGVQb2xpY3lGb3JNb2RhbENvbnRhaW5lcihjbGlja2FibGVDb250cm9sVHlwZXMsIFtk
ZWNpc2lvblNjb3BlID0gV1RGTW92ZShkZWNpc2lvblNjb3BlKSwgb2JzZXJ2ZXIsIGNsYXNzaWZp
ZWRDb250cm9scyA9IFdURk1vdmUoY2xhc3NpZmllZENvbnRyb2xzKV0oYXV0byBkZWNpc2lvbikg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgUmVmUHRyIGRvY3VtZW50ID0gZGVjaXNpb25TY29w
ZS5kb2N1bWVudCgpOwogICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgIGlmIChvYnNlcnZlciAhPSBkb2N1
bWVudC0+bW9kYWxDb250YWluZXJPYnNlcnZlcklmRXhpc3RzKCkpCisgICAgICAgICAgICAgICAg
aWYgKG9ic2VydmVyICE9IGRvY3VtZW50LT5tb2RhbENvbnRhaW5lck9ic2VydmVySWZFeGlzdHMo
KSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGlmIChkZWNpc2lvbiA9PSBNb2RhbENvbnRhaW5lckRlY2lzaW9uOjpTaG93KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG9ic2VydmVyLT5yZXZlYWxNb2RhbENvbnRhaW5lcigpOworICAgICAgICAg
ICAgICAgIGlmIChkZWNpc2lvbiA9PSBNb2RhbENvbnRhaW5lckRlY2lzaW9uOjpTaG93KQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgaWYgKFJlZlB0ciBjb250cm9sVG9DbGljayA9IGNsYXNzaWZpZWRDb250cm9scy5jb250
cm9sVG9DbGljayhkZWNpc2lvbikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xUb0NsaWNr
LT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKG51bGxwdHIsIFNlbmRNb3VzZVVwRG93bkV2ZW50cywg
RG9Ob3RTaG93UHJlc3NlZExvb2spOworCisgICAgICAgICAgICAgICAgZGVjaXNpb25TY29wZS5j
b250aW51ZUhpZGluZ01vZGFsQ29udGFpbmVyQWZ0ZXJTY29wZSgpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9N
b2RhbENvbnRhaW5lck9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFp
bmVyT2JzZXJ2ZXIuaAppbmRleCA4ZWY1ZTc2YzgzYTBjODY4NDEwOGUxZGVhM2FlNDFhM2QwNWVj
ZGE0Li5lNmFjMjczM2FkOWE1NGVhYzc3MzVkYzgyNzI2YzhkYjM2NGRkMTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaApAQCAtNTQsNiArNTQsOCBA
QCBwdWJsaWM6CiAgICAgaW5saW5lIHZvaWQgb3ZlcnJpZGVTZWFyY2hUZXJtRm9yVGVzdGluZyhj
b25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTW9kYWxDb250YWlu
ZXJQb2xpY3lEZWNpc2lvblNjb3BlOworCiAgICAgdm9pZCBzY2hlZHVsZUNsaWNrYWJsZUVsZW1l
bnRDb2xsZWN0aW9uKCk7CiAgICAgdm9pZCBjb2xsZWN0Q2xpY2thYmxlRWxlbWVudHNUaW1lckZp
cmVkKCk7CiAgICAgdm9pZCByZXZlYWxNb2RhbENvbnRhaW5lcigpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg1OTdiMmFlZDk3ZWJlNGQzOTg1
ZGRmNWYwZjk0YjlkYzU1M2FhOWYuLjJhZTAyY2JmODg0NzU2OWFmMWQ1MjVjNWI0ODVkOWFiNjk2
ZTZiNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMS0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBNb2RhbCBjb250YWluZXJzIGFyZSBpbmNvcnJlY3RseSBk
ZXRlY3RlZCBpbiBuYXZpZ2F0aW9uIGVsZW1lbnRzIGFuZCBmaXhlZCBkb2N1bWVudCBlbGVtZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NjY5
CisgICAgICAgIHJkYXI6Ly84NzAzMDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIEFkZCBzZXZlcmFsIG5ldyBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgdGhl
IGNoYW5nZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01v
ZGFsQ29udGFpbmVyT2JzZXJ2YXRpb24ubW06CisgICAgICAgICgtW01vZGFsQ29udGFpbmVyV2Vi
VmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW01vZGFsQ29u
dGFpbmVyV2ViVmlldyBsb2FkSFRNTDpdKToKKyAgICAgICAgKC1bTW9kYWxDb250YWluZXJXZWJW
aWV3IF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck1vZGFsQ29udGFpbmVyOmRlY2lzaW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTAxLTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU2lt
cGxpZnkgc29tZSBGb250QXR0cmlidXRlcyBBUEkgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTW9kYWxDb250YWluZXJPYnNlcnZhdGlvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTW9kYWxDb250YWluZXJP
YnNlcnZhdGlvbi5tbQppbmRleCAzNDVkOTdiNDhjNmZhOGFlMDI4MzNhNTZlODRlMzA1ZDRhMjkw
MzFiLi40ZmY1YmQxMzBiMmQ4MTgxOTQyODNlMDk1MmE0ZWM0MWRkNDM4MmYwIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01vZGFsQ29udGFpbmVyT2Jz
ZXJ2YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9N
b2RhbENvbnRhaW5lck9ic2VydmF0aW9uLm1tCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0LmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKQEAgLTg2LDYgKzg3LDcgQEAgcHJp
dmF0ZToKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogQGludGVyZmFjZSBNb2RhbENv
bnRhaW5lcldlYlZpZXcgOiBUZXN0V0tXZWJWaWV3IDxXS1VJRGVsZWdhdGVQcml2YXRlPgorQHBy
b3BlcnR5IChub25hdG9taWMpIF9XS01vZGFsQ29udGFpbmVyRGVjaXNpb24gZGVjaXNpb247CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS01vZGFsQ29udGFpbmVySW5mbyAqbGFz
dE1vZGFsQ29udGFpbmVySW5mbzsKIEBlbmQKIApAQCAtOTMsNyArOTUsNiBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0V2ViS2l0QVBJOjpDbGFzc2lmaWVyTW9kZWxTd2l6emxl
cj4gX2NsYXNzaWZpZXJNb2RlbFN3aXp6bGVyOwogICAgIFJldGFpblB0cjxUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlPiBfbmF2aWdhdGlvbkRlbGVnYXRlOwogICAgIFJldGFpblB0cjxfV0tNb2RhbENv
bnRhaW5lckluZm8+IF9sYXN0TW9kYWxDb250YWluZXJJbmZvOwotICAgIHN0ZDo6b3B0aW9uYWw8
X1dLTW9kYWxDb250YWluZXJEZWNpc2lvbj4gX2RlY2lzaW9uOwogICAgIGJvb2wgX2RvbmVXYWl0
aW5nRm9yRGVjaXNpb25IYW5kbGVyOwogfQogCkBAIC0xMDcsNiArMTA4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwIl07CiAgICAg
fSk7CiAKKyAgICBfZGVjaXNpb24gPSBfV0tNb2RhbENvbnRhaW5lckRlY2lzaW9uU2hvdzsKICAg
ICBfY2xhc3NpZmllck1vZGVsU3dpenpsZXIgPSBtYWtlVW5pcXVlPFRlc3RXZWJLaXRBUEk6OkNs
YXNzaWZpZXJNb2RlbFN3aXp6bGVyPigpOwogICAgIF9uYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9w
dE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIF9kb25lV2Fp
dGluZ0ZvckRlY2lzaW9uSGFuZGxlciA9IHRydWU7CkBAIC0xNDgsOSArMTUwLDI2IEBAIHByaXZh
dGU6CiAgICAgW19uYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25X
aXRoUHJlZmVyZW5jZXM6cHJlZmVyZW5jZXMuZ2V0KCldOwogfQogCistICh2b2lkKWxvYWRIVE1M
OihOU1N0cmluZyAqKWh0bWwKK3sKKyAgICBOU1VSTFJlcXVlc3QgKmZha2VSZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93
ZWJraXQub3JnIl1dOworICAgIFtzZWxmIGxvYWRTaW11bGF0ZWRSZXF1ZXN0OmZha2VSZXF1ZXN0
IHJlc3BvbnNlSFRNTFN0cmluZzpodG1sXTsKKworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBhZG9w
dE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKKyAgICBbcHJlZmVyZW5j
ZXMgX3NldE1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3k6X1dLV2Vic2l0ZU1vZGFsQ29u
dGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3lQcm9tcHRdOworICAgIFtfbmF2aWdhdGlvbkRlbGVnYXRl
IHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uV2l0aFByZWZlcmVuY2VzOnByZWZlcmVuY2VzLmdl
dCgpXTsKK30KKworLSAodm9pZCl3YWl0Rm9yVGV4dDooTlNTdHJpbmcgKil0ZXh0Cit7CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSgpIC0+
IGJvb2wgeworICAgICAgICByZXR1cm4gW3NlbGYuY29udGVudHNBc1N0cmluZyBjb250YWluc1N0
cmluZzp0ZXh0XTsKKyAgICB9LCAzLCBAIlRpbWVkIG91dCB3YWl0aW5nIGZvciAnJUAnIiwgdGV4
dCk7Cit9CisKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9s
aWN5Rm9yTW9kYWxDb250YWluZXI6KF9XS01vZGFsQ29udGFpbmVySW5mbyAqKWNvbnRhaW5lcklu
Zm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tNb2RhbENvbnRhaW5lckRlY2lzaW9uKSlo
YW5kbGVyCiB7Ci0gICAgaGFuZGxlcihfZGVjaXNpb24udmFsdWVfb3IoX1dLTW9kYWxDb250YWlu
ZXJEZWNpc2lvblNob3cpKTsKKyAgICBoYW5kbGVyKF9kZWNpc2lvbik7CiAgICAgX2xhc3RNb2Rh
bENvbnRhaW5lckluZm8gPSBjb250YWluZXJJbmZvOwogICAgIF9kb25lV2FpdGluZ0ZvckRlY2lz
aW9uSGFuZGxlciA9IHRydWU7CiB9CkBAIC0yMzIsNCArMjUxLDQxIEBAIFRFU1QoTW9kYWxDb250
YWluZXJPYnNlcnZhdGlvbiwgRGV0ZWN0U2VhcmNoVGVybUluQm9sZFRhZykKICAgICBFWFBFQ1Rf
RVEoW3dlYlZpZXcgbGFzdE1vZGFsQ29udGFpbmVySW5mb10uYXZhaWxhYmxlVHlwZXMsIF9XS01v
ZGFsQ29udGFpbmVyQ29udHJvbFR5cGVQb3NpdGl2ZSB8IF9XS01vZGFsQ29udGFpbmVyQ29udHJv
bFR5cGVOZWdhdGl2ZSk7CiB9CiAKK1RFU1QoTW9kYWxDb250YWluZXJPYnNlcnZhdGlvbiwgSWdu
b3JlRml4ZWREb2N1bWVudEVsZW1lbnQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlTW9k
YWxDb250YWluZXJXZWJWaWV3KCk7CisgICAgW3dlYlZpZXcgc2V0RGVjaXNpb246X1dLTW9kYWxD
b250YWluZXJEZWNpc2lvbkhpZGVBbmRJZ25vcmVdOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MOkAo
IjxoZWFkPiIKKyAgICAgICAgIjxzY3JpcHQ+aW50ZXJuYWxzLm92ZXJyaWRlTW9kYWxDb250YWlu
ZXJTZWFyY2hUZXJtRm9yVGVzdGluZygnZm9vJyk8L3NjcmlwdD4iCisgICAgICAgICI8c3R5bGU+
aHRtbCB7IHBvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgdG9wOiAw
OyBsZWZ0OiAwOyB9PC9zdHlsZT4iCisgICAgICAgICI8L2hlYWQ+PGJvZHk+PGgxPmZvbyBiYXI8
L2gxPjwvYm9keT4iKV07CisKKyAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgY29udGVudHNBc1N0
cmluZ10gY29udGFpbnNTdHJpbmc6QCJmb28gYmFyIl0pOworICAgIEVYUEVDVF9OVUxMKFt3ZWJW
aWV3IGxhc3RNb2RhbENvbnRhaW5lckluZm9dKTsKK30KKworVEVTVChNb2RhbENvbnRhaW5lck9i
c2VydmF0aW9uLCBJZ25vcmVOYXZpZ2F0aW9uRWxlbWVudHMpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gY3JlYXRlTW9kYWxDb250YWluZXJXZWJWaWV3KCk7CisgICAgW3dlYlZpZXcgc2V0RGVjaXNp
b246X1dLTW9kYWxDb250YWluZXJEZWNpc2lvbkhpZGVBbmRJZ25vcmVdOworICAgIFt3ZWJWaWV3
IGxvYWRCdW5kbGVQYWdlOkAibW9kYWwtY29udGFpbmVyLWN1c3RvbSJdOworICAgIFt3ZWJWaWV3
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzaG93KGA8bmF2PmhlbGxvIHdvcmxkIDE8
L25hdj48ZGl2IHJvbGU9J25hdmlnYXRpb24nPmhlbGxvIHdvcmxkIDI8L2Rpdj5gKSJdOworICAg
IFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9U
UlVFKFtbd2ViVmlldyBjb250ZW50c0FzU3RyaW5nXSBjb250YWluc1N0cmluZzpAImhlbGxvIHdv
cmxkIDEiXSk7CisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IGNvbnRlbnRzQXNTdHJpbmddIGNv
bnRhaW5zU3RyaW5nOkAiaGVsbG8gd29ybGQgMiJdKTsKKyAgICBFWFBFQ1RfTlVMTChbd2ViVmll
dyBsYXN0TW9kYWxDb250YWluZXJJbmZvXSk7Cit9CisKK1RFU1QoTW9kYWxDb250YWluZXJPYnNl
cnZhdGlvbiwgU2hvd01vZGFsQ29udGFpbmVyQWZ0ZXJGYWxzZVBvc2l0aXZlKQoreworICAgIGF1
dG8gd2ViVmlldyA9IGNyZWF0ZU1vZGFsQ29udGFpbmVyV2ViVmlldygpOworICAgIFt3ZWJWaWV3
IHNldERlY2lzaW9uOl9XS01vZGFsQ29udGFpbmVyRGVjaXNpb25IaWRlQW5kSWdub3JlXTsKKyAg
ICBbd2ViVmlldyBsb2FkQnVuZGxlUGFnZTpAIm1vZGFsLWNvbnRhaW5lci1jdXN0b20iXTsKKyAg
ICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic2hvdyhgPGRpdj5oZWxs
byB3b3JsZDwvZGl2PjxhIGhyZWY9J2h0dHBzOi8vYXBwbGUuY29tJz5DbGljayBoZXJlPC9hPmAp
Il07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIFt3
ZWJWaWV3IHdhaXRGb3JUZXh0OkAiaGVsbG8gd29ybGQiXTsKKyAgICBFWFBFQ1RfTlVMTChbd2Vi
VmlldyBsYXN0TW9kYWxDb250YWluZXJJbmZvXSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448163</attachid>
            <date>2022-01-01 14:03:35 -0800</date>
            <delta_ts>2022-01-01 15:07:34 -0800</delta_ts>
            <desc>Use WTF_MAKE_NONCOPYABLE</desc>
            <filename>bug-234669-20220101140335.patch</filename>
            <type>text/plain</type>
            <size>16263</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc3ZTU3M2VlMjI0NTA1
NGJhMTNjMzJiODEyOGNjMTMwZGU5YjdlYy4uNGJmMmQ4MTg5NTA2ZTk5N2QwNzRmYzVjZWQ2OGQ1
MWI3NmIxMDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAxLTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGFsIGNvbnRh
aW5lcnMgYXJlIGluY29ycmVjdGx5IGRldGVjdGVkIGluIG5hdmlnYXRpb24gZWxlbWVudHMgYW5k
IGZpeGVkIGRvY3VtZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQ2NjkKKyAgICAgICAgcmRhcjovLzg3MDMwNjEzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQXZvaWQgZmFsc2UgcG9zaXRp
dmVzIHdoZW4gZGV0ZWN0aW5nIG1vZGFsIGNvbnRhaW5lcnMgaW4gdGhlIGZvbGxvd2luZyBzY2Vu
YXJpb3M6CisgICAgICAgIC0gRml4ZWQtcG9zaXRpb24gZG9jdW1lbnQgZWxlbWVudHMgdGhhdCBj
b250YWluIHRoZSBzZWFyY2ggdGVybS4KKyAgICAgICAgLSBUZXh0IHRoYXQgY29udGFpbnMgdGhl
IHNlYXJjaCB0ZXJtIGluc2lkZSBmaXhlZC1wb3NpdGlvbiBuYXZpZ2F0aW9uIGVsZW1lbnRzLgor
CisgICAgICAgIEFkZGl0aW9uYWxseSwgZW5zdXJlIHRoYXQgd2UgdW5oaWRlIHRoZSBjdXJyZW50
IG1vZGFsIGNvbnRhaW5lciBpbiB0aGUgZXZlbnQgb2YgYSBmYWxzZSBwb3NpdGl2ZSB3aGVyZSB3
ZSBmaW5kCisgICAgICAgIG5vIGVsZW1lbnQgdGhhdCBmdWxmaWxscyB0aGUgY3JpdGVyaWEgZm9y
IGJlaW5nIGEgY2xhc3NpZmlhYmxlIGNvbnRyb2wuCisKKyAgICAgICAgVGVzdHM6ICBNb2RhbENv
bnRhaW5lck9ic2VydmF0aW9uLklnbm9yZUZpeGVkRG9jdW1lbnRFbGVtZW50CisgICAgICAgICAg
ICAgICAgTW9kYWxDb250YWluZXJPYnNlcnZhdGlvbi5JZ25vcmVOYXZpZ2F0aW9uRWxlbWVudHMK
KyAgICAgICAgICAgICAgICBNb2RhbENvbnRhaW5lck9ic2VydmF0aW9uLlNob3dNb2RhbENvbnRh
aW5lckFmdGVyRmFsc2VQb3NpdGl2ZQorCisgICAgICAgICogcGFnZS9Nb2RhbENvbnRhaW5lck9i
c2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlKToKKworICAg
ICAgICBNb3ZlIHRoaXMgc3RhdGljIGhlbHBlciBmdW5jdGlvbiBmYXJ0aGVyIHVwIHRoaXMgc291
cmNlIGZpbGUsIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBpbnNpZGUKKyAgICAgICAgYHVwZGF0ZU1v
ZGFsQ29udGFpbmVySWZOZWVkZWQoKWAuCisKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5zaWRlTmF2
aWdhdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9kYWxDb250YWluZXJPYnNlcnZl
cjo6dXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Rh
bENvbnRhaW5lclBvbGljeURlY2lzaW9uU2NvcGU6Ok1vZGFsQ29udGFpbmVyUG9saWN5RGVjaXNp
b25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5lclBvbGljeURlY2lzaW9u
U2NvcGU6On5Nb2RhbENvbnRhaW5lclBvbGljeURlY2lzaW9uU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9kYWxDb250YWluZXJQb2xpY3lEZWNpc2lvblNjb3BlOjpjb250aW51ZUhpZGluZ01v
ZGFsQ29udGFpbmVyQWZ0ZXJTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RhbENvbnRhaW5l
clBvbGljeURlY2lzaW9uU2NvcGU6OmRvY3VtZW50IGNvbnN0KToKKworICAgICAgICBBZGQgYSBS
QUlJIGhlbHBlciBvYmplY3QgdG8gZW5zdXJlIHRoYXQgdGhlIG1vZGFsIGNvbnRhaW5lciBpcyBy
ZXZlYWxlZCBhdCB0aGUgZW5kIG9mIHRoZSBtb2RhbCBjb250YWluZXIgcG9saWN5CisgICAgICAg
IGRlY2lzaW9uIHNjb3BlLCB1bmxlc3MgYGNvbnRpbnVlSGlkaW5nTW9kYWxDb250YWluZXJBZnRl
clNjb3BlKClgIGlzIGludm9rZWQuIFNpbmNlIHRoaXMgY2xhc3MgY29udGFpbnMgYQorICAgICAg
ICBgV2Vha1B0cjxEb2N1bWVudD5gIGFscmVhZHksIHdlIGNhbiByZXBsYWNlIHRoZSBgV2Vha1B0
cjxEb2N1bWVudD5gIHdlJ3JlIGN1cnJlbnRseSBwbHVtYmluZyB0aHJvdWdoIGVhY2ggb2YgdGhl
CisgICAgICAgIGFzeW5jIGNhbGxiYWNrcyB3aXRoIG9ubHkgdGhlIGBNb2RhbENvbnRhaW5lclBv
bGljeURlY2lzaW9uU2NvcGVgLCBhbmQganVzdCBncmFiIHRoZSBkb2N1bWVudCAob3IgbnVsbCBp
ZiBpdCB3YXMKKyAgICAgICAgZGVzdHJveWVkKSBmcm9tIHRoZSBzY29wZSBvYmplY3QuCisKKyAg
ICAgICAgVGhpcyBoZWxwZXIgb2JqZWN0IGFsbG93cyB1cyB0byBhdm9pZCBzcHJpbmtsaW5nIGFk
LWhvYyBjYWxscyB0byBgcmV2ZWFsTW9kYWxDb250YWluZXIoKWAgd2hlbiBleGl0aW5nIG1vZGFs
CisgICAgICAgIGNvbnRhaW5lciBjbGFzc2lmaWNhdGlvbiBjb2RlcGF0aHMuCisKKyAgICAgICAg
KFdlYkNvcmU6Ok1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNvbGxlY3RDbGlja2FibGVFbGVtZW50
c1RpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5oOgor
CiAyMDIyLTAxLTAxICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgdXNlci12aXNpYmxlIGNvcHlyaWdodCBzdHJpbmdzIHRvIGluY2x1ZGUgMjAyMgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTW9kYWxDb250YWluZXJPYnNlcnZlci5jcHAKaW5kZXggOTc5
ODA2NzI3NzhkMmZhNTNmYzQ2OTNhNzFlYjhmOTMwN2UyODQxYy4uZGVhNTBiNzcwMmQ0ZDNiZGQz
MmNmOTI3YjAxZDM4M2EyMmY2MzVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9N
b2RhbENvbnRhaW5lck9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFs
Q29udGFpbmVyT2JzZXJ2ZXIuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUm9iaW5I
b29kSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KQEAgLTEzMCw2ICsxMzEsMjAgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc1NlYXJjaFRlcm0oY29u
c3QgVGV4dCYgdGV4dE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIHNlYXJjaFRlcm0KICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIGFjY2Vzc2liaWxpdHlSb2xl
KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KQoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJvbGUoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6cm9sZUF0dHIpKTsKK30KKworc3RhdGljIGJvb2wgaXNJ
bnNpZGVOYXZpZ2F0aW9uRWxlbWVudChjb25zdCBUZXh0JiB0ZXh0Tm9kZSkKK3sKKyAgICBmb3Ig
KGF1dG8mIHBhcmVudCA6IGFuY2VzdG9yc09mVHlwZTxIVE1MRWxlbWVudD4odGV4dE5vZGUpKSB7
CisgICAgICAgIGlmIChwYXJlbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Om5hdlRhZykgfHwgYWNj
ZXNzaWJpbGl0eVJvbGUocGFyZW50KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZp
Z2F0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwogdm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjp1cGRhdGVNb2RhbENvbnRhaW5l
cklmTmVlZGVkKGNvbnN0IEZyYW1lVmlldyYgdmlldykKIHsKICAgICBpZiAobV9jb250YWluZXIp
CkBAIC0xNTUsNiArMTcwLDkgQEAgdm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjp1cGRhdGVN
b2RhbENvbnRhaW5lcklmTmVlZGVkKGNvbnN0IEZyYW1lVmlldyYgdmlldykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgZm9yIChhdXRvJiByZW5kZXJlciA6ICp2aWV3LnZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RzKCkpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyLmlzRG9jdW1lbnRFbGVtZW50UmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIFJlZlB0ciBlbGVtZW50
ID0gcmVuZGVyZXIuZWxlbWVudCgpOwogICAgICAgICBpZiAoIWVsZW1lbnQgfHwgaXM8SFRNTEJv
ZHlFbGVtZW50PigqZWxlbWVudCkgfHwgZWxlbWVudC0+aXNEb2N1bWVudE5vZGUoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTY0LDYgKzE4Miw5IEBAIHZvaWQgTW9kYWxDb250YWluZXJP
YnNlcnZlcjo6dXBkYXRlTW9kYWxDb250YWluZXJJZk5lZWRlZChjb25zdCBGcmFtZVZpZXcmIHZp
ZXcpCiAKICAgICAgICAgZm9yIChhdXRvJiB0ZXh0UmVuZGVyZXIgOiBkZXNjZW5kYW50c09mVHlw
ZTxSZW5kZXJUZXh0PihyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHIgdGV4dE5v
ZGUgPSB0ZXh0UmVuZGVyZXIudGV4dE5vZGUoKTsgdGV4dE5vZGUgJiYgbWF0Y2hlc1NlYXJjaFRl
cm0oKnRleHROb2RlLCBzZWFyY2hUZXJtKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0luc2lk
ZU5hdmlnYXRpb25FbGVtZW50KCp0ZXh0Tm9kZSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgICAgICAgICAgbV9jb250YWluZXIgPSBlbGVtZW50LmdldCgpOwogICAgICAg
ICAgICAgICAgIGVsZW1lbnQtPmludmFsaWRhdGVTdHlsZSgpOwogICAgICAgICAgICAgICAgIHNj
aGVkdWxlQ2xpY2thYmxlRWxlbWVudENvbGxlY3Rpb24oKTsKQEAgLTE3MywxMSArMTk0LDYgQEAg
dm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjp1cGRhdGVNb2RhbENvbnRhaW5lcklmTmVlZGVk
KGNvbnN0IEZyYW1lVmlldyYgdmlldykKICAgICB9CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5
Um9sZSBhY2Nlc3NpYmlsaXR5Um9sZShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkKLXsKLSAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGVsZW1l
bnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnJvbGVBdHRyKSk7
Ci19Ci0KIHN0YXRpYyBib29sIGlzQ2xpY2thYmxlQ29udHJvbChjb25zdCBIVE1MRWxlbWVudCYg
ZWxlbWVudCkKIHsKICAgICBpZiAoZWxlbWVudC5pc0FjdHVhbGx5RGlzYWJsZWQoKSkKQEAgLTI4
MSwxMyArMjk3LDQxIEBAIHZvaWQgTW9kYWxDb250YWluZXJPYnNlcnZlcjo6c2NoZWR1bGVDbGlj
a2FibGVFbGVtZW50Q29sbGVjdGlvbigpCiAgICAgbV9jb2xsZWN0Q2xpY2thYmxlRWxlbWVudHNU
aW1lci5zdGFydE9uZVNob3QoMjAwX21zKTsKIH0KIAorY2xhc3MgTW9kYWxDb250YWluZXJQb2xp
Y3lEZWNpc2lvblNjb3BlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2RhbENvbnRhaW5l
clBvbGljeURlY2lzaW9uU2NvcGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIE1vZGFsQ29udGFpbmVyUG9saWN5RGVjaXNpb25TY29wZShEb2N1bWVudCYgZG9j
dW1lbnQpCisgICAgICAgIDogbV9kb2N1bWVudCB7IGRvY3VtZW50IH0KKyAgICB7CisgICAgfQor
CisgICAgTW9kYWxDb250YWluZXJQb2xpY3lEZWNpc2lvblNjb3BlKE1vZGFsQ29udGFpbmVyUG9s
aWN5RGVjaXNpb25TY29wZSYmKSA9IGRlZmF1bHQ7CisKKyAgICB+TW9kYWxDb250YWluZXJQb2xp
Y3lEZWNpc2lvblNjb3BlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2NvbnRpbnVlSGlkaW5nTW9k
YWxDb250YWluZXJBZnRlclNjb3BlIHx8ICFtX2RvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmIChhdXRvIG9ic2VydmVyID0gbV9kb2N1bWVudC0+bW9kYWxDb250YWlu
ZXJPYnNlcnZlcklmRXhpc3RzKCkpCisgICAgICAgICAgICBvYnNlcnZlci0+cmV2ZWFsTW9kYWxD
b250YWluZXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbnRpbnVlSGlkaW5nTW9kYWxDb250YWlu
ZXJBZnRlclNjb3BlKCkgeyBtX2NvbnRpbnVlSGlkaW5nTW9kYWxDb250YWluZXJBZnRlclNjb3Bl
ID0gdHJ1ZTsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnQuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3Vt
ZW50OworICAgIGJvb2wgbV9jb250aW51ZUhpZGluZ01vZGFsQ29udGFpbmVyQWZ0ZXJTY29wZSB7
IGZhbHNlIH07Cit9OworCiB2b2lkIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNvbGxlY3RDbGlj
a2FibGVFbGVtZW50c1RpbWVyRmlyZWQoKQogewogICAgIGlmICghbV9jb250YWluZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fY29udGFpbmVyLT5kb2N1bWVudCgpLmV2ZW50TG9vcCgpLnF1
ZXVlVGFzayhUYXNrU291cmNlOjpJbnRlcm5hbEFzeW5jVGFzaywgW29ic2VydmVyID0gdGhpcywg
d2Vha0RvY3VtZW50ID0gV2Vha1B0ciB7IG1fY29udGFpbmVyLT5kb2N1bWVudCgpIH1dKCkgbXV0
YWJsZSB7Ci0gICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IHdlYWtEb2N1bWVudC5nZXQoKTsKKyAg
ICBtX2NvbnRhaW5lci0+ZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJj
ZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFtvYnNlcnZlciA9IHRoaXMsIGRlY2lzaW9uU2NvcGUgPSBN
b2RhbENvbnRhaW5lclBvbGljeURlY2lzaW9uU2NvcGUgeyBtX2NvbnRhaW5lci0+ZG9jdW1lbnQo
KSB9XSgpIG11dGFibGUgeworICAgICAgICBSZWZQdHIgZG9jdW1lbnQgPSBkZWNpc2lvblNjb3Bl
LmRvY3VtZW50KCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTMwNiwxMSArMzUwLDggQEAgdm9pZCBNb2RhbENvbnRhaW5lck9ic2VydmVyOjpjb2xs
ZWN0Q2xpY2thYmxlRWxlbWVudHNUaW1lckZpcmVkKCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmNsYXNzaWZ5TW9kYWxD
b250YWluZXJDb250cm9scyhXVEZNb3ZlKGNvbnRyb2xUZXh0c1RvQ2xhc3NpZnkpLCBbd2Vha0Rv
Y3VtZW50ID0gV1RGTW92ZSh3ZWFrRG9jdW1lbnQpLCBvYnNlcnZlciwgY29udHJvbHMgPSBXVEZN
b3ZlKGNsYXNzaWZpYWJsZUNvbnRyb2xzKV0gKGF1dG8mJiB0eXBlcykgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBpZiAodHlwZXMuc2l6ZSgpICE9IGNvbnRyb2xzLnNpemUoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IHdlYWtEb2N1bWVu
dC5nZXQoKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuY2xhc3NpZnlNb2RhbENv
bnRhaW5lckNvbnRyb2xzKFdURk1vdmUoY29udHJvbFRleHRzVG9DbGFzc2lmeSksIFtkZWNpc2lv
blNjb3BlID0gV1RGTW92ZShkZWNpc2lvblNjb3BlKSwgb2JzZXJ2ZXIsIGNvbnRyb2xzID0gV1RG
TW92ZShjbGFzc2lmaWFibGVDb250cm9scyldIChhdXRvJiYgdHlwZXMpIG11dGFibGUgeworICAg
ICAgICAgICAgUmVmUHRyIGRvY3VtZW50ID0gZGVjaXNpb25TY29wZS5kb2N1bWVudCgpOwogICAg
ICAgICAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMy
NSw2ICszNjYsOSBAQCB2b2lkIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXI6OmNvbGxlY3RDbGlja2Fi
bGVFbGVtZW50c1RpbWVyRmlyZWQoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIAorICAgICAgICAgICAgaWYgKHR5cGVzLnNpemUoKSAhPSBjb250cm9scy5zaXplKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBzdHJ1Y3QgQ2xhc3NpZmll
ZENvbnRyb2xzIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8V2Vha1B0cjxIVE1MRWxlbWVudD4+
IHBvc2l0aXZlOwogICAgICAgICAgICAgICAgIFZlY3RvcjxXZWFrUHRyPEhUTUxFbGVtZW50Pj4g
bmV1dHJhbDsKQEAgLTM5NSwyNiArNDM5LDI2IEBAIHZvaWQgTW9kYWxDb250YWluZXJPYnNlcnZl
cjo6Y29sbGVjdENsaWNrYWJsZUVsZW1lbnRzVGltZXJGaXJlZCgpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIGNsaWNrYWJsZUNvbnRyb2xUeXBlcyA9IGNsYXNz
aWZpZWRDb250cm9scy50eXBlcygpOwotICAgICAgICAgICAgaWYgKGNsaWNrYWJsZUNvbnRyb2xU
eXBlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBvYnNlcnZlci0+cmV2ZWFsTW9kYWxD
b250YWluZXIoKTsKKyAgICAgICAgICAgIGlmIChjbGlja2FibGVDb250cm9sVHlwZXMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTW9kYWxDb250YWluZXIo
Y2xpY2thYmxlQ29udHJvbFR5cGVzLCBbd2Vha0RvY3VtZW50ID0gV1RGTW92ZSh3ZWFrRG9jdW1l
bnQpLCBvYnNlcnZlciwgY2xhc3NpZmllZENvbnRyb2xzID0gV1RGTW92ZShjbGFzc2lmaWVkQ29u
dHJvbHMpXShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBSZWZQdHIg
ZG9jdW1lbnQgPSB3ZWFrRG9jdW1lbnQuZ2V0KCk7CisgICAgICAgICAgICBwYWdlLT5jaHJvbWUo
KS5jbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JNb2RhbENvbnRhaW5lcihjbGlja2FibGVDb250cm9s
VHlwZXMsIFtkZWNpc2lvblNjb3BlID0gV1RGTW92ZShkZWNpc2lvblNjb3BlKSwgb2JzZXJ2ZXIs
IGNsYXNzaWZpZWRDb250cm9scyA9IFdURk1vdmUoY2xhc3NpZmllZENvbnRyb2xzKV0oYXV0byBk
ZWNpc2lvbikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgUmVmUHRyIGRvY3VtZW50ID0gZGVj
aXNpb25TY29wZS5kb2N1bWVudCgpOwogICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgIGlmIChvYnNlcnZl
ciAhPSBkb2N1bWVudC0+bW9kYWxDb250YWluZXJPYnNlcnZlcklmRXhpc3RzKCkpCisgICAgICAg
ICAgICAgICAgaWYgKG9ic2VydmVyICE9IGRvY3VtZW50LT5tb2RhbENvbnRhaW5lck9ic2VydmVy
SWZFeGlzdHMoKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIGlmIChkZWNpc2lvbiA9PSBNb2RhbENvbnRhaW5lckRlY2lzaW9uOjpTaG93KSB7
Ci0gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLT5yZXZlYWxNb2RhbENvbnRhaW5lcigpOwor
ICAgICAgICAgICAgICAgIGlmIChkZWNpc2lvbiA9PSBNb2RhbENvbnRhaW5lckRlY2lzaW9uOjpT
aG93KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBjb250cm9sVG9DbGljayA9IGNsYXNzaWZpZWRDb250
cm9scy5jb250cm9sVG9DbGljayhkZWNpc2lvbikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRy
b2xUb0NsaWNrLT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKG51bGxwdHIsIFNlbmRNb3VzZVVwRG93
bkV2ZW50cywgRG9Ob3RTaG93UHJlc3NlZExvb2spOworCisgICAgICAgICAgICAgICAgZGVjaXNp
b25TY29wZS5jb250aW51ZUhpZGluZ01vZGFsQ29udGFpbmVyQWZ0ZXJTY29wZSgpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Nb2RhbENvbnRhaW5lck9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01v
ZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaAppbmRleCA4ZWY1ZTc2YzgzYTBjODY4NDEwOGUxZGVhM2Fl
NDFhM2QwNWVjZGE0Li5lNmFjMjczM2FkOWE1NGVhYzc3MzVkYzgyNzI2YzhkYjM2NGRkMTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01vZGFsQ29udGFpbmVyT2JzZXJ2ZXIuaApAQCAtNTQs
NiArNTQsOCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHZvaWQgb3ZlcnJpZGVTZWFyY2hUZXJtRm9y
VGVzdGluZyhjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTW9k
YWxDb250YWluZXJQb2xpY3lEZWNpc2lvblNjb3BlOworCiAgICAgdm9pZCBzY2hlZHVsZUNsaWNr
YWJsZUVsZW1lbnRDb2xsZWN0aW9uKCk7CiAgICAgdm9pZCBjb2xsZWN0Q2xpY2thYmxlRWxlbWVu
dHNUaW1lckZpcmVkKCk7CiAgICAgdm9pZCByZXZlYWxNb2RhbENvbnRhaW5lcigpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg1OTdiMmFlZDk3
ZWJlNGQzOTg1ZGRmNWYwZjk0YjlkYzU1M2FhOWYuLjJhZTAyY2JmODg0NzU2OWFmMWQ1MjVjNWI0
ODVkOWFiNjk2ZTZiNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMS0wMSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBNb2RhbCBjb250YWluZXJzIGFyZSBpbmNv
cnJlY3RseSBkZXRlY3RlZCBpbiBuYXZpZ2F0aW9uIGVsZW1lbnRzIGFuZCBmaXhlZCBkb2N1bWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM0NjY5CisgICAgICAgIHJkYXI6Ly84NzAzMDYxMworCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCBzZXZlcmFsIG5ldyBBUEkgdGVzdHMgdG8gZXhl
cmNpc2UgdGhlIGNoYW5nZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL01vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb24ubW06CisgICAgICAgICgtW01vZGFsQ29u
dGFpbmVyV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgt
W01vZGFsQ29udGFpbmVyV2ViVmlldyBsb2FkSFRNTDpdKToKKyAgICAgICAgKC1bTW9kYWxDb250
YWluZXJXZWJWaWV3IF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck1vZGFsQ29udGFpbmVyOmRlY2lz
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTAx
LTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gU2ltcGxpZnkgc29tZSBGb250QXR0cmlidXRlcyBBUEkgdGVzdHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTW9kYWxDb250YWluZXJPYnNl
cnZhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTW9kYWxD
b250YWluZXJPYnNlcnZhdGlvbi5tbQppbmRleCAzNDVkOTdiNDhjNmZhOGFlMDI4MzNhNTZlODRl
MzA1ZDRhMjkwMzFiLi40ZmY1YmQxMzBiMmQ4MTgxOTQyODNlMDk1MmE0ZWM0MWRkNDM4MmYwIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL01vZGFsQ29u
dGFpbmVyT2JzZXJ2YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Nb2RhbENvbnRhaW5lck9ic2VydmF0aW9uLm1tCkBAIC0yNCw2ICsyNCw3IEBACiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0LmgiCiAKICNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKQEAgLTg2LDYgKzg3
LDcgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogQGludGVyZmFj
ZSBNb2RhbENvbnRhaW5lcldlYlZpZXcgOiBUZXN0V0tXZWJWaWV3IDxXS1VJRGVsZWdhdGVQcml2
YXRlPgorQHByb3BlcnR5IChub25hdG9taWMpIF9XS01vZGFsQ29udGFpbmVyRGVjaXNpb24gZGVj
aXNpb247CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS01vZGFsQ29udGFpbmVy
SW5mbyAqbGFzdE1vZGFsQ29udGFpbmVySW5mbzsKIEBlbmQKIApAQCAtOTMsNyArOTUsNiBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0V2ViS2l0QVBJOjpDbGFzc2lmaWVyTW9k
ZWxTd2l6emxlcj4gX2NsYXNzaWZpZXJNb2RlbFN3aXp6bGVyOwogICAgIFJldGFpblB0cjxUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlPiBfbmF2aWdhdGlvbkRlbGVnYXRlOwogICAgIFJldGFpblB0cjxf
V0tNb2RhbENvbnRhaW5lckluZm8+IF9sYXN0TW9kYWxDb250YWluZXJJbmZvOwotICAgIHN0ZDo6
b3B0aW9uYWw8X1dLTW9kYWxDb250YWluZXJEZWNpc2lvbj4gX2RlY2lzaW9uOwogICAgIGJvb2wg
X2RvbmVXYWl0aW5nRm9yRGVjaXNpb25IYW5kbGVyOwogfQogCkBAIC0xMDcsNiArMTA4LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRw
Il07CiAgICAgfSk7CiAKKyAgICBfZGVjaXNpb24gPSBfV0tNb2RhbENvbnRhaW5lckRlY2lzaW9u
U2hvdzsKICAgICBfY2xhc3NpZmllck1vZGVsU3dpenpsZXIgPSBtYWtlVW5pcXVlPFRlc3RXZWJL
aXRBUEk6OkNsYXNzaWZpZXJNb2RlbFN3aXp6bGVyPigpOwogICAgIF9uYXZpZ2F0aW9uRGVsZWdh
dGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAg
IF9kb25lV2FpdGluZ0ZvckRlY2lzaW9uSGFuZGxlciA9IHRydWU7CkBAIC0xNDgsOSArMTUwLDI2
IEBAIHByaXZhdGU6CiAgICAgW19uYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5h
dmlnYXRpb25XaXRoUHJlZmVyZW5jZXM6cHJlZmVyZW5jZXMuZ2V0KCldOwogfQogCistICh2b2lk
KWxvYWRIVE1MOihOU1N0cmluZyAqKWh0bWwKK3sKKyAgICBOU1VSTFJlcXVlc3QgKmZha2VSZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFtzZWxmIGxvYWRTaW11bGF0ZWRSZXF1ZXN0OmZh
a2VSZXF1ZXN0IHJlc3BvbnNlSFRNTFN0cmluZzpodG1sXTsKKworICAgIGF1dG8gcHJlZmVyZW5j
ZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKKyAgICBb
cHJlZmVyZW5jZXMgX3NldE1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3k6X1dLV2Vic2l0
ZU1vZGFsQ29udGFpbmVyT2JzZXJ2YXRpb25Qb2xpY3lQcm9tcHRdOworICAgIFtfbmF2aWdhdGlv
bkRlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uV2l0aFByZWZlcmVuY2VzOnByZWZl
cmVuY2VzLmdldCgpXTsKK30KKworLSAodm9pZCl3YWl0Rm9yVGV4dDooTlNTdHJpbmcgKil0ZXh0
Cit7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5n
KFsmXSgpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gW3NlbGYuY29udGVudHNBc1N0cmluZyBj
b250YWluc1N0cmluZzp0ZXh0XTsKKyAgICB9LCAzLCBAIlRpbWVkIG91dCB3YWl0aW5nIGZvciAn
JUAnIiwgdGV4dCk7Cit9CisKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGVjaWRlUG9saWN5Rm9yTW9kYWxDb250YWluZXI6KF9XS01vZGFsQ29udGFpbmVySW5mbyAqKWNv
bnRhaW5lckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tNb2RhbENvbnRhaW5lckRl
Y2lzaW9uKSloYW5kbGVyCiB7Ci0gICAgaGFuZGxlcihfZGVjaXNpb24udmFsdWVfb3IoX1dLTW9k
YWxDb250YWluZXJEZWNpc2lvblNob3cpKTsKKyAgICBoYW5kbGVyKF9kZWNpc2lvbik7CiAgICAg
X2xhc3RNb2RhbENvbnRhaW5lckluZm8gPSBjb250YWluZXJJbmZvOwogICAgIF9kb25lV2FpdGlu
Z0ZvckRlY2lzaW9uSGFuZGxlciA9IHRydWU7CiB9CkBAIC0yMzIsNCArMjUxLDQxIEBAIFRFU1Qo
TW9kYWxDb250YWluZXJPYnNlcnZhdGlvbiwgRGV0ZWN0U2VhcmNoVGVybUluQm9sZFRhZykKICAg
ICBFWFBFQ1RfRVEoW3dlYlZpZXcgbGFzdE1vZGFsQ29udGFpbmVySW5mb10uYXZhaWxhYmxlVHlw
ZXMsIF9XS01vZGFsQ29udGFpbmVyQ29udHJvbFR5cGVQb3NpdGl2ZSB8IF9XS01vZGFsQ29udGFp
bmVyQ29udHJvbFR5cGVOZWdhdGl2ZSk7CiB9CiAKK1RFU1QoTW9kYWxDb250YWluZXJPYnNlcnZh
dGlvbiwgSWdub3JlRml4ZWREb2N1bWVudEVsZW1lbnQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
Y3JlYXRlTW9kYWxDb250YWluZXJXZWJWaWV3KCk7CisgICAgW3dlYlZpZXcgc2V0RGVjaXNpb246
X1dLTW9kYWxDb250YWluZXJEZWNpc2lvbkhpZGVBbmRJZ25vcmVdOworICAgIFt3ZWJWaWV3IGxv
YWRIVE1MOkAoIjxoZWFkPiIKKyAgICAgICAgIjxzY3JpcHQ+aW50ZXJuYWxzLm92ZXJyaWRlTW9k
YWxDb250YWluZXJTZWFyY2hUZXJtRm9yVGVzdGluZygnZm9vJyk8L3NjcmlwdD4iCisgICAgICAg
ICI8c3R5bGU+aHRtbCB7IHBvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAw
JTsgdG9wOiAwOyBsZWZ0OiAwOyB9PC9zdHlsZT4iCisgICAgICAgICI8L2hlYWQ+PGJvZHk+PGgx
PmZvbyBiYXI8L2gxPjwvYm9keT4iKV07CisKKyAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgY29u
dGVudHNBc1N0cmluZ10gY29udGFpbnNTdHJpbmc6QCJmb28gYmFyIl0pOworICAgIEVYUEVDVF9O
VUxMKFt3ZWJWaWV3IGxhc3RNb2RhbENvbnRhaW5lckluZm9dKTsKK30KKworVEVTVChNb2RhbENv
bnRhaW5lck9ic2VydmF0aW9uLCBJZ25vcmVOYXZpZ2F0aW9uRWxlbWVudHMpCit7CisgICAgYXV0
byB3ZWJWaWV3ID0gY3JlYXRlTW9kYWxDb250YWluZXJXZWJWaWV3KCk7CisgICAgW3dlYlZpZXcg
c2V0RGVjaXNpb246X1dLTW9kYWxDb250YWluZXJEZWNpc2lvbkhpZGVBbmRJZ25vcmVdOworICAg
IFt3ZWJWaWV3IGxvYWRCdW5kbGVQYWdlOkAibW9kYWwtY29udGFpbmVyLWN1c3RvbSJdOworICAg
IFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzaG93KGA8bmF2PmhlbGxv
IHdvcmxkIDE8L25hdj48ZGl2IHJvbGU9J25hdmlnYXRpb24nPmhlbGxvIHdvcmxkIDI8L2Rpdj5g
KSJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAg
IEVYUEVDVF9UUlVFKFtbd2ViVmlldyBjb250ZW50c0FzU3RyaW5nXSBjb250YWluc1N0cmluZzpA
ImhlbGxvIHdvcmxkIDEiXSk7CisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IGNvbnRlbnRzQXNT
dHJpbmddIGNvbnRhaW5zU3RyaW5nOkAiaGVsbG8gd29ybGQgMiJdKTsKKyAgICBFWFBFQ1RfTlVM
TChbd2ViVmlldyBsYXN0TW9kYWxDb250YWluZXJJbmZvXSk7Cit9CisKK1RFU1QoTW9kYWxDb250
YWluZXJPYnNlcnZhdGlvbiwgU2hvd01vZGFsQ29udGFpbmVyQWZ0ZXJGYWxzZVBvc2l0aXZlKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZU1vZGFsQ29udGFpbmVyV2ViVmlldygpOworICAg
IFt3ZWJWaWV3IHNldERlY2lzaW9uOl9XS01vZGFsQ29udGFpbmVyRGVjaXNpb25IaWRlQW5kSWdu
b3JlXTsKKyAgICBbd2ViVmlldyBsb2FkQnVuZGxlUGFnZTpAIm1vZGFsLWNvbnRhaW5lci1jdXN0
b20iXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic2hvdyhg
PGRpdj5oZWxsbyB3b3JsZDwvZGl2PjxhIGhyZWY9J2h0dHBzOi8vYXBwbGUuY29tJz5DbGljayBo
ZXJlPC9hPmApIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JUZXh0OkAiaGVsbG8gd29ybGQiXTsKKyAgICBFWFBFQ1Rf
TlVMTChbd2ViVmlldyBsYXN0TW9kYWxDb250YWluZXJJbmZvXSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>