<?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>97314</bug_id>
          
          <creation_ts>2012-09-21 02:45:56 -0700</creation_ts>
          <short_desc>[BlackBerry] Remove obsolete compositing surface code</short_desc>
          <delta_ts>2012-09-21 06:38:11 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>anilsson</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jpetsovits</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725322</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-21 02:45:56 -0700</bug_when>
    <thetext>The removed code allowed rendering of sublayers to a separate offscreen surface.

Now that we composite root layer and all sublayers to the window surface, this code is not needed anymore. In addition, we save some memory by not allocating the unused offscreen surface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725332</commentid>
    <comment_count>1</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-21 02:54:06 -0700</bug_when>
    <thetext>PR 208038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725335</commentid>
    <comment_count>2</comment_count>
      <attachid>165099</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-21 02:56:16 -0700</bug_when>
    <thetext>Created attachment 165099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725433</commentid>
    <comment_count>3</comment_count>
      <attachid>165099</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-21 05:20:26 -0700</bug_when>
    <thetext>Comment on attachment 165099
Patch

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

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:-3669
&gt; -    if (m_pendingOrientation != -1)
&gt; -        SurfacePool::globalSurfacePool()-&gt;notifyScreenRotated();
&gt; -

related?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725471</commentid>
    <comment_count>4</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-21 06:29:05 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 165099 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165099&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/blackberry/Api/WebPage.cpp:-3669
&gt; &gt; -    if (m_pendingOrientation != -1)
&gt; &gt; -        SurfacePool::globalSurfacePool()-&gt;notifyScreenRotated();
&gt; &gt; -
&gt; 
&gt; related?

Yes, the only reason the surface pool needed to know about screen rotation, was to reallocate the compositing surface at the new size. So it&apos;s not needed any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725480</commentid>
    <comment_count>5</comment_count>
      <attachid>165099</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 06:38:07 -0700</bug_when>
    <thetext>Comment on attachment 165099
Patch

Clearing flags on attachment: 165099

Committed r129222: &lt;http://trac.webkit.org/changeset/129222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725481</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 06:38:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165099</attachid>
            <date>2012-09-21 02:56:16 -0700</date>
            <delta_ts>2012-09-21 06:38:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97314-20120921115539.patch</filename>
            <type>text/plain</type>
            <size>26824</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZiZjgxMTY4OWNiNjc1YjU4
