<?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>57955</bug_id>
          
          <creation_ts>2011-04-06 08:55:35 -0700</creation_ts>
          <short_desc>[GTK] Do not reference AccessibilityRenderObject from platform dependent code</short_desc>
          <delta_ts>2011-04-06 09:50:42 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>52148</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cfleizach</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>380427</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-04-06 08:55:35 -0700</bug_when>
    <thetext>Currently, many explicit references to AccessibilityRenderObject are being carried out in platform dependant code (that is, the GTK a11y wrapper and its related files), which shouldn&apos;t be needed if we had some methods virtually defined in AccessibilityObject.h, and properly overriden in its subclases.

More specifically, the methods that we would need in AccessibilityObject.h to be able to get rid of those explicit references in the GTK wrapper would be the following two:

    virtual RenderObject* renderer() const { return 0; }
    virtual AccessibilityObject* correspondingLabelForControlElement() const { return 0; }

Once defined, a lot of code could be simplified, and lines &apos;#include &quot;AccessibilityRenderObject.h&quot;&apos; removed from those .cpp files inside Source/WebCore/accessibility/gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380461</commentid>
    <comment_count>1</comment_count>
      <attachid>88443</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-04-06 09:12:37 -0700</bug_when>
    <thetext>Created attachment 88443
Patch proposal

Here is a patch for this. It doesn&apos;t has a Layout test since the best test it doesn&apos;t add anything new.

On top of that, I&apos;ve run all the a11y tests in the GTK and mac platforms and they keep passing, so I assume I didn&apos;t break anything with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380466</commentid>
    <comment_count>2</comment_count>
      <attachid>88443</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-04-06 09:16:58 -0700</bug_when>
    <thetext>Comment on attachment 88443
Patch proposal

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

looks good modulus changes

&gt; Source/WebCore/accessibility/AccessibilityObject.h:359
&gt; +

I would put this directly below node(), with no extra line between them, because they are related

&gt; Source/WebCore/accessibility/AccessibilityObject.h:410
&gt;      virtual AccessibilityObject* correspondingControlForLabelElement() const { return 0; }

does correspondingLabelForControlElement need to be made virtual in AXRenderObject.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380489</commentid>
    <comment_count>3</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-04-06 09:36:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 88443 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88443&amp;action=review
&gt; 
&gt; looks good modulus changes
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.h:359
&gt; &gt; +
&gt; 
&gt; I would put this directly below node(), with no extra line between them,
&gt; because they are related

Ok, I&apos;ll change that before committing.

&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.h:410
&gt; &gt;      virtual AccessibilityObject* correspondingControlForLabelElement() const { return 0; }
&gt; 
&gt; does correspondingLabelForControlElement need to be made virtual in
&gt; AXRenderObject.h?

Nope, as it is already virtual in there :-)

Thanks for the review. Committing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380510</commentid>
    <comment_count>4</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-04-06 09:50:42 -0700</bug_when>
    <thetext>Committed r83064: &lt;http://trac.webkit.org/changeset/83064&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88443</attachid>
            <date>2011-04-06 09:12:37 -0700</date>
            <delta_ts>2011-04-06 09:16:58 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2011-04-06-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>27482</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA1N2Y2YmQ4ZDg3OGEzOTUxNDgyNWIxMWFiZTk3MzUzOTI5YzQzOGRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDYgQXByIDIwMTEgMTc6Mjg6MDIgKzAyMDAKU3ViamVjdDogW1BBVENI
