<?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>79763</bug_id>
          
          <creation_ts>2012-02-28 01:02:57 -0800</creation_ts>
          <short_desc>Split CSSStyleRule into internal and CSSOM type</short_desc>
          <delta_ts>2012-04-11 20:54:36 -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>CSS</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>
          
          <blocked>77745</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>566484</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-28 01:02:57 -0800</bug_when>
    <thetext>Continuing stylesheet refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566488</commentid>
    <comment_count>1</comment_count>
      <attachid>129213</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-28 01:12:22 -0800</bug_when>
    <thetext>Created attachment 129213
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566489</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 01:14:24 -0800</bug_when>
    <thetext>Attachment 129213 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/css/CSSStyleRule.h:37:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566505</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-28 01:46:43 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/109091</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129213</attachid>
            <date>2012-02-28 01:12:22 -0800</date>
            <delta_ts>2012-02-28 01:25:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>style-rule-6.patch</filename>
            <type>text/plain</type>
            <size>36615</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTA4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDEyLTAyLTI4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBDU1NTdHlsZVJ1bGUg
dG8gaW50ZXJuYWwgYW5kIENTU09NIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc5NzYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgLSBTcGxpdCB0aGUgZGF0YSBvdXQgYXMgU3R5bGVSdWxlCisgICAg
ICAgIC0gTWFrZSBDU1NTdHlsZVNlbGVjdG9yIG9wZXJhdGUgb24gU3R5bGVSdWxlIGluc3RlYWQg
b2YgQ1NTU3R5bGVSdWxlCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGFuIGludGVybWVkaWF0
ZSBzdGVwLiBCb3RoIENTU1N0eWxlUnVsZSBhbmQgU3R5bGVSdWxlIGFyZSBzdGlsbCBhbHdheXMg
Y29uc3RydWN0ZWQgc28KKyAgICAgICAgdGhlIHBhdGNoIGluY3JlYXNlcyBtZW1vcnkgY29uc3Vt
cHRpb24gYnkgYSBmZXcgcG9pbnRlcnMgcGVyIGNzcyBydWxlLiBVcGNvbWluZworICAgICAgICBw
YXRjaGVzIHdpbGwgbWFrZSBDU1NTdHlsZVJ1bGVzIHRvIGJlIGNvbnN0cnVjdGVkIG9uIGRlbWFu
ZC4KKyAgICAgICAgCisgICAgICAgIFRoZSBwYXRjaCBkb2VzIG5vdCB5ZXQgbW92ZSBTdHlsZVJ1
bGUgdG8gYSBmaWxlIG9mIGl0cyBvd24uCisKKyAgICAgICAgKiBjc3MvQ1NTUGFnZVJ1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFnZVJ1bGU6OkNTU1BhZ2VSdWxlKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFnZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VSdWxlOjpjcmVh
dGUpOgorICAgICAgICAoQ1NTUGFnZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgICogY3NzL0NT
U1J1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGU6OkNTU1J1bGUpOgorICAgICAgICAo
Q1NTUnVsZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJ1bGU6OlN0eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUnVsZTo6flN0eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJ1bGU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UnVsZTo6ZW5zdXJlQ1NTU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVs
ZTo6Q1NTU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVsZTo6fkNTU1N0
eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OmdlbmVyYXRlU2VsZWN0
b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVsZTo6Y3NzVGV4dCk6CisgICAgICAgICog
Y3NzL0NTU1N0eWxlUnVsZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTdHlsZVJ1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpzZWxlY3Rvckxpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpwcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZTo6c291cmNlTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmFkb3B0
U2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjphZG9wdFNlbGVj
dG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OnNldFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVSdWxlOjpzdHlsZSk6CisgICAgICAgIChDU1NTdHlsZVJ1bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpzdHlsZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFJ1bGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bGVEYXRhOjpydWxlKToKKyAgICAgICAgKFJ1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OlJ1bGVTZWxlY3RvclBhaXI6OlJ1bGVTZWxlY3RvclBhaXIpOgor
ICAgICAgICAoUnVsZVNlbGVjdG9yUGFpcik6CisgICAgICAgIChNYXRjaFJlc3VsdCk6CisgICAg
ICAgIChDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmls
ZTo6c3RhcnRTZWxlY3Rvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxNYXRjaFJ1bGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFByb2Nlc3NSdWxlSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFByb2Nlc3NSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5
bGVTaGVldDo6cmV2YWxpZGF0ZVN0eWxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6cmV0cmlldmVSZXNvdXJjZXNG
b3JSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJlc291
cmNlc0ZvclByb3BlcnRpZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFnZVNlcmlhbGl6ZXIpOgorCiAyMDEyLTAyLTI4
ICBOb2VsIEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAgICBGaXggY29t
bWVudCBhYm91dCBSR0Igc3dpenpsZSBkZWNvZGluZyBhbmQgQWRvYmUgdHJhbnNmb3JtPTAgaW1h
Z2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAJKHJldmlzaW9uIDEwODk4MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDEwICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUGFnZVJ1bGU6OkNT
U1BhZ2VSdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgaW50IHNvdXJjZUxpbmUpCitDU1NQYWdl
UnVsZTo6Q1NTUGFnZVJ1bGUoQ1NTU3R5bGVTaGVldCogcGFyZW50KQogICAgIDogQ1NTUnVsZShw
YXJlbnQsIENTU1J1bGU6OlBBR0VfUlVMRSkKIHsKLSAgICBzZXRTb3VyY2VMaW5lKHNvdXJjZUxp
bmUpOwogfQogCiBDU1NQYWdlUnVsZTo6fkNTU1BhZ2VSdWxlKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYWdlUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYWdlUnVsZS5oCShyZXZpc2lvbiAxMDg5ODApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFnZVJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBDU1NTZWxl
Y3Rvckxpc3Q7CiAKIGNsYXNzIENTU1BhZ2VSdWxlIDogcHVibGljIENTU1J1bGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1BhZ2VSdWxlPiBjcmVhdGUoQ1NTU3R5bGVTaGVl
dCogcGFyZW50LCBpbnQgc291cmNlTGluZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQYWdl
UnVsZT4gY3JlYXRlKENTU1N0eWxlU2hlZXQqIHBhcmVudCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ1NTUGFnZVJ1bGUocGFyZW50LCBzb3VyY2VMaW5lKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTUGFnZVJ1bGUocGFyZW50KSk7CiAgICAgfQogICAgIH5D
U1NQYWdlUnVsZSgpOwogCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERl
Y2xhcmF0aW9uKFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUpIHsgbV9zdHlsZSA9
IHN0eWxlOyB9CiAKIHByaXZhdGU6Ci0gICAgQ1NTUGFnZVJ1bGUoQ1NTU3R5bGVTaGVldCogcGFy
ZW50LCBpbnQgc291cmNlTGluZSk7CisgICAgQ1NTUGFnZVJ1bGUoQ1NTU3R5bGVTaGVldCogcGFy
ZW50KTsKIAogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX3N0eWxlOwogICAgIENTU1Nl
bGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CShyZXZpc2lvbiAxMDg5ODApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODgyNiwxMCArODgyNiwxMCBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6
OmNyZWF0ZVN0eWxlUnVsZShWZWN0CiAgICAgaWYgKHNlbGVjdG9ycykgewogICAgICAgICBtX2Fs
bG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAg
ICAgICAgIFJlZlB0cjxDU1NTdHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZSht
X3N0eWxlU2hlZXQsIG1fbGFzdFNlbGVjdG9yTGluZU51bWJlcik7Ci0gICAgICAgIHJ1bGUtPmFk
b3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CisgICAgICAgIHJ1bGUtPnN0eWxlUnVsZSgp
LT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOwogICAgICAgICBpZiAobV9oYXNGb250
RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsK
LSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1f
cGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzLCBtX3N0cmljdCkpOworICAg
ICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+c2V0UHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMsIG1fc3RyaWN0
KSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgICAgIG1fcGFyc2VkUnVsZXMu
YXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVsZVJhbmdlTWFwKSB7CkBA
IC04OTM1LDcgKzg5MzUsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBh
c3NPCiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9u
cyA9IGZhbHNlOwogICAgIENTU1BhZ2VSdWxlKiBwYWdlUnVsZSA9IDA7CiAgICAgaWYgKHBhZ2VT
ZWxlY3RvcikgewotICAgICAgICBSZWZQdHI8Q1NTUGFnZVJ1bGU+IHJ1bGUgPSBDU1NQYWdlUnVs
ZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKTsKKyAgICAg
ICAgUmVmUHRyPENTU1BhZ2VSdWxlPiBydWxlID0gQ1NTUGFnZVJ1bGU6OmNyZWF0ZShtX3N0eWxl
U2hlZXQpOwogICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+IHNlbGVj
dG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFnZVNlbGVjdG9yKTsK
ICAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NSdWxlLmgJKHJldmlzaW9uIDEwODk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSdWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw4ICsxMTEsNyBAQCBwdWJsaWM6CiAK
IHByb3RlY3RlZDoKICAgICBDU1NSdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgVHlwZSB0eXBl
KQotICAgICAgICA6IG1fc291cmNlTGluZSgwKQotICAgICAgICAsIG1faGFzQ2FjaGVkU2VsZWN0
b3JUZXh0KGZhbHNlKQorICAgICAgICA6IG1faGFzQ2FjaGVkU2VsZWN0b3JUZXh0KGZhbHNlKQog
ICAgICAgICAsIG1fcGFyZW50SXNSdWxlKGZhbHNlKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQog
ICAgICAgICAsIG1fcGFyZW50U3R5bGVTaGVldChwYXJlbnQpCkBAIC0xMjQsMTQgKzEyMywxMCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB+Q1NTUnVsZSgpIHsgfQogCi0gICAgaW50IHNvdXJjZUxpbmUo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUxpbmU7IH0KLSAgICB2b2lkIHNldFNvdXJjZUxpbmUo
aW50IHNvdXJjZUxpbmUpIHsgbV9zb3VyY2VMaW5lID0gc291cmNlTGluZTsgfQogICAgIGJvb2wg
aGFzQ2FjaGVkU2VsZWN0b3JUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYWNoZWRTZWxlY3Rv
clRleHQ7IH0KICAgICB2b2lkIHNldEhhc0NhY2hlZFNlbGVjdG9yVGV4dChib29sIGhhc0NhY2hl
ZFNlbGVjdG9yVGV4dCkgY29uc3QgeyBtX2hhc0NhY2hlZFNlbGVjdG9yVGV4dCA9IGhhc0NhY2hl
ZFNlbGVjdG9yVGV4dDsgfQogCiBwcml2YXRlOgotICAgIC8vIE9ubHkgdXNlZCBieSBDU1NTdHls
ZVJ1bGUgYnV0IGtlcHQgaGVyZSB0byBtYXhpbWl6ZSBzdHJ1Y3QgcGFja2luZy4KLSAgICBzaWdu
ZWQgbV9zb3VyY2VMaW5lIDogMjY7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2hhc0NhY2hlZFNl
bGVjdG9yVGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9wYXJlbnRJc1J1bGUgOiAxOwogICAgIHVu
c2lnbmVkIG1fdHlwZSA6IDQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAko
cmV2aXNpb24gMTA4OTgwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDE5ICszNSwzOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK1N0eWxlUnVsZTo6U3R5bGVSdWxlKGludCBsaW5lLCBDU1NTdHlsZVJ1bGUqIHdyYXBwZXIp
CisgICAgOiBtX3NvdXJjZUxpbmUobGluZSkKKyAgICAsIG1fY3Nzb21XcmFwcGVyKHdyYXBwZXIp
Cit7Cit9CisgICAgCitTdHlsZVJ1bGU6On5TdHlsZVJ1bGUoKQoreworfQorICAgIAordm9pZCBT
dHlsZVJ1bGU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxz
LCBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KSAKK3sKKyAgICBpZiAoIW1fcHJvcGVydGllcykK
KyAgICAgICAgcmV0dXJuOworICAgIG1fcHJvcGVydGllcy0+YWRkU3VicmVzb3VyY2VTdHlsZVVS
THModXJscywgc3R5bGVTaGVldCk7Cit9CisgICAgCitDU1NTdHlsZVJ1bGUqIFN0eWxlUnVsZTo6
ZW5zdXJlQ1NTU3R5bGVSdWxlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jc3NvbVdyYXBwZXIp
OworICAgIHJldHVybiBtX2Nzc29tV3JhcHBlcjsKK30KKwogQ1NTU3R5bGVSdWxlOjpDU1NTdHls
ZVJ1bGUoQ1NTU3R5bGVTaGVldCogcGFyZW50LCBpbnQgbGluZSkKICAgICA6IENTU1J1bGUocGFy
ZW50LCBDU1NSdWxlOjpTVFlMRV9SVUxFKQorICAgICwgbV9zdHlsZVJ1bGUoYWRvcHRQdHIobmV3
IFN0eWxlUnVsZShsaW5lLCB0aGlzKSkpCiB7Ci0gICAgc2V0U291cmNlTGluZShsaW5lKTsKLQot
ICAgIC8vIG1fc291cmNlTGluZSBpcyBhIGJpdGZpZWxkLCBzbyBsZXQncyBjYXRjaCBhbnkgb3Zl
cmZsb3cgZWFybHkgaW4gZGVidWcgbW9kZS4KLSAgICBBU1NFUlQoc291cmNlTGluZSgpID09IGxp
bmUpOwogfQogCiBDU1NTdHlsZVJ1bGU6On5DU1NTdHlsZVJ1bGUoKQogewotICAgIGlmIChtX3N0
eWxlKQotICAgICAgICBtX3N0eWxlLT5jbGVhclBhcmVudFJ1bGUodGhpcyk7CisgICAgaWYgKG1f
c3R5bGVSdWxlLT5wcm9wZXJ0aWVzKCkpCisgICAgICAgIG1fc3R5bGVSdWxlLT5wcm9wZXJ0aWVz
KCktPmNsZWFyUGFyZW50UnVsZSh0aGlzKTsKICAgICBjbGVhbnVwKCk7CiB9CiAKQEAgLTY5LDgg
Kzg5LDggQEAgaW5saW5lIHZvaWQgQ1NTU3R5bGVSdWxlOjpjbGVhbnVwKCkKIFN0cmluZyBDU1NT
dHlsZVJ1bGU6OmdlbmVyYXRlU2VsZWN0b3JUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChDU1NTZWxlY3RvciogcyA9IHNlbGVjdG9yTGlzdCgpLmZp
cnN0KCk7IHM7IHMgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQocykpIHsKLSAgICAgICAgaWYgKHMg
IT0gc2VsZWN0b3JMaXN0KCkuZmlyc3QoKSkKKyAgICBmb3IgKENTU1NlbGVjdG9yKiBzID0gbV9z
dHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgpLmZpcnN0KCk7IHM7IHMgPSBDU1NTZWxlY3Rvckxpc3Q6
Om5leHQocykpIHsKKyAgICAgICAgaWYgKHMgIT0gbV9zdHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgp
LmZpcnN0KCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKICAgICAgICAgYnVp
bGRlci5hcHBlbmQocy0+c2VsZWN0b3JUZXh0KCkpOwogICAgIH0KQEAgLTEwNiw3ICsxMjYsNyBA
QCB2b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KGNvbnN0CiAgICAgICAgIHJldHVy
bjsKIAogICAgIFN0cmluZyBvbGRTZWxlY3RvclRleHQgPSB0aGlzLT5zZWxlY3RvclRleHQoKTsK
LSAgICBtX3NlbGVjdG9yTGlzdC5hZG9wdChzZWxlY3Rvckxpc3QpOworICAgIG1fc3R5bGVSdWxl
LT5hZG9wdFNlbGVjdG9yTGlzdChzZWxlY3Rvckxpc3QpOwogCiAgICAgaWYgKGhhc0NhY2hlZFNl
bGVjdG9yVGV4dCgpKSB7CiAgICAgICAgIEFTU0VSVChzZWxlY3RvclRleHRDYWNoZSgpLmNvbnRh
aW5zKHRoaXMpKTsKQEAgLTEyNCwxNiArMTQ0LDEwIEBAIFN0cmluZyBDU1NTdHlsZVJ1bGU6OmNz
c1RleHQoKSBjb25zdAogICAgIFN0cmluZyByZXN1bHQgPSBzZWxlY3RvclRleHQoKTsKIAogICAg
IHJlc3VsdCArPSAiIHsgIjsKLSAgICByZXN1bHQgKz0gbV9zdHlsZS0+YXNUZXh0KCk7CisgICAg
cmVzdWx0ICs9IG1fc3R5bGVSdWxlLT5wcm9wZXJ0aWVzKCktPmFzVGV4dCgpOwogICAgIHJlc3Vs
dCArPSAifSI7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENTU1N0eWxlUnVsZTo6
YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpCi17Ci0gICAg
aWYgKG1fc3R5bGUpCi0gICAgICAgIG1fc3R5bGUtPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVy
bHMsIHBhcmVudFN0eWxlU2hlZXQoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgJKHJldmlzaW9uIDEwODk4MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMzEgKzMx
LDUxIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1NlbGVjdG9yOworY2xhc3Mg
Q1NTU3R5bGVSdWxlOworICAgIAorY2xhc3MgU3R5bGVSdWxlIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTdHlsZVJ1bGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBTdHlsZVJ1bGUoaW50IHNvdXJjZUxpbmUsIENTU1N0eWxlUnVsZSopOworICAgIH5TdHlsZVJ1
bGUoKTsKKyAgICAgICAgICAgIAorICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JM
aXN0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvckxpc3Q7IH0KKyAgICBTdHlsZVByb3BlcnR5
U2V0KiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgpOyB9Cisg
ICAgCisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYg
dXJscywgQ1NTU3R5bGVTaGVldCopOworCisgICAgaW50IHNvdXJjZUxpbmUoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUxpbmU7IH0KKyAgICAKKyAgICBDU1NTdHlsZVJ1bGUqIGVuc3VyZUNTU1N0
eWxlUnVsZSgpIGNvbnN0OworICAgIAorICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0
b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxp
c3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMpOyB9CisgICAgdm9pZCBhZG9wdFNlbGVj
dG9yTGlzdChDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9w
dChzZWxlY3RvcnMpOyB9CisgICAgdm9pZCBzZXRQcm9wZXJ0aWVzKFBhc3NSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gcHJvcGVydGllcykgeyBtX3Byb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOyB9Cisg
ICAgCitwcml2YXRlOgorICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX3Byb3BlcnRpZXM7
CisgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OworICAgIHNpZ25lZCBtX3NvdXJj
ZUxpbmU7CisKKyAgICBDU1NTdHlsZVJ1bGUqIG1fY3Nzb21XcmFwcGVyOworfTsKIAogY2xhc3Mg
Q1NTU3R5bGVSdWxlIDogcHVibGljIENTU1J1bGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENTU1N0eWxlUnVsZT4gY3JlYXRlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgaW50IHNv
dXJjZUxpbmUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTU3R5bGVSdWxlPiBjcmVhdGUoQ1NT
U3R5bGVTaGVldCogcGFyZW50LCBpbnQgbGluZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ1NTU3R5bGVSdWxlKHBhcmVudCwgc291cmNlTGluZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENTU1N0eWxlUnVsZShwYXJlbnQsIGxpbmUpKTsKICAgICB9CiAgICAg
fkNTU1N0eWxlUnVsZSgpOwogCiAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgQ1NTU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLT5lbnN1cmVSdWxlQ1NTU3R5
bGVEZWNsYXJhdGlvbih0aGlzKTsgfQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHlsZVJ1bGUtPnByb3BlcnRpZXMoKS0+ZW5zdXJlUnVsZUNTU1N0
eWxlRGVjbGFyYXRpb24odGhpcyk7IH0KIAogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7Ci0K
LSAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gPiYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3Io
c2VsZWN0b3JzKTsgfQotICAgIHZvaWQgc2V0RGVjbGFyYXRpb24oUGFzc1JlZlB0cjxTdHlsZVBy
b3BlcnR5U2V0PiBzdHlsZSkgeyBtX3N0eWxlID0gc3R5bGU7IH0KLQotICAgIGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvckxpc3Q7
IH0KLSAgICBTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c3R5bGUuZ2V0KCk7IH0KLQotICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mIHVybHMpOwotCi0gICAgdXNpbmcgQ1NTUnVsZTo6c291cmNlTGluZTsKKyAg
ICAKKyAgICBTdHlsZVJ1bGUqIHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVSdWxl
LmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgQ1NTU3R5bGVSdWxlKENTU1N0eWxlU2hlZXQqIHBh
cmVudCwgaW50IHNvdXJjZUxpbmUpOwpAQCAtNjMsOCArODMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2xlYW51cCgpOwogICAgIFN0cmluZyBnZW5lcmF0ZVNlbGVjdG9yVGV4dCgpIGNvbnN0Owog
Ci0gICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IG1fc3R5bGU7Ci0gICAgQ1NTU2VsZWN0b3JM
aXN0IG1fc2VsZWN0b3JMaXN0OworICAgIE93blB0cjxTdHlsZVJ1bGU+IG1fc3R5bGVSdWxlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMTA4OTgwKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsMTAgKzE3MywxMCBA
QCBpZiAocHJpbWl0aXZlVmFsdWUpIFwKIAogY2xhc3MgUnVsZURhdGEgewogcHVibGljOgotICAg
IFJ1bGVEYXRhKENTU1N0eWxlUnVsZSosIENTU1NlbGVjdG9yKiwgdW5zaWduZWQgcG9zaXRpb24s
IGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IgPSB0cnVlKTsKKyAgICBSdWxlRGF0YShTdHls
ZVJ1bGUqLCBDU1NTZWxlY3RvciosIHVuc2lnbmVkIHBvc2l0aW9uLCBib29sIGNhblVzZUZhc3RD
aGVja1NlbGVjdG9yID0gdHJ1ZSk7CiAKICAgICB1bnNpZ25lZCBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJl
dHVybiBtX3J1bGU7IH0KKyAgICBTdHlsZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3J1
bGU7IH0KICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlbGVj
dG9yOyB9CiAKICAgICBib29sIGhhc0Zhc3RDaGVja2FibGVTZWxlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1faGFzRmFzdENoZWNrYWJsZVNlbGVjdG9yOyB9CkBAIC0xOTEsNyArMTkxLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IHVuc2lnbmVkKiBkZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFz
aGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVz
OyB9CiAKIHByaXZhdGU6Ci0gICAgQ1NTU3R5bGVSdWxlKiBtX3J1bGU7CisgICAgU3R5bGVSdWxl
KiBtX3J1bGU7CiAgICAgQ1NTU2VsZWN0b3IqIG1fc2VsZWN0b3I7CiAgICAgdW5zaWduZWQgbV9z
cGVjaWZpY2l0eTsKICAgICAvLyBUaGlzIG51bWJlciB3YXMgcGlja2VkIGZhaXJseSBhcmJpdHJh
cmlseS4gV2UgY2FuIHByb2JhYmx5IGxvd2VyIGl0IGlmIHdlIG5lZWQgdG8uCkBAIC0yMjUsOCAr
MjI1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNo
ZWV0KiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYsIENTU1N0eWxlU2VsZWN0b3IqID0gMCwg
Y29uc3QgRWxlbWVudCogPSAwKTsKIAotICAgIHZvaWQgYWRkU3R5bGVSdWxlKENTU1N0eWxlUnVs
ZSosIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IgPSB0cnVlKTsKLSAgICB2b2lkIGFkZFJ1
bGUoQ1NTU3R5bGVSdWxlKiwgQ1NTU2VsZWN0b3IqLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVj
dG9yID0gdHJ1ZSk7CisgICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiwgYm9vbCBjYW5V
c2VGYXN0Q2hlY2tTZWxlY3RvciA9IHRydWUpOworICAgIHZvaWQgYWRkUnVsZShTdHlsZVJ1bGUq
LCBDU1NTZWxlY3RvciosIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IgPSB0cnVlKTsKICAg
ICB2b2lkIGFkZFBhZ2VSdWxlKENTU1BhZ2VSdWxlKik7CiAgICAgdm9pZCBhZGRUb1J1bGVTZXQo
QXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYsIGNvbnN0IFJ1bGVEYXRhJik7CiAg
ICAgdm9pZCBhZGRSZWdpb25SdWxlKFdlYktpdENTU1JlZ2lvblJ1bGUqKTsKQEAgLTc1MCw3ICs3
NTAsNyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFCiAgICAgQVNT
RVJUX1VOVVNFRChsb2FkZWRNYXRoTUxVc2VyQWdlbnRTaGVldCwgbG9hZGVkTWF0aE1MVXNlckFn
ZW50U2hlZXQgfHwgZGVmYXVsdFN0eWxlLT5mZWF0dXJlcygpLnNpYmxpbmdSdWxlcy5pc0VtcHR5
KCkpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1h
dGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgQ1NT
U3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlKQordm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjphZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIFN0
eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgbGlu
a01hdGNoVHlwZSkKIHsKICAgICBtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5ncm93KG1h
dGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSArIDEpOwogICAgIE1hdGNoZWRQcm9w
ZXJ0aWVzJiBuZXdQcm9wZXJ0aWVzID0gbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMubGFz
dCgpOwpAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c29ydEFuZFRy
YW5zZmVyTWEKICAgICAgICAgaWYgKCFtX3J1bGVMaXN0KQogICAgICAgICAgICAgbV9ydWxlTGlz
dCA9IENTU1J1bGVMaXN0OjpjcmVhdGUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbWF0Y2hlZFJ1bGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9ydWxlTGlzdC0+
YXBwZW5kKG1fbWF0Y2hlZFJ1bGVzW2ldLT5ydWxlKCkpOworICAgICAgICAgICAgbV9ydWxlTGlz
dC0+YXBwZW5kKG1fbWF0Y2hlZFJ1bGVzW2ldLT5ydWxlKCktPmVuc3VyZUNTU1N0eWxlUnVsZSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODI4LDcgKzgyOCw3IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6c29ydEFuZFRyYW5zZmVyTWEKICAgICAgICAgdW5zaWduZWQgbGlua01h
dGNoVHlwZSA9IG1fbWF0Y2hlZFJ1bGVzW2ldLT5saW5rTWF0Y2hUeXBlKCk7CiAgICAgICAgIGlm
IChzd2FwVmlzaXRlZFVudmlzaXRlZCAmJiBsaW5rTWF0Y2hUeXBlICYmIGxpbmtNYXRjaFR5cGUg
IT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCkKICAgICAgICAgICAgIGxpbmtNYXRjaFR5cGUg
PSAobGlua01hdGNoVHlwZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCkgPyBTZWxl
Y3RvckNoZWNrZXI6Ok1hdGNoTGluayA6IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkOwot
ICAgICAgICBhZGRNYXRjaGVkUHJvcGVydGllcyhyZXN1bHQsIG1fbWF0Y2hlZFJ1bGVzW2ldLT5y
dWxlKCktPmRlY2xhcmF0aW9uKCksIG1fbWF0Y2hlZFJ1bGVzW2ldLT5ydWxlKCksIGxpbmtNYXRj
aFR5cGUpOworICAgICAgICBhZGRNYXRjaGVkUHJvcGVydGllcyhyZXN1bHQsIG1fbWF0Y2hlZFJ1
bGVzW2ldLT5ydWxlKCktPnByb3BlcnRpZXMoKSwgbV9tYXRjaGVkUnVsZXNbaV0tPnJ1bGUoKSwg
bGlua01hdGNoVHlwZSk7CiAgICAgfQogfQogCkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdQogICAgICAgICBpZiAoY2FuVXNlRmFzdFJl
amVjdCAmJiBtX2NoZWNrZXIuZmFzdFJlamVjdFNlbGVjdG9yPFJ1bGVEYXRhOjptYXhpbXVtSWRl
bnRpZmllckNvdW50PihydWxlRGF0YS5kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVz
KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxl
ID0gcnVsZURhdGEucnVsZSgpOworICAgICAgICBTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5y
dWxlKCk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNYXRjaFJ1bGUoZG9jdW1lbnQoKSwgcnVsZSk7
CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVs
ZURhdGEsIG9wdGlvbnMuc2NvcGUpKSB7CkBAIC05NzIsMTIgKzk3MiwxMyBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVy
dGllcyB0byBhcHBseSwgdGhlbiBpZ25vcmUgaXQgaW4gdGhlIG5vbi1kZWJ1ZyBtb2RlLgotICAg
ICAgICAgICAgU3R5bGVQcm9wZXJ0eVNldCogZGVjbCA9IHJ1bGUtPmRlY2xhcmF0aW9uKCk7Ci0g
ICAgICAgICAgICBpZiAoIWRlY2wgfHwgKGRlY2wtPmlzRW1wdHkoKSAmJiAhb3B0aW9ucy5pbmNs
dWRlRW1wdHlSdWxlcykpIHsKKyAgICAgICAgICAgIFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRp
ZXMgPSBydWxlLT5wcm9wZXJ0aWVzKCk7CisgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMgfHwg
KHByb3BlcnRpZXMtPmlzRW1wdHkoKSAmJiAhb3B0aW9ucy5pbmNsdWRlRW1wdHlSdWxlcykpIHsK
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1hdGNoUnVsZShj
b29raWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5ICYmICFtX2NoZWNrZXIuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChydWxlLT5iYXNlVVJMKCkpKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogRXhwb3NpbmcgZ2V0TWF0Y2hlZENTU1J1bGVzIGFzIGEgd2ViIGZh
Y2luZyBBUEkgaXMgZm9yY2luZyB1cyB0byBoYXZlIGEgd2F5IHRvIGdldCB0aGUgYmFzZSBVUkwg
cGVyLXJ1bGUuCisgICAgICAgICAgICBpZiAobV9zYW1lT3JpZ2luT25seSAmJiAhbV9jaGVja2Vy
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocnVsZS0+ZW5zdXJlQ1NT
U3R5bGVSdWxlKCktPmJhc2VVUkwoKSkpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZE1hdGNoUnVsZShjb29raWUsIGZhbHNlKTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTIxNjAsNyArMjE2MSw3IEBAIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6ZGV0ZXJtaW5lU3R5bGVzaGUKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7IGkrKykgewogICAgICAgICBDU1NSdWxlKiBydWxlID0gc3R5bGVzaGVldC0+aXRl
bShpKTsKICAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpIHsKLSAgICAgICAgICAgIENT
U1N0eWxlUnVsZSogc3R5bGVSdWxlID0gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocnVsZSk7
CisgICAgICAgICAgICBTdHlsZVJ1bGUqIHN0eWxlUnVsZSA9IHN0YXRpY19jYXN0PENTU1N0eWxl
UnVsZSo+KHJ1bGUpLT5zdHlsZVJ1bGUoKTsKICAgICAgICAgICAgIGlmICghU2VsZWN0b3JDaGVj
a2VyOjpkZXRlcm1pbmVTZWxlY3RvclNjb3BlcyhzdHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgpLCBp
ZFNjb3BlcywgY2xhc3NTY29wZXMpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjIzNSw3ICsyMjM2LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGNvbnRhaW5zVW5jb21tb25BdHRyaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUnVsZURh
dGE6OlJ1bGVEYXRhKENTU1N0eWxlUnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1
bnNpZ25lZCBwb3NpdGlvbiwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvcikKK1J1bGVEYXRh
OjpSdWxlRGF0YShTdHlsZVJ1bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBzZWxlY3RvciwgdW5zaWdu
ZWQgcG9zaXRpb24sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IpCiAgICAgOiBtX3J1bGUo
cnVsZSkKICAgICAsIG1fc2VsZWN0b3Ioc2VsZWN0b3IpCiAgICAgLCBtX3NwZWNpZmljaXR5KHNl
bGVjdG9yLT5zcGVjaWZpY2l0eSgpKQpAQCAtMjMwOSw3ICsyMzEwLDcgQEAgdm9pZCBSdWxlU2V0
OjphZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSQogICAgIHJ1bGVzLT5hcHBlbmQocnVsZURhdGEp
OwogfQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlLCBDU1NTZWxl
Y3Rvciogc2VsZWN0b3IsIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IpCit2b2lkIFJ1bGVT
ZXQ6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wg
Y2FuVXNlRmFzdENoZWNrU2VsZWN0b3IpCiB7CiAgICAgUnVsZURhdGEgcnVsZURhdGEocnVsZSwg
c2VsZWN0b3IsIG1fcnVsZUNvdW50KyssIGNhblVzZUZhc3RDaGVja1NlbGVjdG9yKTsKICAgICBj
b2xsZWN0RmVhdHVyZXNGcm9tUnVsZURhdGEobV9mZWF0dXJlcywgcnVsZURhdGEpOwpAQCAtMjM2
OCw3ICsyMzY5LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSZWdpb25SdWxlKFdlYktpdENTU1JlZwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlc1NpemU7ICsraSkgewogICAgICAgICBD
U1NSdWxlKiByZWdpb25TdHlsaW5nUnVsZSA9IHJlZ2lvblN0eWxpbmdSdWxlcy0+aXRlbShpKTsK
ICAgICAgICAgaWYgKHJlZ2lvblN0eWxpbmdSdWxlLT5pc1N0eWxlUnVsZSgpKQotICAgICAgICAg
ICAgcmVnaW9uUnVsZVNldC0+YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+
KHJlZ2lvblN0eWxpbmdSdWxlKSk7CisgICAgICAgICAgICByZWdpb25SdWxlU2V0LT5hZGRTdHls
ZVJ1bGUoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocmVnaW9uU3R5bGluZ1J1bGUpLT5zdHls
ZVJ1bGUoKSk7CiAgICAgfQogCiAgICAgbV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hcHBl
bmQoUnVsZVNldFNlbGVjdG9yUGFpcihydWxlLT5zZWxlY3Rvckxpc3QoKS5maXJzdCgpLCByZWdp
b25SdWxlU2V0KSk7CkBAIC0yMzg4LDcgKzIzODksNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVz
RnJvbVNoZWV0KENTU1N0eWxlCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewog
ICAgICAgICBDU1NSdWxlKiBydWxlID0gc2hlZXQtPml0ZW0oaSk7CiAgICAgICAgIGlmIChydWxl
LT5pc1N0eWxlUnVsZSgpKQotICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PENT
U1N0eWxlUnVsZSo+KHJ1bGUpLCAhc2NvcGUpOworICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0
YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGUpLT5zdHlsZVJ1bGUoKSwgIXNjb3BlKTsKICAg
ICAgICAgZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgpKQogICAgICAgICAgICAgYWRkUGFnZVJ1
bGUoc3RhdGljX2Nhc3Q8Q1NTUGFnZVJ1bGUqPihydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1
bGUtPmlzSW1wb3J0UnVsZSgpKSB7CkBAIC0yNDA1LDcgKzI0MDYsNyBAQCB2b2lkIFJ1bGVTZXQ6
OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IHJ1bGVzLT5sZW5ndGgoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAg
IENTU1J1bGUgKmNoaWxkSXRlbSA9IHJ1bGVzLT5pdGVtKGopOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGRJdGVtLT5pc1N0eWxlUnVsZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KGNoaWxkSXRlbSksICFzY29w
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8Q1NT
U3R5bGVSdWxlKj4oY2hpbGRJdGVtKS0+c3R5bGVSdWxlKCksICFzY29wZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGNoaWxkSXRlbS0+aXNQYWdlUnVsZSgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8Q1NTUGFnZVJ1bGUqPihjaGlsZEl0
ZW0pKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRJdGVtLT5pc0ZvbnRGYWNl
UnVsZSgpICYmIHN0eWxlU2VsZWN0b3IpIHsKQEAgLTI0NDksNyArMjQ1MCw3IEBAIHZvaWQgUnVs
ZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGUKICAgICAgICAgc2hyaW5rVG9GaXQoKTsK
IH0KIAotdm9pZCBSdWxlU2V0OjphZGRTdHlsZVJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlLCBib29s
IGNhblVzZUZhc3RDaGVja1NlbGVjdG9yKQordm9pZCBSdWxlU2V0OjphZGRTdHlsZVJ1bGUoU3R5
bGVSdWxlKiBydWxlLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVjdG9yKQogewogICAgIGZvciAo
Q1NTU2VsZWN0b3IqIHMgPSBydWxlLT5zZWxlY3Rvckxpc3QoKS5maXJzdCgpOyBzOyBzID0gQ1NT
U2VsZWN0b3JMaXN0OjpuZXh0KHMpKQogICAgICAgICBhZGRSdWxlKHJ1bGUsIHMsIGNhblVzZUZh
c3RDaGVja1NlbGVjdG9yKTsKQEAgLTI1MjcsMTAgKzI1MjgsMTAgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzSW5zaWRlUmVnaW9uUnVsZShDUwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBhcHBseUZpcnN0
Pgotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNldCogcHJvcGVydGllcywgQ1NTU3R5bGVSdWxlKiBydWxlLCBib29sIGlzSW1wb3J0YW50
LCBib29sIGluaGVyaXRlZE9ubHkpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqIHJ1bGUs
IGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSkKIHsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsUHJvY2Vzc1J1bGUoZG9jdW1lbnQoKSwgcnVsZSk7Ci0gICAgYm9vbCBzdHlsZURlY2xhcmF0
aW9uSW5zaWRlUmVnaW9uUnVsZSA9IG1fcmVnaW9uRm9yU3R5bGluZyAmJiBpc0luc2lkZVJlZ2lv
blJ1bGUocnVsZSk7CisgICAgYm9vbCBzdHlsZURlY2xhcmF0aW9uSW5zaWRlUmVnaW9uUnVsZSA9
IG1fcmVnaW9uRm9yU3R5bGluZyAmJiBpc0luc2lkZVJlZ2lvblJ1bGUocnVsZS0+ZW5zdXJlQ1NT
U3R5bGVSdWxlKCkpOwogCiAgICAgdW5zaWduZWQgcHJvcGVydHlDb3VudCA9IHByb3BlcnRpZXMt
PnByb3BlcnR5Q291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlD
b3VudDsgKytpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJl
dmlzaW9uIDEwODk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgY2xhc3MgQ1NTSW1hZ2VWYWx1ZTsKIGNs
YXNzIENTU1J1bGVMaXN0OwogY2xhc3MgQ1NTU2VsZWN0b3I7CiBjbGFzcyBDU1NTdHlsZUFwcGx5
UHJvcGVydHk7Ci1jbGFzcyBDU1NTdHlsZVJ1bGU7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xh
c3MgQ1NTVmFsdWU7CiBjbGFzcyBDb250YWluZXJOb2RlOwpAQCAtNzAsNiArNjksNyBAQCBjbGFz
cyBTZXR0aW5nczsKIGNsYXNzIFN0eWxlSW1hZ2U7CiBjbGFzcyBTdHlsZVBlbmRpbmdJbWFnZTsK
IGNsYXNzIFN0eWxlUHJvcGVydHlTZXQ7CitjbGFzcyBTdHlsZVJ1bGU7CiBjbGFzcyBTdHlsZVNo
YWRlcjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKQEAgLTIyOCw4
ICsyMjgsOCBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQogCiAgICAg
c3RydWN0IFJ1bGVTZWxlY3RvclBhaXIgewotICAgICAgICBSdWxlU2VsZWN0b3JQYWlyKENTU1N0
eWxlUnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKSA6IHJ1bGUocnVsZSksIHNlbGVj
dG9yKHNlbGVjdG9yKSB7IH0KLSAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlOworICAgICAgICBS
dWxlU2VsZWN0b3JQYWlyKFN0eWxlUnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKSA6
IHJ1bGUocnVsZSksIHNlbGVjdG9yKHNlbGVjdG9yKSB7IH0KKyAgICAgICAgU3R5bGVSdWxlKiBy
dWxlOwogICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CiAgICAgfTsKICAgICBzdHJ1Y3Qg
RmVhdHVyZXMgewpAQCAtMjgwLDcgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IE1hdGNo
UmVzdWx0IHsKICAgICAgICAgTWF0Y2hSZXN1bHQoKSA6IGlzQ2FjaGVhYmxlKHRydWUpIHsgfQog
ICAgICAgICBWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXMsIDY0PiBtYXRjaGVkUHJvcGVydGllczsK
LSAgICAgICAgVmVjdG9yPENTU1N0eWxlUnVsZSosIDY0PiBtYXRjaGVkUnVsZXM7CisgICAgICAg
IFZlY3RvcjxTdHlsZVJ1bGUqLCA2ND4gbWF0Y2hlZFJ1bGVzOwogICAgICAgICBNYXRjaFJhbmdl
cyByYW5nZXM7CiAgICAgICAgIGJvb2wgaXNDYWNoZWFibGU7CiAgICAgfTsKQEAgLTI5MSw3ICsy
OTEsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGluY2x1ZGVFbXB0eVJ1bGVzOwogICAgIH07
CiAKLSAgICBzdGF0aWMgdm9pZCBhZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaFJlc3VsdCYgbWF0
Y2hSZXN1bHQsIFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIENTU1N0eWxlUnVsZSogcnVs
ZSA9IDAsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFs
bCk7CisgICAgc3RhdGljIHZvaWQgYWRkTWF0Y2hlZFByb3BlcnRpZXMoTWF0Y2hSZXN1bHQmLCBT
dHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqID0gMCwgdW5zaWduZWQgbGlu
a01hdGNoVHlwZSA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwpOwogCiAgICAgdm9pZCBtYXRj
aEFsbFJ1bGVzKE1hdGNoUmVzdWx0Jik7CiAgICAgdm9pZCBtYXRjaFVBUnVsZXMoTWF0Y2hSZXN1
bHQmKTsKQEAgLTMxMiw3ICszMTIsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxib29sIGZp
cnN0UGFzcz4KICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1
bHQmLCBib29sIGltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBp
bmhlcml0ZWRPbmx5KTsKICAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdFBhc3M+Ci0gICAgdm9pZCBh
cHBseVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgQ1NTU3R5
bGVSdWxlKiwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBpbmhlcml0ZWRPbmx5KTsKKyAgICB2b2lk
IGFwcGx5UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHls
ZVJ1bGUqLCBib29sIGlzSW1wb3J0YW50LCBib29sIGluaGVyaXRlZE9ubHkpOwogCiAgICAgc3Rh
dGljIGJvb2wgaXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVydHkoaW50IGlkKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMTA4OTgwKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNyAr
MzIzLDcgQEAgdm9pZCBDU1NTdHlsZVNoZWV0OjphZGRTdWJyZXNvdXJjZVN0eWxlVQogICAgICAg
ICAgICAgfSBlbHNlIGlmIChydWxlLT5pc0ZvbnRGYWNlUnVsZSgpKQogICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PENTU0ZvbnRGYWNlUnVsZSo+KHJ1bGUpLT5hZGRTdWJyZXNvdXJjZVN0eWxl
VVJMcyh1cmxzKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkgfHwg
cnVsZS0+aXNQYWdlUnVsZSgpKQotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1N0eWxl
UnVsZSo+KHJ1bGUpLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzKTsKKyAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlKS0+c3R5bGVSdWxlKCktPmFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkocmV2aXNpb24gMTA4OTgw
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBzdHlsCiAgICAgaWYgKG1hdGNoZWRSdWxlcykgewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbWF0Y2hlZFJ1bGVzLT5sZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgICAgICBp
ZiAobWF0Y2hlZFJ1bGVzLT5pdGVtKGkpLT50eXBlKCkgPT0gQ1NTUnVsZTo6U1RZTEVfUlVMRSkg
ewotICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzID0gc3RhdGljX2Nh
c3Q8Q1NTU3R5bGVSdWxlKj4obWF0Y2hlZFJ1bGVzLT5pdGVtKGkpKS0+ZGVjbGFyYXRpb24oKTsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gcyA9IHN0YXRpY19jYXN0
PENTU1N0eWxlUnVsZSo+KG1hdGNoZWRSdWxlcy0+aXRlbShpKSktPnN0eWxlUnVsZSgpLT5wcm9w
ZXJ0aWVzKCk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPm1lcmdlKHMuZ2V0KCksIHRydWUpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHJldmlzaW9uIDEwODk4MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2OCw3ICsxNjgsNyBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvclByb2ZpbGU6OnN0YXJ0U2VsZWN0
CiAgICAgICAgICAgICB1cmwgPSBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmco
c3R5bGVTaGVldC0+ZmluZERvY3VtZW50KCkpOwogICAgIH0KICAgICBtX2N1cnJlbnRNYXRjaERh
dGEudXJsID0gdXJsOwotICAgIG1fY3VycmVudE1hdGNoRGF0YS5saW5lTnVtYmVyID0gcnVsZS0+
c291cmNlTGluZSgpOworICAgIG1fY3VycmVudE1hdGNoRGF0YS5saW5lTnVtYmVyID0gcnVsZS0+
c3R5bGVSdWxlKCktPnNvdXJjZUxpbmUoKTsKICAgICBtX2N1cnJlbnRNYXRjaERhdGEuc3RhcnRU
aW1lID0gV1RGOjpjdXJyZW50VGltZU1TKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCShyZXZpc2lv
biAxMDg5ODApCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUyLDExICs0NTIsMTEgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdQogICAgICAgICByZXNvdXJjZUFnZW50LT5k
aWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihkb2N1bWVudCk7CiB9CiAKLUluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNYXRjaFJ1
bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IENT
U1N0eWxlUnVsZSogcnVsZSkKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxNYXRjaFJ1bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0eWxlUnVsZSogcnVsZSkKIHsKICAgICBJbnNw
ZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JD
U1NBZ2VudCgpOwogICAgIGlmIChjc3NBZ2VudCkgewotICAgICAgICBjc3NBZ2VudC0+d2lsbE1h
dGNoUnVsZShydWxlKTsKKyAgICAgICAgY3NzQWdlbnQtPndpbGxNYXRjaFJ1bGUocnVsZS0+ZW5z
dXJlQ1NTU3R5bGVSdWxlKCkpOwogICAgICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIDEpOwogICAgIH0KIApAQCAtNDcwLDE0ICs0
NzAsMTEgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1hdGNoUgogICAgICAg
ICBjc3NBZ2VudC0+ZGlkTWF0Y2hSdWxlKG1hdGNoZWQpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUHJvY2Vzc1J1bGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IENTU1J1
bGUqIHJ1bGUpCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUHJvY2Vzc1J1bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0eWxlUnVsZSogcnVsZSkKIHsKLSAgICBpZiAoIXJ1bGUt
PmlzU3R5bGVSdWxlKCkpCi0gICAgICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUoKTsKLQogICAgIEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCk7CiAgICAgaWYgKGNzc0FnZW50KSB7Ci0gICAg
ICAgIGNzc0FnZW50LT53aWxsUHJvY2Vzc1J1bGUoc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU3R5bGVS
dWxlKj4ocnVsZSkpOworICAgICAgICBjc3NBZ2VudC0+d2lsbFByb2Nlc3NSdWxlKHJ1bGUtPmVu
c3VyZUNTU1N0eWxlUnVsZSgpKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCAxKTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgJ
KHJldmlzaW9uIDEwODk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NSdWxlOwotY2xhc3MgQ1NTU3R5bGVSdWxlOwogY2xh
c3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIERPTUZpbGVTeXN0ZW07CiBjbGFzcyBET01XaW5kb3c7
CkBAIC02NSw2ICs2NCw3IEBAIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRQcm9maWxlOwogY2xhc3MgU3RvcmFnZUFyZWE7
CitjbGFzcyBTdHlsZVJ1bGU7CiBjbGFzcyBXb3JrZXJDb250ZXh0OwogY2xhc3MgV29ya2VyQ29u
dGV4dFByb3h5OwogY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CkBAIC0xMjYsOSArMTI2LDkgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2Fs
Y3VsYXRlU3R5bGUoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0
eWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Kik7Ci0gICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTWF0Y2hSdWxlKERvY3VtZW50Kiwg
Y29uc3QgQ1NTU3R5bGVSdWxlKik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsTWF0Y2hSdWxlKERvY3VtZW50KiwgY29uc3QgU3R5bGVSdWxlKik7CiAgICAg
c3RhdGljIHZvaWQgZGlkTWF0Y2hSdWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYsIGJvb2wgbWF0Y2hlZCk7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsUHJvY2Vzc1J1bGUoRG9jdW1lbnQqLCBjb25zdCBDU1NSdWxlKik7CisgICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUHJvY2Vzc1J1bGUoRG9j
dW1lbnQqLCBjb25zdCBTdHlsZVJ1bGUqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzUnVs
ZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKIAogICAgIHN0YXRpYyB2
b2lkIGFwcGx5VXNlckFnZW50T3ZlcnJpZGUoRnJhbWUqLCBTdHJpbmcqKTsKQEAgLTI3Niw5ICsy
NzYsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxj
dWxhdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50Kik7Ci0gICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTWF0Y2hSdWxlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgY29uc3QgQ1NTU3R5bGVSdWxlKik7CisgICAgc3RhdGljIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTWF0Y2hSdWxlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgY29uc3QgU3R5bGVSdWxlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkTWF0Y2hSdWxlSW1w
bChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBib29sIG1hdGNoZWQpOwot
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFByb2Nlc3NSdWxl
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgQ1NTUnVsZSopOworICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFByb2Nlc3NSdWxlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgY29uc3QgU3R5bGVSdWxlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHJv
Y2Vzc1J1bGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogCiAg
ICAgc3RhdGljIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIFN0cmluZyopOwpAQCAtNzcwLDcgKzc3MCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGkKICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IENTU1N0eWxlUnVsZSogcnVsZSkKK2lubGluZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TWF0Y2hSdWxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3R5bGVSdWxlKiBydWxlKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKQEAgLTc4OSw3ICs3ODksNyBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpCiAjZW5kaWYKIH0KIAotaW5saW5l
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxQcm9jZXNzUnVsZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IENTU1J1bGUqIHJ1bGUp
CitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFByb2Nlc3NSdWxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3R5bGVS
dWxlKiBydWxlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAJKHJl
dmlzaW9uIDEwODk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYyLDcgKzg2Miw3IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JTdHkKICAgICAvLyAic291cmNlVVJMIiBpcyBwcmVz
ZW50IG9ubHkgZm9yIHJlZ3VsYXIgcnVsZXMsIG90aGVyd2lzZSAib3JpZ2luIiBzaG91bGQgYmUg
dXNlZCBpbiB0aGUgZnJvbnRlbmQuCiAgICAgaWYgKG1fb3JpZ2luID09ICJyZWd1bGFyIikKICAg
ICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoInNvdXJjZVVSTCIsIGZpbmFsVVJMKCkpOwotICAgIHJl
c3VsdC0+c2V0TnVtYmVyKCJzb3VyY2VMaW5lIiwgcnVsZS0+c291cmNlTGluZSgpKTsKKyAgICBy
ZXN1bHQtPnNldE51bWJlcigic291cmNlTGluZSIsIHJ1bGUtPnN0eWxlUnVsZSgpLT5zb3VyY2VM
aW5lKCkpOwogICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJvcmlnaW4iLCBtX29yaWdpbik7CiAKICAg
ICByZXN1bHQtPnNldE9iamVjdCgic3R5bGUiLCBidWlsZE9iamVjdEZvclN0eWxlKHJ1bGUtPnN0
eWxlKCkpKTsKQEAgLTExNDgsNyArMTE0OCw3IEBAIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6
cmV2YWxpZGF0ZVN0eWwKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gbV9mbGF0UnVs
ZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIENTU1N0eWxlUnVsZSogcGFyc2Vk
UnVsZSA9IG1fZmxhdFJ1bGVzLmF0KGkpOwogICAgICAgICBpZiAocGFyc2VkUnVsZS0+c3R5bGUo
KSA9PSBwYWdlU3R5bGUpIHsKLSAgICAgICAgICAgIGlmIChwYXJzZWRSdWxlLT5kZWNsYXJhdGlv
bigpLT5hc1RleHQoKSAhPSBwYWdlU3R5bGUtPmNzc1RleHQoKSkgeworICAgICAgICAgICAgaWYg
KHBhcnNlZFJ1bGUtPnN0eWxlUnVsZSgpLT5wcm9wZXJ0aWVzKCktPmFzVGV4dCgpICE9IHBhZ2VT
dHlsZS0+Y3NzVGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGRpc2FibGVk
IHByb3BlcnRpZXMgZm9yIHRoZSBpbnZhbGlkIHN0eWxlIGhlcmUuCiAgICAgICAgICAgICAgICAg
bV9pbnNwZWN0b3JTdHlsZXMucmVtb3ZlKHBhZ2VTdHlsZSk7CiAgICAgICAgICAgICAgICAgc2V0
U3R5bGVUZXh0KHBhZ2VTdHlsZSwgcGFnZVN0eWxlLT5jc3NUZXh0KCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAJKHJldmlzaW9uIDEwODk4MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcs
NyArMjI3LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbQogICAg
ICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOwogICAgICAgICAvLyBXZSBo
YXZlIHRvIHByb2Nlc3MgaW4tbGluZSBzdHlsZSBhcyBpdCBtaWdodCBjb250YWluIHNvbWUgcmVz
b3VyY2VzICh0eXBpY2FsbHkgYmFja2dyb3VuZCBpbWFnZXMpLgogICAgICAgICBpZiAoZWxlbWVu
dC0+aXNTdHlsZWRFbGVtZW50KCkpCi0gICAgICAgICAgICByZXRyaWV2ZVJlc291cmNlc0ZvckNT
U0RlY2xhcmF0aW9uKHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+aW5saW5l
U3R5bGVEZWNsKCksIGRvY3VtZW50KTsKKyAgICAgICAgICAgIHJldHJpZXZlUmVzb3VyY2VzRm9y
UHJvcGVydGllcyhzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmlubGluZVN0
eWxlRGVjbCgpLCBkb2N1bWVudCk7CiAKICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjppbWdUYWcpKSB7CiAgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFn
ZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4oZWxlbWVudCk7CkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaAog
ICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBmb250IGZhY2UgcnVsZS4gSXQg
aXMgbm90IGNsZWFyIHRvIG1lIGF0IHRoaXMgcG9pbnQgaWYgdGhlIGFjdHVhbCBvdGYvZW90IGZp
bGUgY2FuCiAgICAgICAgICAgICAvLyBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgQ1NTRm9udEZhY2VS
dWxlIG9iamVjdC4KICAgICAgICAgfSBlbHNlIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKQotICAg
ICAgICAgICAgcmV0cmlldmVSZXNvdXJjZXNGb3JDU1NSdWxlKHN0YXRpY19jYXN0PENTU1N0eWxl
UnVsZSo+KHJ1bGUpLCBkb2N1bWVudCk7CisgICAgICAgICAgICByZXRyaWV2ZVJlc291cmNlc0Zv
clJ1bGUoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocnVsZSktPnN0eWxlUnVsZSgpLCBkb2N1
bWVudCk7CiAgICAgfQogCiAgICAgaWYgKHVybC5pc1ZhbGlkKCkgJiYgIW1fcmVzb3VyY2VVUkxz
LmNvbnRhaW5zKHVybCkpIHsKQEAgLTMwMiwxMiArMzAyLDEyIEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0K
IAotdm9pZCBQYWdlU2VyaWFsaXplcjo6cmV0cmlldmVSZXNvdXJjZXNGb3JDU1NSdWxlKENTU1N0
eWxlUnVsZSogcnVsZSwgRG9jdW1lbnQqIGRvY3VtZW50KQordm9pZCBQYWdlU2VyaWFsaXplcjo6
cmV0cmlldmVSZXNvdXJjZXNGb3JSdWxlKFN0eWxlUnVsZSogcnVsZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewotICAgIHJldHJpZXZlUmVzb3VyY2VzRm9yQ1NTRGVjbGFyYXRpb24ocnVsZS0+ZGVj
bGFyYXRpb24oKSwgZG9jdW1lbnQpOworICAgIHJldHJpZXZlUmVzb3VyY2VzRm9yUHJvcGVydGll
cyhydWxlLT5wcm9wZXJ0aWVzKCksIGRvY3VtZW50KTsKIH0KIAotdm9pZCBQYWdlU2VyaWFsaXpl
cjo6cmV0cmlldmVSZXNvdXJjZXNGb3JDU1NEZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0KiBz
dHlsZURlY2xhcmF0aW9uLCBEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIFBhZ2VTZXJpYWxpemVy
OjpyZXRyaWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGVE
ZWNsYXJhdGlvbiwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmICghc3R5bGVEZWNsYXJh
dGlvbikKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuaAkocmV2aXNpb24gMTA4OTgwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTMgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1hZ2U7Ci1jbGFzcyBDU1NTdHlsZVJ1bGU7CiBjbGFzcyBD
U1NTdHlsZVNoZWV0OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTdHlsZVByb3BlcnR5U2V0OworY2xhc3MgU3R5
bGVSdWxlOwogCiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gc2VyaWFsaXplIGEgcGFnZSBjb250
ZW50cyBiYWNrIHRvIHRleHQgKHR5cGljYWxseSBIVE1MKS4KIC8vIEl0IHNlcmlhbGl6ZXMgYWxs
IHRoZSBwYWdlIGZyYW1lcyBhbmQgcmV0cmlldmVzIHJlc291cmNlcyBzdWNoIGFzIGltYWdlcyBh
bmQgQ1NTIHN0eWxlc2hlZXRzLgpAQCAtNzgsOCArNzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgS1VSTCYpOwogCiAg
ICAgdm9pZCBhZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiwgUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgS1VSTCYpOwotICAgIHZvaWQgcmV0cmlldmVSZXNvdXJjZXNGb3JDU1NEZWNsYXJhdGlv
bihTdHlsZVByb3BlcnR5U2V0KiwgRG9jdW1lbnQqKTsKLSAgICB2b2lkIHJldHJpZXZlUmVzb3Vy
Y2VzRm9yQ1NTUnVsZShDU1NTdHlsZVJ1bGUqLCBEb2N1bWVudCopOworICAgIHZvaWQgcmV0cmll
dmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTZXQqLCBEb2N1bWVudCopOwor
ICAgIHZvaWQgcmV0cmlldmVSZXNvdXJjZXNGb3JSdWxlKFN0eWxlUnVsZSosIERvY3VtZW50Kik7
CiAKICAgICBWZWN0b3I8UmVzb3VyY2U+KiBtX3Jlc291cmNlczsKICAgICBMaXN0SGFzaFNldDxL
VVJMPiBtX3Jlc291cmNlVVJMczsK
</data>
<flag name="review"
          id="131831"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>