ZGFlYzgzZWRlY2MyZjQxNTNlYjA3YmQuLjFlNGJmYmRhYTFhMGUzYjI3ZTM2ZGI5ODk1NmU4YjI5
MTQzYzNhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMjEgIEFydmlkIE5p
bHNzb24gIDxhbmlsc3NvbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBSZW1vdmUg
b2Jzb2xldGUgY29tcG9zaXRpbmcgc3VyZmFjZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBjb21wb3NpdGluZyBzdXJmYWNlIGNvZGUg
ZnJvbSBidWlsZCBzeXN0ZW0uCisKKyAgICAgICAgUFIgMjA4MDM4LgorCisgICAgICAgICogUGxh
dGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorCiAyMDEyLTA5LTE5ICBBcnZpZCBOaWxzc29uICA8YW5p
bHNzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQWRkIGNvb2tpZSBkYXRhYmFz
ZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDQ3YWJiMzgyMzFmM2Y1M2Iy
ZDU1NzBlZWU1OWZhNjU0MGUzZDkwOTIuLjM3ZGJlM2M2ZDM5NGEyNzM0ZWYwYzg4Njg0N2Y3OTZh
ZGFiNTQwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBA
CisyMDEyLTA5LTIxICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAg
ICBbQmxhY2tCZXJyeV0gUmVtb3ZlIG9ic29sZXRlIGNvbXBvc2l0aW5nIHN1cmZhY2UgY29kZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVtb3Zl
ZCBjb2RlIGFsbG93ZWQgcmVuZGVyaW5nIG9mIHN1YmxheWVycyB0byBhIHNlcGFyYXRlIG9mZnNj
cmVlbgorICAgICAgICBzdXJmYWNlLgorCisgICAgICAgIE5vdyB0aGF0IHdlIGNvbXBvc2l0ZSBy
b290IGxheWVyIGFuZCBhbGwgc3VibGF5ZXJzIHRvIHRoZSB3aW5kb3cKKyAgICAgICAgc3VyZmFj
ZSwgdGhpcyBjb2RlIGlzIG5vdCBuZWVkZWQgYW55bW9yZS4gSW4gYWRkaXRpb24sIHdlIHNhdmUg
c29tZQorICAgICAgICBtZW1vcnkgYnkgbm90IGFsbG9jYXRpbmcgdGhlIHVudXNlZCBvZmZzY3Jl
ZW4gc3VyZmFjZS4KKworICAgICAgICBQUiAyMDgwMzguCisKKyAgICAgICAgKiBBcGkvQmFja2lu
Z1N0b3JlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJp
dmF0ZTo6c3VzcGVuZFNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0Q29udGVudHMpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3QW5kQmxl
bmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcpOgorICAgICAgICAqIEFwaS9CYWNraW5nU3RvcmVf
cC5oOgorICAgICAgICAoQmFja2luZ1N0b3JlUHJpdmF0ZSk6CisgICAgICAgICogQXBpL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2V0
TG9hZFN0YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6
OnN1c3BlbmRCYWNraW5nU3RvcmUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQ
YWdlUHJpdmF0ZTo6cmVzaXplU3VyZmFjZUlmTmVlZGVkKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnJvb3RMYXllckNvbW1pdFRpbWVyRmlyZWQpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2V0Um9vdExheWVyQ29t
cG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKFdl
YlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNvbXBv
c2l0aW5nU3VyZmFjZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9CYWNr
aW5nU3RvcmVDb21wb3NpdGluZ1N1cmZhY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0dMRVMyQ29udGV4dC5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkdM
RVMyQ29udGV4dDo6YnVmZmVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6R0xFUzJD
b250ZXh0OjpzdXJmYWNlU2l6ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkdMRVMy
Q29udGV4dDo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvR0xFUzJDb250
ZXh0Lmg6CisgICAgICAgIChHTEVTMkNvbnRleHQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQv
U3VyZmFjZVBvb2wuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U3VyZmFjZVBvb2w6OlN1cmZhY2VQb29sKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U3VyZmFjZVBvb2w6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYktpdFN1cHBv
cnQvU3VyZmFjZVBvb2wuaDoKKyAgICAgICAgKFN1cmZhY2VQb29sKToKKwogMjAxMi0wOS0xOSAg
QXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnld
IEFkZCBjb29raWUgZGF0YWJhc2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNt
YWtlCmluZGV4IGIwNGUzZTdhZTdlNWYwMzQ0MmU4ZjczMjgxNTg1ZTYyMGNjMGY5MDguLjViMDNl
NDg3NmZiN2YzMmJjZDA1YzE4ZTE2MjU1N2IwZmJlZmQyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0xMjMsNyArMTIzLDYgQEAgTElTVChBUFBFTkQgV2ViS2l0
X1NPVVJDRVMKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQu
Y3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5jcHAK
ICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmNwcAotICAgIGJsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVDb21wb3NpdGluZ1N1cmZhY2UuY3BwCiAgICAg
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuY3BwCiAgICAgYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNsaWVudC5jcHAKICAgICBibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvRGVmYXVsdFRhcEhpZ2hsaWdodC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcAppbmRleCA1YjliZWFiMjFhMTNjZDM2MDcw
YzAxMTgyZGQzNDZhNTU1MjMzNjRmLi44YzQ5ZDBlZGIzODUzNmNmZTY4MDEwZDYzOTQxYjkxZmY2
ZTE5MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUu
Y3BwCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCiAKICNpbmNs
dWRlICJCYWNraW5nU3RvcmVDbGllbnQuaCIKLSNpbmNsdWRlICJCYWNraW5nU3RvcmVDb21wb3Np
dGluZ1N1cmZhY2UuaCIKICNpbmNsdWRlICJCYWNraW5nU3RvcmVUaWxlLmgiCiAjaW5jbHVkZSAi
QmFja2luZ1N0b3JlX3AuaCIKICNpbmNsdWRlICJGYXRGaW5nZXJzLmgiCkBAIC01OSw3ICs1OCw2
IEBACiAjZGVmaW5lIERFQlVHX1dFQkNPUkVfUkVRVUVTVFMgMAogI2RlZmluZSBERUJVR19WSVNV
QUxJWkUgMAogI2RlZmluZSBERUJVR19USUxFTUFUUklYIDAKLSNkZWZpbmUgREVCVUdfQ09NUE9T
SVRJTkdfRElSVFlfUkVHSU9OIDAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwpAQCAtMjgwLDEwICsyNzgsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZh
dGU6OnN1c3BlbmRTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKCkKICAgICArK21fc3VzcGVu
ZFNjcmVlblVwZGF0ZXM7CiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFj
ZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+c3luY1RvQ3VycmVudE1lc3NhZ2UoKTsKLQotI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBtX3dlYlBhZ2UtPmQtPnJlc2V0Q29tcG9z
aXRpbmdTdXJmYWNlKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpy
ZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJhY2tpbmdTdG9yZTo6UmVzdW1lVXBk
YXRlT3BlcmF0aW9uIG9wKQpAQCAtMTQ4NCw5ICsxNDc4LDYgQEAgdm9pZCBCYWNraW5nU3RvcmVQ
cml2YXRlOjpibGl0Q29udGVudHMoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsCiAg
ICAgICAgIGlmIChjb21wb3NpdG9yLT5kcmF3c1Jvb3RMYXllcigpKQogICAgICAgICAgICAgcGFp
bnREZWZhdWx0QmFja2dyb3VuZChjb250ZW50cywgdHJhbnNmb3JtYXRpb24sIGZhbHNlIC8qZmx1
c2gqLyk7CiAgICAgfQotCi0gICAgaWYgKCFpc09wZW5HTENvbXBvc2l0aW5nKCkpCi0gICAgICAg
IGJsZW5kQ29tcG9zaXRpbmdTdXJmYWNlKGRzdFJlY3QpOwogI2VuZGlmCiAKICNpZiBFTkFCTEVf
U0NST0xMQkFSUwpAQCAtMTY1NCw2MCArMTY0NSw2IEBAIFBsYXRmb3JtOjpJbnRSZWN0IEJhY2tp
bmdTdG9yZVByaXZhdGU6OmJsaXRUaWxlUmVjdChUaWxlQnVmZmVyKiB0aWxlQnVmZmVyLAogICAg
IHJldHVybiBkaXJ0eVJlY3Q7CiB9CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci12b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsZW5kQ29tcG9zaXRpbmdTdXJmYWNlKGNvbnN0
IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0KQotewotICAgIGlmICghQmxhY2tCZXJyeTo6UGxh
dGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVh
ZCgpKSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5n
U3RvcmVQcml2YXRlOjoqRnVuY3Rpb25UeXBlKShjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYpOwot
ICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VD
bGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAotICAgICAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlPEZ1bmN0aW9uVHlwZSwgQmFja2luZ1N0b3JlUHJp
dmF0ZSwgUGxhdGZvcm06OkludFJlY3Q+KAotICAgICAgICAgICAgICAgICZCYWNraW5nU3RvcmVQ
cml2YXRlOjpibGVuZENvbXBvc2l0aW5nU3VyZmFjZSwgdGhpcywgZHN0UmVjdCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlKiBj
b21wb3NpdGluZ1N1cmZhY2UgPQotICAgICAgICBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBv
b2woKS0+Y29tcG9zaXRpbmdTdXJmYWNlKCk7Ci0KLSAgICBpZiAoIWNvbXBvc2l0aW5nU3VyZmFj
ZSB8fCAhbV93ZWJQYWdlLT5pc1Zpc2libGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJpbmdSZXN1bHRzIGxhc3RDb21wb3NpdGluZ1Jlc3VsdHMgPSBtX3dl
YlBhZ2UtPmQtPmxhc3RDb21wb3NpdGluZ1Jlc3VsdHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxhc3RDb21wb3NpdGluZ1Jlc3VsdHMuaG9sZVB1bmNoUmVjdFNpemUoKTsgaSsrKSB7
Ci0gICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IGhvbGVQdW5jaFJlY3QgPSBsYXN0Q29tcG9zaXRp
bmdSZXN1bHRzLmhvbGVQdW5jaFJlY3QoaSk7Ci0KLSAgICAgICAgaG9sZVB1bmNoUmVjdC5pbnRl
cnNlY3QoZHN0UmVjdCk7Ci0gICAgICAgIGhvbGVQdW5jaFJlY3QuaW50ZXJzZWN0KFBsYXRmb3Jt
OjpJbnRSZWN0KAotICAgICAgICAgICAgUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBzdXJmYWNl
U2l6ZSgpKSk7Ci0KLSAgICAgICAgaWYgKCFob2xlUHVuY2hSZWN0LmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGNsZWFyV2luZG93KGhvbGVQdW5jaFJlY3QsIDAsIDAsIDAsIDApOwotICAgIH0KLQot
ICAgIENvbXBvc2l0aW5nU3VyZmFjZUJ1ZmZlciogZnJvbnRCdWZmZXIgPSBjb21wb3NpdGluZ1N1
cmZhY2UtPmZyb250QnVmZmVyKCk7Ci0KLSAgICBJbnRSZWN0TGlzdCByZWN0cyA9IGxhc3RDb21w
b3NpdGluZ1Jlc3VsdHMuZGlydHlSZWdpb24ucmVjdHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHJlY3RzW2ldLmludGVyc2VjdChk
c3RSZWN0KTsKLSNpZiBERUJVR19DT01QT1NJVElOR19ESVJUWV9SRUdJT04KLSAgICAgICAgY2xl
YXJCdWZmZXIoYnVmZmVyKCksIHJlY3RzW2ldLCAyNTUsIDAsIDAsIDEyOCk7Ci0jZW5kaWYKLSAg
ICAgICAgYmxpdFRvV2luZG93KHJlY3RzW2ldLCBmcm9udEJ1ZmZlci0+bmF0aXZlQnVmZmVyKCks
IHJlY3RzW2ldLCB0cnVlIC8qYmxlbmQqLywgMjU1KTsKLSAgICB9Ci19Ci0KLXZvaWQgQmFja2lu
Z1N0b3JlUHJpdmF0ZTo6Y2xlYXJDb21wb3NpdGluZ1N1cmZhY2UoKQotewotICAgIEJhY2tpbmdT
dG9yZUNvbXBvc2l0aW5nU3VyZmFjZSogY29tcG9zaXRpbmdTdXJmYWNlID0KLSAgICAgICAgU3Vy
ZmFjZVBvb2w6Omdsb2JhbFN1cmZhY2VQb29sKCktPmNvbXBvc2l0aW5nU3VyZmFjZSgpOwotCi0g
ICAgaWYgKCFjb21wb3NpdGluZ1N1cmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIENvbXBv
c2l0aW5nU3VyZmFjZUJ1ZmZlciogZnJvbnRCdWZmZXIgPSBjb21wb3NpdGluZ1N1cmZhY2UtPmZy
b250QnVmZmVyKCk7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1
ZmZlcihmcm9udEJ1ZmZlci0+bmF0aXZlQnVmZmVyKCksIFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRm
b3JtOjpJbnRQb2ludCgpLCBmcm9udEJ1ZmZlci0+c3VyZmFjZVNpemUoKSksIDAsIDAsIDAsIDAp
OwotfQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQogdm9pZCBCYWNr
aW5nU3RvcmVQcml2YXRlOjpibGl0SG9yaXpvbnRhbFNjcm9sbGJhcihjb25zdCBQbGF0Zm9ybTo6
SW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQogewogICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2li
bGUoKSkKQEAgLTI2MTMsMTUgKzI1NTAsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmRy
YXdBbmRCbGVuZExheWVyc0ZvckRpcmVjdFJlbmRlcmluZyhjb25zdCBQbGF0Zm9ybTo6SQogICAg
IC8vIENoZWNrIGlmIHJlbmRlcmluZyBjYXVzZWQgYSBjb21taXQgYW5kIHdlIG5lZWQgdG8gcmVk
cmF3IHRoZSBsYXllcnMuCiAgICAgaWYgKFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSogY29tcG9z
aXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKQogICAgICAgICBjb21wb3NpdG9yLT5k
cmF3TGF5ZXJzKGRzdFJlY3QsIHVudHJhbnNmb3JtZWRDb250ZW50c1JlY3QpOwotCi0jaWYgRU5B
QkxFX0NPTVBPU0lUSU5HX1NVUkZBQ0UKLSAgICAvLyBTZWUgYWJvdmUgY29tbWVudCBhYm91dCBz
eW5jIGNhbGxpbmcsIHZpc2libGVDb250ZW50c1JlY3QoKSBpcyBzYWZlIGhlcmUuCi0gICAgUGxh
dGZvcm06OkludFJlY3QgdmlzaWJsZURpcnR5UmVjdCA9IGRpcnR5UmVjdDsKLSAgICB2aXNpYmxl
RGlydHlSZWN0LmludGVyc2VjdCh2aXNpYmxlQ29udGVudHNSZWN0KCkpOwotICAgIHZpc2libGVE
aXJ0eVJlY3QgPSBtX2NsaWVudC0+bWFwRnJvbVRyYW5zZm9ybWVkQ29udGVudHNUb1RyYW5zZm9y
bWVkVmlld3BvcnQodmlzaWJsZURpcnR5UmVjdCk7Ci0KLSAgICBibGVuZENvbXBvc2l0aW5nU3Vy
ZmFjZSh2aXNpYmxlRGlydHlSZWN0KTsKLSNlbmRpZgogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaAppbmRleCA3MTczODk1MWMyZTRh
NDkwMzljOTM5MWRmNWE3MGU5NzQwYWEyNDVkLi40ZDNlZjFiYWIxZTkxNTllYTdjNzhjNmE4ZDEx
ZWQ1ZGI1OTRkNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0Jh
Y2tpbmdTdG9yZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5n
U3RvcmVfcC5oCkBAIC0yMDQsOSArMjA0LDYgQEAgcHVibGljOgogICAgIC8vICAgICAgICAgICAg
ICAgIGNhbGxpbmcgdGhpcy4KICAgICB2b2lkIGNvbXBvc2l0ZUNvbnRlbnRzKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXIqLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGVudHMsIGJvb2wgY29udGVudHNPcGFxdWUpOwogCi0g
ICAgdm9pZCBibGVuZENvbXBvc2l0aW5nU3VyZmFjZShjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYg
ZHN0UmVjdCk7Ci0gICAgdm9pZCBjbGVhckNvbXBvc2l0aW5nU3VyZmFjZSgpOwotCiAgICAgYm9v
bCBkcmF3TGF5ZXJzT25Db21taXRJZk5lZWRlZCgpOwogICAgIHZvaWQgZHJhd0FuZEJsZW5kTGF5
ZXJzRm9yRGlyZWN0UmVuZGVyaW5nKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkaXJ0eVJlY3Qp
OwogICAgIC8vIFdlYlBhZ2Ugd2lsbCBjYWxsIHRoaXMgd2hlbiBkcmF3aW5nIGxheWVycyB0byB0
ZWxsIHVzIHdlIGRvbid0IG5lZWQgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuY3BwCmluZGV4IGUyMTdkZjUxY2IyYjdlNzQ5OGVhYTM2YWI4NGJhMmYxMDMxMzQ0MzMuLmJm
ZWJhZjQ5YzBhNTc3MTJlNjNhNzkzMzIxOGExODVhYWEyODJiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkJh
Y2tGb3J3YXJkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdEltcGwuaCIK
ICNpbmNsdWRlICJCYWNraW5nU3RvcmVDbGllbnQuaCIKLSNpbmNsdWRlICJCYWNraW5nU3RvcmVD
b21wb3NpdGluZ1N1cmZhY2UuaCIKICNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgogI2lmIEVO
QUJMRShCQVRURVJZX1NUQVRVUykKICNpbmNsdWRlICJCYXR0ZXJ5Q2xpZW50QmxhY2tCZXJyeS5o
IgpAQCAtMTE2NCwxMCArMTE2Myw2IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNldExvYWRTdGF0
ZShMb2FkU3RhdGUgc3RhdGUpCiAgICAgICAgICAgICAvLyBVcGRhdGUgY3Vyc29yIHN0YXR1cy4K
ICAgICAgICAgICAgIHVwZGF0ZUN1cnNvcigpOwogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQotICAgICAgICAgICAgLy8gRG9uJ3QgcmVuZGVyIGNvbXBvc2l0aW5nIGNvbnRlbnRz
IGZyb20gcHJldmlvdXMgcGFnZS4KLSAgICAgICAgICAgIHJlc2V0Q29tcG9zaXRpbmdTdXJmYWNl
KCk7Ci0jZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgY2FzZSBGaW5p
c2hlZDoKQEAgLTM1NzIsOCArMzU2Nyw2IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnN1c3BlbmRC
YWNraW5nU3RvcmUoKQogCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICByZXNldENvbXBv
c2l0aW5nU3VyZmFjZSgpOwogI2VuZGlmCiB9CiAKQEAgLTM2NjQsOSArMzY1Nyw2IEBAIHZvaWQg
V2ViUGFnZVByaXZhdGU6OnJlc2l6ZVN1cmZhY2VJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAobV9wZW5kaW5nT3JpZW50YXRpb24gIT0gLTEpCi0gICAgICAgIFN1
cmZhY2VQb29sOjpnbG9iYWxTdXJmYWNlUG9vbCgpLT5ub3RpZnlTY3JlZW5Sb3RhdGVkKCk7Ci0K
ICAgICBtX2NsaWVudC0+cmVzaXplU3VyZmFjZUlmTmVlZGVkKCk7CiB9CiAKQEAgLTU3MzUsMTQg
KzU3MjUsMTEgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29tbWl0VGltZXJGaXJl
ZChUaW1lcjxXZWJQYWdlUHJpdmF0ZT4qKQogICAgIC8vIGJhY2tpbmcgc3RvcmUgaXMgbmV2ZXIg
bmVjZXNzYXJ5LCBiZWNhdXNlIHRoZSBiYWNraW5nIHN0b3JlIGRyYXdzCiAgICAgLy8gbm90aGlu
Zy4KICAgICBpZiAoIWNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcigpKSB7Ci0gICAgICAgIGJvb2wg
aXNTaW5nbGVUYXJnZXRXaW5kb3cgPSBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+
Y29tcG9zaXRpbmdTdXJmYWNlKCkKLSAgICAgICAgICAgIHx8IG1fYmFja2luZ1N0b3JlLT5kLT5p
c09wZW5HTENvbXBvc2l0aW5nKCk7Ci0KICAgICAgICAgLy8gSWYgd2UgYXJlIGRvaW5nIGRpcmVj
dCByZW5kZXJpbmcgYW5kIGhhdmUgYSBzaW5nbGUgcmVuZGVyaW5nIHRhcmdldCwKICAgICAgICAg
Ly8gY29tbWl0dGluZyBpcyBlcXVpdmFsZW50IHRvIGEgb25lIHNob3QgZHJhd2luZyBzeW5jaHJv
bml6YXRpb24uCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtcmVuZGVyIHRoZSB3ZWIgcGFnZSwg
cmUtcmVuZGVyIHRoZSBsYXllcnMsIGFuZAogICAgICAgICAvLyB0aGVuIGJsaXQgdGhlbSBvbiB0
b3Agb2YgdGhlIHJlLXJlbmRlcmVkIHdlYiBwYWdlLgotICAgICAgICBpZiAoaXNTaW5nbGVUYXJn
ZXRXaW5kb3cgJiYgbV9iYWNraW5nU3RvcmUtPmQtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2lu
ZG93KCkpCisgICAgICAgIGlmIChtX2JhY2tpbmdTdG9yZS0+ZC0+aXNPcGVuR0xDb21wb3NpdGlu
ZygpICYmIG1fYmFja2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygp
KQogICAgICAgICAgICAgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpOwog
CiAgICAgICAgIGlmIChuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkpIHsKQEAg
LTU3NTksMTkgKzU3NDYsNiBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpyb290TGF5ZXJDb21taXRU
aW1lckZpcmVkKFRpbWVyPFdlYlBhZ2VQcml2YXRlPiopCiAgICAgY29tbWl0Um9vdExheWVySWZO
ZWVkZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cmVzZXRDb21wb3NpdGluZ1N1cmZh
Y2UoKQotewotICAgIGlmICghUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xp
ZW50KCktPmlzQ3VycmVudFRocmVhZCgpKSB7Ci0gICAgICAgIFBsYXRmb3JtOjp1c2VySW50ZXJm
YWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAgICAgICBQ
bGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgJldlYlBh
Z2VQcml2YXRlOjpyZXNldENvbXBvc2l0aW5nU3VyZmFjZSwgdGhpcykpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKG1fY29tcG9zaXRvcikKLSAgICAgICAgbV9jb21wb3NpdG9y
LT5zZXRMYXN0Q29tcG9zaXRpbmdSZXN1bHRzKExheWVyUmVuZGVyaW5nUmVzdWx0cygpKTsKLX0K
LQogdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Um9vdExheWVyV2ViS2l0VGhyZWFkKEZyYW1lKiBm
cmFtZSwgTGF5ZXJXZWJLaXRUaHJlYWQqIGxheWVyKQogewogICAgIC8vIFRoaXMgbWV0aG9kIHVw
ZGF0ZXMgdGhlIEZyYW1lTGF5ZXJzIGJhc2VkIG9uIGlucHV0IGZyb20gV2ViQ29yZS4KQEAgLTU4
MTAsMTIgKzU3ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRSb290TGF5ZXJDb21wb3Np
dGluZ1RocmVhZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKCFsYXllcikgewotICAgICAgICAvLyBLZWVwIHRoZSBjb21wb3Np
dG9yIGFyb3VuZCwgYSBzaW5nbGUgd2ViIHBhZ2Ugd2lsbCBmcmVxdWVudGx5IGVudGVyCi0gICAg
ICAgIC8vIGFuZCBsZWF2ZSBjb21wb3NpdGluZyBtb2RlIG1hbnkgdGltZXMuIEluc3RlYWQgd2Ug
ZGVzdHJveSBpdCB3aGVuCi0gICAgICAgIC8vIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS4KLSAg
ICAgICAgcmVzZXRDb21wb3NpdGluZ1N1cmZhY2UoKTsKLSAgICB9IGVsc2UgaWYgKCFtX2NvbXBv
c2l0b3IpCisgICAgaWYgKGxheWVyICYmICFtX2NvbXBvc2l0b3IpCiAgICAgICAgIGNyZWF0ZUNv
bXBvc2l0b3IoKTsKIAogICAgIC8vIERvbid0IEFTU0VSVChtX2NvbXBvc2l0b3IpIGhlcmUgYmVj
YXVzZSBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUodHJ1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCmluZGV4IGExNWQ4MDc1MzkxMDcwYThiM2QwMmQ2
MjJhZTYzYmE3MGNiNTE1N2UuLjk4NTQ2MDFiYjY1MGNjZDc1NGUyNzgyZDA1ODUwOTk1Y2Y2ZmVh
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaApAQCAtNDA4LDkg
KzQwOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJv
bml6YXRpb24oKTsKICAgICB2b2lkIHNjaGVkdWxlUm9vdExheWVyQ29tbWl0KCk7CiAKLSAgICAv
LyBUaHJlYWQgc2FmZS4KLSAgICB2b2lkIHJlc2V0Q29tcG9zaXRpbmdTdXJmYWNlKCk7Ci0KICAg
ICAvLyBDb21wb3NpdGluZyB0aHJlYWQuCiAgICAgdm9pZCBzZXRSb290TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CiAgICAgdm9pZCBjb21t
aXRSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0JhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVDb21wb3NpdGluZ1N1cmZhY2Uu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2UwNzVhMzk4Yzc4MzgxZDQyOTYx
OTNmNWM2NWJhNzZiNDliNWU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdT
dG9yZUNvbXBvc2l0aW5nU3VyZmFjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQmFja2luZ1N0b3JlQ29tcG9zaXRp
bmdTdXJmYWNlLmgiCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJT
dXJmYWNlUG9vbC5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5j
bHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR3JhcGhpY3MuaD4KLQotbmFtZXNwYWNlIEJsYWNrQmVy
cnkgewotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLUNvbXBvc2l0aW5nU3VyZmFjZUJ1ZmZlcjo6Q29t
cG9zaXRpbmdTdXJmYWNlQnVmZmVyKGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiBzaXplKQotICAg
IDogbV9zaXplKHNpemUpCi0gICAgLCBtX2J1ZmZlcigwKQotewotfQotCi1Db21wb3NpdGluZ1N1
cmZhY2VCdWZmZXI6On5Db21wb3NpdGluZ1N1cmZhY2VCdWZmZXIoKQotewotICAgIGRlc3Ryb3lC
dWZmZXIobV9idWZmZXIpOwotfQotCi1QbGF0Zm9ybTo6SW50U2l6ZSBDb21wb3NpdGluZ1N1cmZh
Y2VCdWZmZXI6OnN1cmZhY2VTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaXplOwotfQot
Ci1QbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogQ29tcG9zaXRpbmdTdXJmYWNlQnVmZmVyOjpu
YXRpdmVCdWZmZXIoKSBjb25zdAotewotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9i
dWZmZXIgPSBjcmVhdGVCdWZmZXIobV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OlRpbGVCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzIpOwotICAgIH0KLSAgICByZXR1
cm4gbV9idWZmZXI7Ci19Ci0KLUJhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZTo6QmFja2lu
Z1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlKGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiBzaXplLCBi
b29sIGRvdWJsZUJ1ZmZlcmVkKQotICAgIDogbV9pc0RvdWJsZUJ1ZmZlcmVkKGRvdWJsZUJ1ZmZl
cmVkKQotICAgICwgbV9uZWVkc1N5bmModHJ1ZSkKLXsKLSAgICBtX2Zyb250QnVmZmVyID0gbmV3
IENvbXBvc2l0aW5nU3VyZmFjZUJ1ZmZlcihzaXplKTsKLSAgICBtX2JhY2tCdWZmZXIgPSAhZG91
YmxlQnVmZmVyZWQgPyAwIDogbmV3IENvbXBvc2l0aW5nU3VyZmFjZUJ1ZmZlcihzaXplKTsKLX0K
LQotQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlOjp+QmFja2luZ1N0b3JlQ29tcG9zaXRp
bmdTdXJmYWNlKCkKLXsKLSAgICBkZWxldGUgbV9mcm9udEJ1ZmZlcjsKLSAgICBtX2Zyb250QnVm
ZmVyID0gMDsKLQotICAgIGRlbGV0ZSBtX2JhY2tCdWZmZXI7Ci0gICAgbV9iYWNrQnVmZmVyID0g
MDsKLX0KLQotQ29tcG9zaXRpbmdTdXJmYWNlQnVmZmVyKiBCYWNraW5nU3RvcmVDb21wb3NpdGlu
Z1N1cmZhY2U6OmZyb250QnVmZmVyKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9mcm9udEJ1ZmZl
cik7Ci0gICAgcmV0dXJuIG1fZnJvbnRCdWZmZXI7Ci19Ci0KLUNvbXBvc2l0aW5nU3VyZmFjZUJ1
ZmZlciogQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlOjpiYWNrQnVmZmVyKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1faXNEb3VibGVCdWZmZXJlZCkKLSAgICAgICAgcmV0dXJuIGZyb250QnVm
ZmVyKCk7Ci0KLSAgICBBU1NFUlQobV9iYWNrQnVmZmVyKTsKLSAgICByZXR1cm4gbV9iYWNrQnVm
ZmVyOwotfQotCi12b2lkIEJhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZTo6c3dhcEJ1ZmZl
cnMoKQotewotICAgIGlmICghbV9pc0RvdWJsZUJ1ZmZlcmVkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBTdG9yZSB0ZW1wcy4KLSAgICB1bnNpZ25lZCBmcm9udCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQ+KGZyb250QnVmZmVyKCkpOwotICAgIHVuc2lnbmVkIGJhY2sgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkPihiYWNrQnVmZmVyKCkpOwotCi0gICAgLy8gQXRvbWljIGNoYW5n
ZS4KLSAgICBfc21wX3hjaGcocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KCZtX2Zyb250QnVm
ZmVyKSwgYmFjayk7Ci0gICAgX3NtcF94Y2hnKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPigm
bV9iYWNrQnVmZmVyKSwgZnJvbnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLX0gLy8g
bmFtZXNwYWNlIEJsYWNrQmVycnkKLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9C
YWNraW5nU3RvcmVDb21wb3NpdGluZ1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGVjNDVjNTIwNGMyYWNiOWQ2MWI1ZWQ2YTg4NDZiNjNm
ODk3YzMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNvbXBvc2l0
aW5nU3VyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaWZuZGVmIEJh
Y2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZV9oCi0jZGVmaW5lIEJhY2tpbmdTdG9yZUNvbXBv
c2l0aW5nU3VyZmFjZV9oCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1JbnRSZWN0UmVnaW9uLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1uYW1l
c3BhY2UgQmxhY2tCZXJyeSB7Ci0KLW5hbWVzcGFjZSBQbGF0Zm9ybSB7Ci1uYW1lc3BhY2UgR3Jh
cGhpY3Mgewotc3RydWN0IEJ1ZmZlcjsKLX0KLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFz
cyBDb21wb3NpdGluZ1N1cmZhY2VCdWZmZXIgewotcHVibGljOgotICAgIENvbXBvc2l0aW5nU3Vy
ZmFjZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybTo6SW50U2l6ZSYpOwotICAgIH5Db21wb3NpdGluZ1N1
cmZhY2VCdWZmZXIoKTsKLSAgICBQbGF0Zm9ybTo6SW50U2l6ZSBzdXJmYWNlU2l6ZSgpIGNvbnN0
OwotCi0gICAgUGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIG5hdGl2ZUJ1ZmZlcigpIGNvbnN0
OwotCi1wcml2YXRlOgotICAgIFBsYXRmb3JtOjpJbnRTaXplIG1fc2l6ZTsKLSAgICBtdXRhYmxl
IFBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBtX2J1ZmZlcjsKLX07Ci0KLQotY2xhc3MgQmFj
a2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEJhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZT4gewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEJhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFBs
YXRmb3JtOjpJbnRTaXplJiBzaXplLCBib29sIGRvdWJsZUJ1ZmZlcmVkKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYWNraW5nU3RvcmVDb21wb3NpdGluZ1N1cmZhY2Uoc2l6
ZSwgZG91YmxlQnVmZmVyZWQpKTsKLSAgICB9Ci0KLSAgICB+QmFja2luZ1N0b3JlQ29tcG9zaXRp
bmdTdXJmYWNlKCk7Ci0KLSAgICBDb21wb3NpdGluZ1N1cmZhY2VCdWZmZXIqIGZyb250QnVmZmVy
KCkgY29uc3Q7Ci0gICAgQ29tcG9zaXRpbmdTdXJmYWNlQnVmZmVyKiBiYWNrQnVmZmVyKCkgY29u
c3Q7Ci0gICAgYm9vbCBpc0RvdWJsZUJ1ZmZlcmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RvdWJs
ZUJ1ZmZlcmVkOyB9Ci0gICAgdm9pZCBzd2FwQnVmZmVycygpOwotCi0gICAgYm9vbCBuZWVkc1N5
bmMoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU3luYzsgfQotICAgIHZvaWQgc2V0TmVlZHNTeW5j
KGJvb2wgbmVlZHNTeW5jKSB7IG1fbmVlZHNTeW5jID0gbmVlZHNTeW5jOyB9Ci0KLXByaXZhdGU6
Ci0gICAgQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlKGNvbnN0IFBsYXRmb3JtOjpJbnRT
aXplJiwgYm9vbCBkb3VibGVCdWZmZXJlZCk7Ci0KLSAgICBtdXRhYmxlIENvbXBvc2l0aW5nU3Vy
ZmFjZUJ1ZmZlciogbV9mcm9udEJ1ZmZlcjsKLSAgICBtdXRhYmxlIENvbXBvc2l0aW5nU3VyZmFj
ZUJ1ZmZlciogbV9iYWNrQnVmZmVyOwotICAgIGJvb2wgbV9pc0RvdWJsZUJ1ZmZlcmVkOwotICAg
IGJvb2wgbV9uZWVkc1N5bmM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLX0gLy8gbmFt
ZXNwYWNlIEJsYWNrQmVycnkKLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLQotI2VuZGlmIC8vIEJhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9HTEVTMkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvR0xFUzJDb250ZXh0
LmNwcAppbmRleCBjNTBjODgwNGU3N2UwYzMzYjBhZWFiMjY1ZDRlOTMzNjgzZjA5NzJjLi45ZTc0
MGZkZjA5Zjk3NmJkNTkxZmNlYzFjZDRhYjE5ZTU4Zjg2ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9HTEVTMkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0dMRVMyQ29udGV4dC5jcHAKQEAg
LTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHTEVTMkNvbnRl
eHQuaCIKIAotI2luY2x1ZGUgIkJhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZS5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIlN1
cmZhY2VQb29sLmgiCkBAIC00OCwyMSArNDcsMTEgQEAgdXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpXaW5kb3c7CiBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlKiBHTEVTMkNvbnRleHQ6
OmNvbXBvc2l0aW5nU3VyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFN1cmZhY2VQb29sOjpn
bG9iYWxTdXJmYWNlUG9vbCgpLT5jb21wb3NpdGluZ1N1cmZhY2UoKTsKLX0KLQogUGxhdGZvcm06
OkdyYXBoaWNzOjpCdWZmZXIqIEdMRVMyQ29udGV4dDo6YnVmZmVyKCkgY29uc3QKIHsKICAgICBp
ZiAobV93aW5kb3cpCiAgICAgICAgIHJldHVybiBtX3dpbmRvdy0+YnVmZmVyKCk7CiAKLSNpZiBF
TkFCTEVfQ09NUE9TSVRJTkdfU1VSRkFDRQotICAgIGlmIChCYWNraW5nU3RvcmVDb21wb3NpdGlu
Z1N1cmZhY2UqIHN1cmZhY2UgPSBjb21wb3NpdGluZ1N1cmZhY2UoKSkKLSAgICAgICAgcmV0dXJu
IHN1cmZhY2UtPmJhY2tCdWZmZXIoKS0+bmF0aXZlQnVmZmVyKCk7Ci0jZW5kaWYKLQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQpAQCAtOTAsMTEgKzc5LDYgQEAg
UGxhdGZvcm06OkludFNpemUgR0xFUzJDb250ZXh0OjpzdXJmYWNlU2l6ZSgpIGNvbnN0CiAgICAg
aWYgKG1fd2luZG93KQogICAgICAgICByZXR1cm4gbV93aW5kb3ctPnN1cmZhY2VTaXplKCk7CiAK
LSNpZiBFTkFCTEVfQ09NUE9TSVRJTkdfU1VSRkFDRQotICAgIGlmIChCYWNraW5nU3RvcmVDb21w
b3NpdGluZ1N1cmZhY2UqIHN1cmZhY2UgPSBjb21wb3NpdGluZ1N1cmZhY2UoKSkKLSAgICAgICAg
cmV0dXJuIHN1cmZhY2UtPmJhY2tCdWZmZXIoKS0+c3VyZmFjZVNpemUoKTsKLSNlbmRpZgotCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFBsYXRmb3JtOjpJbnRTaXplKCk7
CiB9CkBAIC0xMDgsMjAgKzkyLDcgQEAgYm9vbCBHTEVTMkNvbnRleHQ6OnN3YXBCdWZmZXJzKCkK
IHsKICAgICBBU1NFUlQoZ2xHZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKIAotICAgIC8vIElm
IHRoZXJlJ3MgYSB3aW5kb3cgdGhlIGJhY2tpbmcgc3RvcmUgd2lsbCBzd2FwIGl0IHdoZW4gdGhl
IHRpbWUgaXMgcmlnaHQuCi0gICAgLy8gUmV0dXJuIGVhcmx5IGJlY2F1c2UgdGhlcmUgbWlnaHQg
YmUgYW4gdW51c2VkIGJ1dCBub24tbnVsbCBjb21wb3NpdGluZyBzdXJmYWNlCi0gICAgaWYgKG1f
d2luZG93KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotI2lmIEVOQUJMRV9DT01QT1NJVElOR19T
VVJGQUNFCi0gICAgaWYgKEJhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZSogc3VyZmFjZSA9
IGNvbXBvc2l0aW5nU3VyZmFjZSgpKSB7Ci0gICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIHJlbmRl
cmluZyBjb21wb3NpdGluZyBjb250ZW50cyBpbnRvIGFuIG9mZi1zY3JlZW4gcGl4bWFwIGFuZAot
ICAgICAgICAvLyB3ZSBuZWVkIHRvIGJsZW5kIHRoZSBwaXhtYXAgd2l0aCB0aGUgd2ViIHBhZ2Ug
d2luZG93IHN1cmZhY2Ugd2UgaGF2ZSB0byBjYWxsCi0gICAgICAgIC8vIGdsRmluaXNoKCkgaGVy
ZS4KLSAgICAgICAgZ2xGaW5pc2goKTsKLSAgICAgICAgc3VyZmFjZS0+c3dhcEJ1ZmZlcnMoKTsK
LSAgICB9Ci0jZW5kaWYKKyAgICAvLyBOb3RoaW5nIHRvIGRvIGhlcmUsIHRoZSBiYWNraW5nIHN0
b3JlIHdpbGwgc3dhcCBpdCB3aGVuIHRoZSB0aW1lIGlzIHJpZ2h0LgogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9HTEVTMkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0dMRVMyQ29udGV4dC5oCmluZGV4IGNlN2U4NDY5NDZlMWIzMTkxZDQxNWQ3MTYwMGIyNDBkYTZi
NGE0M2UuLjcxNzhlYzAxNWUxZjQ3ZTk5OTU0MTRlMWExYjY0YzgzNzA0OGI4Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0dMRVMyQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0dMRVMyQ29udGV4
dC5oCkBAIC00MCw3ICs0MCw2IEBACiBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotY2xhc3MgQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlOwogY2xhc3Mg
V2ViUGFnZVByaXZhdGU7CiAKIGNsYXNzIEdMRVMyQ29udGV4dCA6IHB1YmxpYyBQbGF0Zm9ybTo6
R3JhcGhpY3M6OkdMRVMyQ29udGV4dCB7CkBAIC01NCw3ICs1Myw2IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBHTEVTMkNvbnRleHQoV2ViUGFnZVByaXZhdGUqKTsKLSAgICBCYWNraW5nU3Rv
cmVDb21wb3NpdGluZ1N1cmZhY2UqIGNvbXBvc2l0aW5nU3VyZmFjZSgpIGNvbnN0OwogICAgIFBs
YXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBidWZmZXIoKSBjb25zdDsKIAogICAgIFBsYXRmb3Jt
OjpHcmFwaGljczo6V2luZG93KiBtX3dpbmRvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmNwcAppbmRleCA5YWExYTM0OGYw
MmUyNmU5YmYwYzI2YjE3NjM0MjRiMzE3Y2Q2OGIzLi4xNGRhNzZlZDgyZmUyODFlZTljNGRlODk0
NTk2ZGQ0NmQxNmJjZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9TdXJmYWNlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wuY3BwCkBAIC0xOSwxMCArMTksNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN1cmZhY2VQb29sLmgiCiAKLSNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0jaW5jbHVkZSAiQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJm
YWNlLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+
CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJy
eVBsYXRmb3JtTWlzYy5oPgpAQCAtNTAsMTQgKzQ2LDYgQEAgc3RhdGljIFBGTkVHTERFU1RST1lT
WU5DS0hSUFJPQyBlZ2xEZXN0cm95U3luY0tIUjsKIHN0YXRpYyBQRk5FR0xDTElFTlRXQUlUU1lO
Q0tIUlBST0MgZWdsQ2xpZW50V2FpdFN5bmNLSFI7CiAjZW5kaWYKIAotI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFX0NPTVBPU0lUSU5HX1NVUkZBQ0UKLXN0YXRpYyBQ
YXNzUmVmUHRyPEJhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZT4gY3JlYXRlQ29tcG9zaXRp
bmdTdXJmYWNlKCkKLXsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6ZSBzY3JlZW5T
aXplID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpTY3JlZW46OnByaW1hcnlTY3Jl
ZW4oKS0+c2l6ZSgpOwotICAgIHJldHVybiBCYWNraW5nU3RvcmVDb21wb3NpdGluZ1N1cmZhY2U6
OmNyZWF0ZShzY3JlZW5TaXplLCBmYWxzZSAvKmRvdWJsZUJ1ZmZlcmVkKi8pOwotfQotI2VuZGlm
Ci0KIFN1cmZhY2VQb29sKiBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKQogewogICAg
IHN0YXRpYyBTdXJmYWNlUG9vbCogc19pbnN0YW5jZSA9IDA7CkBAIC02OCw5ICs1Niw2IEBAIFN1
cmZhY2VQb29sKiBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKQogCiBTdXJmYWNlUG9v
bDo6U3VyZmFjZVBvb2woKQogICAgIDogbV92aXNpYmxlVGlsZUJ1ZmZlcigwKQotI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAsIG1fY29tcG9zaXRpbmdTdXJmYWNlKDApCi0j
ZW5kaWYKICAgICAsIG1fdGlsZVJlbmRlcmluZ1N1cmZhY2UoMCkKICAgICAsIG1fYmFja0J1ZmZl
cigwKQogICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKQEAgLTk5LDEwICs4NCw2IEBAIHZvaWQg
U3VyZmFjZVBvb2w6OmluaXRpYWxpemUoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFNp
emUmIHRpbGVTaXplKQogCiAgICAgbV90aWxlUmVuZGVyaW5nU3VyZmFjZSA9IEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6ZHJhd2luZ1N1cmZhY2UoKTsKIAotI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFX0NPTVBPU0lUSU5HX1NVUkZBQ0UKLSAgICBtX2Nv
bXBvc2l0aW5nU3VyZmFjZSA9IGNyZWF0ZUNvbXBvc2l0aW5nU3VyZmFjZSgpOwotI2VuZGlmCi0K
ICAgICBpZiAoIW51bWJlck9mVGlsZXMpCiAgICAgICAgIHJldHVybjsgLy8gd2Ugb25seSB1c2Ug
ZGlyZWN0IHJlbmRlcmluZyB3aGVuIDAgdGlsZXMgYXJlIHNwZWNpZmllZC4KIApAQCAtMTc2LDIx
ICsxNTcsNiBAQCBUaWxlQnVmZmVyKiBTdXJmYWNlUG9vbDo6YmFja0J1ZmZlcigpIGNvbnN0CiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGlsZUJ1ZmZlcio+KG1fYmFja0J1ZmZlcik7CiB9
CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1CYWNraW5nU3RvcmVDb21wb3Np
dGluZ1N1cmZhY2UqIFN1cmZhY2VQb29sOjpjb21wb3NpdGluZ1N1cmZhY2UoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2NvbXBvc2l0aW5nU3VyZmFjZS5nZXQoKTsKLX0KLSNlbmRpZgotCi12b2lk
IFN1cmZhY2VQb29sOjpub3RpZnlTY3JlZW5Sb3RhdGVkKCkKLXsKLSNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRV9DT01QT1NJVElOR19TVVJGQUNFCi0gICAgLy8gUmVj
cmVhdGUgY29tcG9zaXRpbmcgc3VyZmFjZSBhdCBuZXcgc2NyZWVuIHJlc29sdXRpb24uCi0gICAg
bV9jb21wb3NpdGluZ1N1cmZhY2UgPSBjcmVhdGVDb21wb3NpdGluZ1N1cmZhY2UoKTsKLSNlbmRp
ZgotfQotCiBzdGQ6OnN0cmluZyBTdXJmYWNlUG9vbDo6c2hhcmVkUGl4bWFwR3JvdXAoKSBjb25z
dAogewogICAgIHJldHVybiBTSEFSRURfUElYTUFQX0dST1VQOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wuaCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmgKaW5kZXggM2YxNTI5
OTQ1NzlhOTlmNTk3ZjkwYjVkZjRhZmVjY2RjN2I4ZDY5Zi4uNzhlMWJhNDgxN2I0NzVjMTY4Zjcw
YThjNTcyNjhhZmZhYmViNTBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9TdXJmYWNlUG9vbC5oCkBAIC0zMywxMyArMzMsOSBAQAogI2luY2x1
ZGUgPHNldD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNkZWZpbmUgRU5BQkxFX0NPTVBP
U0lUSU5HX1NVUkZBQ0UgMQotCiBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlOwotCiBjbGFzcyBT
dXJmYWNlUG9vbCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFN1cmZhY2VQb29sKiBnbG9iYWxTdXJm
YWNlUG9vbCgpOwpAQCAtNjgsMTAgKzY0LDYgQEAgcHVibGljOgogICAgIC8vIGJhY2tpbmdzdG9y
ZS4KICAgICBUaWxlQnVmZmVyKiBiYWNrQnVmZmVyKCkgY29uc3Q7CiAKLSAgICBCYWNraW5nU3Rv
cmVDb21wb3NpdGluZ1N1cmZhY2UqIGNvbXBvc2l0aW5nU3VyZmFjZSgpIGNvbnN0OwotCi0gICAg
dm9pZCBub3RpZnlTY3JlZW5Sb3RhdGVkKCk7Ci0KICAgICBzdGQ6OnN0cmluZyBzaGFyZWRQaXht
YXBHcm91cCgpIGNvbnN0OwogCiAgICAgdm9pZCByZWxlYXNlQnVmZmVycygpOwpAQCAtOTcsOSAr
ODksNiBAQCBwcml2YXRlOgogCiAgICAgVGlsZUxpc3QgbV90aWxlUG9vbDsKICAgICBCYWNraW5n
U3RvcmVUaWxlKiBtX3Zpc2libGVUaWxlQnVmZmVyOwotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLSAgICBSZWZQdHI8QmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlPiBtX2Nv
bXBvc2l0aW5nU3VyZmFjZTsKLSNlbmRpZgogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6QnVmZmVyKiBtX3RpbGVSZW5kZXJpbmdTdXJmYWNlOwogICAgIHVuc2lnbmVkIG1fYmFj
a0J1ZmZlcjsKICAgICBib29sIG1faW5pdGlhbGl6ZWQ7IC8vIFN1cmZhY2VQb29sIGhhcyBiZWVu
IHNldCB1cCwgd2l0aCBvciB3aXRob3V0IGJ1ZmZlcnMuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>