<?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>121812</bug_id>
          
          <creation_ts>2013-09-23 16:58:12 -0700</creation_ts>
          <short_desc>Move style change analysis code to RenderElement</short_desc>
          <delta_ts>2013-09-23 17:55:09 -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>Layout and Rendering</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>932359</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-23 16:58:12 -0700</bug_when>
    <thetext>Text renderers don&apos;t need this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932363</commentid>
    <comment_count>1</comment_count>
      <attachid>212407</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-23 17:01:06 -0700</bug_when>
    <thetext>Created attachment 212407
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932366</commentid>
    <comment_count>2</comment_count>
      <attachid>212407</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-23 17:05:36 -0700</bug_when>
    <thetext>Comment on attachment 212407
patch

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

&gt; Source/WebCore/rendering/RenderElement.h:66
&gt; +    enum StylePropagationType { PropagateAllChildren, PropagateBlockChildrenOnly };

Shouldn&apos;t this be PropagateToAllChildren / PropagateToBlockChildrenOnly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932370</commentid>
    <comment_count>3</comment_count>
      <attachid>212407</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-23 17:11:02 -0700</bug_when>
    <thetext>Comment on attachment 212407
patch

Attachment 212407 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1834827</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932372</commentid>
    <comment_count>4</comment_count>
      <attachid>212407</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-23 17:13:29 -0700</bug_when>
    <thetext>Comment on attachment 212407
patch

Attachment 212407 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2055036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932374</commentid>
    <comment_count>5</comment_count>
      <attachid>212411</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-23 17:16:58 -0700</bug_when>
    <thetext>Created attachment 212411
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932392</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-23 17:55:09 -0700</bug_when>
    <thetext>https://trac.webkit.org/r156312</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212407</attachid>
            <date>2013-09-23 17:01:06 -0700</date>
            <delta_ts>2013-09-23 17:16:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>renderelement-style-change.patch</filename>
            <type>text/plain</type>
            <size>28046</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTIzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHN0eWxlIGNoYW5nZSBh