XSAyMDExLTA0LTA2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIERvIG5v
dCByZWZlcmVuY2UgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCBmcm9tIHBsYXRmb3JtIGRlcGVu
ZGVudCBjb2RlCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU3OTU1CgogICAgICAgIERvIG5vdCByZWZlcmVuY2UgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dCBmcm9tIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUKCiAgICAgICAgQWRkZWQgbmV3IHZpcnR1YWwg
ZnVuY3Rpb25zIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QuaCBhbmQgcmVtb3ZlZAogICAgICAgIGV4
cGxpY2l0IHJlZmVyZW5jZXMgdG8gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCBmcm9tIEdUSyBj
b2RlLgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgogICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW5kZXJlcik6IE5ldyB2aXJ0dWFs
IG1ldGhvZCwKICAgICAgICByZXR1cm5pbmcgMCBieSBkZWZhdWx0LiBPdmVycmlkZW4gYnkgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC4KICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQpOgogICAgICAgIE5ldyB2
aXJ0dWFsIG1ldGhvZCwgcmV0dXJuaW5nIDAgYnkgZGVmYXVsdC4gSXQgY29tcGxlbWVudHMgdGhl
CiAgICAgICAgYWxyZWFkeSBwcmVzZW50IG1ldGhvZCBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxh
YmVsRWxlbWVudCgpLgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oOgogICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpy
ZW5kZXJlcik6IE1hZGUgdmlydHVhbC4KCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BWE9i
amVjdENhY2hlQXRrLmNwcDoKICAgICAgICAoV2ViQ29yZTo6ZW1pdFRleHRDaGFuZ2VkKTogUmVm
ZXJlbmNlICBBY2Nlc3NpYmlsaXR5T2JqZWN0LAogICAgICAgIGluc3RlYWQgb2YgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC4KICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm9kZVRl
eHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CiAgICAgICAgRGl0dG8uCgogICAgICAgICog
YWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgogICAg
ICAgICh3ZWJraXRfYWNjZXNzaWJsZV9nZXRfbmFtZSk6IERvIG5vdCByZWZlcmVuY2UKICAgICAg
ICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgogICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9n
ZXRfZGVzY3JpcHRpb24pOiBEaXR0by4KICAgICAgICAoc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29y
ZU9iamVjdCk6IERpdHRvLgogICAgICAgIChvcHRpb25Gcm9tTGlzdCk6IERpdHRvLgogICAgICAg
IChvcHRpb25Gcm9tU2VsZWN0aW9uKTogRGl0dG8uCiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxl
X3NlbGVjdGlvbl9jbGVhcl9zZWxlY3Rpb24pOiBEaXR0by4KICAgICAgICAod2Via2l0X2FjY2Vz
c2libGVfc2VsZWN0aW9uX2dldF9zZWxlY3Rpb25fY291bnQpOiBEaXR0by4KICAgICAgICAod2Vi
a2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX3NlbGVjdF9hbGxfc2VsZWN0aW9uKTogRGl0dG8uCiAg
ICAgICAgKHRleHRGb3JPYmplY3QpOiBEaXR0by4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVf
dGV4dF9nZXRfdGV4dCk6IERpdHRvLgogICAgICAgIChnZXRQYW5nb0xheW91dEZvckF0ayk6IERp
dHRvLgogICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9jYXJldF9vZmZzZXQpOiBE
aXR0by4KICAgICAgICAoYmFzZWxpbmVQb3NpdGlvbkZvclJlbmRlck9iamVjdCk6IERpdHRvLgog
ICAgICAgIChnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KTogRGl0dG8uCiAg
ICAgICAgKGFjY2Vzc2liaWxpdHlPYmplY3RMZW5ndGgpOiBEaXR0by4KICAgICAgICAoZ2V0U2Vs
ZWN0aW9uT2Zmc2V0c0Zvck9iamVjdCk6IERpdHRvLgogICAgICAgICh3ZWJraXRfYWNjZXNzaWJs
ZV90ZXh0X3NldF9zZWxlY3Rpb24pOiBEaXR0by4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVf
dGV4dF9zZXRfY2FyZXRfb2Zmc2V0KTogRGl0dG8uCiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxl
X3RhYmxlX2dldF9jYXB0aW9uKTogRGl0dG8uCiAgICAgICAgKGdldEludGVyZmFjZU1hc2tGcm9t
T2JqZWN0KTogRGl0dG8uCgogICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0QWNjZXNz
aWJsZUh5cGVybGluay5jcHA6CiAgICAgICAgKGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KTogRGl0
dG8uCgogICAgICAgIFJlbW92ZWQgdW51c2VkIHJlbmRlcmVyKCkgbWV0aG9kIGZyb20gQWNjZXNz
aWJpbGl0eU1lbnVMaXN0LgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0Lmg6IFJlbW92ZWQgdW51c2VkIG1ldGhvZC4KICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDogUmVtb3ZlZCB1bnVzZWQgbWV0aG9kLgotLS0KIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1OSAr
KysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNw
cCAgICAgICAgfCAgICA1IC0KIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0LmggIHwgICAgMiAtCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCB8ICAgIDMgKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5oICAgICAgfCAgICAyICstCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCB8ICAgIDUgKy0KIC4uLi9ndGsvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAgICAgIHwgICA4NSArKysrKysrKystLS0tLS0tLS0t
LQogLi4uL2d0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCAgICAgICAgICAgICAgfCAg
ICAzICstCiA4IGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZTQ4YjVjZC4uOTI0MjMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDExLTA0LTA2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
R1RLXSBEbyBub3QgcmVmZXJlbmNlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgZnJvbSBwbGF0
Zm9ybSBkZXBlbmRlbnQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTc5NTUKKworICAgICAgICBEbyBub3QgcmVmZXJlbmNlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QgZnJvbSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlCisKKyAgICAgICAgQWRk
ZWQgbmV3IHZpcnR1YWwgZnVuY3Rpb25zIHRvIEFjY2Vzc2liaWxpdHlPYmplY3QuaCBhbmQgcmVt
b3ZlZAorICAgICAgICBleHBsaWNpdCByZWZlcmVuY2VzIHRvIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QgZnJvbSBHVEsgY29kZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cmVu
ZGVyZXIpOiBOZXcgdmlydHVhbCBtZXRob2QsCisgICAgICAgIHJldHVybmluZyAwIGJ5IGRlZmF1
bHQuIE92ZXJyaWRlbiBieSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVs
ZW1lbnQpOgorICAgICAgICBOZXcgdmlydHVhbCBtZXRob2QsIHJldHVybmluZyAwIGJ5IGRlZmF1
bHQuIEl0IGNvbXBsZW1lbnRzIHRoZQorICAgICAgICBhbHJlYWR5IHByZXNlbnQgbWV0aG9kIGNv
cnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCkuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlcmVyKTogTWFkZSB2aXJ0dWFsLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9ndGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjplbWl0VGV4dENoYW5nZWQpOiBSZWZlcmVuY2UgIEFjY2Vzc2liaWxpdHlPYmplY3Qs
CisgICAgICAgIGluc3RlYWQgb2YgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRp
b24pOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxl
X2dldF9uYW1lKTogRG8gbm90IHJlZmVyZW5jZQorICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfZ2V0X2Rlc2NyaXB0aW9uKTogRGl0
dG8uCisgICAgICAgIChzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KTogRGl0dG8uCisg
ICAgICAgIChvcHRpb25Gcm9tTGlzdCk6IERpdHRvLgorICAgICAgICAob3B0aW9uRnJvbVNlbGVj
dGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX2NsZWFy
X3NlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9u
X2dldF9zZWxlY3Rpb25fY291bnQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxl
X3NlbGVjdGlvbl9zZWxlY3RfYWxsX3NlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAodGV4dEZv
ck9iamVjdCk6IERpdHRvLgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfdGV4
dCk6IERpdHRvLgorICAgICAgICAoZ2V0UGFuZ29MYXlvdXRGb3JBdGspOiBEaXR0by4KKyAgICAg
ICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NhcmV0X29mZnNldCk6IERpdHRvLgorICAg
ICAgICAoYmFzZWxpbmVQb3NpdGlvbkZvclJlbmRlck9iamVjdCk6IERpdHRvLgorICAgICAgICAo
Z2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdCk6IERpdHRvLgorICAgICAgICAo
YWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aCk6IERpdHRvLgorICAgICAgICAoZ2V0U2VsZWN0aW9u
T2Zmc2V0c0Zvck9iamVjdCk6IERpdHRvLgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4
dF9zZXRfc2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0
X3NldF9jYXJldF9vZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3Rh
YmxlX2dldF9jYXB0aW9uKTogRGl0dG8uCisgICAgICAgIChnZXRJbnRlcmZhY2VNYXNrRnJvbU9i
amVjdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0QWNjZXNz
aWJsZUh5cGVybGluay5jcHA6CisgICAgICAgIChnZXRSYW5nZUxlbmd0aEZvck9iamVjdCk6IERp
dHRvLgorCisgICAgICAgIFJlbW92ZWQgdW51c2VkIHJlbmRlcmVyKCkgbWV0aG9kIGZyb20gQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3QuaDogUmVtb3ZlZCB1bnVzZWQgbWV0aG9kLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDogUmVtb3ZlZCB1bnVzZWQgbWV0aG9kLgor
CiAyMDExLTA0LTA1ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAppbmRleCBiZGU0
Y2Q0Li5lMGMwM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCkBAIC0zNywxMSArMzcsNiBAQCBBY2Nlc3NpYmls
aXR5TWVudUxpc3Q6OkFjY2Vzc2liaWxpdHlNZW51TGlzdChSZW5kZXJNZW51TGlzdCogcmVuZGVy
ZXIpCiB7CiB9CiAKLVJlbmRlck1lbnVMaXN0KiBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OnJlbmRl
cmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdG9SZW5kZXJNZW51TGlzdChBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpyZW5kZXJlcigpKTsKLX0KLQogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxp
c3Q6OnByZXNzKCkgY29uc3QKIHsKICAgICBSZW5kZXJNZW51TGlzdCogbWVudUxpc3QgPSBzdGF0
aWNfY2FzdDxSZW5kZXJNZW51TGlzdCo+KG1fcmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgKaW5kZXggNDA4MmYw
YS4uY2RiM2FjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdC5oCkBAIC00Miw4ICs0Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSBj
b25zdDsKIAotICAgIFJlbmRlck1lbnVMaXN0KiByZW5kZXJlcigpIGNvbnN0OwotCiBwcml2YXRl
OgogICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdChSZW5kZXJNZW51TGlzdCopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4
IDJkMjdlMzkuLmVmNDk4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0zNTUsNiArMzU1LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJv
b2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0ICB7IHJldHVybiB0cnVlOyB9CiAKKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisK
ICAgICB2aXJ0dWFsIGludCBoZWFkaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KQEAgLTQwNCw2ICs0MDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGxpbmtlZFVJRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
eyB9CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJv
bEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIGNvbnN0
IHsgcmV0dXJuIDA7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggM2EyOWZlOS4uY2NkMzNk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBJbnRQb2ludCBjbGlja1BvaW50KCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBzZXRSZW5k
ZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9
CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJlcjsgfQogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJCb3hNb2RlbE9iamVj
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgTm9kZSogbm9kZSgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCmlu
ZGV4IGY5MTBjYTYuLjBlNzIwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJBdGsuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiR093blB0ci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiU2Vs
ZWN0RWxlbWVudC5oIgpAQCAtMTU3LDcgKzE1Niw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9z
dFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIEFY
CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBlbWl0VGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdCogb2JqZWN0LCBBWE9iamVjdENhY2hlOjpBWFRleHRDaGFuZ2UgdGV4dENoYW5n
ZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCkKK3N0YXRpYyB2b2lkIGVtaXRUZXh0
Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFYT2JqZWN0Q2FjaGU6OkFYVGV4
dENoYW5nZSB0ZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50KQogewog
ICAgIC8vIEdldCB0aGUgYXhPYmplY3QgZm9yIHRoZSBwYXJlbnQgb2JqZWN0CiAgICAgQXRrT2Jq
ZWN0KiB3cmFwcGVyID0gb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKS0+d3JhcHBlcigp
OwpAQCAtMTg3LDcgKzE4Niw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAKICAgICBOb2Rl
KiBub2RlID0gb2JqZWN0LT5ub2RlKCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwg
MCksIFBvc2l0aW9uKG5vZGUsIDApKTsKLSAgICBlbWl0VGV4dENoYW5nZWQodG9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KG9iamVjdCksIHRleHRDaGFuZ2UsIG9mZnNldCArIFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpLCBjb3VudCk7CisgICAgZW1pdFRleHRDaGFuZ2Vk
KG9iamVjdCwgdGV4dENoYW5nZSwgb2Zmc2V0ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChy
YW5nZS5nZXQoKSksIGNvdW50KTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVGb2N1
c2VkVUlFbGVtZW50Q2hhbmdlZChSZW5kZXJPYmplY3QqIG9sZEZvY3VzZWRSZW5kZXIsIFJlbmRl
ck9iamVjdCogbmV3Rm9jdXNlZFJlbmRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRr
LmNwcAppbmRleCBhNTU4ZTIyLi42ZDY2MmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJBdGsuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3Qu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIgogI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlMaXN0Qm94T3B0aW9uLmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIK
QEAgLTE3MSw5ICsxNzAsOCBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxl
X2dldF9uYW1lKEF0a09iamVjdCogb2JqZWN0KQogICAgIGlmICghY29yZU9iamVjdC0+aXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmcoY29y
ZU9iamVjdC0+c3RyaW5nVmFsdWUoKSk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
KiByZW5kZXJPYmplY3QgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4o
Y29yZU9iamVjdCk7CiAgICAgaWYgKGNvcmVPYmplY3QtPmlzQ29udHJvbCgpKSB7Ci0gICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhYmVsID0gcmVuZGVyT2JqZWN0LT5jb3JyZXNwb25kaW5n
TGFiZWxGb3JDb250cm9sRWxlbWVudCgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBs
YWJlbCA9IGNvcmVPYmplY3QtPmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCk7
CiAgICAgICAgIGlmIChsYWJlbCkgewogICAgICAgICAgICAgQXRrT2JqZWN0KiBhdGtPYmplY3Qg
PSBsYWJlbC0+d3JhcHBlcigpOwogICAgICAgICAgICAgaWYgKEFUS19JU19URVhUKGF0a09iamVj
dCkpCkBAIC0xODEsMTMgKzE3OSwxMyBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nl
c3NpYmxlX2dldF9uYW1lKEF0a09iamVjdCogb2JqZWN0KQogICAgICAgICB9CiAKICAgICAgICAg
Ly8gVHJ5IHRleHQgdW5kZXIgdGhlIG5vZGUuCi0gICAgICAgIFN0cmluZyB0ZXh0VW5kZXIgPSBy
ZW5kZXJPYmplY3QtPnRleHRVbmRlckVsZW1lbnQoKTsKKyAgICAgICAgU3RyaW5nIHRleHRVbmRl
ciA9IGNvcmVPYmplY3QtPnRleHRVbmRlckVsZW1lbnQoKTsKICAgICAgICAgaWYgKHRleHRVbmRl
ci5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmcodGV4dFVuZGVyKTsK
ICAgICB9CiAKLSAgICBpZiAocmVuZGVyT2JqZWN0LT5pc0ltYWdlKCkgfHwgcmVuZGVyT2JqZWN0
LT5pc0lucHV0SW1hZ2UoKSkgewotICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyT2JqZWN0LT5y
ZW5kZXJlcigpLT5ub2RlKCk7CisgICAgaWYgKGNvcmVPYmplY3QtPmlzSW1hZ2UoKSB8fCBjb3Jl
T2JqZWN0LT5pc0lucHV0SW1hZ2UoKSkgeworICAgICAgICBOb2RlKiBub2RlID0gY29yZU9iamVj
dC0+bm9kZSgpOwogICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5pc0hUTUxFbGVtZW50KCkpIHsK
ICAgICAgICAgICAgIC8vIEdldCB0aGUgYXR0cmlidXRlIHJhdGhlciB0aGFuIGFsdFRleHQgU3Ry
aW5nIHNvIGFzIG5vdCB0byBmYWxsIGJhY2sgb24gdGl0bGUuCiAgICAgICAgICAgICBTdHJpbmcg
YWx0ID0gdG9IVE1MRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6YWx0QXR0
cik7CkBAIC0xOTcsNyArMTk1LDcgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRfYWNjZXNz
aWJsZV9nZXRfbmFtZShBdGtPYmplY3QqIG9iamVjdCkKICAgICB9CiAKICAgICAvLyBGYWxsYmFj
ayBmb3IgdGhlIHdlYkFyZWEgb2JqZWN0OiBqdXN0IHJldHVybiB0aGUgZG9jdW1lbnQncyB0aXRs
ZS4KLSAgICBpZiAocmVuZGVyT2JqZWN0LT5pc1dlYkFyZWEoKSkgeworICAgIGlmIChjb3JlT2Jq
ZWN0LT5pc1dlYkFyZWEoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb3JlT2Jq
ZWN0LT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoZG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1
cm4gcmV0dXJuU3RyaW5nKGRvY3VtZW50LT50aXRsZSgpKTsKQEAgLTIxMSw3ICsyMDksNyBAQCBz
dGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9kZXNjcmlwdGlvbihBdGtP
YmplY3QqIG9iamVjdCkKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29y
ZShvYmplY3QpOwogICAgIE5vZGUqIG5vZGUgPSAwOwogICAgIGlmIChjb3JlT2JqZWN0LT5pc0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKLSAgICAgICAgbm9kZSA9IHN0YXRpY19jYXN0PEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihjb3JlT2JqZWN0KS0+cmVuZGVyZXIoKS0+bm9kZSgp
OworICAgICAgICBub2RlID0gY29yZU9iamVjdC0+bm9kZSgpOwogICAgIGlmICghbm9kZSB8fCAh
bm9kZS0+aXNIVE1MRWxlbWVudCgpIHx8IGNvcmVPYmplY3QtPmFyaWFSb2xlQXR0cmlidXRlKCkg
IT0gVW5rbm93blJvbGUpCiAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmcoY29yZU9iamVjdC0+
YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkpOwogCkBAIC0yMzMsMTMgKzIzMSwxMiBAQCBzdGF0
aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9kZXNjcmlwdGlvbihBdGtPYmpl
Y3QqIG9iamVjdCkKIAogc3RhdGljIHZvaWQgc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVj
dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGtSZWxhdGlvblNldCogcmVsYXRp
b25TZXQpCiB7Ci0gICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCogYWNjT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KGNvcmVPYmplY3QpOwotICAgIGlm
IChhY2NPYmplY3QtPmlzQ29udHJvbCgpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGxhYmVsID0gYWNjT2JqZWN0LT5jb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgp
OworICAgIGlmIChjb3JlT2JqZWN0LT5pc0NvbnRyb2woKSkgeworICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBsYWJlbCA9IGNvcmVPYmplY3QtPmNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRy
b2xFbGVtZW50KCk7CiAgICAgICAgIGlmIChsYWJlbCkKICAgICAgICAgICAgIGF0a19yZWxhdGlv
bl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJF
TExFRF9CWSwgbGFiZWwtPndyYXBwZXIoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY29udHJvbCA9IGFjY09iamVjdC0+Y29ycmVzcG9uZGluZ0NvbnRyb2xG
b3JMYWJlbEVsZW1lbnQoKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29udHJvbCA9
IGNvcmVPYmplY3QtPmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCk7CiAgICAg
ICAgIGlmIChjb250cm9sKQogICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRp
b25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMX0ZPUiwgY29udHJvbC0+
d3JhcHBlcigpKTsKICAgICB9CkBAIC04MjMsNyArODIwLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9wdGlvbkZyb21MaXN0KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGkp
CiAgICAgaWYgKCFsaXN0T2JqZWN0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBvcHRpb25zID0g
bGlzdE9iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igb3B0aW9ucyA9IGxpc3RPYmplY3QtPmNoaWxkcmVuKCk7CiAg
ICAgaWYgKGkgPCBzdGF0aWNfY2FzdDxnaW50PihvcHRpb25zLnNpemUoKSkpCiAgICAgICAgIHJl
dHVybiBvcHRpb25zLmF0KGkpLmdldCgpOwogCkBAIC04MzgsMTEgKzgzNSwxMSBAQCBzdGF0aWMg
QWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uRnJvbVNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNl
bGVjdGlvbiwgZ2ludCBpKQogICAgIGlmICghY29yZVNlbGVjdGlvbiB8fCAhY29yZVNlbGVjdGlv
bi0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgfHwgaSA8IDApCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7CiAgICAgaWYgKGNvcmVTZWxlY3Rp
b24tPmlzTGlzdEJveCgpKQogICAgICAgICBjb3JlU2VsZWN0aW9uLT5zZWxlY3RlZENoaWxkcmVu
KHNlbGVjdGVkSXRlbXMpOwogICAgIGVsc2UgaWYgKGNvcmVTZWxlY3Rpb24tPmlzTWVudUxpc3Qo
KSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdG9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KGNvcmVTZWxlY3Rpb24pLT5yZW5kZXJlcigpOworICAgICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gY29yZVNlbGVjdGlvbi0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC04ODMsNyArODgwLDcgQEAgc3Rh
dGljIGdib29sZWFuIHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9jbGVhcl9zZWxlY3Rpb24o
QXRrU2VsZWN0aW9uKiBzZWxlY3QKICAgICBpZiAoIWNvcmVTZWxlY3Rpb24pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZEl0ZW1zOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZEl0ZW1zOwogICAgIGlmIChjb3Jl
U2VsZWN0aW9uLT5pc0xpc3RCb3goKSB8fCBjb3JlU2VsZWN0aW9uLT5pc01lbnVMaXN0KCkpIHsK
ICAgICAgICAgLy8gU2V0IHRoZSBsaXN0IG9mIHNlbGVjdGVkIGl0ZW1zIHRvIGFuIGVtcHR5IGxp
c3Q7IHRoZW4gdmVyaWZ5IHRoYXQgaXQgd29ya2VkLgogICAgICAgICBBY2Nlc3NpYmlsaXR5TGlz
dEJveCogbGlzdEJveCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4oY29yZVNl
bGVjdGlvbik7CkBAIC05MTMsMTMgKzkxMCwxMyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25fZ2V0X3NlbGVjdGlvbl9jb3VudChBdGtTZWxlY3Rpb24qIHNlbGVjdAog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChjb3JlU2VsZWN0aW9uLT5pc0xpc3RCb3goKSkg
ewotICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3Igc2VsZWN0ZWRJdGVtczsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7CiAgICAgICAgIGNvcmVTZWxl
Y3Rpb24tPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJdGVtcyk7CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxnaW50PihzZWxlY3RlZEl0ZW1zLnNpemUoKSk7CiAgICAgfQogCiAgICAgaWYg
KGNvcmVTZWxlY3Rpb24tPmlzTWVudUxpc3QoKSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gdG9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KGNvcmVTZWxlY3Rpb24pLT5yZW5k
ZXJlcigpOworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZVNlbGVjdGlvbi0+
cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgICAgIHJldHVybiAw
OwogCkBAIC05NjgsMTEgKzk2NSwxMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2FjY2Vzc2li
bGVfc2VsZWN0aW9uX3NlbGVjdF9hbGxfc2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogcwogICAgIGlm
ICghY29yZVNlbGVjdGlvbiB8fCAhY29yZVNlbGVjdGlvbi0+aXNNdWx0aVNlbGVjdGFibGUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gY29yZVNlbGVjdGlvbi0+Y2hp
bGRyZW4oKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgY2hpbGRyZW4gPSBjb3JlU2VsZWN0aW9uLT5jaGlsZHJlbigpOwogICAgIGlmIChjb3Jl
U2VsZWN0aW9uLT5pc0xpc3RCb3goKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5TGlzdEJveCog
bGlzdEJveCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4oY29yZVNlbGVjdGlv
bik7CiAgICAgICAgIGxpc3RCb3gtPnNldFNlbGVjdGVkQ2hpbGRyZW4oY2hpbGRyZW4pOwotICAg
ICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3Igc2VsZWN0ZWRJdGVtczsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7CiAgICAgICAgIGxpc3RCb3gtPnNlbGVj
dGVkQ2hpbGRyZW4oc2VsZWN0ZWRJdGVtcyk7CiAgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1z
LnNpemUoKSA9PSBjaGlsZHJlbi5zaXplKCk7CiAgICAgfQpAQCAtMTA4OSwyNiArMTA4NiwyNiBA
QCBnY2hhciogdGV4dEZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0
dXJuIGdfc3RyaW5nX2ZyZWUocmVzdWx0VGV4dCwgRkFMU0UpOwogfQogCi1nY2hhciogdGV4dEZv
ck9iamVjdChBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiBhY2NPYmplY3QpCitnY2hhciogdGV4
dEZvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0KQogewogICAgIEdTdHJp
bmcqIHN0ciA9IGdfc3RyaW5nX25ldygwKTsKIAogICAgIC8vIEZvciB0ZXh0IGNvbnRyb2xzLCB3
ZSBjYW4gZ2V0IHRoZSB0ZXh0IGxpbmUgYnkgbGluZS4KLSAgICBpZiAoYWNjT2JqZWN0LT5pc1Rl
eHRDb250cm9sKCkpIHsKLSAgICAgICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IGFjY09iamVjdC0+
dGV4dExlbmd0aCgpOworICAgIGlmIChjb3JlT2JqZWN0LT5pc1RleHRDb250cm9sKCkpIHsKKyAg
ICAgICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IGNvcmVPYmplY3QtPnRleHRMZW5ndGgoKTsKICAg
ICAgICAgaW50IGxpbmVOdW1iZXIgPSAwOwotICAgICAgICBQbGFpblRleHRSYW5nZSByYW5nZSA9
IGFjY09iamVjdC0+ZG9BWFJhbmdlRm9yTGluZShsaW5lTnVtYmVyKTsKKyAgICAgICAgUGxhaW5U
ZXh0UmFuZ2UgcmFuZ2UgPSBjb3JlT2JqZWN0LT5kb0FYUmFuZ2VGb3JMaW5lKGxpbmVOdW1iZXIp
OwogICAgICAgICB3aGlsZSAocmFuZ2UubGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBXaGVuIGEg
bGluZSBvZiB0ZXh0IHdyYXBzIGluIGEgdGV4dCBhcmVhLCB0aGUgZmluYWwgc3BhY2UgaXMgcmVt
b3ZlZC4KICAgICAgICAgICAgIGlmIChyYW5nZS5zdGFydCArIHJhbmdlLmxlbmd0aCA8IHRleHRM
ZW5ndGgpCiAgICAgICAgICAgICAgICAgcmFuZ2UubGVuZ3RoIC09IDE7Ci0gICAgICAgICAgICBT
dHJpbmcgbGluZVRleHQgPSBhY2NPYmplY3QtPmRvQVhTdHJpbmdGb3JSYW5nZShyYW5nZSk7Cisg
ICAgICAgICAgICBTdHJpbmcgbGluZVRleHQgPSBjb3JlT2JqZWN0LT5kb0FYU3RyaW5nRm9yUmFu
Z2UocmFuZ2UpOwogICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHN0ciwgbGluZVRleHQudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiXG4iKTsKLSAg
ICAgICAgICAgIHJhbmdlID0gYWNjT2JqZWN0LT5kb0FYUmFuZ2VGb3JMaW5lKCsrbGluZU51bWJl
cik7CisgICAgICAgICAgICByYW5nZSA9IGNvcmVPYmplY3QtPmRvQVhSYW5nZUZvckxpbmUoKyts
aW5lTnVtYmVyKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYWNjT2JqZWN0LT5pc0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QoKSkgewotICAgICAgICBHT3duUHRyPGdjaGFyPiByZW5kZXJl
clRleHQodGV4dEZvclJlbmRlcmVyKGFjY09iamVjdC0+cmVuZGVyZXIoKSkpOworICAgIH0gZWxz
ZSBpZiAoY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpIHsKKyAgICAg
ICAgR093blB0cjxnY2hhcj4gcmVuZGVyZXJUZXh0KHRleHRGb3JSZW5kZXJlcihjb3JlT2JqZWN0
LT5yZW5kZXJlcigpKSk7CiAgICAgICAgIGdfc3RyaW5nX2FwcGVuZChzdHIsIHJlbmRlcmVyVGV4
dC5nZXQoKSk7CiAgICAgfQogCkBAIC0xMTM3LDE0ICsxMTM0LDE0IEBAIHN0YXRpYyBnY2hhciog
d2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfdGV4dChBdGtUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0
T2Zmc2V0LCBnCiAKICAgICBpZiAoIXJldC5sZW5ndGgoKSkgewogICAgICAgICAvLyBUaGlzIGNh
biBoYXBwZW4gYXQgbGVhc3Qgd2l0aCBhbm9ueW1vdXMgUmVuZGVyQmxvY2tzIChlLmcuIGJvZHkg
dGV4dCBhbW9uZ3N0IHBhcmFncmFwaHMpCi0gICAgICAgIHJldCA9IFN0cmluZyh0ZXh0Rm9yT2Jq
ZWN0KHRvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChjb3JlT2JqZWN0KSkpOworICAgICAgICBy
ZXQgPSBTdHJpbmcodGV4dEZvck9iamVjdChjb3JlT2JqZWN0KSk7CiAgICAgICAgIGlmICghZW5k
KQogICAgICAgICAgICAgZW5kID0gcmV0Lmxlbmd0aCgpOwogICAgIH0KIAogICAgIC8vIFByZWZp
eCBhIGl0ZW0gbnVtYmVyL2J1bGxldCBpZiBuZWVkZWQKICAgICBpZiAoY29yZU9iamVjdC0+cm9s
ZVZhbHVlKCkgPT0gTGlzdEl0ZW1Sb2xlKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogb2JqUmVu
ZGVyZXIgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4oY29yZU9iamVj
dCktPnJlbmRlcmVyKCk7CisgICAgICAgIFJlbmRlck9iamVjdCogb2JqUmVuZGVyZXIgPSBjb3Jl
T2JqZWN0LT5yZW5kZXJlcigpOwogICAgICAgICBpZiAob2JqUmVuZGVyZXIgJiYgb2JqUmVuZGVy
ZXItPmlzTGlzdEl0ZW0oKSkgewogICAgICAgICAgICAgU3RyaW5nIG1hcmtlclRleHQgPSB0b1Jl
bmRlckxpc3RJdGVtKG9ialJlbmRlcmVyKS0+bWFya2VyVGV4dFdpdGhTdWZmaXgoKTsKICAgICAg
ICAgICAgIHJldCA9IG9ialJlbmRlcmVyLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBt
YXJrZXJUZXh0ICsgcmV0IDogcmV0ICsgbWFya2VyVGV4dDsKQEAgLTExODAsMTIgKzExNzcsOCBA
QCBzdGF0aWMgUGFuZ29MYXlvdXQqIGdldFBhbmdvTGF5b3V0Rm9yQXRrKEF0a1RleHQqIHRleHRP
YmplY3QpCiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QqIGFjY09iamVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QqPihjb3JlT2JqZWN0KTsKLSAgICBpZiAoIWFjY09iamVjdCkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KICAgICAvLyBDcmVhdGUgYSBzdHJpbmcgd2l0aCB0aGUgbGF5b3V0IGFz
IGl0IGFwcGVhcnMgb24gdGhlIHNjcmVlbgotICAgIFBhbmdvTGF5b3V0KiBsYXlvdXQgPSBndGtf
d2lkZ2V0X2NyZWF0ZV9wYW5nb19sYXlvdXQoc3RhdGljX2Nhc3Q8R3RrV2lkZ2V0Kj4od2ViVmll
dyksIHRleHRGb3JPYmplY3QoYWNjT2JqZWN0KSk7CisgICAgUGFuZ29MYXlvdXQqIGxheW91dCA9
IGd0a193aWRnZXRfY3JlYXRlX3BhbmdvX2xheW91dChzdGF0aWNfY2FzdDxHdGtXaWRnZXQqPih3
ZWJWaWV3KSwgdGV4dEZvck9iamVjdChjb3JlT2JqZWN0KSk7CiAgICAgZ19vYmplY3Rfc2V0X2Rh
dGFfZnVsbChHX09CSkVDVCh0ZXh0T2JqZWN0KSwgIndlYmtpdC1hY2Nlc3NpYmxlLXBhbmdvLWxh
eW91dCIsIGxheW91dCwgZ19vYmplY3RfdW5yZWYpOwogICAgIHJldHVybiBsYXlvdXQ7CiB9CkBA
IC0xMjMxLDcgKzEyMjQsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dl
dF9jYXJldF9vZmZzZXQoQXRrVGV4dCogdGV4dCkKICAgICBpZiAoIW9iamVjdEFuZE9mZnNldFVu
aWdub3JlZChmb2N1c2VkT2JqZWN0LCBvZmZzZXQsICFjb3JlT2JqZWN0LT5pc0xpbmsoKSkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdChjb3JlT2JqZWN0KS0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVuZGVyZXIoKTsKICAgICBpZiAocmVuZGVy
ZXIgJiYgcmVuZGVyZXItPmlzTGlzdEl0ZW0oKSkgewogICAgICAgICBTdHJpbmcgbWFya2VyVGV4
dCA9IHRvUmVuZGVyTGlzdEl0ZW0ocmVuZGVyZXIpLT5tYXJrZXJUZXh0V2l0aFN1ZmZpeCgpOwog
CkBAIC0xMjQzLDcgKzEyMzYsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0
X2dldF9jYXJldF9vZmZzZXQoQXRrVGV4dCogdGV4dCkKICAgICByZXR1cm4gb2Zmc2V0OwogfQog
Ci1zdGF0aWMgaW50IGJhc2VsaW5lUG9zaXRpb25Gb3JBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
KFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0KQorc3RhdGljIGludCBiYXNlbGluZVBvc2l0aW9u
Rm9yUmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0KQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGJhc2VsaW5lUG9zaXRpb24gb3JpZ2luYXRlcyBm
cm9tIFJlbmRlck9iamVjdC5jcHAgYW5kIHdhcwogICAgIC8vIHJlbW92ZWQgaW4gcjcwMDcyLiBU
aGUgaW1wbGVtZW50YXRpb24gbG9va3MgaW5jb3JyZWN0IHRob3VnaCwgYmVjYXVzZSB0aGlzIGlz
IG5vdCB0aGUKQEAgLTEyNTcsNyArMTI1MCw3IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIGdl
dEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0CiAg
ICAgaWYgKCFvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4ob2JqZWN0KS0+cmVuZGVyZXIoKTsKKyAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gb2JqZWN0LT5yZW5kZXJlcigpOwogICAgIFJlbmRlclN0
eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogCiAgICAgQXRrQXR0cmlidXRlU2V0KiBy
ZXN1bHQgPSAwOwpAQCAtMTI4MiwxMCArMTI3NSwxMCBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0
KiBnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxp
dAogICAgIGJvb2wgaW5jbHVkZVJpc2UgPSB0cnVlOwogICAgIHN3aXRjaCAoc3R5bGUtPnZlcnRp
Y2FsQWxpZ24oKSkgewogICAgIGNhc2UgU1VCOgotICAgICAgICBiYXNlbGluZVBvc2l0aW9uID0g
LTEgKiBiYXNlbGluZVBvc2l0aW9uRm9yQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJl
cik7CisgICAgICAgIGJhc2VsaW5lUG9zaXRpb24gPSAtMSAqIGJhc2VsaW5lUG9zaXRpb25Gb3JS
ZW5kZXJPYmplY3QocmVuZGVyZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNVUEVSOgot
ICAgICAgICBiYXNlbGluZVBvc2l0aW9uID0gYmFzZWxpbmVQb3NpdGlvbkZvckFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QocmVuZGVyZXIpOworICAgICAgICBiYXNlbGluZVBvc2l0aW9uID0gYmFz
ZWxpbmVQb3NpdGlvbkZvclJlbmRlck9iamVjdChyZW5kZXJlcik7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQkFTRUxJTkU6CiAgICAgICAgIGJhc2VsaW5lUG9zaXRpb24gPSAwOwpAQCAtMTQz
MSw3ICsxNDI0LDcgQEAgc3RhdGljIGd1aW50IGFjY2Vzc2liaWxpdHlPYmplY3RMZW5ndGgoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIC8vIFRlY2hub2xvZ2llcywgd2Ug
bmVlZCB0byBoYXZlIGEgd2F5IHRvIG1lYXN1cmUgdGhlaXIgbGVuZ3RoCiAgICAgLy8gZm9yIHRo
b3NlIGNhc2VzIHdoZW4gaXQncyBuZWVkZWQgdG8gdGFrZSBpdCBpbnRvIGFjY291bnQKICAgICAv
LyBzZXBhcmF0ZWx5IChhcyBpbiBnZXRBY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yT2Zmc2V0KQotICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Kj4ob2JqZWN0KS0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gb2JqZWN0LT5yZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJl
ci0+aXNMaXN0TWFya2VyKCkpIHsKICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciogbWFya2VyID0g
dG9SZW5kZXJMaXN0TWFya2VyKHJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuIG1hcmtlci0+dGV4
dCgpLmxlbmd0aCgpICsgbWFya2VyLT5zdWZmaXgoKS5sZW5ndGgoKTsKQEAgLTE2MzAsNyArMTYy
Myw3IEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QoQWNjZXNzaWJp
bGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAgICAgc3RhcnRPZmZzZXQgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlSW5QYXJlbnQuZ2V0KCkpOwogCiAgICAgLy8gV2UgbmVl
ZCB0byBhZGp1c3QgdGhlIG9mZnNldHMgZm9yIHRoZSBsaXN0IGl0ZW0gbWFya2VyLgotICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSB0b0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoY29yZU9i
amVjdCktPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvcmVPYmpl
Y3QtPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0xpc3RJdGVt
KCkpIHsKICAgICAgICAgU3RyaW5nIG1hcmtlclRleHQgPSB0b1JlbmRlckxpc3RJdGVtKHJlbmRl
cmVyKS0+bWFya2VyVGV4dFdpdGhTdWZmaXgoKTsKICAgICAgICAgc3RhcnRPZmZzZXQgKz0gbWFy
a2VyVGV4dC5sZW5ndGgoKTsKQEAgLTE3MDQsNyArMTY5Nyw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRfYWNjZXNzaWJsZV90ZXh0X3NldF9zZWxlY3Rpb24oQXRrVGV4dCogdGV4dCwgZ2ludCBz
ZWxlY3RpCiAgICAgICAgIGVuZE9mZnNldCA9IHRleHRDb3VudDsKIAogICAgIC8vIFdlIG5lZWQg
dG8gYWRqdXN0IHRoZSBvZmZzZXRzIGZvciB0aGUgbGlzdCBpdGVtIG1hcmtlci4KLSAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gdG9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KGNvcmVPYmpl
Y3QpLT5yZW5kZXJlcigpOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlT2JqZWN0
LT5yZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNMaXN0SXRlbSgp
KSB7CiAgICAgICAgIFN0cmluZyBtYXJrZXJUZXh0ID0gdG9SZW5kZXJMaXN0SXRlbShyZW5kZXJl
ciktPm1hcmtlclRleHRXaXRoU3VmZml4KCk7CiAgICAgICAgIGludCBtYXJrZXJMZW5ndGggPSBt
YXJrZXJUZXh0Lmxlbmd0aCgpOwpAQCAtMTc0Nyw3ICsxNzQwLDcgQEAgc3RhdGljIGdib29sZWFu
IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfc2V0X2NhcmV0X29mZnNldChBdGtUZXh0KiB0ZXh0LCBn
aW50IG9mZnMKICAgICBpZiAoIWNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dCgpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gdG9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KGNvcmVPYmplY3QpLT5yZW5kZXJlcigpOwor
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlT2JqZWN0LT5yZW5kZXJlcigpOwogICAg
IGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNMaXN0SXRlbSgpKSB7CiAgICAgICAgIFN0cmlu
ZyBtYXJrZXJUZXh0ID0gdG9SZW5kZXJMaXN0SXRlbShyZW5kZXJlciktPm1hcmtlclRleHRXaXRo
U3VmZml4KCk7CiAgICAgICAgIGludCBtYXJrZXJMZW5ndGggPSBtYXJrZXJUZXh0Lmxlbmd0aCgp
OwpAQCAtMjExNyw3ICsyMTEwLDcgQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0X2FjY2Vzc2li
bGVfdGFibGVfZ2V0X2NhcHRpb24oQXRrVGFibGUqIHRhYmxlKQogewogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGFjY1RhYmxlID0gY29yZSh0YWJsZSk7CiAgICAgaWYgKGFjY1RhYmxlLT5pc0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkgewotICAgICAgICBOb2RlKiBub2RlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KGFjY1RhYmxlKS0+cmVuZGVyZXIoKS0+
bm9kZSgpOworICAgICAgICBOb2RlKiBub2RlID0gYWNjVGFibGUtPm5vZGUoKTsKICAgICAgICAg
aWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRhYmxlVGFnKSkgewogICAg
ICAgICAgICAgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqIGNhcHRpb24gPSBzdGF0aWNfY2FzdDxI
VE1MVGFibGVFbGVtZW50Kj4obm9kZSktPmNhcHRpb24oKTsKICAgICAgICAgICAgIGlmIChjYXB0
aW9uKQpAQCAtMjQ3Miw3ICsyNDY1LDcgQEAgc3RhdGljIGd1aW50MTYgZ2V0SW50ZXJmYWNlTWFz
a0Zyb21PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkKICAgICAgICAgICAg
IC8vIEFkZCB0aGUgVEVYVCBpbnRlcmZhY2UgZm9yIGxpc3QgaXRlbXMgd2hvc2UKICAgICAgICAg
ICAgIC8vIGZpcnN0IGFjY2Vzc2libGUgY2hpbGQgaGFzIGEgdGV4dCByZW5kZXJlcgogICAgICAg
ICAgICAgaWYgKHJvbGUgPT0gTGlzdEl0ZW1Sb2xlKSB7Ci0gICAgICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gYXhS
ZW5kZXJPYmplY3QtPmNoaWxkcmVuKCk7CisgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gY29yZU9iamVjdC0+
Y2hpbGRyZW4oKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4UmVuZGVyQ2hpbGQgPSBjaGls
ZHJlbi5hdCgwKS5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSBn
ZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdChheFJlbmRlckNoaWxkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0QWNjZXNzaWJsZUh5
cGVybGluay5jcHAKaW5kZXggYjllNDgzYy4uNWQzNmU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVy
bGluay5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQXRrLmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUG9zaXRpb24uaCIKICNp
bmNsdWRlICJSYW5nZS5oIgpAQCAtMjE1LDcgKzIxNCw3IEBAIHN0YXRpYyBnaW50IGdldFJhbmdl
TGVuZ3RoRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgUmFuZ2UqIHJhbmdlKQog
ICAgIGlmICghbWFya2VyT2JqKQogICAgICAgICByZXR1cm4gYmFzZUxlbmd0aDsKIAotICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Kj4obWFya2VyT2JqKS0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbWFya2VyT2JqLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIgfHwgIXJl
bmRlcmVyLT5pc0xpc3RNYXJrZXIoKSkKICAgICAgICAgcmV0dXJuIGJhc2VMZW5ndGg7CiAKLS0g
CjEuNy40Cgo=
</data>
<flag name="review"
          id="80941"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
          </attachment>
      

    </bug>

</bugzilla>