bmFseXNpcyBjb2RlIHRvIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTgxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRleHQgcmVuZGVyZXJzIGRvbid0IG5lZWQgdGhpcyBzdHVm
Zi4KKwogMjAxMy0wOS0yMyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQ1RURTogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoKSBzaG91bGQgcmV0dXJuIGEgUmVu
ZGVyRWxlbWVudCouCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAJKHJldmlzaW9uIDE1NjI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpzdHlsZURpZENoYW5nZShTdHlsZURpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcm9w
YWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4odHJ1ZSk7ICAgIAorICAgIHByb3BhZ2F0ZVN0
eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihQcm9wYWdhdGVCbG9ja0NoaWxkcmVuT25seSk7CiAgICAg
bV9saW5lSGVpZ2h0ID0gLTE7CiAKICAgICAvLyBBZnRlciBvdXIgc3R5bGUgY2hhbmdlZCwgaWYg
d2UgbG9zZSBvdXIgYWJpbGl0eSB0byBwcm9wYWdhdGUgZmxvYXRzIGludG8gbmV4dCBzaWJsaW5n
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNTYyODUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0
Q2FjaGUuaCIKICNpbmNsdWRlICJDb250ZW50RGF0YS5oIgorI2luY2x1ZGUgIkN1cnNvckxpc3Qu
aCIKKyNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIlJlbmRlckNvdW50ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guaCIKICNpbmNsdWRlICJSZW5kZXJGbGV4aWJsZUJveC5oIgpAQCAtNDgsNiArNTEsMTAgQEAK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgog
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgIlJlbmRlckxheWVy
Q29tcG9zaXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyRWxl
bWVudDo6UmVuZGVyRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQpAQCAtNDQyLDYgKzQ0OSwyMDkg
QEAgYm9vbCBSZW5kZXJFbGVtZW50OjpsYXllckNyZWF0aW9uQWxsb3dlZAogICAgIHJldHVybiB0
cnVlOwogfQogCit2b2lkIFJlbmRlckVsZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXND
aGlsZHJlbihTdHlsZVByb3BhZ2F0aW9uVHlwZSBwcm9wYWdhdGlvblR5cGUpCit7CisgICAgLy8g
RklYTUU6IFdlIGNvdWxkIHNhdmUgdGhpcyBjYWxsIHdoZW4gdGhlIGNoYW5nZSBvbmx5IGFmZmVj
dGVkIG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcy4KKyAgICBmb3IgKFJlbmRlck9iamVjdCogY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgIGlmICghY2hpbGQtPmlzQW5vbnltb3VzKCkgfHwgY2hpbGQtPnN0eWxlKCktPnN0
eWxlVHlwZSgpICE9IE5PUFNFVURPKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
aWYgKHByb3BhZ2F0aW9uVHlwZSA9PSBQcm9wYWdhdGVCbG9ja0NoaWxkcmVuT25seSAmJiAhY2hp
bGQtPmlzUmVuZGVyQmxvY2soKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVyRnVsbFNjcmVlbigp
IHx8IGNoaWxkLT5pc1JlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcigpKQorICAgICAgICAgICAg
Y29udGludWU7CisjZW5kaWYKKworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxl
ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwg
Y2hpbGQtPnN0eWxlKCktPmRpc3BsYXkoKSk7CisgICAgICAgIGlmIChzdHlsZSgpLT5zcGVjaWZp
ZXNDb2x1bW5zKCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS0+c3BlY2lmaWVz
Q29sdW1ucygpKQorICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5pbmhlcml0Q29sdW1uUHJvcGVy
dGllc0Zyb20oc3R5bGUoKSk7CisgICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPmNvbHVt
blNwYW4oKSkKKyAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q29sdW1uU3BhbihDb2x1bW5T
cGFuQWxsKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFByZXNlcnZlIHRoZSBwb3NpdGlvbiBz
dHlsZSBvZiBhbm9ueW1vdXMgYmxvY2sgY29udGludWF0aW9ucyBhcyB0aGV5IGNhbiBoYXZlIHJl
bGF0aXZlIG9yIHN0aWNreSBwb3NpdGlvbiB3aGVuCisgICAgICAgIC8vIHRoZXkgY29udGFpbiBi
bG9jayBkZXNjZW5kYW50cyBvZiByZWxhdGl2ZSBvciBzdGlja3kgcG9zaXRpb25lZCBpbmxpbmVz
LgorICAgICAgICBpZiAoY2hpbGQtPmlzSW5GbG93UG9zaXRpb25lZCgpICYmIHRvUmVuZGVyQmxv
Y2soY2hpbGQpLT5pc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkpCisgICAgICAgICAgICBu
ZXdTdHlsZS0+c2V0UG9zaXRpb24oY2hpbGQtPnN0eWxlKCktPnBvc2l0aW9uKCkpOworCisgICAg
ICAgIGNoaWxkLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOworICAgIH0KK30KKworLy8g
T24gbG93LXBvd2VyZWQvbW9iaWxlIGRldmljZXMsIHByZXZlbnRpbmcgYmxpdHRpbmcgb24gYSBz
Y3JvbGwgY2FuIGNhdXNlIG5vdGljZWFibGUgZGVsYXlzCisvLyB3aGVuIHNjcm9sbGluZyBhIHBh
Z2Ugd2l0aCBhIGZpeGVkIGJhY2tncm91bmQgaW1hZ2UuIEFzIGFuIG9wdGltaXphdGlvbiwgYXNz
dW1pbmcgdGhlcmUgYXJlCisvLyBubyBmaXhlZCBwb3NpdG9uZWQgZWxlbWVudHMgb24gdGhlIHBh
Z2UsIHdlIGNhbiBhY2NsZXJhdGUgc2Nyb2xsaW5nICh2aWEgYmxpdHRpbmcpIGlmIHdlCisvLyBp
Z25vcmUgdGhlIENTUyBwcm9wZXJ0eSAiYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZCIuCitz
dGF0aWMgYm9vbCBzaG91bGRSZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsKEZyYW1lVmll
dyogZnJhbWVWaWV3KQoreworI2lmICFFTkFCTEUoRkFTVF9NT0JJTEVfU0NST0xMSU5HKSB8fCAh
UExBVEZPUk0oUVQpCisgICAgVU5VU0VEX1BBUkFNKGZyYW1lVmlldyk7CisjZW5kaWYKKworICAg
IGJvb2wgcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCA9IHRydWU7CisjaWYgRU5BQkxF
KEZBU1RfTU9CSUxFX1NDUk9MTElORykKKyNpZiBQTEFURk9STShRVCkKKyAgICBpZiAoZnJhbWVW
aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICAgICAgcmVwYWludEZpeGVkQmFja2dyb3Vu
ZHNPblNjcm9sbCA9IGZhbHNlOworI2Vsc2UKKyAgICByZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09u
U2Nyb2xsID0gZmFsc2U7CisjZW5kaWYKKyNlbmRpZgorICAgIHJldHVybiByZXBhaW50Rml4ZWRC
YWNrZ3JvdW5kc09uU2Nyb2xsOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJIYXNC
YWNrZ3JvdW5kKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgcmV0dXJuIHJl
bmRlcmVyICYmIHJlbmRlcmVyLT5oYXNCYWNrZ3JvdW5kKCk7Cit9CisKK3ZvaWQgUmVuZGVyRWxl
bWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogbmV3U3R5bGUpCit7CisgICAgaWYgKG1fc3R5bGUpIHsKKyAgICAgICAgLy8gSWYgb3Vy
IHotaW5kZXggY2hhbmdlcyB2YWx1ZSBvciBvdXIgdmlzaWJpbGl0eSBjaGFuZ2VzLAorICAgICAg
ICAvLyB3ZSBuZWVkIHRvIGRpcnR5IG91ciBzdGFja2luZyBjb250ZXh0J3Mgei1vcmRlciBsaXN0
LgorICAgICAgICBpZiAobmV3U3R5bGUpIHsKKyAgICAgICAgICAgIGJvb2wgdmlzaWJpbGl0eUNo
YW5nZWQgPSBtX3N0eWxlLT52aXNpYmlsaXR5KCkgIT0gbmV3U3R5bGUtPnZpc2liaWxpdHkoKSAK
KyAgICAgICAgICAgICAgICB8fCBtX3N0eWxlLT56SW5kZXgoKSAhPSBuZXdTdHlsZS0+ekluZGV4
KCkgCisgICAgICAgICAgICAgICAgfHwgbV9zdHlsZS0+aGFzQXV0b1pJbmRleCgpICE9IG5ld1N0
eWxlLT5oYXNBdXRvWkluZGV4KCk7CisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBF
TkFCTEUoRFJBR0dBQkxFX1JFR0lPTikKKyAgICAgICAgICAgIGlmICh2aXNpYmlsaXR5Q2hhbmdl
ZCkKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLnNldEFubm90YXRlZFJlZ2lvbnNEaXJ0eSh0
cnVlKTsKKyNlbmRpZgorICAgICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKSB7CisgICAg
ICAgICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgICAgICAgICAgICAgY2FjaGUtPmNoaWxkcmVuQ2hh
bmdlZChwYXJlbnQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEtlZXAgbGF5
ZXIgaGllcmFyY2h5IHZpc2liaWxpdHkgYml0cyB1cCB0byBkYXRlIGlmIHZpc2liaWxpdHkgY2hh
bmdlcy4KKyAgICAgICAgICAgIGlmIChtX3N0eWxlLT52aXNpYmlsaXR5KCkgIT0gbmV3U3R5bGUt
PnZpc2liaWxpdHkoKSkgeworICAgICAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogbGF5ZXIg
PSBlbmNsb3NpbmdMYXllcigpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXdTdHlsZS0+
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+
c2V0SGFzVmlzaWJsZUNvbnRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobGF5
ZXItPmhhc1Zpc2libGVDb250ZW50KCkgJiYgKHRoaXMgPT0gJmxheWVyLT5yZW5kZXJlcigpIHx8
IGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPmRpcnR5VmlzaWJsZUNvbnRlbnRTdGF0dXMo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWZmID4gU3R5bGVEaWZmZXJlbmNlUmVw
YWludExheWVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChtX3BhcmVudCAmJiAobmV3U3R5bGUtPm91dGxpbmVTaXplKCkg
PCBtX3N0eWxlLT5vdXRsaW5lU2l6ZSgpIHx8IHNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVu
Y2UoZGlmZikpKQorICAgICAgICAgICAgcmVwYWludCgpOworICAgICAgICBpZiAoaXNGbG9hdGlu
ZygpICYmIChtX3N0eWxlLT5mbG9hdGluZygpICE9IG5ld1N0eWxlLT5mbG9hdGluZygpKSkKKyAg
ICAgICAgICAgIC8vIEZvciBjaGFuZ2VzIGluIGZsb2F0IHN0eWxlcywgd2UgbmVlZCB0byBjb25j
ZWl2YWJseSByZW1vdmUgb3Vyc2VsdmVzCisgICAgICAgICAgICAvLyBmcm9tIHRoZSBmbG9hdGlu
ZyBvYmplY3RzIGxpc3QuCisgICAgICAgICAgICB0b1JlbmRlckJveCh0aGlzKS0+cmVtb3ZlRmxv
YXRpbmdPclBvc2l0aW9uZWRDaGlsZEZyb21CbG9ja0xpc3RzKCk7CisgICAgICAgIGVsc2UgaWYg
KGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIChtX3N0eWxlLT5wb3NpdGlvbigpICE9IG5ld1N0
eWxlLT5wb3NpdGlvbigpKSkKKyAgICAgICAgICAgIC8vIEZvciBjaGFuZ2VzIGluIHBvc2l0aW9u
aW5nIHN0eWxlcywgd2UgbmVlZCB0byBjb25jZWl2YWJseSByZW1vdmUgb3Vyc2VsdmVzCisgICAg
ICAgICAgICAvLyBmcm9tIHRoZSBwb3NpdGlvbmVkIG9iamVjdHMgbGlzdC4KKyAgICAgICAgICAg
IHRvUmVuZGVyQm94KHRoaXMpLT5yZW1vdmVGbG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJs
b2NrTGlzdHMoKTsKKworICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGlzRmxvYXRpbmdP
ck91dE9mRmxvd1Bvc2l0aW9uZWQoKQorICAgICAgICAgICAgJiYgKCFuZXdTdHlsZS0+aXNGbG9h
dGluZygpICYmICFuZXdTdHlsZS0+aGFzT3V0T2ZGbG93UG9zaXRpb24oKSkKKyAgICAgICAgICAg
ICYmIHBhcmVudCgpICYmIChwYXJlbnQoKS0+aXNSZW5kZXJCbG9ja0Zsb3coKSB8fCBwYXJlbnQo
KS0+aXNSZW5kZXJJbmxpbmUoKSk7CisKKyAgICAgICAgc19ub0xvbmdlckFmZmVjdHNQYXJlbnRC
bG9jayA9ICgoIWlzRmxvYXRpbmcoKSAmJiBuZXdTdHlsZS0+aXNGbG9hdGluZygpKSB8fCAoIWlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIG5ld1N0eWxlLT5oYXNPdXRPZkZsb3dQb3NpdGlvbigp
KSkKKyAgICAgICAgICAgICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc1JlbmRlckJsb2NrKCk7
CisKKyAgICAgICAgLy8gcmVzZXQgc3R5bGUgZmxhZ3MKKyAgICAgICAgaWYgKGRpZmYgPT0gU3R5
bGVEaWZmZXJlbmNlTGF5b3V0IHx8IGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0UG9zaXRp
b25lZE1vdmVtZW50T25seSkgeworICAgICAgICAgICAgc2V0RmxvYXRpbmcoZmFsc2UpOworICAg
ICAgICAgICAgY2xlYXJQb3NpdGlvbmVkU3RhdGUoKTsKKyAgICAgICAgfQorICAgICAgICBzZXRI
b3Jpem9udGFsV3JpdGluZ01vZGUodHJ1ZSk7CisgICAgICAgIHNldEhhc0JveERlY29yYXRpb25z
KGZhbHNlKTsKKyAgICAgICAgc2V0SGFzT3ZlcmZsb3dDbGlwKGZhbHNlKTsKKyAgICAgICAgc2V0
SGFzVHJhbnNmb3JtKGZhbHNlKTsKKyAgICAgICAgc2V0SGFzUmVmbGVjdGlvbihmYWxzZSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgc19hZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKKyAgICAg
ICAgc19ub0xvbmdlckFmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOworICAgIH0KKworICAgIGJv
b2wgcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCA9IHNob3VsZFJlcGFpbnRGaXhlZEJh
Y2tncm91bmRzT25TY3JvbGwoJnZpZXcoKS5mcmFtZVZpZXcoKSk7CisKKyAgICBib29sIG5ld1N0
eWxlU2xvd1Njcm9sbCA9IG5ld1N0eWxlICYmIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3Jv
bGwgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CisgICAgYm9vbCBvbGRT
dHlsZVNsb3dTY3JvbGwgPSBtX3N0eWxlICYmIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3Jv
bGwgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICBib29sIGRyYXdzUm9vdEJhY2tncm91bmQgPSBpc1Jv
b3QoKSB8fCAoaXNCb2R5KCkgJiYgIXJlbmRlcmVySGFzQmFja2dyb3VuZChkb2N1bWVudCgpLmRv
Y3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpKSk7CisgICAgaWYgKGRyYXdzUm9vdEJhY2tncm91
bmQgJiYgcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCkgeworICAgICAgICBpZiAodmll
dygpLmNvbXBvc2l0b3IoKS5zdXBwb3J0c0ZpeGVkUm9vdEJhY2tncm91bmRDb21wb3NpdGluZygp
KSB7CisgICAgICAgICAgICBpZiAobmV3U3R5bGVTbG93U2Nyb2xsICYmIG5ld1N0eWxlLT5oYXNF
bnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQorICAgICAgICAgICAgICAgIG5ld1N0eWxlU2xvd1Nj
cm9sbCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsICYmIG1f
c3R5bGUtPmhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkpCisgICAgICAgICAgICAgICAgb2xk
U3R5bGVTbG93U2Nyb2xsID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICBp
ZiAob2xkU3R5bGVTbG93U2Nyb2xsICE9IG5ld1N0eWxlU2xvd1Njcm9sbCkgeworICAgICAgICBp
ZiAob2xkU3R5bGVTbG93U2Nyb2xsKQorICAgICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLnJl
bW92ZVNsb3dSZXBhaW50T2JqZWN0KHRoaXMpOworCisgICAgICAgIGlmIChuZXdTdHlsZVNsb3dT
Y3JvbGwpCisgICAgICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkU2xvd1JlcGFpbnRPYmpl
Y3QodGhpcyk7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBhcmVOb25JZGVudGljYWxDdXJzb3JM
aXN0c0VxdWFsKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikKK3sK
KyAgICBBU1NFUlQoYS0+Y3Vyc29ycygpICE9IGItPmN1cnNvcnMoKSk7CisgICAgcmV0dXJuIGEt
PmN1cnNvcnMoKSAmJiBiLT5jdXJzb3JzKCkgJiYgKmEtPmN1cnNvcnMoKSA9PSAqYi0+Y3Vyc29y
cygpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgYXJlQ3Vyc29yc0VxdWFsKGNvbnN0IFJlbmRl
clN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikKK3sKKyAgICByZXR1cm4gYS0+Y3Vyc29y
KCkgPT0gYi0+Y3Vyc29yKCkgJiYgKGEtPmN1cnNvcnMoKSA9PSBiLT5jdXJzb3JzKCkgfHwgYXJl
Tm9uSWRlbnRpY2FsQ3Vyc29yTGlzdHNFcXVhbChhLCBiKSk7Cit9CisKK3ZvaWQgUmVuZGVyRWxl
bWVudDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSkKK3sKKyAgICBpZiAoc19hZmZlY3RzUGFyZW50QmxvY2spCisgICAgICAg
IGhhbmRsZUR5bmFtaWNGbG9hdFBvc2l0aW9uQ2hhbmdlKCk7CisKKyAgICBpZiAoc19ub0xvbmdl
ckFmZmVjdHNQYXJlbnRCbG9jaykKKyAgICAgICAgcmVtb3ZlQW5vbnltb3VzV3JhcHBlcnNGb3JJ
bmxpbmVzSWZOZWNlc3NhcnkoKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIFNWR1JlbmRlclN1cHBv
cnQ6OnN0eWxlQ2hhbmdlZCh0aGlzKTsKKyNlbmRpZgorCisgICAgaWYgKCFtX3BhcmVudCkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91
dCB8fCBkaWZmID09IFN0eWxlRGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQpIHsKKyAgICAgICAg
UmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQodGhpcywgb2xkU3R5bGUsIG1fc3R5
bGUuZ2V0KCkpOworCisgICAgICAgIC8vIElmIHRoZSBvYmplY3QgYWxyZWFkeSBuZWVkcyBsYXlv
dXQsIHRoZW4gc2V0TmVlZHNMYXlvdXQgd29uJ3QgZG8KKyAgICAgICAgLy8gYW55IHdvcmsuIEJ1
dCBpZiB0aGUgY29udGFpbmluZyBibG9jayBoYXMgY2hhbmdlZCwgdGhlbiB3ZSBtYXkgbmVlZAor
ICAgICAgICAvLyB0byBtYXJrIHRoZSBuZXcgY29udGFpbmluZyBibG9ja3MgZm9yIGxheW91dC4g
VGhlIGNoYW5nZSB0aGF0IGNhbgorICAgICAgICAvLyBkaXJlY3RseSBhZmZlY3QgdGhlIGNvbnRh
aW5pbmcgYmxvY2sgb2YgdGhpcyBvYmplY3QgaXMgYSBjaGFuZ2UgdG8KKyAgICAgICAgLy8gdGhl
IHBvc2l0aW9uIHN0eWxlLgorICAgICAgICBpZiAobmVlZHNMYXlvdXQoKSAmJiBvbGRTdHlsZS0+
cG9zaXRpb24oKSAhPSBtX3N0eWxlLT5wb3NpdGlvbigpKQorICAgICAgICAgICAgbWFya0NvbnRh
aW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsKKworICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZl
cmVuY2VMYXlvdXQpCisgICAgICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFs
Rmxvd0xheW91dCgpOworICAgIH0gZWxzZSBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1w
bGlmaWVkTGF5b3V0QW5kUG9zaXRpb25lZE1vdmVtZW50KSB7CisgICAgICAgIHNldE5lZWRzUG9z
aXRpb25lZE1vdmVtZW50TGF5b3V0KG9sZFN0eWxlKTsKKyAgICAgICAgc2V0TmVlZHNTaW1wbGlm
aWVkTm9ybWFsRmxvd0xheW91dCgpOworICAgIH0gZWxzZSBpZiAoZGlmZiA9PSBTdHlsZURpZmZl
cmVuY2VMYXlvdXRQb3NpdGlvbmVkTW92ZW1lbnRPbmx5KQorICAgICAgICBzZXROZWVkc1Bvc2l0
aW9uZWRNb3ZlbWVudExheW91dChvbGRTdHlsZSk7CisKKyAgICAvLyBEb24ndCBjaGVjayBmb3Ig
cmVwYWludCBoZXJlOyB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgdGhlIGxheWVyIGhhcyBiZWVuCisg
ICAgLy8gdXBkYXRlZCBieSBzdWJjbGFzc2VzIGJlZm9yZSB3ZSBrbm93IGlmIHdlIGhhdmUgdG8g
cmVwYWludCAoaW4gc2V0U3R5bGUoKSkuCisKKyAgICBpZiAob2xkU3R5bGUgJiYgIWFyZUN1cnNv
cnNFcXVhbChvbGRTdHlsZSwgc3R5bGUoKSkpCisgICAgICAgIGZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkuc2NoZWR1bGVDdXJzb3JVcGRhdGUoKTsKK30KKwogdm9pZCBSZW5kZXJFbGVtZW50OjppbnNl
cnRlZEludG9UcmVlKCkKIHsKICAgICBSZW5kZXJPYmplY3Q6Omluc2VydGVkSW50b1RyZWUoKTsK
QEAgLTQ3OSw2ICs2ODksMTMgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVkRnJv
bVRyZQogICAgICAgICByZW1vdmVMYXllcnMobGF5ZXIpOwogICAgIH0KIAorICAgIGJvb2wgcmVw
YWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCA9IHNob3VsZFJlcGFpbnRGaXhlZEJhY2tncm91
bmRzT25TY3JvbGwoJnZpZXcoKS5mcmFtZVZpZXcoKSk7CisgICAgaWYgKHJlcGFpbnRGaXhlZEJh
Y2tncm91bmRzT25TY3JvbGwgJiYgbV9zdHlsZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91
bmRJbWFnZSgpKQorICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkucmVtb3ZlU2xvd1JlcGFpbnRP
YmplY3QodGhpcyk7CisKKyAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50
KCktPmNoaWxkcmVuSW5saW5lKCkpCisgICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNo
YW5nZWRDaGlsZCh0aGlzKTsKKwogICAgIFJlbmRlck9iamVjdDo6d2lsbEJlUmVtb3ZlZEZyb21U
cmVlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
aAkocmV2aXNpb24gMTU2Mjg1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsOSBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBib29sIGxheWVyQ3JlYXRpb25BbGxvd2VkRm9yU3VidHJlZSgpIGNvbnN0OwogCisgICAgZW51
bSBTdHlsZVByb3BhZ2F0aW9uVHlwZSB7IFByb3BhZ2F0ZUFsbENoaWxkcmVuLCBQcm9wYWdhdGVC
bG9ja0NoaWxkcmVuT25seSB9OworICAgIHZvaWQgcHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0No
aWxkcmVuKFN0eWxlUHJvcGFnYXRpb25UeXBlKTsKKwogICAgIExheW91dFVuaXQgdmFsdWVGb3JM
ZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQ
ZXJjZW50YWdlcyA9IGZhbHNlKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3Vu
ZFBlcmNlbnRhZ2VzID0gZmFsc2UpIGNvbnN0OwogCkBAIC03MCw2ICs3Myw4IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHNldExhc3RDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkKSB7IG1fbGFzdENo
aWxkID0gY2hpbGQ7IH0KICAgICB2b2lkIGRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCk7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBpbnNlcnRlZEludG9UcmVlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxC
ZVJlbW92ZWRGcm9tVHJlZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0
cm95ZWQoKSBPVkVSUklERTsKQEAgLTgxLDggKzg2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGlz
VGV4dCgpIGNvbnN0IFdURl9ERUxFVEVEX0ZVTkNUSU9OOwogICAgIHZvaWQgaXNSZW5kZXJFbGVt
ZW50KCkgY29uc3QgV1RGX0RFTEVURURfRlVOQ1RJT047CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogZmlyc3RDaGlsZFNsb3coKSBjb25zdCB7IHJldHVybiBmaXJzdENoaWxkKCk7IH0KLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogbGFzdENoaWxkU2xvdygpIGNvbnN0IHsgcmV0dXJuIGxh
c3RDaGlsZCgpOyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGRTbG93KCkg
Y29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gZmlyc3RDaGlsZCgpOyB9CisgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZFNsb3coKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJl
dHVybiBsYXN0Q2hpbGQoKTsgfQogCiAgICAgUmVuZGVyT2JqZWN0KiBtX2ZpcnN0Q2hpbGQ7CiAg
ICAgUmVuZGVyT2JqZWN0KiBtX2xhc3RDaGlsZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxNTYyODUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NiBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkNv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRy
b2xsZXIuaCIKQEAgLTY1LDEwICs2NCw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CiAKLSNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCi0j
ZW5kaWYKLQogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCkBAIC0xMDcsMjggKzEwMiw2
IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyT2JqZWN0IHsKIAogQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFJlbmRlck9iamVjdCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJPYmplY3QpLCBSZW5k
ZXJPYmplY3Rfc2hvdWxkX3N0YXlfc21hbGwpOwogCi0vLyBPbiBsb3ctcG93ZXJlZC9tb2JpbGUg
ZGV2aWNlcywgcHJldmVudGluZyBibGl0dGluZyBvbiBhIHNjcm9sbCBjYW4gY2F1c2Ugbm90aWNl
YWJsZSBkZWxheXMKLS8vIHdoZW4gc2Nyb2xsaW5nIGEgcGFnZSB3aXRoIGEgZml4ZWQgYmFja2dy
b3VuZCBpbWFnZS4gQXMgYW4gb3B0aW1pemF0aW9uLCBhc3N1bWluZyB0aGVyZSBhcmUKLS8vIG5v
IGZpeGVkIHBvc2l0b25lZCBlbGVtZW50cyBvbiB0aGUgcGFnZSwgd2UgY2FuIGFjY2xlcmF0ZSBz
Y3JvbGxpbmcgKHZpYSBibGl0dGluZykgaWYgd2UKLS8vIGlnbm9yZSB0aGUgQ1NTIHByb3BlcnR5
ICJiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkIi4KLXN0YXRpYyBib29sIHNob3VsZFJlcGFp
bnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCi17Ci0jaWYg
IUVOQUJMRShGQVNUX01PQklMRV9TQ1JPTExJTkcpIHx8ICFQTEFURk9STShRVCkKLSAgICBVTlVT
RURfUEFSQU0oZnJhbWVWaWV3KTsKLSNlbmRpZgotCi0gICAgYm9vbCByZXBhaW50Rml4ZWRCYWNr
Z3JvdW5kc09uU2Nyb2xsID0gdHJ1ZTsKLSNpZiBFTkFCTEUoRkFTVF9NT0JJTEVfU0NST0xMSU5H
KQotI2lmIFBMQVRGT1JNKFFUKQotICAgIGlmIChmcmFtZVZpZXctPmRlbGVnYXRlc1Njcm9sbGlu
ZygpKQotICAgICAgICByZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsID0gZmFsc2U7Ci0j
ZWxzZQotICAgIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSBmYWxzZTsKLSNlbmRp
ZgotI2VuZGlmCi0gICAgcmV0dXJuIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGw7Ci19
Ci0KIGJvb2wgUmVuZGVyT2JqZWN0OjpzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOwogYm9v
bCBSZW5kZXJPYmplY3Q6OnNfbm9Mb25nZXJBZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKIApA
QCAtMTg2NSwxODcgKzE4MzgsNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0U3R5bGUoUGFzc1Jl
ZlB0cjxSCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJIYXNCYWNrZ3Jv
dW5kKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCi17Ci0gICAgcmV0dXJuIHJlbmRlcmVy
ICYmIHJlbmRlcmVyLT5oYXNCYWNrZ3JvdW5kKCk7Ci19Ci0KLXZvaWQgUmVuZGVyT2JqZWN0Ojpz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBu
ZXdTdHlsZSkKLXsKLSAgICBpZiAobV9zdHlsZSkgewotICAgICAgICAvLyBJZiBvdXIgei1pbmRl
eCBjaGFuZ2VzIHZhbHVlIG9yIG91ciB2aXNpYmlsaXR5IGNoYW5nZXMsCi0gICAgICAgIC8vIHdl
IG5lZWQgdG8gZGlydHkgb3VyIHN0YWNraW5nIGNvbnRleHQncyB6LW9yZGVyIGxpc3QuCi0gICAg
ICAgIGlmIChuZXdTdHlsZSkgewotICAgICAgICAgICAgYm9vbCB2aXNpYmlsaXR5Q2hhbmdlZCA9
IG1fc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBuZXdTdHlsZS0+dmlzaWJpbGl0eSgpIAotICAgICAg
ICAgICAgICAgIHx8IG1fc3R5bGUtPnpJbmRleCgpICE9IG5ld1N0eWxlLT56SW5kZXgoKSAKLSAg
ICAgICAgICAgICAgICB8fCBtX3N0eWxlLT5oYXNBdXRvWkluZGV4KCkgIT0gbmV3U3R5bGUtPmhh
c0F1dG9aSW5kZXgoKTsKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShE
UkFHR0FCTEVfUkVHSU9OKQotICAgICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKQotICAg
ICAgICAgICAgICAgIGRvY3VtZW50KCkuc2V0QW5ub3RhdGVkUmVnaW9uc0RpcnR5KHRydWUpOwot
I2VuZGlmCi0gICAgICAgICAgICBpZiAodmlzaWJpbGl0eUNoYW5nZWQpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpKQotICAgICAgICAgICAgICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHBh
cmVudCgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gS2VlcCBsYXllciBoaWVy
YXJjaHkgdmlzaWJpbGl0eSBiaXRzIHVwIHRvIGRhdGUgaWYgdmlzaWJpbGl0eSBjaGFuZ2VzLgot
ICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBuZXdTdHlsZS0+dmlzaWJp
bGl0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlbmRlckxheWVyKiBsID0gZW5jbG9zaW5n
TGF5ZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobmV3U3R5bGUtPnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFKQotICAgICAgICAgICAgICAgICAgICAgICAgbC0+c2V0SGFzVmlzaWJsZUNv
bnRlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobC0+aGFzVmlzaWJsZUNvbnRl
bnQoKSAmJiAodGhpcyA9PSAmbC0+cmVuZGVyZXIoKSB8fCBsLT5yZW5kZXJlcigpLnN0eWxlKCkt
PnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbC0+
ZGlydHlWaXNpYmxlQ29udGVudFN0YXR1cygpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGRpZmYgPiBTdHlsZURpZmZlcmVuY2VSZXBhaW50TGF5ZXIpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwYWludCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1fcGFyZW50ICYm
IChuZXdTdHlsZS0+b3V0bGluZVNpemUoKSA8IG1fc3R5bGUtPm91dGxpbmVTaXplKCkgfHwgc2hv
dWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkpCi0gICAgICAgICAgICByZXBhaW50
KCk7Ci0gICAgICAgIGlmIChpc0Zsb2F0aW5nKCkgJiYgKG1fc3R5bGUtPmZsb2F0aW5nKCkgIT0g
bmV3U3R5bGUtPmZsb2F0aW5nKCkpKQotICAgICAgICAgICAgLy8gRm9yIGNoYW5nZXMgaW4gZmxv
YXQgc3R5bGVzLCB3ZSBuZWVkIHRvIGNvbmNlaXZhYmx5IHJlbW92ZSBvdXJzZWx2ZXMKLSAgICAg
ICAgICAgIC8vIGZyb20gdGhlIGZsb2F0aW5nIG9iamVjdHMgbGlzdC4KLSAgICAgICAgICAgIHRv
UmVuZGVyQm94KHRoaXMpLT5yZW1vdmVGbG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJsb2Nr
TGlzdHMoKTsKLSAgICAgICAgZWxzZSBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgKG1f
c3R5bGUtPnBvc2l0aW9uKCkgIT0gbmV3U3R5bGUtPnBvc2l0aW9uKCkpKQotICAgICAgICAgICAg
Ly8gRm9yIGNoYW5nZXMgaW4gcG9zaXRpb25pbmcgc3R5bGVzLCB3ZSBuZWVkIHRvIGNvbmNlaXZh
Ymx5IHJlbW92ZSBvdXJzZWx2ZXMKLSAgICAgICAgICAgIC8vIGZyb20gdGhlIHBvc2l0aW9uZWQg
b2JqZWN0cyBsaXN0LgotICAgICAgICAgICAgdG9SZW5kZXJCb3godGhpcyktPnJlbW92ZUZsb2F0
aW5nT3JQb3NpdGlvbmVkQ2hpbGRGcm9tQmxvY2tMaXN0cygpOwotCi0gICAgICAgIHNfYWZmZWN0
c1BhcmVudEJsb2NrID0gaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpCi0gICAgICAg
ICAgICAmJiAoIW5ld1N0eWxlLT5pc0Zsb2F0aW5nKCkgJiYgIW5ld1N0eWxlLT5oYXNPdXRPZkZs
b3dQb3NpdGlvbigpKQotICAgICAgICAgICAgJiYgcGFyZW50KCkgJiYgKHBhcmVudCgpLT5pc1Jl
bmRlckJsb2NrRmxvdygpIHx8IHBhcmVudCgpLT5pc1JlbmRlcklubGluZSgpKTsKLQotICAgICAg
ICBzX25vTG9uZ2VyQWZmZWN0c1BhcmVudEJsb2NrID0gKCghaXNGbG9hdGluZygpICYmIG5ld1N0
eWxlLT5pc0Zsb2F0aW5nKCkpIHx8ICghaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgbmV3U3R5
bGUtPmhhc091dE9mRmxvd1Bvc2l0aW9uKCkpKQotICAgICAgICAgICAgJiYgcGFyZW50KCkgJiYg
cGFyZW50KCktPmlzUmVuZGVyQmxvY2soKTsKLQotICAgICAgICAvLyByZXNldCBzdHlsZSBmbGFn
cwotICAgICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBT
dHlsZURpZmZlcmVuY2VMYXlvdXRQb3NpdGlvbmVkTW92ZW1lbnRPbmx5KSB7Ci0gICAgICAgICAg
ICBzZXRGbG9hdGluZyhmYWxzZSk7Ci0gICAgICAgICAgICBjbGVhclBvc2l0aW9uZWRTdGF0ZSgp
OwotICAgICAgICB9Ci0gICAgICAgIHNldEhvcml6b250YWxXcml0aW5nTW9kZSh0cnVlKTsKLSAg
ICAgICAgc2V0SGFzQm94RGVjb3JhdGlvbnMoZmFsc2UpOwotICAgICAgICBzZXRIYXNPdmVyZmxv
d0NsaXAoZmFsc2UpOwotICAgICAgICBzZXRIYXNUcmFuc2Zvcm0oZmFsc2UpOwotICAgICAgICBz
ZXRIYXNSZWZsZWN0aW9uKGZhbHNlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzX2FmZmVjdHNQ
YXJlbnRCbG9jayA9IGZhbHNlOwotICAgICAgICBzX25vTG9uZ2VyQWZmZWN0c1BhcmVudEJsb2Nr
ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCByZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Ny
b2xsID0gc2hvdWxkUmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCgmdmlldygpLmZyYW1l
VmlldygpKTsKLQotICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgcmVw
YWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCAmJiBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3Jv
dW5kSW1hZ2UoKTsKLSAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgcmVw
YWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91
bmRJbWFnZSgpOwotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGJvb2wg
ZHJhd3NSb290QmFja2dyb3VuZCA9IGlzUm9vdCgpIHx8IChpc0JvZHkoKSAmJiAhcmVuZGVyZXJI
YXNCYWNrZ3JvdW5kKGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkpKTsK
LSAgICBpZiAoZHJhd3NSb290QmFja2dyb3VuZCAmJiByZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09u
U2Nyb2xsKSB7Ci0gICAgICAgIGlmICh2aWV3KCkuY29tcG9zaXRvcigpLnN1cHBvcnRzRml4ZWRS
b290QmFja2dyb3VuZENvbXBvc2l0aW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChuZXdTdHlsZVNs
b3dTY3JvbGwgJiYgbmV3U3R5bGUtPmhhc0VudGlyZWx5Rml4ZWRCYWNrZ3JvdW5kKCkpCi0gICAg
ICAgICAgICAgICAgbmV3U3R5bGVTbG93U2Nyb2xsID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIGlm
IChvbGRTdHlsZVNsb3dTY3JvbGwgJiYgbV9zdHlsZS0+aGFzRW50aXJlbHlGaXhlZEJhY2tncm91
bmQoKSkKLSAgICAgICAgICAgICAgICBvbGRTdHlsZVNsb3dTY3JvbGwgPSBmYWxzZTsKLSAgICAg
ICAgfQotICAgIH0KLSNlbmRpZgotICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwgIT0gbmV3U3R5
bGVTbG93U2Nyb2xsKSB7Ci0gICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwpCi0gICAgICAg
ICAgICB2aWV3KCkuZnJhbWVWaWV3KCkucmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QodGhpcyk7Ci0K
LSAgICAgICAgaWYgKG5ld1N0eWxlU2xvd1Njcm9sbCkKLSAgICAgICAgICAgIHZpZXcoKS5mcmFt
ZVZpZXcoKS5hZGRTbG93UmVwYWludE9iamVjdCh0aGlzKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBi
b29sIGFyZU5vbklkZW50aWNhbEN1cnNvckxpc3RzRXF1YWwoY29uc3QgUmVuZGVyU3R5bGUqIGEs
IGNvbnN0IFJlbmRlclN0eWxlKiBiKQotewotICAgIEFTU0VSVChhLT5jdXJzb3JzKCkgIT0gYi0+
Y3Vyc29ycygpKTsKLSAgICByZXR1cm4gYS0+Y3Vyc29ycygpICYmIGItPmN1cnNvcnMoKSAmJiAq
YS0+Y3Vyc29ycygpID09ICpiLT5jdXJzb3JzKCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBh
cmVDdXJzb3JzRXF1YWwoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBi
KQotewotICAgIHJldHVybiBhLT5jdXJzb3IoKSA9PSBiLT5jdXJzb3IoKSAmJiAoYS0+Y3Vyc29y
cygpID09IGItPmN1cnNvcnMoKSB8fCBhcmVOb25JZGVudGljYWxDdXJzb3JMaXN0c0VxdWFsKGEs
IGIpKTsKLX0KLQotdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCi17Ci0gICAgaWYgKHNfYWZm
ZWN0c1BhcmVudEJsb2NrKQotICAgICAgICBoYW5kbGVEeW5hbWljRmxvYXRQb3NpdGlvbkNoYW5n
ZSgpOwotCi0gICAgaWYgKHNfbm9Mb25nZXJBZmZlY3RzUGFyZW50QmxvY2spCi0gICAgICAgIHJl
bW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lc0lmTmVjZXNzYXJ5KCk7Ci0jaWYgRU5BQkxF
KFNWRykKLSAgICBTVkdSZW5kZXJTdXBwb3J0OjpzdHlsZUNoYW5nZWQodGhpcyk7Ci0jZW5kaWYK
LQotICAgIGlmICghbV9wYXJlbnQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoZGlm
ZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1w
bGlmaWVkTGF5b3V0KSB7Ci0gICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3R5bGVDaGFu
Z2VkKHRoaXMsIG9sZFN0eWxlLCBtX3N0eWxlLmdldCgpKTsKLQotICAgICAgICAvLyBJZiB0aGUg
b2JqZWN0IGFscmVhZHkgbmVlZHMgbGF5b3V0LCB0aGVuIHNldE5lZWRzTGF5b3V0IHdvbid0IGRv
Ci0gICAgICAgIC8vIGFueSB3b3JrLiBCdXQgaWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaGFzIGNo
YW5nZWQsIHRoZW4gd2UgbWF5IG5lZWQKLSAgICAgICAgLy8gdG8gbWFyayB0aGUgbmV3IGNvbnRh
aW5pbmcgYmxvY2tzIGZvciBsYXlvdXQuIFRoZSBjaGFuZ2UgdGhhdCBjYW4KLSAgICAgICAgLy8g
ZGlyZWN0bHkgYWZmZWN0IHRoZSBjb250YWluaW5nIGJsb2NrIG9mIHRoaXMgb2JqZWN0IGlzIGEg
Y2hhbmdlIHRvCi0gICAgICAgIC8vIHRoZSBwb3NpdGlvbiBzdHlsZS4KLSAgICAgICAgaWYgKG5l
ZWRzTGF5b3V0KCkgJiYgb2xkU3R5bGUtPnBvc2l0aW9uKCkgIT0gbV9zdHlsZS0+cG9zaXRpb24o
KSkKLSAgICAgICAgICAgIG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7Ci0KLSAgICAg
ICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0KQotICAgICAgICAgICAgc2V0TmVl
ZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHNldE5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKTsKLSAgICB9IGVsc2UgaWYgKGRp
ZmYgPT0gU3R5bGVEaWZmZXJlbmNlU2ltcGxpZmllZExheW91dEFuZFBvc2l0aW9uZWRNb3ZlbWVu
dCkgewotICAgICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dChvbGRTdHlsZSk7
Ci0gICAgICAgIHNldE5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKTsKLSAgICB9IGVs
c2UgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0UG9zaXRpb25lZE1vdmVtZW50T25s
eSkKLSAgICAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xkU3R5bGUpOwot
Ci0gICAgLy8gRG9uJ3QgY2hlY2sgZm9yIHJlcGFpbnQgaGVyZTsgd2UgbmVlZCB0byB3YWl0IHVu
dGlsIHRoZSBsYXllciBoYXMgYmVlbgotICAgIC8vIHVwZGF0ZWQgYnkgc3ViY2xhc3NlcyBiZWZv
cmUgd2Uga25vdyBpZiB3ZSBoYXZlIHRvIHJlcGFpbnQgKGluIHNldFN0eWxlKCkpLgotCi0gICAg
aWYgKG9sZFN0eWxlICYmICFhcmVDdXJzb3JzRXF1YWwob2xkU3R5bGUsIHN0eWxlKCkpKQotICAg
ICAgICBmcmFtZSgpLmV2ZW50SGFuZGxlcigpLnNjaGVkdWxlQ3Vyc29yVXBkYXRlKCk7Ci19Ci0K
LXZvaWQgUmVuZGVyT2JqZWN0Ojpwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oYm9v
bCBibG9ja0NoaWxkcmVuT25seSkKLXsKLSAgICAvLyBGSVhNRTogV2UgY291bGQgc2F2ZSB0aGlz
IGNhbGwgd2hlbiB0aGUgY2hhbmdlIG9ubHkgYWZmZWN0ZWQgbm9uLWluaGVyaXRlZCBwcm9wZXJ0
aWVzLgotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGRTbG93KCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmICghY2hpbGQt
PmlzQW5vbnltb3VzKCkgfHwgY2hpbGQtPnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IE5PUFNFVURP
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGJsb2NrQ2hpbGRyZW5Pbmx5
ICYmICFjaGlsZC0+aXNSZW5kZXJCbG9jaygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJGdWxs
U2NyZWVuKCkgfHwgY2hpbGQtPmlzUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSNlbmRpZgotCi0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
bmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShz
dHlsZSgpLCBjaGlsZC0+c3R5bGUoKS0+ZGlzcGxheSgpKTsKLSAgICAgICAgaWYgKHN0eWxlKCkt
PnNwZWNpZmllc0NvbHVtbnMoKSkgewotICAgICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5z
cGVjaWZpZXNDb2x1bW5zKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPmluaGVyaXRDb2x1
bW5Qcm9wZXJ0aWVzRnJvbShzdHlsZSgpKTsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUo
KS0+Y29sdW1uU3BhbigpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRDb2x1bW5TcGFu
KENvbHVtblNwYW5BbGwpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUHJlc2VydmUgdGhlIHBv
c2l0aW9uIHN0eWxlIG9mIGFub255bW91cyBibG9jayBjb250aW51YXRpb25zIGFzIHRoZXkgY2Fu
IGhhdmUgcmVsYXRpdmUgb3Igc3RpY2t5IHBvc2l0aW9uIHdoZW4KLSAgICAgICAgLy8gdGhleSBj
b250YWluIGJsb2NrIGRlc2NlbmRhbnRzIG9mIHJlbGF0aXZlIG9yIHN0aWNreSBwb3NpdGlvbmVk
IGlubGluZXMuCi0gICAgICAgIGlmIChjaGlsZC0+aXNJbkZsb3dQb3NpdGlvbmVkKCkgJiYgdG9S
ZW5kZXJCbG9jayhjaGlsZCktPmlzQW5vbnltb3VzQmxvY2tDb250aW51YXRpb24oKSkKLSAgICAg
ICAgICAgIG5ld1N0eWxlLT5zZXRQb3NpdGlvbihjaGlsZC0+c3R5bGUoKS0+cG9zaXRpb24oKSk7
Ci0KLSAgICAgICAgY2hpbGQtPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7Ci0gICAgfQot
fQotCiB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIq
IG9sZExheWVycywgY29uc3QgRmlsbExheWVyKiBuZXdMYXllcnMpCiB7CiAgICAgLy8gT3B0aW1p
emUgdGhlIGNvbW1vbiBjYXNlCkBAIC0yNDgzLDE1ICsyMjc1LDYgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OndpbGxCZVJlbW92ZWRGcm9tVHJlZQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgQVNT
RVJUKGlzUm9vdGVkKCkpIGJ1dCB3ZSBoYXZlIHNvbWUgb3V0LW9mLW9yZGVyIHJlbW92YWxzIHdo
aWNoIHdvdWxkIG5lZWQgdG8gYmUgZml4ZWQgZmlyc3QuCiAKLSAgICBpZiAoIWlzVGV4dCgpKSB7
Ci0gICAgICAgIGJvb2wgcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCA9IHNob3VsZFJl
cGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwoJnZpZXcoKS5mcmFtZVZpZXcoKSk7Ci0gICAg
ICAgIGlmIChyZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsICYmIG1fc3R5bGUgJiYgbV9z
dHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkKLSAgICAgICAgICAgIHZpZXcoKS5mcmFt
ZVZpZXcoKS5yZW1vdmVTbG93UmVwYWludE9iamVjdCh0aGlzKTsKLSAgICB9Ci0KLSAgICBpZiAo
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCktPmNoaWxkcmVuSW5saW5lKCkpCi0g
ICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCh0aGlzKTsKLQogICAg
IHJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkKCk7CiAKICAgICBpZiAoUmVuZGVyTmFtZWRGbG93
VGhyZWFkKiBjb250YWluZXJGbG93VGhyZWFkID0gcGFyZW50KCktPnJlbmRlck5hbWVkRmxvd1Ro
cmVhZFdyYXBwZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgJKHJldmlzaW9uIDE1NjI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTY5LDEwICs5NjksOSBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKICAgICAvLyBPdmVycmlkZXMgc2hvdWxkIGNhbGwgdGhlIHN1cGVyY2xhc3MgYXQg
dGhlIGVuZAotICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdp
bGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIHsgfQogICAgIC8v
IE92ZXJyaWRlcyBzaG91bGQgY2FsbCB0aGUgc3VwZXJjbGFzcyBhdCB0aGUgc3RhcnQKLSAgICB2
aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpOwotICAgIHZvaWQgcHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0NoaWxk
cmVuKGJvb2wgYmxvY2tDaGlsZHJlbk9ubHkgPSBmYWxzZSk7CisgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSB7IH0KIAog
ICAgIHZvaWQgZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCosIGludCB4MSwgaW50
IHkxLCBpbnQgeDIsIGludCB5MiwgQm94U2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2xvciwgRUJvcmRlclN0eWxlLCBpbnQgYWRqYncxLCBpbnQgYWRqYncyLCBib29sIGFudGlh
bGlhcyA9IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5j
cHAJKHJldmlzaW9uIDE1NjI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIFJlbmRlclJ1YnlBc0lu
bGluZTo6flJlbmRlclJ1YnlBc0lubGluZSgKIHZvaWQgUmVuZGVyUnVieUFzSW5saW5lOjpzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKQogewogICAgIFJlbmRlcklubGluZTo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUp
OwotICAgIHByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbigpOworICAgIHByb3BhZ2F0
ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihQcm9wYWdhdGVBbGxDaGlsZHJlbik7CiB9CiAKIHZv
aWQgUmVuZGVyUnVieUFzSW5saW5lOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkKQpAQCAtMjI3LDcgKzIyNyw3IEBAIFJlbmRlclJ1YnlBc0Js
b2NrOjp+UmVuZGVyUnVieUFzQmxvY2soKQogdm9pZCBSZW5kZXJSdWJ5QXNCbG9jazo6c3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSkKIHsKICAgICBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwot
ICAgIHByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbigpOworICAgIHByb3BhZ2F0ZVN0
eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihQcm9wYWdhdGVBbGxDaGlsZHJlbik7CiB9CiAKIHZvaWQg
UmVuZGVyUnVieUFzQmxvY2s6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAJKHJldmlzaW9uIDE1NjI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgUmVuZGVyVGFi
bGU6On5SZW5kZXJUYWJsZSgpCiB2b2lkIFJlbmRlclRhYmxlOjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewogICAgIFJl
bmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7Ci0gICAgcHJvcGFnYXRl
U3R5bGVUb0Fub255bW91c0NoaWxkcmVuKCk7CisgICAgcHJvcGFnYXRlU3R5bGVUb0Fub255bW91
c0NoaWxkcmVuKFByb3BhZ2F0ZUFsbENoaWxkcmVuKTsKIAogICAgIEVUYWJsZUxheW91dCBvbGRU
YWJsZUxheW91dCA9IG9sZFN0eWxlID8gb2xkU3R5bGUtPnRhYmxlTGF5b3V0KCkgOiBUQVVUTzsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCShy
ZXZpc2lvbiAxNTYyODUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgUmVuZGVyVGFibGVS
b3c6OnN0eWxlRGlkQ2hhbmdlKFN0eWwKICAgICBBU1NFUlQoc3R5bGUoKS0+ZGlzcGxheSgpID09
IFRBQkxFX1JPVyk7CiAKICAgICBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0
eWxlKTsKLSAgICBwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oKTsKKyAgICBwcm9w
YWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oUHJvcGFnYXRlQWxsQ2hpbGRyZW4pOwogCiAg
ICAgaWYgKHNlY3Rpb24oKSAmJiBvbGRTdHlsZSAmJiBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkg
IT0gb2xkU3R5bGUtPmxvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgc2VjdGlvbigpLT5yb3dMb2dp
Y2FsSGVpZ2h0Q2hhbmdlZChyb3dJbmRleCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiAxNTYyODUpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIFJlbmRlclRhYmxlU2VjdGlvbjo6flJlbmRlclRhYmxl
U2VjdGlvbigKIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewogICAgIFJlbmRl
ckJveDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwotICAgIHByb3BhZ2F0ZVN0eWxl
VG9Bbm9ueW1vdXNDaGlsZHJlbigpOworICAgIHByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGls
ZHJlbihQcm9wYWdhdGVBbGxDaGlsZHJlbik7CiAKICAgICAvLyBJZiBib3JkZXIgd2FzIGNoYW5n
ZWQsIG5vdGlmeSB0YWJsZS4KICAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0aGlzLT50YWJsZSgp
Owo=
</data>
<flag name="review"
          id="234622"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="234627"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212411</attachid>
            <date>2013-09-23 17:16:58 -0700</date>
            <delta_ts>2013-09-23 17:16:58 -0700</delta_ts>
            <desc>another</desc>
            <filename>renderelement-style-change-2.patch</filename>
            <type>text/plain</type>
            <size>28576</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA5LTIzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHN0eWxlIGNoYW5nZSBh
bmFseXNpcyBjb2RlIHRvIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTgxMgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCisKKyAgICAgICAgVGV4dCByZW5kZXJlcnMgZG9uJ3QgbmVlZCB0aGlzLiBUaGVy
ZSBpcyBubyB0ZXh0IHJlbmRlcmVyIHNwZWNpZmljIGludmFsaWRhdGlvbiBhbmQgdGV4dAorICAg
ICAgICBzdHlsZSBuZXZlciBjaGFuZ2VzIGluZGVwZW5kZW50IGZyb20gdGhlIGNvbnRhaW5pbmcg
UmVuZGVyRWxlbWVudC4KKwogMjAxMy0wOS0yMyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQ1RURTogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoKSBzaG91bGQg
cmV0dXJuIGEgUmVuZGVyRWxlbWVudCouCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDE1NjI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUsNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShTdHlsZURpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4odHJ1ZSk7ICAgIAorICAg
IHByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihQcm9wYWdhdGVUb0Jsb2NrQ2hpbGRy
ZW5Pbmx5KTsKICAgICBtX2xpbmVIZWlnaHQgPSAtMTsKIAogICAgIC8vIEFmdGVyIG91ciBzdHls
ZSBjaGFuZ2VkLCBpZiB3ZSBsb3NlIG91ciBhYmlsaXR5IHRvIHByb3BhZ2F0ZSBmbG9hdHMgaW50
byBuZXh0IHNpYmxpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE1NjI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOSBAQAogCiAjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkNvbnRlbnREYXRhLmgiCisjaW5jbHVk
ZSAiQ3Vyc29yTGlzdC5oIgorI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ291bnRlci5oIgogI2luY2x1ZGUgIlJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCkBAIC00
OCw2ICs1MSwxMCBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdSZW5k
ZXJTdXBwb3J0LmgiCiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCkBAIC00
NDIsNiArNDQ5LDIwOSBAQCBib29sIFJlbmRlckVsZW1lbnQ6OmxheWVyQ3JlYXRpb25BbGxvd2Vk
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgUmVuZGVyRWxlbWVudDo6cHJvcGFnYXRlU3R5
bGVUb0Fub255bW91c0NoaWxkcmVuKFN0eWxlUHJvcGFnYXRpb25UeXBlIHByb3BhZ2F0aW9uVHlw
ZSkKK3sKKyAgICAvLyBGSVhNRTogV2UgY291bGQgc2F2ZSB0aGlzIGNhbGwgd2hlbiB0aGUgY2hh
bmdlIG9ubHkgYWZmZWN0ZWQgbm9uLWluaGVyaXRlZCBwcm9wZXJ0aWVzLgorICAgIGZvciAoUmVu
ZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFjaGlsZC0+aXNBbm9ueW1vdXMoKSB8fCBjaGls
ZC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8pCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAocHJvcGFnYXRpb25UeXBlID09IFByb3BhZ2F0ZVRvQmxvY2tDaGls
ZHJlbk9ubHkgJiYgIWNoaWxkLT5pc1JlbmRlckJsb2NrKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgaWYgKGNoaWxkLT5pc1Jl
bmRlckZ1bGxTY3JlZW4oKSB8fCBjaGlsZC0+aXNSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCisKKyAgICAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHN0eWxlKCksIGNoaWxkLT5zdHlsZSgpLT5kaXNwbGF5KCkpOworICAgICAgICBpZiAo
c3R5bGUoKS0+c3BlY2lmaWVzQ29sdW1ucygpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPnN0
eWxlKCktPnNwZWNpZmllc0NvbHVtbnMoKSkKKyAgICAgICAgICAgICAgICBuZXdTdHlsZS0+aW5o
ZXJpdENvbHVtblByb3BlcnRpZXNGcm9tKHN0eWxlKCkpOworICAgICAgICAgICAgaWYgKGNoaWxk
LT5zdHlsZSgpLT5jb2x1bW5TcGFuKCkpCisgICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldENv
bHVtblNwYW4oQ29sdW1uU3BhbkFsbCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQcmVzZXJ2
ZSB0aGUgcG9zaXRpb24gc3R5bGUgb2YgYW5vbnltb3VzIGJsb2NrIGNvbnRpbnVhdGlvbnMgYXMg
dGhleSBjYW4gaGF2ZSByZWxhdGl2ZSBvciBzdGlja3kgcG9zaXRpb24gd2hlbgorICAgICAgICAv
LyB0aGV5IGNvbnRhaW4gYmxvY2sgZGVzY2VuZGFudHMgb2YgcmVsYXRpdmUgb3Igc3RpY2t5IHBv
c2l0aW9uZWQgaW5saW5lcy4KKyAgICAgICAgaWYgKGNoaWxkLT5pc0luRmxvd1Bvc2l0aW9uZWQo
KSAmJiB0b1JlbmRlckJsb2NrKGNoaWxkKS0+aXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigp
KQorICAgICAgICAgICAgbmV3U3R5bGUtPnNldFBvc2l0aW9uKGNoaWxkLT5zdHlsZSgpLT5wb3Np
dGlvbigpKTsKKworICAgICAgICBjaGlsZC0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsK
KyAgICB9Cit9CisKKy8vIE9uIGxvdy1wb3dlcmVkL21vYmlsZSBkZXZpY2VzLCBwcmV2ZW50aW5n
IGJsaXR0aW5nIG9uIGEgc2Nyb2xsIGNhbiBjYXVzZSBub3RpY2VhYmxlIGRlbGF5cworLy8gd2hl
biBzY3JvbGxpbmcgYSBwYWdlIHdpdGggYSBmaXhlZCBiYWNrZ3JvdW5kIGltYWdlLiBBcyBhbiBv
cHRpbWl6YXRpb24sIGFzc3VtaW5nIHRoZXJlIGFyZQorLy8gbm8gZml4ZWQgcG9zaXRvbmVkIGVs
ZW1lbnRzIG9uIHRoZSBwYWdlLCB3ZSBjYW4gYWNjbGVyYXRlIHNjcm9sbGluZyAodmlhIGJsaXR0
aW5nKSBpZiB3ZQorLy8gaWdub3JlIHRoZSBDU1MgcHJvcGVydHkgImJhY2tncm91bmQtYXR0YWNo
bWVudDogZml4ZWQiLgorc3RhdGljIGJvb2wgc2hvdWxkUmVwYWludEZpeGVkQmFja2dyb3VuZHNP
blNjcm9sbChGcmFtZVZpZXcqIGZyYW1lVmlldykKK3sKKyNpZiAhRU5BQkxFKEZBU1RfTU9CSUxF
X1NDUk9MTElORykgfHwgIVBMQVRGT1JNKFFUKQorICAgIFVOVVNFRF9QQVJBTShmcmFtZVZpZXcp
OworI2VuZGlmCisKKyAgICBib29sIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSB0
cnVlOworI2lmIEVOQUJMRShGQVNUX01PQklMRV9TQ1JPTExJTkcpCisjaWYgUExBVEZPUk0oUVQp
CisgICAgaWYgKGZyYW1lVmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCisgICAgICAgIHJlcGFp
bnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSBmYWxzZTsKKyNlbHNlCisgICAgcmVwYWludEZp
eGVkQmFja2dyb3VuZHNPblNjcm9sbCA9IGZhbHNlOworI2VuZGlmCisjZW5kaWYKKyAgICByZXR1
cm4gcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbDsKK30KKworc3RhdGljIGlubGluZSBi
b29sIHJlbmRlcmVySGFzQmFja2dyb3VuZChjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQor
eworICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+aGFzQmFja2dyb3VuZCgpOworfQor
Cit2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQoreworICAgIGlmIChtX3N0eWxlKSB7Cisg
ICAgICAgIC8vIElmIG91ciB6LWluZGV4IGNoYW5nZXMgdmFsdWUgb3Igb3VyIHZpc2liaWxpdHkg
Y2hhbmdlcywKKyAgICAgICAgLy8gd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3RhY2tpbmcgY29udGV4
dCdzIHotb3JkZXIgbGlzdC4KKyAgICAgICAgaWYgKG5ld1N0eWxlKSB7CisgICAgICAgICAgICBi
b29sIHZpc2liaWxpdHlDaGFuZ2VkID0gbV9zdHlsZS0+dmlzaWJpbGl0eSgpICE9IG5ld1N0eWxl
LT52aXNpYmlsaXR5KCkgCisgICAgICAgICAgICAgICAgfHwgbV9zdHlsZS0+ekluZGV4KCkgIT0g
bmV3U3R5bGUtPnpJbmRleCgpIAorICAgICAgICAgICAgICAgIHx8IG1fc3R5bGUtPmhhc0F1dG9a
SW5kZXgoKSAhPSBuZXdTdHlsZS0+aGFzQXV0b1pJbmRleCgpOworI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkgfHwgRU5BQkxFKERSQUdHQUJMRV9SRUdJT04pCisgICAgICAgICAgICBpZiAo
dmlzaWJpbGl0eUNoYW5nZWQpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5zZXRBbm5vdGF0
ZWRSZWdpb25zRGlydHkodHJ1ZSk7CisjZW5kaWYKKyAgICAgICAgICAgIGlmICh2aXNpYmlsaXR5
Q2hhbmdlZCkgeworICAgICAgICAgICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRv
Y3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgICAgICAgICAgICAgICAgIGNh
Y2hlLT5jaGlsZHJlbkNoYW5nZWQocGFyZW50KCkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBLZWVwIGxheWVyIGhpZXJhcmNoeSB2aXNpYmlsaXR5IGJpdHMgdXAgdG8gZGF0ZSBp
ZiB2aXNpYmlsaXR5IGNoYW5nZXMuCisgICAgICAgICAgICBpZiAobV9zdHlsZS0+dmlzaWJpbGl0
eSgpICE9IG5ld1N0eWxlLT52aXNpYmlsaXR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUmVu
ZGVyTGF5ZXIqIGxheWVyID0gZW5jbG9zaW5nTGF5ZXIoKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAobmV3U3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgICAgICAgICAgICAg
ICAgICAgICAgbGF5ZXItPnNldEhhc1Zpc2libGVDb250ZW50KCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGxheWVyLT5oYXNWaXNpYmxlQ29udGVudCgpICYmICh0aGlzID09ICZsYXll
ci0+cmVuZGVyZXIoKSB8fCBsYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLT52aXNpYmlsaXR5KCkg
IT0gVklTSUJMRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLT5kaXJ0eVZpc2li
bGVDb250ZW50U3RhdHVzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlmZiA+IFN0
eWxlRGlmZmVyZW5jZVJlcGFpbnRMYXllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBhaW50KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxl
LT5vdXRsaW5lU2l6ZSgpIDwgbV9zdHlsZS0+b3V0bGluZVNpemUoKSB8fCBzaG91bGRSZXBhaW50
Rm9yU3R5bGVEaWZmZXJlbmNlKGRpZmYpKSkKKyAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAg
ICAgaWYgKGlzRmxvYXRpbmcoKSAmJiAobV9zdHlsZS0+ZmxvYXRpbmcoKSAhPSBuZXdTdHlsZS0+
ZmxvYXRpbmcoKSkpCisgICAgICAgICAgICAvLyBGb3IgY2hhbmdlcyBpbiBmbG9hdCBzdHlsZXMs
IHdlIG5lZWQgdG8gY29uY2VpdmFibHkgcmVtb3ZlIG91cnNlbHZlcworICAgICAgICAgICAgLy8g
ZnJvbSB0aGUgZmxvYXRpbmcgb2JqZWN0cyBsaXN0LgorICAgICAgICAgICAgdG9SZW5kZXJCb3go
dGhpcyktPnJlbW92ZUZsb2F0aW5nT3JQb3NpdGlvbmVkQ2hpbGRGcm9tQmxvY2tMaXN0cygpOwor
ICAgICAgICBlbHNlIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAobV9zdHlsZS0+cG9z
aXRpb24oKSAhPSBuZXdTdHlsZS0+cG9zaXRpb24oKSkpCisgICAgICAgICAgICAvLyBGb3IgY2hh
bmdlcyBpbiBwb3NpdGlvbmluZyBzdHlsZXMsIHdlIG5lZWQgdG8gY29uY2VpdmFibHkgcmVtb3Zl
IG91cnNlbHZlcworICAgICAgICAgICAgLy8gZnJvbSB0aGUgcG9zaXRpb25lZCBvYmplY3RzIGxp
c3QuCisgICAgICAgICAgICB0b1JlbmRlckJveCh0aGlzKS0+cmVtb3ZlRmxvYXRpbmdPclBvc2l0
aW9uZWRDaGlsZEZyb21CbG9ja0xpc3RzKCk7CisKKyAgICAgICAgc19hZmZlY3RzUGFyZW50Qmxv
Y2sgPSBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkKKyAgICAgICAgICAgICYmICgh
bmV3U3R5bGUtPmlzRmxvYXRpbmcoKSAmJiAhbmV3U3R5bGUtPmhhc091dE9mRmxvd1Bvc2l0aW9u
KCkpCisgICAgICAgICAgICAmJiBwYXJlbnQoKSAmJiAocGFyZW50KCktPmlzUmVuZGVyQmxvY2tG
bG93KCkgfHwgcGFyZW50KCktPmlzUmVuZGVySW5saW5lKCkpOworCisgICAgICAgIHNfbm9Mb25n
ZXJBZmZlY3RzUGFyZW50QmxvY2sgPSAoKCFpc0Zsb2F0aW5nKCkgJiYgbmV3U3R5bGUtPmlzRmxv
YXRpbmcoKSkgfHwgKCFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBuZXdTdHlsZS0+aGFzT3V0
T2ZGbG93UG9zaXRpb24oKSkpCisgICAgICAgICAgICAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+
aXNSZW5kZXJCbG9jaygpOworCisgICAgICAgIC8vIHJlc2V0IHN0eWxlIGZsYWdzCisgICAgICAg
IGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCB8fCBkaWZmID09IFN0eWxlRGlmZmVy
ZW5jZUxheW91dFBvc2l0aW9uZWRNb3ZlbWVudE9ubHkpIHsKKyAgICAgICAgICAgIHNldEZsb2F0
aW5nKGZhbHNlKTsKKyAgICAgICAgICAgIGNsZWFyUG9zaXRpb25lZFN0YXRlKCk7CisgICAgICAg
IH0KKyAgICAgICAgc2V0SG9yaXpvbnRhbFdyaXRpbmdNb2RlKHRydWUpOworICAgICAgICBzZXRI
YXNCb3hEZWNvcmF0aW9ucyhmYWxzZSk7CisgICAgICAgIHNldEhhc092ZXJmbG93Q2xpcChmYWxz
ZSk7CisgICAgICAgIHNldEhhc1RyYW5zZm9ybShmYWxzZSk7CisgICAgICAgIHNldEhhc1JlZmxl
Y3Rpb24oZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNfYWZmZWN0c1BhcmVudEJsb2Nr
ID0gZmFsc2U7CisgICAgICAgIHNfbm9Mb25nZXJBZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsK
KyAgICB9CisKKyAgICBib29sIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSBzaG91
bGRSZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsKCZ2aWV3KCkuZnJhbWVWaWV3KCkpOwor
CisgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiByZXBhaW50Rml4ZWRC
YWNrZ3JvdW5kc09uU2Nyb2xsICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgp
OworICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiByZXBhaW50Rml4ZWRC
YWNrZ3JvdW5kc09uU2Nyb2xsICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7
CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgYm9vbCBkcmF3c1Jvb3RC
YWNrZ3JvdW5kID0gaXNSb290KCkgfHwgKGlzQm9keSgpICYmICFyZW5kZXJlckhhc0JhY2tncm91
bmQoZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSkpOworICAgIGlmIChk
cmF3c1Jvb3RCYWNrZ3JvdW5kICYmIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwpIHsK
KyAgICAgICAgaWYgKHZpZXcoKS5jb21wb3NpdG9yKCkuc3VwcG9ydHNGaXhlZFJvb3RCYWNrZ3Jv
dW5kQ29tcG9zaXRpbmcoKSkgeworICAgICAgICAgICAgaWYgKG5ld1N0eWxlU2xvd1Njcm9sbCAm
JiBuZXdTdHlsZS0+aGFzRW50aXJlbHlGaXhlZEJhY2tncm91bmQoKSkKKyAgICAgICAgICAgICAg
ICBuZXdTdHlsZVNsb3dTY3JvbGwgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKG9sZFN0eWxl
U2xvd1Njcm9sbCAmJiBtX3N0eWxlLT5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgpKQorICAg
ICAgICAgICAgICAgIG9sZFN0eWxlU2xvd1Njcm9sbCA9IGZhbHNlOworICAgICAgICB9CisgICAg
fQorI2VuZGlmCisgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAhPSBuZXdTdHlsZVNsb3dTY3Jv
bGwpIHsKKyAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCkKKyAgICAgICAgICAgIHZpZXco
KS5mcmFtZVZpZXcoKS5yZW1vdmVTbG93UmVwYWludE9iamVjdCh0aGlzKTsKKworICAgICAgICBp
ZiAobmV3U3R5bGVTbG93U2Nyb2xsKQorICAgICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLmFk
ZFNsb3dSZXBhaW50T2JqZWN0KHRoaXMpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgYXJlTm9u
SWRlbnRpY2FsQ3Vyc29yTGlzdHNFcXVhbChjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVu
ZGVyU3R5bGUqIGIpCit7CisgICAgQVNTRVJUKGEtPmN1cnNvcnMoKSAhPSBiLT5jdXJzb3JzKCkp
OworICAgIHJldHVybiBhLT5jdXJzb3JzKCkgJiYgYi0+Y3Vyc29ycygpICYmICphLT5jdXJzb3Jz
KCkgPT0gKmItPmN1cnNvcnMoKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGFyZUN1cnNvcnNF
cXVhbChjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIpCit7CisgICAg
cmV0dXJuIGEtPmN1cnNvcigpID09IGItPmN1cnNvcigpICYmIChhLT5jdXJzb3JzKCkgPT0gYi0+
Y3Vyc29ycygpIHx8IGFyZU5vbklkZW50aWNhbEN1cnNvckxpc3RzRXF1YWwoYSwgYikpOworfQor
Cit2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCit7CisgICAgaWYgKHNfYWZmZWN0c1BhcmVu
dEJsb2NrKQorICAgICAgICBoYW5kbGVEeW5hbWljRmxvYXRQb3NpdGlvbkNoYW5nZSgpOworCisg
ICAgaWYgKHNfbm9Mb25nZXJBZmZlY3RzUGFyZW50QmxvY2spCisgICAgICAgIHJlbW92ZUFub255
bW91c1dyYXBwZXJzRm9ySW5saW5lc0lmTmVjZXNzYXJ5KCk7CisjaWYgRU5BQkxFKFNWRykKKyAg
ICBTVkdSZW5kZXJTdXBwb3J0OjpzdHlsZUNoYW5nZWQodGhpcyk7CisjZW5kaWYKKworICAgIGlm
ICghbV9wYXJlbnQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoZGlmZiA9PSBTdHls
ZURpZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVkTGF5
b3V0KSB7CisgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3R5bGVDaGFuZ2VkKHRoaXMs
IG9sZFN0eWxlLCBtX3N0eWxlLmdldCgpKTsKKworICAgICAgICAvLyBJZiB0aGUgb2JqZWN0IGFs
cmVhZHkgbmVlZHMgbGF5b3V0LCB0aGVuIHNldE5lZWRzTGF5b3V0IHdvbid0IGRvCisgICAgICAg
IC8vIGFueSB3b3JrLiBCdXQgaWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaGFzIGNoYW5nZWQsIHRo
ZW4gd2UgbWF5IG5lZWQKKyAgICAgICAgLy8gdG8gbWFyayB0aGUgbmV3IGNvbnRhaW5pbmcgYmxv
Y2tzIGZvciBsYXlvdXQuIFRoZSBjaGFuZ2UgdGhhdCBjYW4KKyAgICAgICAgLy8gZGlyZWN0bHkg
YWZmZWN0IHRoZSBjb250YWluaW5nIGJsb2NrIG9mIHRoaXMgb2JqZWN0IGlzIGEgY2hhbmdlIHRv
CisgICAgICAgIC8vIHRoZSBwb3NpdGlvbiBzdHlsZS4KKyAgICAgICAgaWYgKG5lZWRzTGF5b3V0
KCkgJiYgb2xkU3R5bGUtPnBvc2l0aW9uKCkgIT0gbV9zdHlsZS0+cG9zaXRpb24oKSkKKyAgICAg
ICAgICAgIG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7CisKKyAgICAgICAgaWYgKGRp
ZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0KQorICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRB
bmRQcmVmV2lkdGhzUmVjYWxjKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldE5lZWRz
U2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKTsKKyAgICB9IGVsc2UgaWYgKGRpZmYgPT0gU3R5
bGVEaWZmZXJlbmNlU2ltcGxpZmllZExheW91dEFuZFBvc2l0aW9uZWRNb3ZlbWVudCkgeworICAg
ICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dChvbGRTdHlsZSk7CisgICAgICAg
IHNldE5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKTsKKyAgICB9IGVsc2UgaWYgKGRp
ZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0UG9zaXRpb25lZE1vdmVtZW50T25seSkKKyAgICAg
ICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xkU3R5bGUpOworCisgICAgLy8g
RG9uJ3QgY2hlY2sgZm9yIHJlcGFpbnQgaGVyZTsgd2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSBs
YXllciBoYXMgYmVlbgorICAgIC8vIHVwZGF0ZWQgYnkgc3ViY2xhc3NlcyBiZWZvcmUgd2Uga25v
dyBpZiB3ZSBoYXZlIHRvIHJlcGFpbnQgKGluIHNldFN0eWxlKCkpLgorCisgICAgaWYgKG9sZFN0
eWxlICYmICFhcmVDdXJzb3JzRXF1YWwob2xkU3R5bGUsIHN0eWxlKCkpKQorICAgICAgICBmcmFt
ZSgpLmV2ZW50SGFuZGxlcigpLnNjaGVkdWxlQ3Vyc29yVXBkYXRlKCk7Cit9CisKIHZvaWQgUmVu
ZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSgpCiB7CiAgICAgUmVuZGVyT2JqZWN0OjppbnNl
cnRlZEludG9UcmVlKCk7CkBAIC00NzksNiArNjg5LDEzIEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6
d2lsbEJlUmVtb3ZlZEZyb21UcmUKICAgICAgICAgcmVtb3ZlTGF5ZXJzKGxheWVyKTsKICAgICB9
CiAKKyAgICBib29sIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSBzaG91bGRSZXBh
aW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsKCZ2aWV3KCkuZnJhbWVWaWV3KCkpOworICAgIGlm
IChyZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsICYmIG1fc3R5bGUgJiYgbV9zdHlsZS0+
aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkKKyAgICAgICAgdmlldygpLmZyYW1lVmlldygpLnJl
bW92ZVNsb3dSZXBhaW50T2JqZWN0KHRoaXMpOworCisgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpICYmIHBhcmVudCgpLT5jaGlsZHJlbklubGluZSgpKQorICAgICAgICBwYXJlbnQoKS0+
ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQodGhpcyk7CisKICAgICBSZW5kZXJPYmplY3Q6Ondp
bGxCZVJlbW92ZWRGcm9tVHJlZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgJKHJldmlzaW9uIDE1NjI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDkgQEAg
cHJvdGVjdGVkOgogCiAgICAgYm9vbCBsYXllckNyZWF0aW9uQWxsb3dlZEZvclN1YnRyZWUoKSBj
b25zdDsKIAorICAgIGVudW0gU3R5bGVQcm9wYWdhdGlvblR5cGUgeyBQcm9wYWdhdGVUb0FsbENo
aWxkcmVuLCBQcm9wYWdhdGVUb0Jsb2NrQ2hpbGRyZW5Pbmx5IH07CisgICAgdm9pZCBwcm9wYWdh
dGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oU3R5bGVQcm9wYWdhdGlvblR5cGUpOworCiAgICAg
TGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGlt
dW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpIGNvbnN0OwogICAgIExheW91
dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4
aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkgY29uc3Q7CiAKQEAgLTcw
LDYgKzczLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0TGFzdENoaWxkKFJlbmRlck9iamVj
dCogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQogICAgIHZvaWQgZGVzdHJveUxlZnRv
dmVyQ2hpbGRyZW4oKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwpAQCAtODEsOCArODYsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgaXNUZXh0KCkgY29uc3QgV1RGX0RFTEVURURfRlVOQ1RJT047CiAg
ICAgdm9pZCBpc1JlbmRlckVsZW1lbnQoKSBjb25zdCBXVEZfREVMRVRFRF9GVU5DVElPTjsKIAot
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkU2xvdygpIGNvbnN0IHsgcmV0dXJu
IGZpcnN0Q2hpbGQoKTsgfQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGRTbG93
KCkgY29uc3QgeyByZXR1cm4gbGFzdENoaWxkKCk7IH0KKyAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogZmlyc3RDaGlsZFNsb3coKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBmaXJzdENo
aWxkKCk7IH0KKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogbGFzdENoaWxkU2xvdygpIGNvbnN0
IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIGxhc3RDaGlsZCgpOyB9CiAKICAgICBSZW5kZXJPYmpl
Y3QqIG1fZmlyc3RDaGlsZDsKICAgICBSZW5kZXJPYmplY3QqIG1fbGFzdENoaWxkOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE1NjI4
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAj
aW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIK
ICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNs
dWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgpAQCAtNjUsMTAgKzY0LDYgQEAKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMu
aD4KIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRlICJSZW5kZXJM
YXllckNvbXBvc2l0b3IuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQu
aCIKQEAgLTEwNywyOCArMTAyLDYgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJPYmplY3Qgewog
CiBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyT2JqZWN0KSA9PSBzaXplb2YoU2FtZVNpemVB
c1JlbmRlck9iamVjdCksIFJlbmRlck9iamVjdF9zaG91bGRfc3RheV9zbWFsbCk7CiAKLS8vIE9u
IGxvdy1wb3dlcmVkL21vYmlsZSBkZXZpY2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5nIG9uIGEgc2Ny
b2xsIGNhbiBjYXVzZSBub3RpY2VhYmxlIGRlbGF5cwotLy8gd2hlbiBzY3JvbGxpbmcgYSBwYWdl
IHdpdGggYSBmaXhlZCBiYWNrZ3JvdW5kIGltYWdlLiBBcyBhbiBvcHRpbWl6YXRpb24sIGFzc3Vt
aW5nIHRoZXJlIGFyZQotLy8gbm8gZml4ZWQgcG9zaXRvbmVkIGVsZW1lbnRzIG9uIHRoZSBwYWdl
LCB3ZSBjYW4gYWNjbGVyYXRlIHNjcm9sbGluZyAodmlhIGJsaXR0aW5nKSBpZiB3ZQotLy8gaWdu
b3JlIHRoZSBDU1MgcHJvcGVydHkgImJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQiLgotc3Rh
dGljIGJvb2wgc2hvdWxkUmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbChGcmFtZVZpZXcq
IGZyYW1lVmlldykKLXsKLSNpZiAhRU5BQkxFKEZBU1RfTU9CSUxFX1NDUk9MTElORykgfHwgIVBM
QVRGT1JNKFFUKQotICAgIFVOVVNFRF9QQVJBTShmcmFtZVZpZXcpOwotI2VuZGlmCi0KLSAgICBi
b29sIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSB0cnVlOwotI2lmIEVOQUJMRShG
QVNUX01PQklMRV9TQ1JPTExJTkcpCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgaWYgKGZyYW1lVmll
dy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCi0gICAgICAgIHJlcGFpbnRGaXhlZEJhY2tncm91bmRz
T25TY3JvbGwgPSBmYWxzZTsKLSNlbHNlCi0gICAgcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNj
cm9sbCA9IGZhbHNlOwotI2VuZGlmCi0jZW5kaWYKLSAgICByZXR1cm4gcmVwYWludEZpeGVkQmFj
a2dyb3VuZHNPblNjcm9sbDsKLX0KLQogYm9vbCBSZW5kZXJPYmplY3Q6OnNfYWZmZWN0c1BhcmVu
dEJsb2NrID0gZmFsc2U7CiBib29sIFJlbmRlck9iamVjdDo6c19ub0xvbmdlckFmZmVjdHNQYXJl
bnRCbG9jayA9IGZhbHNlOwogCkBAIC0xNzg4LDcgKzE3NjEsNyBAQCBpbmxpbmUgYm9vbCBSZW5k
ZXJPYmplY3Q6Omhhc0ltbWVkaWF0ZU5vCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUg
Ym9vbCBSZW5kZXJPYmplY3Q6OnNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVuY2UoU3R5bGVE
aWZmZXJlbmNlIGRpZmYpIGNvbnN0Citib29sIFJlbmRlck9iamVjdDo6c2hvdWxkUmVwYWludEZv
clN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZikgY29uc3QKIHsKICAgICByZXR1
cm4gZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50IHx8IChkaWZmID09IFN0eWxlRGlmZmVy
ZW5jZVJlcGFpbnRJZlRleHQgJiYgaGFzSW1tZWRpYXRlTm9uV2hpdGVzcGFjZVRleHRDaGlsZCgp
KTsKIH0KQEAgLTE4NjUsMTg3ICsxODM4LDYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldFN0eWxl
KFBhc3NSZWZQdHI8UgogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBib29sIHJlbmRlcmVySGFz
QmFja2dyb3VuZChjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQotewotICAgIHJldHVybiBy
ZW5kZXJlciAmJiByZW5kZXJlci0+aGFzQmFja2dyb3VuZCgpOwotfQotCi12b2lkIFJlbmRlck9i
amVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogbmV3U3R5bGUpCi17Ci0gICAgaWYgKG1fc3R5bGUpIHsKLSAgICAgICAgLy8gSWYgb3Vy
IHotaW5kZXggY2hhbmdlcyB2YWx1ZSBvciBvdXIgdmlzaWJpbGl0eSBjaGFuZ2VzLAotICAgICAg
ICAvLyB3ZSBuZWVkIHRvIGRpcnR5IG91ciBzdGFja2luZyBjb250ZXh0J3Mgei1vcmRlciBsaXN0
LgotICAgICAgICBpZiAobmV3U3R5bGUpIHsKLSAgICAgICAgICAgIGJvb2wgdmlzaWJpbGl0eUNo
YW5nZWQgPSBtX3N0eWxlLT52aXNpYmlsaXR5KCkgIT0gbmV3U3R5bGUtPnZpc2liaWxpdHkoKSAK
LSAgICAgICAgICAgICAgICB8fCBtX3N0eWxlLT56SW5kZXgoKSAhPSBuZXdTdHlsZS0+ekluZGV4
KCkgCi0gICAgICAgICAgICAgICAgfHwgbV9zdHlsZS0+aGFzQXV0b1pJbmRleCgpICE9IG5ld1N0
eWxlLT5oYXNBdXRvWkluZGV4KCk7Ci0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBF
TkFCTEUoRFJBR0dBQkxFX1JFR0lPTikKLSAgICAgICAgICAgIGlmICh2aXNpYmlsaXR5Q2hhbmdl
ZCkKLSAgICAgICAgICAgICAgICBkb2N1bWVudCgpLnNldEFubm90YXRlZFJlZ2lvbnNEaXJ0eSh0
cnVlKTsKLSNlbmRpZgotICAgICAgICAgICAgaWYgKHZpc2liaWxpdHlDaGFuZ2VkKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSkKLSAgICAgICAgICAgICAgICAgICAgY2FjaGUtPmNoaWxkcmVuQ2hh
bmdlZChwYXJlbnQoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEtlZXAgbGF5
ZXIgaGllcmFyY2h5IHZpc2liaWxpdHkgYml0cyB1cCB0byBkYXRlIGlmIHZpc2liaWxpdHkgY2hh
bmdlcy4KLSAgICAgICAgICAgIGlmIChtX3N0eWxlLT52aXNpYmlsaXR5KCkgIT0gbmV3U3R5bGUt
PnZpc2liaWxpdHkoKSkgewotICAgICAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogbCA9IGVu
Y2xvc2luZ0xheWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1N0eWxlLT52aXNp
YmlsaXR5KCkgPT0gVklTSUJMRSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGwtPnNldEhhc1Zp
c2libGVDb250ZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGwtPmhhc1Zpc2li
bGVDb250ZW50KCkgJiYgKHRoaXMgPT0gJmwtPnJlbmRlcmVyKCkgfHwgbC0+cmVuZGVyZXIoKS5z
dHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGwtPmRpcnR5VmlzaWJsZUNvbnRlbnRTdGF0dXMoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChkaWZmID4gU3R5bGVEaWZmZXJlbmNlUmVwYWludExheWVyKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX3Bh
cmVudCAmJiAobmV3U3R5bGUtPm91dGxpbmVTaXplKCkgPCBtX3N0eWxlLT5vdXRsaW5lU2l6ZSgp
IHx8IHNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVuY2UoZGlmZikpKQotICAgICAgICAgICAg
cmVwYWludCgpOwotICAgICAgICBpZiAoaXNGbG9hdGluZygpICYmIChtX3N0eWxlLT5mbG9hdGlu
ZygpICE9IG5ld1N0eWxlLT5mbG9hdGluZygpKSkKLSAgICAgICAgICAgIC8vIEZvciBjaGFuZ2Vz
IGluIGZsb2F0IHN0eWxlcywgd2UgbmVlZCB0byBjb25jZWl2YWJseSByZW1vdmUgb3Vyc2VsdmVz
Ci0gICAgICAgICAgICAvLyBmcm9tIHRoZSBmbG9hdGluZyBvYmplY3RzIGxpc3QuCi0gICAgICAg
ICAgICB0b1JlbmRlckJveCh0aGlzKS0+cmVtb3ZlRmxvYXRpbmdPclBvc2l0aW9uZWRDaGlsZEZy
b21CbG9ja0xpc3RzKCk7Ci0gICAgICAgIGVsc2UgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
ICYmIChtX3N0eWxlLT5wb3NpdGlvbigpICE9IG5ld1N0eWxlLT5wb3NpdGlvbigpKSkKLSAgICAg
ICAgICAgIC8vIEZvciBjaGFuZ2VzIGluIHBvc2l0aW9uaW5nIHN0eWxlcywgd2UgbmVlZCB0byBj
b25jZWl2YWJseSByZW1vdmUgb3Vyc2VsdmVzCi0gICAgICAgICAgICAvLyBmcm9tIHRoZSBwb3Np
dGlvbmVkIG9iamVjdHMgbGlzdC4KLSAgICAgICAgICAgIHRvUmVuZGVyQm94KHRoaXMpLT5yZW1v
dmVGbG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJsb2NrTGlzdHMoKTsKLQotICAgICAgICBz
X2FmZmVjdHNQYXJlbnRCbG9jayA9IGlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKQot
ICAgICAgICAgICAgJiYgKCFuZXdTdHlsZS0+aXNGbG9hdGluZygpICYmICFuZXdTdHlsZS0+aGFz
T3V0T2ZGbG93UG9zaXRpb24oKSkKLSAgICAgICAgICAgICYmIHBhcmVudCgpICYmIChwYXJlbnQo
KS0+aXNSZW5kZXJCbG9ja0Zsb3coKSB8fCBwYXJlbnQoKS0+aXNSZW5kZXJJbmxpbmUoKSk7Ci0K
LSAgICAgICAgc19ub0xvbmdlckFmZmVjdHNQYXJlbnRCbG9jayA9ICgoIWlzRmxvYXRpbmcoKSAm
JiBuZXdTdHlsZS0+aXNGbG9hdGluZygpKSB8fCAoIWlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYm
IG5ld1N0eWxlLT5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKSkKLSAgICAgICAgICAgICYmIHBhcmVu
dCgpICYmIHBhcmVudCgpLT5pc1JlbmRlckJsb2NrKCk7Ci0KLSAgICAgICAgLy8gcmVzZXQgc3R5
bGUgZmxhZ3MKLSAgICAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0IHx8IGRp
ZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0UG9zaXRpb25lZE1vdmVtZW50T25seSkgewotICAg
ICAgICAgICAgc2V0RmxvYXRpbmcoZmFsc2UpOwotICAgICAgICAgICAgY2xlYXJQb3NpdGlvbmVk
U3RhdGUoKTsKLSAgICAgICAgfQotICAgICAgICBzZXRIb3Jpem9udGFsV3JpdGluZ01vZGUodHJ1
ZSk7Ci0gICAgICAgIHNldEhhc0JveERlY29yYXRpb25zKGZhbHNlKTsKLSAgICAgICAgc2V0SGFz
T3ZlcmZsb3dDbGlwKGZhbHNlKTsKLSAgICAgICAgc2V0SGFzVHJhbnNmb3JtKGZhbHNlKTsKLSAg
ICAgICAgc2V0SGFzUmVmbGVjdGlvbihmYWxzZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc19h
ZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKLSAgICAgICAgc19ub0xvbmdlckFmZmVjdHNQYXJl
bnRCbG9jayA9IGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgcmVwYWludEZpeGVkQmFja2dyb3Vu
ZHNPblNjcm9sbCA9IHNob3VsZFJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwoJnZpZXco
KS5mcmFtZVZpZXcoKSk7Ci0KLSAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0eWxl
ICYmIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgJiYgbmV3U3R5bGUtPmhhc0ZpeGVk
QmFja2dyb3VuZEltYWdlKCk7Ci0gICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0eWxl
ICYmIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgJiYgbV9zdHlsZS0+aGFzRml4ZWRC
YWNrZ3JvdW5kSW1hZ2UoKTsKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAg
ICBib29sIGRyYXdzUm9vdEJhY2tncm91bmQgPSBpc1Jvb3QoKSB8fCAoaXNCb2R5KCkgJiYgIXJl
bmRlcmVySGFzQmFja2dyb3VuZChkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJl
cigpKSk7Ci0gICAgaWYgKGRyYXdzUm9vdEJhY2tncm91bmQgJiYgcmVwYWludEZpeGVkQmFja2dy
b3VuZHNPblNjcm9sbCkgewotICAgICAgICBpZiAodmlldygpLmNvbXBvc2l0b3IoKS5zdXBwb3J0
c0ZpeGVkUm9vdEJhY2tncm91bmRDb21wb3NpdGluZygpKSB7Ci0gICAgICAgICAgICBpZiAobmV3
U3R5bGVTbG93U2Nyb2xsICYmIG5ld1N0eWxlLT5oYXNFbnRpcmVseUZpeGVkQmFja2dyb3VuZCgp
KQotICAgICAgICAgICAgICAgIG5ld1N0eWxlU2xvd1Njcm9sbCA9IGZhbHNlOwotCi0gICAgICAg
ICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsICYmIG1fc3R5bGUtPmhhc0VudGlyZWx5Rml4ZWRC
YWNrZ3JvdW5kKCkpCi0gICAgICAgICAgICAgICAgb2xkU3R5bGVTbG93U2Nyb2xsID0gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsICE9
IG5ld1N0eWxlU2xvd1Njcm9sbCkgewotICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsKQot
ICAgICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KHRo
aXMpOwotCi0gICAgICAgIGlmIChuZXdTdHlsZVNsb3dTY3JvbGwpCi0gICAgICAgICAgICB2aWV3
KCkuZnJhbWVWaWV3KCkuYWRkU2xvd1JlcGFpbnRPYmplY3QodGhpcyk7Ci0gICAgfQotfQotCi1z
dGF0aWMgYm9vbCBhcmVOb25JZGVudGljYWxDdXJzb3JMaXN0c0VxdWFsKGNvbnN0IFJlbmRlclN0
eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikKLXsKLSAgICBBU1NFUlQoYS0+Y3Vyc29ycygp
ICE9IGItPmN1cnNvcnMoKSk7Ci0gICAgcmV0dXJuIGEtPmN1cnNvcnMoKSAmJiBiLT5jdXJzb3Jz
KCkgJiYgKmEtPmN1cnNvcnMoKSA9PSAqYi0+Y3Vyc29ycygpOwotfQotCi1zdGF0aWMgaW5saW5l
IGJvb2wgYXJlQ3Vyc29yc0VxdWFsKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJT
dHlsZSogYikKLXsKLSAgICByZXR1cm4gYS0+Y3Vyc29yKCkgPT0gYi0+Y3Vyc29yKCkgJiYgKGEt
PmN1cnNvcnMoKSA9PSBiLT5jdXJzb3JzKCkgfHwgYXJlTm9uSWRlbnRpY2FsQ3Vyc29yTGlzdHNF
cXVhbChhLCBiKSk7Ci19Ci0KLXZvaWQgUmVuZGVyT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQotewotICAgIGlm
IChzX2FmZmVjdHNQYXJlbnRCbG9jaykKLSAgICAgICAgaGFuZGxlRHluYW1pY0Zsb2F0UG9zaXRp
b25DaGFuZ2UoKTsKLQotICAgIGlmIChzX25vTG9uZ2VyQWZmZWN0c1BhcmVudEJsb2NrKQotICAg
ICAgICByZW1vdmVBbm9ueW1vdXNXcmFwcGVyc0ZvcklubGluZXNJZk5lY2Vzc2FyeSgpOwotI2lm
IEVOQUJMRShTVkcpCi0gICAgU1ZHUmVuZGVyU3VwcG9ydDo6c3R5bGVDaGFuZ2VkKHRoaXMpOwot
I2VuZGlmCi0KLSAgICBpZiAoIW1fcGFyZW50KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
aWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0IHx8IGRpZmYgPT0gU3R5bGVEaWZmZXJl
bmNlU2ltcGxpZmllZExheW91dCkgewotICAgICAgICBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0
eWxlQ2hhbmdlZCh0aGlzLCBvbGRTdHlsZSwgbV9zdHlsZS5nZXQoKSk7Ci0KLSAgICAgICAgLy8g
SWYgdGhlIG9iamVjdCBhbHJlYWR5IG5lZWRzIGxheW91dCwgdGhlbiBzZXROZWVkc0xheW91dCB3
b24ndCBkbwotICAgICAgICAvLyBhbnkgd29yay4gQnV0IGlmIHRoZSBjb250YWluaW5nIGJsb2Nr
IGhhcyBjaGFuZ2VkLCB0aGVuIHdlIG1heSBuZWVkCi0gICAgICAgIC8vIHRvIG1hcmsgdGhlIG5l
dyBjb250YWluaW5nIGJsb2NrcyBmb3IgbGF5b3V0LiBUaGUgY2hhbmdlIHRoYXQgY2FuCi0gICAg
ICAgIC8vIGRpcmVjdGx5IGFmZmVjdCB0aGUgY29udGFpbmluZyBibG9jayBvZiB0aGlzIG9iamVj
dCBpcyBhIGNoYW5nZSB0bwotICAgICAgICAvLyB0aGUgcG9zaXRpb24gc3R5bGUuCi0gICAgICAg
IGlmIChuZWVkc0xheW91dCgpICYmIG9sZFN0eWxlLT5wb3NpdGlvbigpICE9IG1fc3R5bGUtPnBv
c2l0aW9uKCkpCi0gICAgICAgICAgICBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpOwot
Ci0gICAgICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCkKLSAgICAgICAgICAg
IHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCk7Ci0gICAgfSBlbHNl
IGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXRBbmRQb3NpdGlvbmVk
TW92ZW1lbnQpIHsKLSAgICAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xk
U3R5bGUpOwotICAgICAgICBzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCk7Ci0g
ICAgfSBlbHNlIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dFBvc2l0aW9uZWRNb3Zl
bWVudE9ubHkpCi0gICAgICAgIHNldE5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KG9sZFN0
eWxlKTsKLQotICAgIC8vIERvbid0IGNoZWNrIGZvciByZXBhaW50IGhlcmU7IHdlIG5lZWQgdG8g
d2FpdCB1bnRpbCB0aGUgbGF5ZXIgaGFzIGJlZW4KLSAgICAvLyB1cGRhdGVkIGJ5IHN1YmNsYXNz
ZXMgYmVmb3JlIHdlIGtub3cgaWYgd2UgaGF2ZSB0byByZXBhaW50IChpbiBzZXRTdHlsZSgpKS4K
LQotICAgIGlmIChvbGRTdHlsZSAmJiAhYXJlQ3Vyc29yc0VxdWFsKG9sZFN0eWxlLCBzdHlsZSgp
KSkKLSAgICAgICAgZnJhbWUoKS5ldmVudEhhbmRsZXIoKS5zY2hlZHVsZUN1cnNvclVwZGF0ZSgp
OwotfQotCi12b2lkIFJlbmRlck9iamVjdDo6cHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0NoaWxk
cmVuKGJvb2wgYmxvY2tDaGlsZHJlbk9ubHkpCi17Ci0gICAgLy8gRklYTUU6IFdlIGNvdWxkIHNh
dmUgdGhpcyBjYWxsIHdoZW4gdGhlIGNoYW5nZSBvbmx5IGFmZmVjdGVkIG5vbi1pbmhlcml0ZWQg
cHJvcGVydGllcy4KLSAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkU2xv
dygpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAo
IWNoaWxkLT5pc0Fub255bW91cygpIHx8IGNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSAhPSBO
T1BTRVVETykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChibG9ja0NoaWxk
cmVuT25seSAmJiAhY2hpbGQtPmlzUmVuZGVyQmxvY2soKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICAgICBpZiAoY2hpbGQtPmlzUmVu
ZGVyRnVsbFNjcmVlbigpIHx8IGNoaWxkLT5pc1JlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcigp
KQotICAgICAgICAgICAgY29udGludWU7Ci0jZW5kaWYKLQotICAgICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoc3R5bGUoKSwgY2hpbGQtPnN0eWxlKCktPmRpc3BsYXkoKSk7Ci0gICAgICAgIGlmIChz
dHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCkpIHsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5
bGUoKS0+c3BlY2lmaWVzQ29sdW1ucygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5pbmhl
cml0Q29sdW1uUHJvcGVydGllc0Zyb20oc3R5bGUoKSk7Ci0gICAgICAgICAgICBpZiAoY2hpbGQt
PnN0eWxlKCktPmNvbHVtblNwYW4oKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q29s
dW1uU3BhbihDb2x1bW5TcGFuQWxsKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFByZXNlcnZl
IHRoZSBwb3NpdGlvbiBzdHlsZSBvZiBhbm9ueW1vdXMgYmxvY2sgY29udGludWF0aW9ucyBhcyB0
aGV5IGNhbiBoYXZlIHJlbGF0aXZlIG9yIHN0aWNreSBwb3NpdGlvbiB3aGVuCi0gICAgICAgIC8v
IHRoZXkgY29udGFpbiBibG9jayBkZXNjZW5kYW50cyBvZiByZWxhdGl2ZSBvciBzdGlja3kgcG9z
aXRpb25lZCBpbmxpbmVzLgotICAgICAgICBpZiAoY2hpbGQtPmlzSW5GbG93UG9zaXRpb25lZCgp
ICYmIHRvUmVuZGVyQmxvY2soY2hpbGQpLT5pc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkp
Ci0gICAgICAgICAgICBuZXdTdHlsZS0+c2V0UG9zaXRpb24oY2hpbGQtPnN0eWxlKCktPnBvc2l0
aW9uKCkpOwotCi0gICAgICAgIGNoaWxkLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwot
ICAgIH0KLX0KLQogdm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZUZpbGxJbWFnZXMoY29uc3QgRmls
bExheWVyKiBvbGRMYXllcnMsIGNvbnN0IEZpbGxMYXllciogbmV3TGF5ZXJzKQogewogICAgIC8v
IE9wdGltaXplIHRoZSBjb21tb24gY2FzZQpAQCAtMjQ4MywxNSArMjI3NSw2IEBAIHZvaWQgUmVu
ZGVyT2JqZWN0Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIEFTU0VSVChpc1Jvb3RlZCgpKSBidXQgd2UgaGF2ZSBzb21lIG91dC1vZi1vcmRlciByZW1v
dmFscyB3aGljaCB3b3VsZCBuZWVkIHRvIGJlIGZpeGVkIGZpcnN0LgogCi0gICAgaWYgKCFpc1Rl
eHQoKSkgewotICAgICAgICBib29sIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSBz
aG91bGRSZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsKCZ2aWV3KCkuZnJhbWVWaWV3KCkp
OwotICAgICAgICBpZiAocmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCAmJiBtX3N0eWxl
ICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkpCi0gICAgICAgICAgICB2aWV3
KCkuZnJhbWVWaWV3KCkucmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QodGhpcyk7Ci0gICAgfQotCi0g
ICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBhcmVudCgpLT5jaGlsZHJlbklubGlu
ZSgpKQotICAgICAgICBwYXJlbnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQodGhpcyk7
Ci0KICAgICByZW1vdmVGcm9tUmVuZGVyRmxvd1RocmVhZCgpOwogCiAgICAgaWYgKFJlbmRlck5h
bWVkRmxvd1RocmVhZCogY29udGFpbmVyRmxvd1RocmVhZCA9IHBhcmVudCgpLT5yZW5kZXJOYW1l
ZEZsb3dUaHJlYWRXcmFwcGVyKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCShyZXZpc2lvbiAxNTYyODUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2OSwxMCArOTY5LDkgQEAgcHVibGlj
OgogCiBwcm90ZWN0ZWQ6CiAgICAgLy8gT3ZlcnJpZGVzIHNob3VsZCBjYWxsIHRoZSBzdXBlcmNs
YXNzIGF0IHRoZSBlbmQKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSB7IH0K
ICAgICAvLyBPdmVycmlkZXMgc2hvdWxkIGNhbGwgdGhlIHN1cGVyY2xhc3MgYXQgdGhlIHN0YXJ0
Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKLSAgICB2b2lkIHByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1v
dXNDaGlsZHJlbihib29sIGJsb2NrQ2hpbGRyZW5Pbmx5ID0gZmFsc2UpOworICAgIHZpcnR1YWwg
dm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikg
eyB9CiAKICAgICB2b2lkIGRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQqLCBpbnQg
eDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsIEJveFNpZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ29sb3IsIEVCb3JkZXJTdHlsZSwgaW50IGFkamJ3MSwgaW50IGFkamJ3MiwgYm9v
bCBhbnRpYWxpYXMgPSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnkuY3BwCShyZXZpc2lvbiAxNTYyODUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBSZW5kZXJS
dWJ5QXNJbmxpbmU6On5SZW5kZXJSdWJ5QXNJbmxpbmUoCiB2b2lkIFJlbmRlclJ1YnlBc0lubGlu
ZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkKIHsKICAgICBSZW5kZXJJbmxpbmU6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9s
ZFN0eWxlKTsKLSAgICBwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oKTsKKyAgICBw
cm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oUHJvcGFnYXRlVG9BbGxDaGlsZHJlbik7
CiB9CiAKIHZvaWQgUmVuZGVyUnVieUFzSW5saW5lOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNo
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQpAQCAtMjI3LDcgKzIyNyw3IEBAIFJlbmRl
clJ1YnlBc0Jsb2NrOjp+UmVuZGVyUnVieUFzQmxvY2soKQogdm9pZCBSZW5kZXJSdWJ5QXNCbG9j
azo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkKIHsKICAgICBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xk
U3R5bGUpOwotICAgIHByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbigpOworICAgIHBy
b3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihQcm9wYWdhdGVUb0FsbENoaWxkcmVuKTsK
IH0KIAogdm9pZCBSZW5kZXJSdWJ5QXNCbG9jazo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gMTU2Mjg1KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBA
QCBSZW5kZXJUYWJsZTo6flJlbmRlclRhYmxlKCkKIHZvaWQgUmVuZGVyVGFibGU6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
CiB7CiAgICAgUmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKLSAg
ICBwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oKTsKKyAgICBwcm9wYWdhdGVTdHls
ZVRvQW5vbnltb3VzQ2hpbGRyZW4oUHJvcGFnYXRlVG9BbGxDaGlsZHJlbik7CiAKICAgICBFVGFi
bGVMYXlvdXQgb2xkVGFibGVMYXlvdXQgPSBvbGRTdHlsZSA/IG9sZFN0eWxlLT50YWJsZUxheW91
dCgpIDogVEFVVE87CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlUm93LmNwcAkocmV2aXNpb24gMTU2Mjg1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCB2b2lk
IFJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZShTdHlsCiAgICAgQVNTRVJUKHN0eWxlKCkt
PmRpc3BsYXkoKSA9PSBUQUJMRV9ST1cpOwogCiAgICAgUmVuZGVyQm94OjpzdHlsZURpZENoYW5n
ZShkaWZmLCBvbGRTdHlsZSk7Ci0gICAgcHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0NoaWxkcmVu
KCk7CisgICAgcHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0NoaWxkcmVuKFByb3BhZ2F0ZVRvQWxs
Q2hpbGRyZW4pOwogCiAgICAgaWYgKHNlY3Rpb24oKSAmJiBvbGRTdHlsZSAmJiBzdHlsZSgpLT5s
b2dpY2FsSGVpZ2h0KCkgIT0gb2xkU3R5bGUtPmxvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgc2Vj
dGlvbigpLT5yb3dMb2dpY2FsSGVpZ2h0Q2hhbmdlZChyb3dJbmRleCgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lv
biAxNTYyODUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIFJlbmRlclRhYmxlU2VjdGlv
bjo6flJlbmRlclRhYmxlU2VjdGlvbigKIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KQogewogICAgIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwotICAg
IHByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbigpOworICAgIHByb3BhZ2F0ZVN0eWxl
VG9Bbm9ueW1vdXNDaGlsZHJlbihQcm9wYWdhdGVUb0FsbENoaWxkcmVuKTsKIAogICAgIC8vIElm
IGJvcmRlciB3YXMgY2hhbmdlZCwgbm90aWZ5IHRhYmxlLgogICAgIFJlbmRlclRhYmxlKiB0YWJs
ZSA9IHRoaXMtPnRhYmxlKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>