<?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>102771</bug_id>
          
          <creation_ts>2012-11-19 22:53:20 -0800</creation_ts>
          <short_desc>Simplify WebConnection by removing its underlying CoreIPC::Connection</short_desc>
          <delta_ts>2012-11-20 21:24:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <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>771539</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-19 22:53:20 -0800</bug_when>
    <thetext>Simplify WebConnection by removing its underlying CoreIPC::Connection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771543</commentid>
    <comment_count>1</comment_count>
      <attachid>175146</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-19 22:57:04 -0800</bug_when>
    <thetext>Created attachment 175146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771546</commentid>
    <comment_count>2</comment_count>
      <attachid>175146</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-19 23:02:35 -0800</bug_when>
    <thetext>Comment on attachment 175146
Patch

Attachment 175146 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14934157</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771547</commentid>
    <comment_count>3</comment_count>
      <attachid>175146</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-19 23:02:40 -0800</bug_when>
    <thetext>Comment on attachment 175146
Patch

Attachment 175146 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14909514</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771558</commentid>
    <comment_count>4</comment_count>
      <attachid>175146</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 23:12:42 -0800</bug_when>
    <thetext>Comment on attachment 175146
Patch

Attachment 175146 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14894499</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771943</commentid>
    <comment_count>5</comment_count>
      <attachid>175235</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-20 09:47:39 -0800</bug_when>
    <thetext>Created attachment 175235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771951</commentid>
    <comment_count>6</comment_count>
      <attachid>175235</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-20 09:55:50 -0800</bug_when>
    <thetext>Comment on attachment 175235
Patch

Attachment 175235 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14913650</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772014</commentid>
    <comment_count>7</comment_count>
      <attachid>175247</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-20 10:53:21 -0800</bug_when>
    <thetext>Created attachment 175247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772442</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-20 21:24:09 -0800</bug_when>
    <thetext>Committed r135347: &lt;http://trac.webkit.org/changeset/135347&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175146</attachid>
            <date>2012-11-19 22:57:04 -0800</date>
            <delta_ts>2012-11-20 09:47:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102771-20121119225454.patch</filename>
            <type>text/plain</type>
            <size>29009</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTI1NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTExLTE5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViQ29ubmVjdGlvbiBi
eSByZW1vdmluZyBpdHMgdW5kZXJseWluZyBDb3JlSVBDOjpDb25uZWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI3NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGhhdmluZyBX
ZWJDb25uZWN0aW9uIHN1YmNsYXNzZXMgb3duIHRoZSBDb3JlSVBDOjpDb25uZWN0aW9uLAorICAg
ICAgICBtb3ZlIGJhY2sgdG8gaGF2aW5nIHRoZSBXZWJQcm9jZXNzIGFuZCBXZWJQcm9jZXNzUHJv
eHkgb3duIGl0IChhbmQgYmUKKyAgICAgICAgaXRzIENvbm5lY3Rpb246OkNsaWVudCkgYW5kIHVz
ZSB0aGUgbmV3IE1lc3NhZ2VSZWNlaXZlciBjbGFzcyB0byB2ZW5kCisgICAgICAgIG1lc3NhZ2Vz
IHRvIHRoZSBXZWJDb25uZWN0aW9uLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb25uZWN0aW9uOjpXZWJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29ubmVjdGlv
bi5oOgorICAgICAgICBNYWtlIFdlYkNvbm5lY3Rpb24gYm90aCBhIE1lc3NhZ2VSZWNlaXZlciBh
bmQgTWVzc2FnZVNlbmRlcgorICAgICAgICBhbmQgYWRkIHZpcnR1YWwgZnVuY3Rpb25zIGZvciBk
ZXJpdmVkIGNsYXNzZXMgdG8gZmlsbCBpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWNvZGVNZXNzYWdlQm9keSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZXN0aW5hdGlvbklEKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVmFsaWRDb25uZWN0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojph
ZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRp
ZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjpXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjpkZXN0aW5hdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzOjpoYXNWYWxpZENvbm5lY3Rpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmg6CisgICAgICAgIChXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjp0ZXJtaW5hdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6d2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKToKKyAgICAgICAg
TW92ZSB0aGUgQ29yZUlQQzo6Q29ubmVjdGlvbiBiYWNrIHRvIHRoZSBwcm9jZXNzZXMuCisKIDIw
MTItMTEtMTkgIEt5dW5nVGFlIEtpbSAgPGt0Zi5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W1dLMl0gVW51c2VkIHBhcmFtZXRlcnMgb24gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMTM1
MTg4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywxNSArMjcsMTMgQEAKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1XZWJDb25uZWN0aW9uOjpXZWJDb25uZWN0aW9uKFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29u
bmVjdGlvbj4gY29ubmVjdGlvbikKLSAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorV2Vi
Q29ubmVjdGlvbjo6V2ViQ29ubmVjdGlvbigpCiB7CiB9CiAKQEAgLTUwLDE0ICs0OCwyNCBAQCB2
b2lkIFdlYkNvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uCiAKIHZvaWQgV2ViQ29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBt
ZXNzYWdlQm9keSkKIHsKLSAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICBpZiAoIWhhc1ZhbGlk
Q29ubmVjdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBPd25QdHI8Q29yZUlQQzo6TWVz
c2FnZUVuY29kZXI+IGVuY29kZXIgPSBDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcjo6Y3JlYXRlKE1l
c3NhZ2VzOjpXZWJDb25uZWN0aW9uOjpIYW5kbGVNZXNzYWdlOjpyZWNlaXZlck5hbWUoKSwgTWVz
c2FnZXM6OldlYkNvbm5lY3Rpb246OkhhbmRsZU1lc3NhZ2U6Om5hbWUoKSwgMCk7CiAgICAgZW5j
b2Rlci0+ZW5jb2RlKG1lc3NhZ2VOYW1lKTsKICAgICBlbmNvZGVNZXNzYWdlQm9keSgqZW5jb2Rl
ciwgbWVzc2FnZUJvZHkpOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kTWVzc2FnZShDb3JlSVBD
OjpNZXNzYWdlSUQoTWVzc2FnZXM6OldlYkNvbm5lY3Rpb246OkhhbmRsZU1lc3NhZ2U6Om1lc3Nh
Z2VJRCksIGVuY29kZXIucmVsZWFzZSgpKTsKKyAgICBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNz
YWdlSUQoTWVzc2FnZXM6OldlYkNvbm5lY3Rpb246OkhhbmRsZU1lc3NhZ2U6Om1lc3NhZ2VJRCks
IGVuY29kZXIucmVsZWFzZSgpKTsKK30KKwordm9pZCBXZWJDb25uZWN0aW9uOjpkaWRDbG9zZSgp
Cit7CisgICAgbV9jbGllbnQuZGlkQ2xvc2UodGhpcyk7Cit9CisKK3ZvaWQgV2ViQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29y
ZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29k
ZXIpCit7CisgICAgZGlkUmVjZWl2ZVdlYkNvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIG1l
c3NhZ2VJRCwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViQ29ubmVjdGlvbjo6aGFuZGxlTWVzc2Fn
ZShDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTczLDEwICs4MSw0IEBAIHZv
aWQgV2ViQ29ubmVjdGlvbjo6aGFuZGxlTWVzc2FnZShDb3JlSVAKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQog
Ci12b2lkIFdlYkNvbm5lY3Rpb246OmludmFsaWRhdGUoKQotewotICAgIG1fY29ubmVjdGlvbi0+
aW52YWxpZGF0ZSgpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCShy
ZXZpc2lvbiAxMzUxODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw0NSArMjcsNDUgQEAKICNkZWZpbmUgV2ViQ29ubmVjdGlv
bl9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvbkNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIENvcmVJUEMgewot
ICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKLSAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7Ci0g
ICAgY2xhc3MgQ29ubmVjdGlvbjsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwotICAgIGNsYXNz
IE1lc3NhZ2VEZWNvZGVyOwotICAgIGNsYXNzIE1lc3NhZ2VFbmNvZGVyOwotICAgIGNsYXNzIE1l
c3NhZ2VJRDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkNvbm5lY3Rpb24g
OiBwdWJsaWMgQVBJT2JqZWN0IHsKK2NsYXNzIFdlYkNvbm5lY3Rpb24gOiBwdWJsaWMgQVBJT2Jq
ZWN0LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ29yZUlQQzo6TWVz
c2FnZVNlbmRlcjxXZWJDb25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5
cGUgQVBJVHlwZSA9IFR5cGVDb25uZWN0aW9uOwogICAgIHZpcnR1YWwgfldlYkNvbm5lY3Rpb24o
KTsKIAotICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7IH0KLQogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQo
Y29uc3QgV0tDb25uZWN0aW9uQ2xpZW50Kik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBT
dHJpbmcmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZENsb3NlKCk7CiAKLSAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKKyAgICAvLyBVc2VkIGJ5IENvcmVJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICB2
aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgZXhwbGljaXQgV2ViQ29ubmVjdGlvbihQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rp
b24+KTsKKyAgICBleHBsaWNpdCBXZWJDb25uZWN0aW9uKCk7CiAKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBlbmNv
ZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImLCBBUElPYmplY3QqKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGRlY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciYsIFJlZlB0cjxBUElPYmplY3Q+JikgPSAwOwogCisgICAgLy8gQ29yZUlQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURF
OworCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29ubmVjdGlvbk1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKTsKKworICAgIC8vIE1lc2FnZSBoYW5kbGluZyBpbXBsZW1lbnRhdGlvbiBmdW5jdGlv
bnMuCiAgICAgdm9pZCBoYW5kbGVNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAK
LSAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIHZpcnR1
YWwgYm9vbCBoYXNWYWxpZENvbm5lY3Rpb24oKSBjb25zdCA9IDA7CisKICAgICBXZWJDb25uZWN0
aW9uQ2xpZW50IG1fY2xpZW50OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM1
MTg4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyOCArMjYsMjYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAKLSNpbmNsdWRl
ICJXZWJDb25uZWN0aW9uTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2ViQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBSdW5Mb29wKiBydW5Mb29wKQorUGFzc1JlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhwcm9jZXNzLCBjb25uZWN0aW9uSWRlbnRpZmllciwgcnVuTG9vcCkpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhwcm9jZXNzKSk7CiB9CiAKLVdl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBSdW5Mb29wKiBydW5Mb29wKQotICAgIDogV2ViQ29ubmVjdGlvbihD
b3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB0aGlzLCBydW5Mb29wKSkKLSAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQorV2ViQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKIHsKLSNpZiBPUyhEQVJX
SU4pCi0gICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNl
cHRpb25zKCk7Ci0jZWxpZiBQTEFURk9STShRVCkgJiYgIU9TKFdJTkRPV1MpCi0gICAgbV9jb25u
ZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSNlbmRpZgorICAgIG1fcHJvY2Vzcy0+YWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIHRoaXMpOworfQorCit2b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmludmFsaWRh
dGUoKQoreworICAgIG1fcHJvY2VzcyA9IG51bGxwdHI7CiB9CiAKIC8vIFdlYkNvbm5lY3Rpb24K
QEAgLTYwLDYyICs1OCwyMiBAQCB2b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuY29k
ZU1lCiBib29sIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlY29kZU1lc3NhZ2VCb2R5KENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEFQSU9iamVjdD4mIG1lc3Nh
Z2VCb2R5KQogewogICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZUJvZHlE
ZWNvZGVyKG1lc3NhZ2VCb2R5LCBtX3Byb2Nlc3MpOwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShtZXNzYWdlQm9keURlY29kZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobWVzc2FnZUJvZHlEZWNvZGVyKTsK
IH0KIAotLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Ci0KLXZvaWQgV2ViQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCitDb3JlSVBDOjpDb25uZWN0aW9uKiBXZWJDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJ
UEM6Ok1lc3NhZ2VDbGFzc1dlYkNvbm5lY3Rpb24+KCkpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVdl
YkNvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3Byb2Nlc3MtPmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29u
bmVjdGlvbigpOwogfQogCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpN
ZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgT3du
UHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQordWludDY0X3QgV2Vi
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgbV9w
cm9jZXNzLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNv
ZGVyLCByZXBseUVuY29kZXIpOwotfQotCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCi17Ci0gICAgUmVmUHRy
PFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3Rvcih0aGlzKTsKLQotICAgIG1fcHJv
Y2Vzcy0+ZGlkQ2xvc2UoY29ubmVjdGlvbik7Ci0KLSAgICAvLyBUZWxsIHRoZSBBUEkgY2xpZW50
IHRoYXQgdGhlIGNvbm5lY3Rpb24gY2xvc2VkLgotICAgIG1fY2xpZW50LmRpZENsb3NlKHRoaXMp
OwotfQotCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lKQotewotICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm90
ZWN0b3IgPSB0aGlzOwotICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3MgPSBtX3By
b2Nlc3M7Ci0KLSAgICAvLyBUaGlzIHdpbGwgaW52YWxpZGF0ZSB0aGUgQ29yZUlQQzo6Q29ubmVj
dGlvbiBhbmQgdGhlIFdlYlByb2Nlc3NQcm94eSBtZW1iZXIKLSAgICAvLyB2YXJpYWJsZXMsIHNv
IHdlIHNob3VsZCBiZSBjYXJlZnVsIG5vdCB0byB1c2UgdGhlbSBhZnRlciB0aGlzIGNhbGwuCi0g
ICAgcHJvY2Vzcy0+ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKLQotICAgIC8vIFNpbmNlIHdlJ3ZlIGludmFsaWRh
dGVkIHRoZSBjb25uZWN0aW9uIHdlJ2xsIG5ldmVyIGdldCBhIENvcmVJUEM6OkNvbm5lY3Rpb246
OkNsaWVudDo6ZGlkQ2xvc2UKLSAgICAvLyBjYWxsYmFjayBzbyB3ZSdsbCBleHBsaWNpdGx5IGNh
bGwgaXQgaGVyZSBpbnN0ZWFkLgotICAgIHByb2Nlc3MtPmRpZENsb3NlKGNvbm5lY3Rpb24pOwot
Ci0gICAgLy8gVGVsbCB0aGUgQVBJIGNsaWVudCB0aGF0IHRoZSBjb25uZWN0aW9uIGNsb3NlZC4K
LSAgICBtX2NsaWVudC5kaWRDbG9zZSh0aGlzKTsKKyAgICByZXR1cm4gMDsKIH0KIAotI2lmIFBM
QVRGT1JNKFdJTikKLVZlY3RvcjxIV05EPiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3aW5k
b3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KCkKK2Jvb2wg
V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVmFsaWRDb25uZWN0aW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wcm9jZXNzLT53aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVX
YWl0aW5nRm9yU3luY1JlcGx5KCk7CisgICAgcmV0dXJuIG1fcHJvY2VzczsKIH0KLSNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTM1MTg4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMzMgKzI2LDI5IEBACiAjaWZuZGVmIFdlYkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NfaAogI2RlZmluZSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKIAotI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKLWNsYXNzIFdlYkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgOiBwdWJsaWMgV2ViQ29ubmVjdGlvbiwgcHVibGljIENvcmVJUEM6
OkNvbm5lY3Rpb246OkNsaWVudCB7CitjbGFzcyBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDog
cHVibGljIFdlYkNvbm5lY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShXZWJQcm9jZXNzUHJveHkqLCBDb3JlSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKFdlYlByb2Nlc3NQ
cm94eSopOwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkoKSBjb25zdCB7
IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBwcml2YXRl
OgotICAgIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiwgQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgV2ViQ29yZTo6UnVuTG9vcCopOworICAgIFdlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKICAgICAvLyBXZWJDb25u
ZWN0aW9uCiAgICAgdmlydHVhbCB2b2lkIGVuY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciYsIEFQSU9iamVjdCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBkZWNv
ZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBSZWZQdHI8QVBJT2JqZWN0
PiYpIE9WRVJSSURFOwotCi0gICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIE93blB0cjxDb3JlSVBDOjpNZXNz
YWdlRW5jb2Rlcj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpOwotI2lmIFBMQVRGT1JN
KFdJTikKLSAgICB2aXJ0dWFsIFZlY3RvcjxIV05EPiB3aW5kb3dzVG9SZWNlaXZlU2VudE1lc3Nh
Z2VzV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KCk7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIENvcmVJ
UEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVmFsaWRDb25uZWN0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBXZWJQcm9jZXNz
UHJveHkqIG1fcHJvY2VzczsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTM1MTg4KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsx
MDQsMTAgQEAgV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKIHsKICAgICBpZiAo
bV9jb25uZWN0aW9uKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKLSAgICAK
KworICAgIGlmIChtX3dlYkNvbm5lY3Rpb24pCisgICAgICAgIG1fd2ViQ29ubmVjdGlvbi0+aW52
YWxpZGF0ZSgpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdNZXNzYWdl
cy5zaXplKCk7ICsraSkKICAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3QucmVsZWFz
ZUFyZ3VtZW50cygpOwogCkBAIC0xMTcsMTAgKzEyMCwxMCBAQCBXZWJQcm9jZXNzUHJveHk6On5X
ZWJQcm9jZXNzUHJveHkoKQogV2ViUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUHJveHk6OmZyb21D
b25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJU
KGNvbm5lY3Rpb24pOwotICAgIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIHdlYkNvbm5lY3Rp
b24gPSBzdGF0aWNfY2FzdDxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzKj4oY29ubmVjdGlvbi0+
Y2xpZW50KCkpOwogCi0gICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkgPSB3ZWJD
b25uZWN0aW9uLT53ZWJQcm9jZXNzUHJveHkoKTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIHdlYlBy
b2Nlc3NQcm94eSA9IHN0YXRpY19jYXN0PFdlYlByb2Nlc3NQcm94eSo+KGNvbm5lY3Rpb24tPmNs
aWVudCgpKTsKICAgICBBU1NFUlQod2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCkgPT0gY29u
bmVjdGlvbik7CisKICAgICByZXR1cm4gd2ViUHJvY2Vzc1Byb3h5OwogfQogCkBAIC0xMzgsMTEg
KzE0MSwxNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y29ubmVjdCgpCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgaWYgKG1fY29ubmVjdGlvbikgewotICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+cmVtb3ZlUXVldWVDbGllbnQodGhpcyk7Cisg
ICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlUXVldWVDbGllbnQodGhpcyk7CiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRy
OwogICAgIH0KIAorICAgIGlmIChtX3dlYkNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV93ZWJDb25u
ZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fd2ViQ29ubmVjdGlvbiA9IG51bGxwdHI7
CisgICAgfQorCiAgICAgbV9yZXNwb25zaXZlbmVzc1RpbWVyLnN0b3AoKTsKIAogICAgIFZlY3Rv
cjxSZWZQdHI8V2ViRnJhbWVQcm94eT4gPiBmcmFtZXM7CkBAIC0xODUsNiArMTkzLDExIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGUoKQogICAgICAgICBtX3Byb2Nlc3NMYXVuY2hl
ci0+dGVybWluYXRlUHJvY2VzcygpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkTWVz
c2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlcikKK3sKKyAgICBtX21l
c3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
bWVzc2FnZVJlY2VpdmVyKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VS
ZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVj
ZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CkBAIC00
OTMsNiArNTA2LDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6Ogog
ICAgIC8vIHRvIGJlIGRlbGV0ZWQgYmVmb3JlIHdlIGNhbiBmaW5pc2ggb3VyIHdvcmsuCiAgICAg
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdCh0aGlzKTsKIAorICAgIHdlYkNvbm5lY3Rp
b24oKS0+ZGlkQ2xvc2UoKTsKKwogICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5PiA+IHBh
Z2VzOwogICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKIApAQCAtNTAw
LDE0ICs1MTUsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6Ogog
CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwYWdlcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCiAgICAgICAgIHBhZ2VzW2ldLT5wcm9jZXNzRGlkQ3Jhc2goKTsKKwogfQogCi12b2lkIFdl
YlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBD
b3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQogewogICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQg
YW4gaW52YWxpZCBtZXNzYWdlIFwiJXMuJXNcIiBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIsIG1l
c3NhZ2VSZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5n
KCkuZGF0YSgpKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgV2ViUHJvY2Vzc2VzLgogICAgIHRl
cm1pbmF0ZSgpOworCisgICAgLy8gU2luY2Ugd2UndmUgaW52YWxpZGF0ZWQgdGhlIGNvbm5lY3Rp
b24gd2UnbGwgbmV2ZXIgZ2V0IGEgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50OjpkaWRDbG9z
ZQorICAgIC8vIGNhbGxiYWNrIHNvIHdlJ2xsIGV4cGxpY2l0bHkgY2FsbCBpdCBoZXJlIGluc3Rl
YWQuCisgICAgZGlkQ2xvc2UoY29ubmVjdGlvbik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoUmVzcG9uc2l2ZW5lc3NUaW1lciopCkBAIC01NDIsMTAg
KzU2MiwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2Nvbm5l
Y3Rpb24pOwotICAgIAotICAgIG1fY29ubmVjdGlvbiA9IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZSh0aGlzLCBjb25uZWN0aW9uSWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigpKTsK
LSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQodGhpcyk7Ci0g
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPm9wZW4oKTsKKworICAgIG1fY29ubmVjdGlv
biA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlv
bklkZW50aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7CisjaWYgT1MoREFSV0lOKQorICAg
IG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25NYWNoRXhjZXB0aW9ucygp
OworI2VsaWYgUExBVEZPUk0oUVQpICYmICFPUyhXSU5ET1dTKQorICAgIG1fY29ubmVjdGlvbi0+
c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24ocHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CisjZW5kaWYKKworICAgIG1fY29ubmVjdGlvbi0+YWRkUXVldWVD
bGllbnQodGhpcyk7CisgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CisKKyAgICBtX3dlYkNvbm5l
Y3Rpb24gPSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIENvcmVJUEM6OkNvbm5lY3Rpb246Ok91dGdvaW5nTWVzc2FnZSYgb3V0Z29pbmdNZXNz
YWdlID0gbV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAxMzUxODgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDcgKzYwLDcgQEAgY2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIHN0cnVj
dCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogCi1jbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgQ29yZUlQQzo6Q29ubmVj
dGlvbjo6Q2xpZW50LCBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIFByb2Nlc3NMYXVuY2hl
cjo6Q2xpZW50LCAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6UXVldWVDbGllbnQgeworY2xhc3MgV2Vi
UHJvY2Vzc1Byb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94
eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xp
ZW50LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6UXVldWVD
bGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YkZyYW1lUHJveHk+ID4gV2ViRnJhbWVQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiA+IFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW1NYXA7CkBAIC03OCwxNCArNzgsMTQgQEAgcHVibGljOgogICAgIENvcmVJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAogICAgIHsgCiAgICAgICAgIEFTU0VSVChtX2Nvbm5l
Y3Rpb24pOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpOyAKKyAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKICAgICB9CiAKKyAgICB2
b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKik7CiAgICAgdm9pZCBhZGRNZXNz
YWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciopOwogICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKIAotICAgIFdlYkNvbm5l
Y3Rpb24qIHdlYkNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7
IH0KKyAgICBXZWJDb25uZWN0aW9uKiB3ZWJDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93
ZWJDb25uZWN0aW9uLmdldCgpOyB9CiAKICAgICBXZWJDb250ZXh0KiBjb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKQEAgLTIwNyw5ICsyMDcsOSBAQCBwcml2YXRl
OgogCiAgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciBtX3Jlc3BvbnNpdmVuZXNzVGltZXI7CiAgICAg
Ci0gICAgLy8gVGhpcyBpcyBub3QgYSBDb3JlSVBDOjpDb25uZWN0aW9uIHNvIHRoYXQgd2UgY2Fu
IHdyYXAgdGhlIENvcmVJUEM6OkNvbm5lY3Rpb24gaW4KLSAgICAvLyBhbiBBUEkgb2JqZWN0Lgot
ICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CisKKyAg
ICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlZlB0cjxX
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAgICAgQ29yZUlQQzo6
TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogCiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxDb3JlSVBDOjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UsIHVuc2lnbmVkPiA+
IG1fcGVuZGluZ01lc3NhZ2VzOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM1MTg4KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNCArMjcsMjcgQEAKICNpbmNsdWRlICJXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3MuaCIKIAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VD
b2RlcnMuaCIKLSNpbmNsdWRlICJXZWJDb25uZWN0aW9uTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVk
ZSAiV2ViQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQ
dHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNy
ZWF0ZShXZWJQcm9jZXNzKiBwcm9jZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBSdW5Mb29wKiBydW5Mb29wKQorUGFzc1JlZlB0cjxXZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3M+IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6Y3JlYXRlKFdl
YlByb2Nlc3MqIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3MocHJvY2VzcywgY29ubmVjdGlvbklkZW50aWZpZXIsIHJ1bkxvb3ApKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyhwcm9jZXNz
KSk7CiB9CiAKLVdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzKFdlYlByb2Nlc3MqIHByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIsIFJ1bkxvb3AqIHJ1bkxvb3ApCi0gICAgOiBXZWJDb25uZWN0
aW9uKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlv
bklkZW50aWZpZXIsIHRoaXMsIHJ1bkxvb3ApKQotICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCitX
ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcyhXZWJQcm9j
ZXNzKiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7Ci0gICAgbV9jb25uZWN0
aW9uLT5zZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKENoaWxkUHJvY2Vz
czo6ZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOwotICAgIG1fY29ubmVjdGlvbi0+c2V0
U2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVyZSh0cnVlKTsKKyAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCB0aGlzKTsKK30KKwordm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6Omlu
dmFsaWRhdGUoKQoreworICAgIG1fcHJvY2VzcyA9IG51bGxwdHI7CiB9CiAKIC8vIFdlYkNvbm5l
Y3Rpb24KQEAgLTYwLDM3ICs2MywxOSBAQCBib29sIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6
ZGVjb2RlTWVzCiAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKG1lc3NhZ2VCb2R5RGVjb2Rlcik7
CiB9CiAKLS8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAotdm9pZCBXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJiBkZWNvZGVyKQotewotICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNs
YXNzV2ViQ29ubmVjdGlvbj4oKSkgewotICAgICAgICBkaWRSZWNlaXZlV2ViQ29ubmVjdGlvbk1l
c3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIG1fcHJvY2Vzcy0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVz
c2FnZUlELCBkZWNvZGVyKTsKLX0KLQotdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3Jl
SVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2Rl
ciwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAg
IG1fcHJvY2Vzcy0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwg
ZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLX0KLQotdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nl
c3M6OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCitDb3JlSVBDOjpD
b25uZWN0aW9uKiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNvbm5lY3Rpb24oKSBjb25zdAog
ewotICAgIG1fcHJvY2Vzcy0+ZGlkQ2xvc2UoY29ubmVjdGlvbik7CisgICAgcmV0dXJuIG1fcHJv
Y2Vzcy0+Y29ubmVjdGlvbigpOwogfQogCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
IENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit1aW50NjRfdCBXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3M6OmRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIG1fcHJvY2Vzcy0+ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VO
YW1lKTsKKyAgICByZXR1cm4gMDsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikKLVZlY3RvcjxIV05E
PiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OndpbmRvd3NUb1JlY2VpdmVTZW50TWVzc2FnZXNX
aGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkoKQorYm9vbCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6
Omhhc1ZhbGlkQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJvY2Vzcy0+d2lu
ZG93c1RvUmVjZWl2ZVNlbnRNZXNzYWdlc1doaWxlV2FpdGluZ0ZvclN5bmNSZXBseSgpOworICAg
IHJldHVybiBtX3Byb2Nlc3M7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRv
VUlQcm9jZXNzLmgJKHJldmlzaW9uIDEzNTE4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMyICsy
NiwyNyBAQAogI2lmbmRlZiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3NfaAogI2RlZmluZSBXZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3NfaAogCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIldlYkNvbm5lY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBy
b2Nlc3M7CiAKLWNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcyA6IHB1YmxpYyBXZWJDb25u
ZWN0aW9uLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgeworY2xhc3MgV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzIDogcHVibGljIFdlYkNvbm5lY3Rpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gY3JlYXRlKFdlYlByb2Nlc3Mq
LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBjcmVhdGUoV2Vi
UHJvY2VzcyopOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzKFdlYlByb2Nlc3MqLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CisgICAgV2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzKFdlYlByb2Nlc3MqKTsKIAogICAgIC8vIFdlYkNvbm5lY3Rpb24KICAgICB2aXJ0dWFsIHZv
aWQgZW5jb2RlTWVzc2FnZUJvZHkoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiwgQVBJT2JqZWN0
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGRlY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciYsIFJlZlB0cjxBUElPYmplY3Q+JikgT1ZFUlJJREU7Ci0KLSAgICAv
LyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9u
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgT1ZFUlJJREU7Ci0jaWYgUExB
VEZPUk0oV0lOKQotICAgIHZpcnR1YWwgVmVjdG9yPEhXTkQ+IHdpbmRvd3NUb1JlY2VpdmVTZW50
TWVzc2FnZXNXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkoKTsKLSNlbmRpZgorICAgIHZpcnR1YWwg
Q29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBoYXNWYWxpZENvbm5lY3Rpb24oKSBjb25zdCBPVkVSUklERTsKIAogICAgIFdlYlBy
b2Nlc3MqIG1fcHJvY2VzczsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzNTE4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCwxMiArMTg4LDE1IEBAIHZv
aWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZShDb3JlSVBDOjpDb24KIHsKICAgICBBU1NFUlQoIW1f
Y29ubmVjdGlvbik7CiAKLSAgICBtX2Nvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nl
c3M6OmNyZWF0ZSh0aGlzLCBzZXJ2ZXJJZGVudGlmaWVyLCBydW5Mb29wKTsKKyAgICBtX2Nvbm5l
Y3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKHNlcnZl
cklkZW50aWZpZXIsIHRoaXMsIHJ1bkxvb3ApOworICAgIG1fY29ubmVjdGlvbi0+c2V0RGlkQ2xv
c2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhDaGlsZFByb2Nlc3M6OmRpZENsb3NlT25D
b25uZWN0aW9uV29ya1F1ZXVlKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZEV4aXRPblN5
bmNNZXNzYWdlU2VuZEZhaWx1cmUodHJ1ZSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRRdWV1ZUNs
aWVudCgmbV9ldmVudERpc3BhdGNoZXIpOworICAgIG1fY29ubmVjdGlvbi0+YWRkUXVldWVDbGll
bnQodGhpcyk7CisgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CiAKLSAgICBtX2Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQoJm1fZXZlbnREaXNwYXRjaGVyKTsKLSAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQodGhpcyk7CisgICAgbV93
ZWJDb25uZWN0aW9uID0gV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAK
LSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+b3BlbigpOwogICAgIG1fcnVuTG9vcCA9
IHJ1bkxvb3A7CiAKICAgICBzdGFydFJhbmRvbUNyYXNoVGhyZWFkSWZSZXF1ZXN0ZWQoKTsKQEAg
LTY2MCw2ICs2NjMsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnRlcm1pbmF0ZSgpCiAgICAgbV9jb25u
ZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKIAorICAg
IG1fd2ViQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fd2ViQ29ubmVjdGlvbiA9IG51
bGxwdHI7CisKICAgICBwbGF0Zm9ybVRlcm1pbmF0ZSgpOwogICAgIG1fcnVuTG9vcC0+c3RvcCgp
OwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9u
IDEzNTE4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTUsMTUgKzExNSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRp
YWxpemUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgV2ViQ29yZTo6UnVuTG9vcCop
OwogCi0gICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOyB9CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIFdl
YkNvcmU6OlJ1bkxvb3AqIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3A7IH0KIAog
ICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIqKTsKICAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKik7
Ci0KICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAKLSAgICBX
ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0
IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQorICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJv
Y2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25u
ZWN0aW9uLmdldCgpOyB9CiAKICAgICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkg
Y29uc3Q7CiAgICAgdm9pZCBjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwpAQCAtMzA5LDkgKzMwOCwxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFdURjo6U3Ry
aW5nJik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1f
Y29ubmVjdGlvbjsKKyAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwogICAgIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsK
IAorICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsK
KwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+IG1fcGFnZU1hcDsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID4gbV9wYWdlR3Jv
dXBNYXA7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175235</attachid>
            <date>2012-11-20 09:47:39 -0800</date>
            <delta_ts>2012-11-20 10:53:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102771-20121120094528.patch</filename>
            <type>text/plain</type>
            <size>28997</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTI1NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTExLTE5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViQ29ubmVjdGlvbiBi
eSByZW1vdmluZyBpdHMgdW5kZXJseWluZyBDb3JlSVBDOjpDb25uZWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI3NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGhhdmluZyBX
ZWJDb25uZWN0aW9uIHN1YmNsYXNzZXMgb3duIHRoZSBDb3JlSVBDOjpDb25uZWN0aW9uLAorICAg
ICAgICBtb3ZlIGJhY2sgdG8gaGF2aW5nIHRoZSBXZWJQcm9jZXNzIGFuZCBXZWJQcm9jZXNzUHJv
eHkgb3duIGl0IChhbmQgYmUKKyAgICAgICAgaXRzIENvbm5lY3Rpb246OkNsaWVudCkgYW5kIHVz
ZSB0aGUgbmV3IE1lc3NhZ2VSZWNlaXZlciBjbGFzcyB0byB2ZW5kCisgICAgICAgIG1lc3NhZ2Vz
IHRvIHRoZSBXZWJDb25uZWN0aW9uLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb25uZWN0aW9uOjpXZWJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29ubmVjdGlv
bi5oOgorICAgICAgICBNYWtlIFdlYkNvbm5lY3Rpb24gYm90aCBhIE1lc3NhZ2VSZWNlaXZlciBh
bmQgTWVzc2FnZVNlbmRlcgorICAgICAgICBhbmQgYWRkIHZpcnR1YWwgZnVuY3Rpb25zIGZvciBk
ZXJpdmVkIGNsYXNzZXMgdG8gZmlsbCBpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWNvZGVNZXNzYWdlQm9keSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZXN0aW5hdGlvbklEKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVmFsaWRDb25uZWN0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojph
ZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRp
ZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjpXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjpkZXN0aW5hdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzOjpoYXNWYWxpZENvbm5lY3Rpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmg6CisgICAgICAgIChXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjp0ZXJtaW5hdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6d2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKToKKyAgICAgICAg
TW92ZSB0aGUgQ29yZUlQQzo6Q29ubmVjdGlvbiBiYWNrIHRvIHRoZSBwcm9jZXNzZXMuCisKIDIw
MTItMTEtMTkgIEt5dW5nVGFlIEtpbSAgPGt0Zi5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W1dLMl0gVW51c2VkIHBhcmFtZXRlcnMgb24gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMTM1
MTg4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywxNSArMjcsMTMgQEAKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1XZWJDb25uZWN0aW9uOjpXZWJDb25uZWN0aW9uKFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29u
bmVjdGlvbj4gY29ubmVjdGlvbikKLSAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorV2Vi
Q29ubmVjdGlvbjo6V2ViQ29ubmVjdGlvbigpCiB7CiB9CiAKQEAgLTUwLDE0ICs0OCwyNCBAQCB2
b2lkIFdlYkNvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uCiAKIHZvaWQgV2ViQ29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBt
ZXNzYWdlQm9keSkKIHsKLSAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICBpZiAoIWhhc1ZhbGlk
Q29ubmVjdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBPd25QdHI8Q29yZUlQQzo6TWVz
c2FnZUVuY29kZXI+IGVuY29kZXIgPSBDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcjo6Y3JlYXRlKE1l
c3NhZ2VzOjpXZWJDb25uZWN0aW9uOjpIYW5kbGVNZXNzYWdlOjpyZWNlaXZlck5hbWUoKSwgTWVz
c2FnZXM6OldlYkNvbm5lY3Rpb246OkhhbmRsZU1lc3NhZ2U6Om5hbWUoKSwgMCk7CiAgICAgZW5j
b2Rlci0+ZW5jb2RlKG1lc3NhZ2VOYW1lKTsKICAgICBlbmNvZGVNZXNzYWdlQm9keSgqZW5jb2Rl
ciwgbWVzc2FnZUJvZHkpOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kTWVzc2FnZShDb3JlSVBD
OjpNZXNzYWdlSUQoTWVzc2FnZXM6OldlYkNvbm5lY3Rpb246OkhhbmRsZU1lc3NhZ2U6Om1lc3Nh
Z2VJRCksIGVuY29kZXIucmVsZWFzZSgpKTsKKyAgICBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNz
YWdlSUQoTWVzc2FnZXM6OldlYkNvbm5lY3Rpb246OkhhbmRsZU1lc3NhZ2U6Om1lc3NhZ2VJRCks
IGVuY29kZXIucmVsZWFzZSgpKTsKK30KKwordm9pZCBXZWJDb25uZWN0aW9uOjpkaWRDbG9zZSgp
Cit7CisgICAgbV9jbGllbnQuZGlkQ2xvc2UodGhpcyk7Cit9CisKK3ZvaWQgV2ViQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29y
ZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29k
ZXIpCit7CisgICAgZGlkUmVjZWl2ZVdlYkNvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIG1l
c3NhZ2VJRCwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViQ29ubmVjdGlvbjo6aGFuZGxlTWVzc2Fn
ZShDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTczLDEwICs4MSw0IEBAIHZv
aWQgV2ViQ29ubmVjdGlvbjo6aGFuZGxlTWVzc2FnZShDb3JlSVAKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQog
Ci12b2lkIFdlYkNvbm5lY3Rpb246OmludmFsaWRhdGUoKQotewotICAgIG1fY29ubmVjdGlvbi0+
aW52YWxpZGF0ZSgpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCShy
ZXZpc2lvbiAxMzUxODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw0NSArMjcsNDUgQEAKICNkZWZpbmUgV2ViQ29ubmVjdGlv
bl9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvbkNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIENvcmVJUEMgewot
ICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKLSAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7Ci0g
ICAgY2xhc3MgQ29ubmVjdGlvbjsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwotICAgIGNsYXNz
IE1lc3NhZ2VEZWNvZGVyOwotICAgIGNsYXNzIE1lc3NhZ2VFbmNvZGVyOwotICAgIGNsYXNzIE1l
c3NhZ2VJRDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkNvbm5lY3Rpb24g
OiBwdWJsaWMgQVBJT2JqZWN0IHsKK2NsYXNzIFdlYkNvbm5lY3Rpb24gOiBwdWJsaWMgQVBJT2Jq
ZWN0LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ29yZUlQQzo6TWVz
c2FnZVNlbmRlcjxXZWJDb25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5
cGUgQVBJVHlwZSA9IFR5cGVDb25uZWN0aW9uOwogICAgIHZpcnR1YWwgfldlYkNvbm5lY3Rpb24o
KTsKIAotICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7IH0KLQogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQo
Y29uc3QgV0tDb25uZWN0aW9uQ2xpZW50Kik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBT
dHJpbmcmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZENsb3NlKCk7CiAKLSAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKKyAgICAvLyBVc2VkIGJ5IENvcmVJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICB2
aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgZXhwbGljaXQgV2ViQ29ubmVjdGlvbihQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rp
b24+KTsKKyAgICBleHBsaWNpdCBXZWJDb25uZWN0aW9uKCk7CiAKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBlbmNv
ZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImLCBBUElPYmplY3QqKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGRlY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciYsIFJlZlB0cjxBUElPYmplY3Q+JikgPSAwOwogCisgICAgLy8gQ29yZUlQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURF
OworCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29ubmVjdGlvbk1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKTsKKworICAgIC8vIE1lc2FnZSBoYW5kbGluZyBpbXBsZW1lbnRhdGlvbiBmdW5jdGlv
bnMuCiAgICAgdm9pZCBoYW5kbGVNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAK
LSAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIHZpcnR1
YWwgYm9vbCBoYXNWYWxpZENvbm5lY3Rpb24oKSBjb25zdCA9IDA7CisKICAgICBXZWJDb25uZWN0
aW9uQ2xpZW50IG1fY2xpZW50OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM1
MTg4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyOCArMjYsMjYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAKLSNpbmNsdWRl
ICJXZWJDb25uZWN0aW9uTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2ViQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBSdW5Mb29wKiBydW5Mb29wKQorUGFzc1JlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhwcm9jZXNzLCBjb25uZWN0aW9uSWRlbnRpZmllciwgcnVuTG9vcCkpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhwcm9jZXNzKSk7CiB9CiAKLVdl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBSdW5Mb29wKiBydW5Mb29wKQotICAgIDogV2ViQ29ubmVjdGlvbihD
b3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB0aGlzLCBydW5Mb29wKSkKLSAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQorV2ViQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKIHsKLSNpZiBPUyhEQVJX
SU4pCi0gICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNl
cHRpb25zKCk7Ci0jZWxpZiBQTEFURk9STShRVCkgJiYgIU9TKFdJTkRPV1MpCi0gICAgbV9jb25u
ZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSNlbmRpZgorICAgIG1fcHJvY2Vzcy0+YWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIHRoaXMpOworfQorCit2b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmludmFsaWRh
dGUoKQoreworICAgIG1fcHJvY2VzcyA9IDA7CiB9CiAKIC8vIFdlYkNvbm5lY3Rpb24KQEAgLTYw
LDYyICs1OCwyMiBAQCB2b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuY29kZU1lCiBi
b29sIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEFQSU9iamVjdD4mIG1lc3NhZ2VCb2R5
KQogewogICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZUJvZHlEZWNvZGVy
KG1lc3NhZ2VCb2R5LCBtX3Byb2Nlc3MpOwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNz
YWdlQm9keURlY29kZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobWVzc2FnZUJvZHlEZWNvZGVyKTsKIH0KIAot
Ly8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Ci0KLXZvaWQgV2ViQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXIm
IGRlY29kZXIpCitDb3JlSVBDOjpDb25uZWN0aW9uKiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpjb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1l
c3NhZ2VDbGFzc1dlYkNvbm5lY3Rpb24+KCkpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVdlYkNvbm5l
Y3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBtX3Byb2Nlc3MtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlv
bigpOwogfQogCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdl
SUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgT3duUHRyPENv
cmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQordWludDY0X3QgV2ViQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgbV9wcm9jZXNz
LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyLCBy
ZXBseUVuY29kZXIpOwotfQotCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENs
b3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCi17Ci0gICAgUmVmUHRyPFdlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3Rvcih0aGlzKTsKLQotICAgIG1fcHJvY2Vzcy0+
ZGlkQ2xvc2UoY29ubmVjdGlvbik7Ci0KLSAgICAvLyBUZWxsIHRoZSBBUEkgY2xpZW50IHRoYXQg
dGhlIGNvbm5lY3Rpb24gY2xvc2VkLgotICAgIG1fY2xpZW50LmRpZENsb3NlKHRoaXMpOwotfQot
Ci12b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lKQotewotICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm90ZWN0b3Ig
PSB0aGlzOwotICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3MgPSBtX3Byb2Nlc3M7
Ci0KLSAgICAvLyBUaGlzIHdpbGwgaW52YWxpZGF0ZSB0aGUgQ29yZUlQQzo6Q29ubmVjdGlvbiBh
bmQgdGhlIFdlYlByb2Nlc3NQcm94eSBtZW1iZXIKLSAgICAvLyB2YXJpYWJsZXMsIHNvIHdlIHNo
b3VsZCBiZSBjYXJlZnVsIG5vdCB0byB1c2UgdGhlbSBhZnRlciB0aGlzIGNhbGwuCi0gICAgcHJv
Y2Vzcy0+ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIG1lc3NhZ2VOYW1lKTsKLQotICAgIC8vIFNpbmNlIHdlJ3ZlIGludmFsaWRhdGVkIHRo
ZSBjb25uZWN0aW9uIHdlJ2xsIG5ldmVyIGdldCBhIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dDo6ZGlkQ2xvc2UKLSAgICAvLyBjYWxsYmFjayBzbyB3ZSdsbCBleHBsaWNpdGx5IGNhbGwgaXQg
aGVyZSBpbnN0ZWFkLgotICAgIHByb2Nlc3MtPmRpZENsb3NlKGNvbm5lY3Rpb24pOwotCi0gICAg
Ly8gVGVsbCB0aGUgQVBJIGNsaWVudCB0aGF0IHRoZSBjb25uZWN0aW9uIGNsb3NlZC4KLSAgICBt
X2NsaWVudC5kaWRDbG9zZSh0aGlzKTsKKyAgICByZXR1cm4gMDsKIH0KIAotI2lmIFBMQVRGT1JN
KFdJTikKLVZlY3RvcjxIV05EPiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3aW5kb3dzVG9S
ZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KCkKK2Jvb2wgV2ViQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVmFsaWRDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcm9jZXNzLT53aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5n
Rm9yU3luY1JlcGx5KCk7CisgICAgcmV0dXJuIG1fcHJvY2VzczsKIH0KLSNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTM1MTg4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMzMgKzI2LDI5IEBACiAjaWZuZGVmIFdlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NfaAogI2RlZmluZSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKIAotI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKLWNsYXNzIFdlYkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgOiBwdWJsaWMgV2ViQ29ubmVjdGlvbiwgcHVibGljIENvcmVJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudCB7CitjbGFzcyBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGlj
IFdlYkNvbm5lY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShXZWJQcm9jZXNzUHJveHkqLCBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKFdlYlByb2Nlc3NQcm94eSop
OwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkoKSBjb25zdCB7IHJldHVy
biBtX3Byb2Nlc3M7IH0KKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBwcml2YXRlOgotICAg
IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiwgQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciwgV2ViQ29yZTo6UnVuTG9vcCopOworICAgIFdlYkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKICAgICAvLyBXZWJDb25uZWN0aW9u
CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciYsIEFQSU9iamVjdCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVNZXNz
YWdlQm9keShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBSZWZQdHI8QVBJT2JqZWN0PiYpIE9W
RVJSSURFOwotCi0gICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5j
b2Rlcj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiop
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBD
b3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpOwotI2lmIFBMQVRGT1JNKFdJTikK
LSAgICB2aXJ0dWFsIFZlY3RvcjxIV05EPiB3aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hp
bGVXYWl0aW5nRm9yU3luY1JlcGx5KCk7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIENvcmVJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
VmFsaWRDb25uZWN0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBXZWJQcm9jZXNzUHJveHkq
IG1fcHJvY2VzczsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTM1MTg4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsMTAg
QEAgV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKIHsKICAgICBpZiAobV9jb25u
ZWN0aW9uKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKLSAgICAKKworICAg
IGlmIChtX3dlYkNvbm5lY3Rpb24pCisgICAgICAgIG1fd2ViQ29ubmVjdGlvbi0+aW52YWxpZGF0
ZSgpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdNZXNzYWdlcy5zaXpl
KCk7ICsraSkKICAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3QucmVsZWFzZUFyZ3Vt
ZW50cygpOwogCkBAIC0xMTcsMTAgKzEyMCwxMCBAQCBXZWJQcm9jZXNzUHJveHk6On5XZWJQcm9j
ZXNzUHJveHkoKQogV2ViUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUHJveHk6OmZyb21Db25uZWN0
aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKGNvbm5l
Y3Rpb24pOwotICAgIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIHdlYkNvbm5lY3Rpb24gPSBz
dGF0aWNfY2FzdDxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzKj4oY29ubmVjdGlvbi0+Y2xpZW50
KCkpOwogCi0gICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkgPSB3ZWJDb25uZWN0
aW9uLT53ZWJQcm9jZXNzUHJveHkoKTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQ
cm94eSA9IHN0YXRpY19jYXN0PFdlYlByb2Nlc3NQcm94eSo+KGNvbm5lY3Rpb24tPmNsaWVudCgp
KTsKICAgICBBU1NFUlQod2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCkgPT0gY29ubmVjdGlv
bik7CisKICAgICByZXR1cm4gd2ViUHJvY2Vzc1Byb3h5OwogfQogCkBAIC0xMzgsMTEgKzE0MSwx
NiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y29ubmVjdCgpCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgaWYgKG1fY29ubmVjdGlvbikgewotICAgICAgICBtX2Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+cmVtb3ZlUXVldWVDbGllbnQodGhpcyk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+cmVtb3ZlUXVldWVDbGllbnQodGhpcyk7CiAgICAgICAgIG1fY29ubmVj
dGlvbi0+aW52YWxpZGF0ZSgpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAg
IH0KIAorICAgIGlmIChtX3dlYkNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV93ZWJDb25uZWN0aW9u
LT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fd2ViQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAg
fQorCiAgICAgbV9yZXNwb25zaXZlbmVzc1RpbWVyLnN0b3AoKTsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8V2ViRnJhbWVQcm94eT4gPiBmcmFtZXM7CkBAIC0xODUsNiArMTkzLDExIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGUoKQogICAgICAgICBtX3Byb2Nlc3NMYXVuY2hlci0+dGVy
bWluYXRlUHJvY2VzcygpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJl
Y2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3Jl
SVBDOjpNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlcikKK3sKKyAgICBtX21lc3NhZ2VS
ZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2Fn
ZVJlY2VpdmVyKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZl
cihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIp
CiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CkBAIC00OTMsNiAr
NTA2LDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6OgogICAgIC8v
IHRvIGJlIGRlbGV0ZWQgYmVmb3JlIHdlIGNhbiBmaW5pc2ggb3VyIHdvcmsuCiAgICAgUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdCh0aGlzKTsKIAorICAgIHdlYkNvbm5lY3Rpb24oKS0+
ZGlkQ2xvc2UoKTsKKwogICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5PiA+IHBhZ2VzOwog
ICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKIApAQCAtNTAwLDE0ICs1
MTUsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6OgogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwYWdlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCiAg
ICAgICAgIHBhZ2VzW2ldLT5wcm9jZXNzRGlkQ3Jhc2goKTsKKwogfQogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lKQogewogICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQgYW4gaW52
YWxpZCBtZXNzYWdlIFwiJXMuJXNcIiBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIsIG1lc3NhZ2VS
ZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0
YSgpKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgV2ViUHJvY2Vzc2VzLgogICAgIHRlcm1pbmF0
ZSgpOworCisgICAgLy8gU2luY2Ugd2UndmUgaW52YWxpZGF0ZWQgdGhlIGNvbm5lY3Rpb24gd2Un
bGwgbmV2ZXIgZ2V0IGEgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50OjpkaWRDbG9zZQorICAg
IC8vIGNhbGxiYWNrIHNvIHdlJ2xsIGV4cGxpY2l0bHkgY2FsbCBpdCBoZXJlIGluc3RlYWQuCisg
ICAgZGlkQ2xvc2UoY29ubmVjdGlvbik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUoUmVzcG9uc2l2ZW5lc3NUaW1lciopCkBAIC01NDIsMTAgKzU2Miwx
OCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24p
OwotICAgIAotICAgIG1fY29ubmVjdGlvbiA9IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNy
ZWF0ZSh0aGlzLCBjb25uZWN0aW9uSWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQodGhpcyk7Ci0gICAgbV9j
b25uZWN0aW9uLT5jb25uZWN0aW9uKCktPm9wZW4oKTsKKworICAgIG1fY29ubmVjdGlvbiA9IENv
cmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50
aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7CisjaWYgT1MoREFSV0lOKQorICAgIG1fY29u
bmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25NYWNoRXhjZXB0aW9ucygpOworI2Vs
aWYgUExBVEZPUk0oUVQpICYmICFPUyhXSU5ET1dTKQorICAgIG1fY29ubmVjdGlvbi0+c2V0U2hv
dWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24ocHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CisjZW5kaWYKKworICAgIG1fY29ubmVjdGlvbi0+YWRkUXVldWVDbGllbnQo
dGhpcyk7CisgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CisKKyAgICBtX3dlYkNvbm5lY3Rpb24g
PSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IENvcmVJUEM6OkNvbm5lY3Rpb246Ok91dGdvaW5nTWVzc2FnZSYgb3V0Z29pbmdNZXNzYWdlID0g
bV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAxMzUxODgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYw
LDcgQEAgY2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIHN0cnVjdCBXZWJO
YXZpZ2F0aW9uRGF0YVN0b3JlOwogCi1jbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6
Q2xpZW50LCBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIFByb2Nlc3NMYXVuY2hlcjo6Q2xp
ZW50LCAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6UXVldWVDbGllbnQgeworY2xhc3MgV2ViUHJvY2Vz
c1Byb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIENv
cmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBQ
cm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6UXVldWVDbGllbnQg
ewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1l
UHJveHk+ID4gV2ViRnJhbWVQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiA+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1N
YXA7CkBAIC03OCwxNCArNzgsMTQgQEAgcHVibGljOgogICAgIENvcmVJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24oKSBjb25zdAogICAgIHsgCiAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24p
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOyAK
KyAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKICAgICB9CiAKKyAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKik7CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciopOwogICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKIAotICAgIFdlYkNvbm5lY3Rpb24q
IHdlYkNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAg
ICBXZWJDb25uZWN0aW9uKiB3ZWJDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25u
ZWN0aW9uLmdldCgpOyB9CiAKICAgICBXZWJDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKQEAgLTIwNyw5ICsyMDcsOSBAQCBwcml2YXRlOgogCiAg
ICAgUmVzcG9uc2l2ZW5lc3NUaW1lciBtX3Jlc3BvbnNpdmVuZXNzVGltZXI7CiAgICAgCi0gICAg
Ly8gVGhpcyBpcyBub3QgYSBDb3JlSVBDOjpDb25uZWN0aW9uIHNvIHRoYXQgd2UgY2FuIHdyYXAg
dGhlIENvcmVJUEM6OkNvbm5lY3Rpb24gaW4KLSAgICAvLyBhbiBBUEkgb2JqZWN0LgotICAgIFJl
ZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CisKKyAgICBSZWZQ
dHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlZlB0cjxXZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAgICAgQ29yZUlQQzo6TWVzc2Fn
ZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogCiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxDb3JlSVBDOjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UsIHVuc2lnbmVkPiA+IG1fcGVu
ZGluZ01lc3NhZ2VzOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM1MTg4KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywyNCArMjcsMjcgQEAKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3MuaCIKIAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMu
aCIKLSNpbmNsdWRlICJXZWJDb25uZWN0aW9uTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2Vi
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzPiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZShX
ZWJQcm9jZXNzKiBwcm9jZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBSdW5Mb29wKiBydW5Mb29wKQorUGFzc1JlZlB0cjxXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3M+IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6Y3JlYXRlKFdlYlByb2Nl
c3MqIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3MocHJvY2VzcywgY29ubmVjdGlvbklkZW50aWZpZXIsIHJ1bkxvb3ApKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyhwcm9jZXNzKSk7CiB9
CiAKLVdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKFdl
YlByb2Nlc3MqIHByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIsIFJ1bkxvb3AqIHJ1bkxvb3ApCi0gICAgOiBXZWJDb25uZWN0aW9uKENv
cmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50
aWZpZXIsIHRoaXMsIHJ1bkxvb3ApKQotICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCitXZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3M6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcyhXZWJQcm9jZXNzKiBw
cm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5z
ZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKENoaWxkUHJvY2Vzczo6ZGlk
Q2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOwotICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxk
RXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVyZSh0cnVlKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCB0aGlzKTsKK30KKwordm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmludmFsaWRh
dGUoKQoreworICAgIG1fcHJvY2VzcyA9IDA7CiB9CiAKIC8vIFdlYkNvbm5lY3Rpb24KQEAgLTYw
LDM3ICs2MywxOSBAQCBib29sIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6ZGVjb2RlTWVzCiAg
ICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKG1lc3NhZ2VCb2R5RGVjb2Rlcik7CiB9CiAKLS8vIENv
cmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAotdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6
OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJ
UEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVy
KQotewotICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViQ29ubmVj
dGlvbj4oKSkgewotICAgICAgICBkaWRSZWNlaXZlV2ViQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVj
dGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1fcHJvY2Vzcy0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNv
ZGVyKTsKLX0KLQotdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdl
SUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgT3duUHRyPENv
cmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIG1fcHJvY2Vzcy0+
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKTsKLX0KLQotdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRpZENsb3Nl
KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCitDb3JlSVBDOjpDb25uZWN0aW9uKiBX
ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNvbm5lY3Rpb24oKSBjb25zdAogewotICAgIG1fcHJv
Y2Vzcy0+ZGlkQ2xvc2UoY29ubmVjdGlvbik7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVj
dGlvbigpOwogfQogCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpCit1aW50NjRfdCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRlc3Rp
bmF0aW9uSUQoKSBjb25zdAogewotICAgIG1fcHJvY2Vzcy0+ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBy
ZXR1cm4gMDsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikKLVZlY3RvcjxIV05EPiBXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3M6OndpbmRvd3NUb1JlY2VpdmVTZW50TWVzc2FnZXNXaGlsZVdhaXRpbmdG
b3JTeW5jUmVwbHkoKQorYm9vbCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6Omhhc1ZhbGlkQ29u
bmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJvY2Vzcy0+d2luZG93c1RvUmVjZWl2
ZVNlbnRNZXNzYWdlc1doaWxlV2FpdGluZ0ZvclN5bmNSZXBseSgpOworICAgIHJldHVybiBtX3By
b2Nlc3M7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmgJ
KHJldmlzaW9uIDEzNTE4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMyICsyNiwyNyBAQAogI2lm
bmRlZiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3NfaAogI2RlZmluZSBXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3NfaAogCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvbm5l
Y3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3M7CiAKLWNs
YXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcyA6IHB1YmxpYyBXZWJDb25uZWN0aW9uLCBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQgeworY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNz
IDogcHVibGljIFdlYkNvbm5lY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gY3JlYXRlKFdlYlByb2Nlc3MqLCBDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBjcmVhdGUoV2ViUHJvY2VzcyopOwor
CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29ubmVjdGlvblRv
VUlQcm9jZXNzKFdlYlByb2Nlc3MqLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSdW5Mb29wKik7CisgICAgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKFdlYlByb2Nl
c3MqKTsKIAogICAgIC8vIFdlYkNvbm5lY3Rpb24KICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlTWVz
c2FnZUJvZHkoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiwgQVBJT2JqZWN0KikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIGRlY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciYsIFJlZlB0cjxBUElPYmplY3Q+JikgT1ZFUlJJREU7Ci0KLSAgICAvLyBDb3JlSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgT1ZFUlJJREU7Ci0jaWYgUExBVEZPUk0oV0lOKQot
ICAgIHZpcnR1YWwgVmVjdG9yPEhXTkQ+IHdpbmRvd3NUb1JlY2VpdmVTZW50TWVzc2FnZXNXaGls
ZVdhaXRpbmdGb3JTeW5jUmVwbHkoKTsKLSNlbmRpZgorICAgIHZpcnR1YWwgQ29yZUlQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdWludDY0
X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNW
YWxpZENvbm5lY3Rpb24oKSBjb25zdCBPVkVSUklERTsKIAogICAgIFdlYlByb2Nlc3MqIG1fcHJv
Y2VzczsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDEzNTE4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCwxMiArMTg4LDE1IEBAIHZvaWQgV2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZShDb3JlSVBDOjpDb24KIHsKICAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7
CiAKLSAgICBtX2Nvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZSh0
aGlzLCBzZXJ2ZXJJZGVudGlmaWVyLCBydW5Mb29wKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKHNlcnZlcklkZW50aWZpZXIs
IHRoaXMsIHJ1bkxvb3ApOworICAgIG1fY29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rp
b25Xb3JrUXVldWVDYWxsYmFjayhDaGlsZFByb2Nlc3M6OmRpZENsb3NlT25Db25uZWN0aW9uV29y
a1F1ZXVlKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2Vu
ZEZhaWx1cmUodHJ1ZSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRRdWV1ZUNsaWVudCgmbV9ldmVu
dERpc3BhdGNoZXIpOworICAgIG1fY29ubmVjdGlvbi0+YWRkUXVldWVDbGllbnQodGhpcyk7Cisg
ICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS0+YWRkUXVldWVDbGllbnQoJm1fZXZlbnREaXNwYXRjaGVyKTsKLSAgICBtX2Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQodGhpcyk7CisgICAgbV93ZWJDb25uZWN0aW9u
ID0gV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKLSAgICBtX2Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS0+b3BlbigpOwogICAgIG1fcnVuTG9vcCA9IHJ1bkxvb3A7CiAK
ICAgICBzdGFydFJhbmRvbUNyYXNoVGhyZWFkSWZSZXF1ZXN0ZWQoKTsKQEAgLTY2MCw2ICs2NjMs
OSBAQCB2b2lkIFdlYlByb2Nlc3M6OnRlcm1pbmF0ZSgpCiAgICAgbV9jb25uZWN0aW9uLT5pbnZh
bGlkYXRlKCk7CiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKIAorICAgIG1fd2ViQ29ubmVj
dGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fd2ViQ29ubmVjdGlvbiA9IG51bGxwdHI7CisKICAg
ICBwbGF0Zm9ybVRlcm1pbmF0ZSgpOwogICAgIG1fcnVuTG9vcC0+c3RvcCgpOwogfQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDEzNTE4OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTUsMTUgKzExNSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemUoQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgV2ViQ29yZTo6UnVuTG9vcCopOwogCi0gICAgQ29y
ZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpOyB9CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIFdlYkNvcmU6OlJ1bkxv
b3AqIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3A7IH0KIAogICAgIHZvaWQgYWRk
TWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIqKTsKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNl
aXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKik7Ci0KICAgICB2b2lk
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAKLSAgICBXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29ubmVjdGlvbi5nZXQoKTsgfQorICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgp
OyB9CiAKICAgICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CiAgICAg
dm9pZCBjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYpOwpAQCAtMzA5LDkgKzMwOCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5y
ZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFdURjo6U3RyaW5nJik7CiAjZW5k
aWYKIAotICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fY29ubmVjdGlvbjsK
KyAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIENvcmVJ
UEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKIAorICAgIFJlZlB0
cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKKwogICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+IG1fcGFnZU1hcDsKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID4gbV9wYWdlR3JvdXBNYXA7CiAgICAg
UmVmUHRyPEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175247</attachid>
            <date>2012-11-20 10:53:21 -0800</date>
            <delta_ts>2012-11-20 21:23:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102771-20121120105110.patch</filename>
            <type>text/plain</type>
            <size>28988</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTI1NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTExLTE5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2ltcGxpZnkgV2ViQ29ubmVjdGlvbiBi
eSByZW1vdmluZyBpdHMgdW5kZXJseWluZyBDb3JlSVBDOjpDb25uZWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI3NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGhhdmluZyBX
ZWJDb25uZWN0aW9uIHN1YmNsYXNzZXMgb3duIHRoZSBDb3JlSVBDOjpDb25uZWN0aW9uLAorICAg
ICAgICBtb3ZlIGJhY2sgdG8gaGF2aW5nIHRoZSBXZWJQcm9jZXNzIGFuZCBXZWJQcm9jZXNzUHJv
eHkgb3duIGl0IChhbmQgYmUKKyAgICAgICAgaXRzIENvbm5lY3Rpb246OkNsaWVudCkgYW5kIHVz
ZSB0aGUgbmV3IE1lc3NhZ2VSZWNlaXZlciBjbGFzcyB0byB2ZW5kCisgICAgICAgIG1lc3NhZ2Vz
IHRvIHRoZSBXZWJDb25uZWN0aW9uLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb25uZWN0aW9uOjpXZWJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29ubmVjdGlv
bi5oOgorICAgICAgICBNYWtlIFdlYkNvbm5lY3Rpb24gYm90aCBhIE1lc3NhZ2VSZWNlaXZlciBh
bmQgTWVzc2FnZVNlbmRlcgorICAgICAgICBhbmQgYWRkIHZpcnR1YWwgZnVuY3Rpb25zIGZvciBk
ZXJpdmVkIGNsYXNzZXMgdG8gZmlsbCBpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWNvZGVNZXNzYWdlQm9keSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZXN0aW5hdGlvbklEKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVmFsaWRDb25uZWN0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojph
ZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRp
ZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOjpXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjpkZXN0aW5hdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzOjpoYXNWYWxpZENvbm5lY3Rpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmg6CisgICAgICAgIChXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjp0ZXJtaW5hdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6d2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKToKKyAgICAgICAg
TW92ZSB0aGUgQ29yZUlQQzo6Q29ubmVjdGlvbiBiYWNrIHRvIHRoZSBwcm9jZXNzZXMuCisKIDIw
MTItMTEtMTkgIEt5dW5nVGFlIEtpbSAgPGt0Zi5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W1dLMl0gVW51c2VkIHBhcmFtZXRlcnMgb24gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMTM1
MTg4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywxNSArMjcsMTMgQEAKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1XZWJDb25uZWN0aW9uOjpXZWJDb25uZWN0aW9uKFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29u
bmVjdGlvbj4gY29ubmVjdGlvbikKLSAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorV2Vi
Q29ubmVjdGlvbjo6V2ViQ29ubmVjdGlvbigpCiB7CiB9CiAKQEAgLTUwLDE0ICs0OCwyNCBAQCB2
b2lkIFdlYkNvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uCiAKIHZvaWQgV2ViQ29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBt
ZXNzYWdlQm9keSkKIHsKLSAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICBpZiAoIWhhc1ZhbGlk
Q29ubmVjdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBPd25QdHI8Q29yZUlQQzo6TWVz
c2FnZUVuY29kZXI+IGVuY29kZXIgPSBDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcjo6Y3JlYXRlKE1l
c3NhZ2VzOjpXZWJDb25uZWN0aW9uOjpIYW5kbGVNZXNzYWdlOjpyZWNlaXZlck5hbWUoKSwgTWVz
c2FnZXM6OldlYkNvbm5lY3Rpb246OkhhbmRsZU1lc3NhZ2U6Om5hbWUoKSwgMCk7CiAgICAgZW5j
b2Rlci0+ZW5jb2RlKG1lc3NhZ2VOYW1lKTsKICAgICBlbmNvZGVNZXNzYWdlQm9keSgqZW5jb2Rl
ciwgbWVzc2FnZUJvZHkpOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kTWVzc2FnZShDb3JlSVBD
OjpNZXNzYWdlSUQoTWVzc2FnZXM6OldlYkNvbm5lY3Rpb246OkhhbmRsZU1lc3NhZ2U6Om1lc3Nh
Z2VJRCksIGVuY29kZXIucmVsZWFzZSgpKTsKKyAgICBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNz
YWdlSUQoTWVzc2FnZXM6OldlYkNvbm5lY3Rpb246OkhhbmRsZU1lc3NhZ2U6Om1lc3NhZ2VJRCks
IGVuY29kZXIucmVsZWFzZSgpKTsKK30KKwordm9pZCBXZWJDb25uZWN0aW9uOjpkaWRDbG9zZSgp
Cit7CisgICAgbV9jbGllbnQuZGlkQ2xvc2UodGhpcyk7Cit9CisKK3ZvaWQgV2ViQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29y
ZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29k
ZXIpCit7CisgICAgZGlkUmVjZWl2ZVdlYkNvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIG1l
c3NhZ2VJRCwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViQ29ubmVjdGlvbjo6aGFuZGxlTWVzc2Fn
ZShDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTczLDEwICs4MSw0IEBAIHZv
aWQgV2ViQ29ubmVjdGlvbjo6aGFuZGxlTWVzc2FnZShDb3JlSVAKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQog
Ci12b2lkIFdlYkNvbm5lY3Rpb246OmludmFsaWRhdGUoKQotewotICAgIG1fY29ubmVjdGlvbi0+
aW52YWxpZGF0ZSgpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCShy
ZXZpc2lvbiAxMzUxODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw0NSArMjcsNDUgQEAKICNkZWZpbmUgV2ViQ29ubmVjdGlv
bl9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvbkNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIENvcmVJUEMgewot
ICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKLSAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7Ci0g
ICAgY2xhc3MgQ29ubmVjdGlvbjsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwotICAgIGNsYXNz
IE1lc3NhZ2VEZWNvZGVyOwotICAgIGNsYXNzIE1lc3NhZ2VFbmNvZGVyOwotICAgIGNsYXNzIE1l
c3NhZ2VJRDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkNvbm5lY3Rpb24g
OiBwdWJsaWMgQVBJT2JqZWN0IHsKK2NsYXNzIFdlYkNvbm5lY3Rpb24gOiBwdWJsaWMgQVBJT2Jq
ZWN0LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ29yZUlQQzo6TWVz
c2FnZVNlbmRlcjxXZWJDb25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5
cGUgQVBJVHlwZSA9IFR5cGVDb25uZWN0aW9uOwogICAgIHZpcnR1YWwgfldlYkNvbm5lY3Rpb24o
KTsKIAotICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7IH0KLQogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQo
Y29uc3QgV0tDb25uZWN0aW9uQ2xpZW50Kik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBT
dHJpbmcmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZENsb3NlKCk7CiAKLSAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKKyAgICAvLyBVc2VkIGJ5IENvcmVJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICB2
aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgZXhwbGljaXQgV2ViQ29ubmVjdGlvbihQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rp
b24+KTsKKyAgICBleHBsaWNpdCBXZWJDb25uZWN0aW9uKCk7CiAKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBlbmNv
ZGVNZXNzYWdlQm9keShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImLCBBUElPYmplY3QqKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGRlY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciYsIFJlZlB0cjxBUElPYmplY3Q+JikgPSAwOwogCisgICAgLy8gQ29yZUlQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURF
OworCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29ubmVjdGlvbk1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKTsKKworICAgIC8vIE1lc2FnZSBoYW5kbGluZyBpbXBsZW1lbnRhdGlvbiBmdW5jdGlv
bnMuCiAgICAgdm9pZCBoYW5kbGVNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAK
LSAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIHZpcnR1
YWwgYm9vbCBoYXNWYWxpZENvbm5lY3Rpb24oKSBjb25zdCA9IDA7CisKICAgICBXZWJDb25uZWN0
aW9uQ2xpZW50IG1fY2xpZW50OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM1
MTg4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyOCArMjYsMjYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAKLSNpbmNsdWRl
ICJXZWJDb25uZWN0aW9uTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2ViQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBSdW5Mb29wKiBydW5Mb29wKQorUGFzc1JlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhwcm9jZXNzLCBjb25uZWN0aW9uSWRlbnRpZmllciwgcnVuTG9vcCkpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhwcm9jZXNzKSk7CiB9CiAKLVdl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBSdW5Mb29wKiBydW5Mb29wKQotICAgIDogV2ViQ29ubmVjdGlvbihD
b3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB0aGlzLCBydW5Mb29wKSkKLSAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQorV2ViQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKIHsKLSNpZiBPUyhEQVJX
SU4pCi0gICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNl
cHRpb25zKCk7Ci0jZWxpZiBQTEFURk9STShRVCkgJiYgIU9TKFdJTkRPV1MpCi0gICAgbV9jb25u
ZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSNlbmRpZgorICAgIG1fcHJvY2Vzcy0+YWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIHRoaXMpOworfQorCit2b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmludmFsaWRh
dGUoKQoreworICAgIG1fcHJvY2VzcyA9IDA7CiB9CiAKIC8vIFdlYkNvbm5lY3Rpb24KQEAgLTYw
LDYyICs1OCwyMiBAQCB2b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuY29kZU1lCiBi
b29sIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEFQSU9iamVjdD4mIG1lc3NhZ2VCb2R5
KQogewogICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZUJvZHlEZWNvZGVy
KG1lc3NhZ2VCb2R5LCBtX3Byb2Nlc3MpOwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNz
YWdlQm9keURlY29kZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobWVzc2FnZUJvZHlEZWNvZGVyKTsKIH0KIAot
Ly8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Ci0KLXZvaWQgV2ViQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXIm
IGRlY29kZXIpCitDb3JlSVBDOjpDb25uZWN0aW9uKiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpjb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1l
c3NhZ2VDbGFzc1dlYkNvbm5lY3Rpb24+KCkpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVdlYkNvbm5l
Y3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBtX3Byb2Nlc3MtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlv
bigpOwogfQogCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdl
SUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgT3duUHRyPENv
cmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQordWludDY0X3QgV2ViQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgbV9wcm9jZXNz
LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyLCBy
ZXBseUVuY29kZXIpOwotfQotCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENs
b3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCi17Ci0gICAgUmVmUHRyPFdlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3Rvcih0aGlzKTsKLQotICAgIG1fcHJvY2Vzcy0+
ZGlkQ2xvc2UoY29ubmVjdGlvbik7Ci0KLSAgICAvLyBUZWxsIHRoZSBBUEkgY2xpZW50IHRoYXQg
dGhlIGNvbm5lY3Rpb24gY2xvc2VkLgotICAgIG1fY2xpZW50LmRpZENsb3NlKHRoaXMpOwotfQot
Ci12b2lkIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lKQotewotICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm90ZWN0b3Ig
PSB0aGlzOwotICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3MgPSBtX3Byb2Nlc3M7
Ci0KLSAgICAvLyBUaGlzIHdpbGwgaW52YWxpZGF0ZSB0aGUgQ29yZUlQQzo6Q29ubmVjdGlvbiBh
bmQgdGhlIFdlYlByb2Nlc3NQcm94eSBtZW1iZXIKLSAgICAvLyB2YXJpYWJsZXMsIHNvIHdlIHNo
b3VsZCBiZSBjYXJlZnVsIG5vdCB0byB1c2UgdGhlbSBhZnRlciB0aGlzIGNhbGwuCi0gICAgcHJv
Y2Vzcy0+ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIG1lc3NhZ2VOYW1lKTsKLQotICAgIC8vIFNpbmNlIHdlJ3ZlIGludmFsaWRhdGVkIHRo
ZSBjb25uZWN0aW9uIHdlJ2xsIG5ldmVyIGdldCBhIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dDo6ZGlkQ2xvc2UKLSAgICAvLyBjYWxsYmFjayBzbyB3ZSdsbCBleHBsaWNpdGx5IGNhbGwgaXQg
aGVyZSBpbnN0ZWFkLgotICAgIHByb2Nlc3MtPmRpZENsb3NlKGNvbm5lY3Rpb24pOwotCi0gICAg
Ly8gVGVsbCB0aGUgQVBJIGNsaWVudCB0aGF0IHRoZSBjb25uZWN0aW9uIGNsb3NlZC4KLSAgICBt
X2NsaWVudC5kaWRDbG9zZSh0aGlzKTsKKyAgICByZXR1cm4gMDsKIH0KIAotI2lmIFBMQVRGT1JN
KFdJTikKLVZlY3RvcjxIV05EPiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3aW5kb3dzVG9S
ZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KCkKK2Jvb2wgV2ViQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVmFsaWRDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcm9jZXNzLT53aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5n
Rm9yU3luY1JlcGx5KCk7CisgICAgcmV0dXJuIG1fcHJvY2VzczsKIH0KLSNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTM1MTg4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMzMgKzI2LDI5IEBACiAjaWZuZGVmIFdlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NfaAogI2RlZmluZSBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKIAotI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKLWNsYXNzIFdlYkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgOiBwdWJsaWMgV2ViQ29ubmVjdGlvbiwgcHVibGljIENvcmVJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudCB7CitjbGFzcyBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGlj
IFdlYkNvbm5lY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShXZWJQcm9jZXNzUHJveHkqLCBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKFdlYlByb2Nlc3NQcm94eSop
OwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkoKSBjb25zdCB7IHJldHVy
biBtX3Byb2Nlc3M7IH0KKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBwcml2YXRlOgotICAg
IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiwgQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciwgV2ViQ29yZTo6UnVuTG9vcCopOworICAgIFdlYkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKICAgICAvLyBXZWJDb25uZWN0aW9u
CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciYsIEFQSU9iamVjdCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVNZXNz
YWdlQm9keShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBSZWZQdHI8QVBJT2JqZWN0PiYpIE9W
RVJSSURFOwotCi0gICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5j
b2Rlcj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiop
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBD
b3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpOwotI2lmIFBMQVRGT1JNKFdJTikK
LSAgICB2aXJ0dWFsIFZlY3RvcjxIV05EPiB3aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hp
bGVXYWl0aW5nRm9yU3luY1JlcGx5KCk7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIENvcmVJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
VmFsaWRDb25uZWN0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBXZWJQcm9jZXNzUHJveHkq
IG1fcHJvY2VzczsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTM1MTg4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsMTAg
QEAgV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKIHsKICAgICBpZiAobV9jb25u
ZWN0aW9uKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKLSAgICAKKworICAg
IGlmIChtX3dlYkNvbm5lY3Rpb24pCisgICAgICAgIG1fd2ViQ29ubmVjdGlvbi0+aW52YWxpZGF0
ZSgpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdNZXNzYWdlcy5zaXpl
KCk7ICsraSkKICAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3QucmVsZWFzZUFyZ3Vt
ZW50cygpOwogCkBAIC0xMTcsMTAgKzEyMCwxMCBAQCBXZWJQcm9jZXNzUHJveHk6On5XZWJQcm9j
ZXNzUHJveHkoKQogV2ViUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUHJveHk6OmZyb21Db25uZWN0
aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKGNvbm5l
Y3Rpb24pOwotICAgIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIHdlYkNvbm5lY3Rpb24gPSBz
dGF0aWNfY2FzdDxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzKj4oY29ubmVjdGlvbi0+Y2xpZW50
KCkpOwogCi0gICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkgPSB3ZWJDb25uZWN0
aW9uLT53ZWJQcm9jZXNzUHJveHkoKTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQ
cm94eSA9IHN0YXRpY19jYXN0PFdlYlByb2Nlc3NQcm94eSo+KGNvbm5lY3Rpb24tPmNsaWVudCgp
KTsKICAgICBBU1NFUlQod2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCkgPT0gY29ubmVjdGlv
bik7CisKICAgICByZXR1cm4gd2ViUHJvY2Vzc1Byb3h5OwogfQogCkBAIC0xMzgsMTEgKzE0MSwx
NiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y29ubmVjdCgpCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgaWYgKG1fY29ubmVjdGlvbikgewotICAgICAgICBtX2Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+cmVtb3ZlUXVldWVDbGllbnQodGhpcyk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+cmVtb3ZlUXVldWVDbGllbnQodGhpcyk7CiAgICAgICAgIG1fY29ubmVj
dGlvbi0+aW52YWxpZGF0ZSgpOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAg
IH0KIAorICAgIGlmIChtX3dlYkNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV93ZWJDb25uZWN0aW9u
LT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fd2ViQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAg
fQorCiAgICAgbV9yZXNwb25zaXZlbmVzc1RpbWVyLnN0b3AoKTsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8V2ViRnJhbWVQcm94eT4gPiBmcmFtZXM7CkBAIC0xODUsNiArMTkzLDExIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGUoKQogICAgICAgICBtX3Byb2Nlc3NMYXVuY2hlci0+dGVy
bWluYXRlUHJvY2VzcygpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJl
Y2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3Jl
SVBDOjpNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlcikKK3sKKyAgICBtX21lc3NhZ2VS
ZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2Fn
ZVJlY2VpdmVyKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZl
cihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIp
CiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CkBAIC00OTMsNiAr
NTA2LDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6OgogICAgIC8v
IHRvIGJlIGRlbGV0ZWQgYmVmb3JlIHdlIGNhbiBmaW5pc2ggb3VyIHdvcmsuCiAgICAgUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdCh0aGlzKTsKIAorICAgIHdlYkNvbm5lY3Rpb24oKS0+
ZGlkQ2xvc2UoKTsKKwogICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5PiA+IHBhZ2VzOwog
ICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKIApAQCAtNTAwLDE0ICs1
MTUsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6OgogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwYWdlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCiAg
ICAgICAgIHBhZ2VzW2ldLT5wcm9jZXNzRGlkQ3Jhc2goKTsKKwogfQogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lKQogewogICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQgYW4gaW52
YWxpZCBtZXNzYWdlIFwiJXMuJXNcIiBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIsIG1lc3NhZ2VS
ZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0
YSgpKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgV2ViUHJvY2Vzc2VzLgogICAgIHRlcm1pbmF0
ZSgpOworCisgICAgLy8gU2luY2Ugd2UndmUgaW52YWxpZGF0ZWQgdGhlIGNvbm5lY3Rpb24gd2Un
bGwgbmV2ZXIgZ2V0IGEgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50OjpkaWRDbG9zZQorICAg
IC8vIGNhbGxiYWNrIHNvIHdlJ2xsIGV4cGxpY2l0bHkgY2FsbCBpdCBoZXJlIGluc3RlYWQuCisg
ICAgZGlkQ2xvc2UoY29ubmVjdGlvbik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUoUmVzcG9uc2l2ZW5lc3NUaW1lciopCkBAIC01NDIsMTAgKzU2Miwx
OCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24p
OwotICAgIAotICAgIG1fY29ubmVjdGlvbiA9IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNy
ZWF0ZSh0aGlzLCBjb25uZWN0aW9uSWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQodGhpcyk7Ci0gICAgbV9j
b25uZWN0aW9uLT5jb25uZWN0aW9uKCktPm9wZW4oKTsKKworICAgIG1fY29ubmVjdGlvbiA9IENv
cmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50
aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7CisjaWYgT1MoREFSV0lOKQorICAgIG1fY29u
bmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25NYWNoRXhjZXB0aW9ucygpOworI2Vs
aWYgUExBVEZPUk0oUVQpICYmICFPUyhXSU5ET1dTKQorICAgIG1fY29ubmVjdGlvbi0+c2V0U2hv
dWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24ocHJvY2Vzc0lkZW50aWZpZXIo
KSk7CisjZW5kaWYKKworICAgIG1fY29ubmVjdGlvbi0+YWRkUXVldWVDbGllbnQodGhpcyk7Cisg
ICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CisKKyAgICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fcGVuZGluZ01lc3NhZ2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIENvcmVJUEM6
OkNvbm5lY3Rpb246Ok91dGdvaW5nTWVzc2FnZSYgb3V0Z29pbmdNZXNzYWdlID0gbV9wZW5kaW5n
TWVzc2FnZXNbaV0uZmlyc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCShyZXZpc2lvbiAxMzUxODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgY2xh
c3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9u
RGF0YVN0b3JlOwogCi1jbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBS
ZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50LCAgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6UXVldWVDbGllbnQgeworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNv
bm5lY3Rpb246OkNsaWVudCwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBQcm9jZXNzTGF1
bmNoZXI6OkNsaWVudCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6UXVldWVDbGllbnQgewogcHVibGlj
OgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+ID4g
V2ViRnJhbWVQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtPiA+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXA7CkBAIC03
OCwxNCArNzgsMTQgQEAgcHVibGljOgogICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24oKSBjb25zdAogICAgIHsgCiAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24pOwotICAgICAg
ICAKLSAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOyAKKyAgICAgICAg
cmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZE1lc3NhZ2VS
ZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29y
ZUlQQzo6TWVzc2FnZVJlY2VpdmVyKik7CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciopOwogICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKIAotICAgIFdlYkNvbm5lY3Rpb24qIHdlYkNvbm5l
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAgICBXZWJDb25u
ZWN0aW9uKiB3ZWJDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdl
dCgpOyB9CiAKICAgICBXZWJDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0LmdldCgpOyB9CiAKQEAgLTIwNyw5ICsyMDcsOSBAQCBwcml2YXRlOgogCiAgICAgUmVzcG9u
c2l2ZW5lc3NUaW1lciBtX3Jlc3BvbnNpdmVuZXNzVGltZXI7CiAgICAgCi0gICAgLy8gVGhpcyBp
cyBub3QgYSBDb3JlSVBDOjpDb25uZWN0aW9uIHNvIHRoYXQgd2UgY2FuIHdyYXAgdGhlIENvcmVJ
UEM6OkNvbm5lY3Rpb24gaW4KLSAgICAvLyBhbiBBUEkgb2JqZWN0LgotICAgIFJlZlB0cjxXZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CisKKyAgICBSZWZQdHI8Q29yZUlQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAgICAgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVy
TWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb3JlSVBD
OjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UsIHVuc2lnbmVkPiA+IG1fcGVuZGluZ01lc3Nh
Z2VzOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM1MTg4KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywyNCArMjcsMjcgQEAKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3Mu
aCIKIAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKLSNpbmNs
dWRlICJXZWJDb25uZWN0aW9uTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2ViQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzPiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZShXZWJQcm9jZXNz
KiBwcm9jZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBSdW5Mb29wKiBydW5Mb29wKQorUGFzc1JlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3M+IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6Y3JlYXRlKFdlYlByb2Nlc3MqIHByb2Nl
c3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3Mo
cHJvY2VzcywgY29ubmVjdGlvbklkZW50aWZpZXIsIHJ1bkxvb3ApKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyhwcm9jZXNzKSk7CiB9CiAKLVdlYkNv
bm5lY3Rpb25Ub1VJUHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKFdlYlByb2Nlc3Mq
IHByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIsIFJ1bkxvb3AqIHJ1bkxvb3ApCi0gICAgOiBXZWJDb25uZWN0aW9uKENvcmVJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRo
aXMsIHJ1bkxvb3ApKQotICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCitXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3M6OldlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcyhXZWJQcm9jZXNzKiBwcm9jZXNzKQor
ICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZXREaWRDbG9z
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKENoaWxkUHJvY2Vzczo6ZGlkQ2xvc2VPbkNv
bm5lY3Rpb25Xb3JrUXVldWUpOwotICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkRXhpdE9uU3lu
Y01lc3NhZ2VTZW5kRmFpbHVyZSh0cnVlKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlz
KTsKK30KKwordm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmludmFsaWRhdGUoKQorewor
ICAgIG1fcHJvY2VzcyA9IDA7CiB9CiAKIC8vIFdlYkNvbm5lY3Rpb24KQEAgLTYwLDM3ICs2Mywx
OSBAQCBib29sIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6ZGVjb2RlTWVzCiAgICAgcmV0dXJu
IGRlY29kZXIuZGVjb2RlKG1lc3NhZ2VCb2R5RGVjb2Rlcik7CiB9CiAKLS8vIENvcmVJUEM6OkNv
bm5lY3Rpb246OkNsaWVudAotdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3Nh
Z2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQotewotICAg
IGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViQ29ubmVjdGlvbj4oKSkg
ewotICAgICAgICBkaWRSZWNlaXZlV2ViQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVjdGlvbiwgbWVz
c2FnZUlELCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fcHJvY2Vz
cy0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKLX0K
LQotdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgT3duUHRyPENvcmVJUEM6Ok1l
c3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIG1fcHJvY2Vzcy0+ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKLX0KLQotdm9pZCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRpZENsb3NlKENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCitDb3JlSVBDOjpDb25uZWN0aW9uKiBXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3M6OmNvbm5lY3Rpb24oKSBjb25zdAogewotICAgIG1fcHJvY2Vzcy0+ZGlk
Q2xvc2UoY29ubmVjdGlvbik7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpOwog
fQogCi12b2lkIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZU5hbWUpCit1aW50NjRfdCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmRlc3RpbmF0aW9uSUQo
KSBjb25zdAogewotICAgIG1fcHJvY2Vzcy0+ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbm5l
Y3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICByZXR1cm4gMDsK
IH0KIAotI2lmIFBMQVRGT1JNKFdJTikKLVZlY3RvcjxIV05EPiBXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3M6OndpbmRvd3NUb1JlY2VpdmVTZW50TWVzc2FnZXNXaGlsZVdhaXRpbmdGb3JTeW5jUmVw
bHkoKQorYm9vbCBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6Omhhc1ZhbGlkQ29ubmVjdGlvbigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJvY2Vzcy0+d2luZG93c1RvUmVjZWl2ZVNlbnRNZXNz
YWdlc1doaWxlV2FpdGluZ0ZvclN5bmNSZXBseSgpOworICAgIHJldHVybiBtX3Byb2Nlc3M7CiB9
Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmgJKHJldmlzaW9u
IDEzNTE4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQ
cm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMyICsyNiwyNyBAQAogI2lmbmRlZiBXZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3NfaAogI2RlZmluZSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3Nf
aAogCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvbm5lY3Rpb24uaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3M7CiAKLWNsYXNzIFdlYkNv
bm5lY3Rpb25Ub1VJUHJvY2VzcyA6IHB1YmxpYyBXZWJDb25uZWN0aW9uLCBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDbGllbnQgeworY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzIDogcHVibGlj
IFdlYkNvbm5lY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbm5l
Y3Rpb25Ub1VJUHJvY2Vzcz4gY3JlYXRlKFdlYlByb2Nlc3MqLCBDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBjcmVhdGUoV2ViUHJvY2VzcyopOworCisgICAgdm9p
ZCBpbnZhbGlkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNz
KFdlYlByb2Nlc3MqLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpS
dW5Mb29wKik7CisgICAgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKFdlYlByb2Nlc3MqKTsKIAog
ICAgIC8vIFdlYkNvbm5lY3Rpb24KICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlTWVzc2FnZUJvZHko
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiwgQVBJT2JqZWN0KikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIGRlY29kZU1lc3NhZ2VCb2R5KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYsIFJl
ZlB0cjxBUElPYmplY3Q+JikgT1ZFUlJJREU7Ci0KLSAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
JiwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSkgT1ZFUlJJREU7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1
YWwgVmVjdG9yPEhXTkQ+IHdpbmRvd3NUb1JlY2VpdmVTZW50TWVzc2FnZXNXaGlsZVdhaXRpbmdG
b3JTeW5jUmVwbHkoKTsKLSNlbmRpZgorICAgIHZpcnR1YWwgQ29yZUlQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNWYWxpZENvbm5l
Y3Rpb24oKSBjb25zdCBPVkVSUklERTsKIAogICAgIFdlYlByb2Nlc3MqIG1fcHJvY2VzczsKIH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDEzNTE4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4OCwxMiArMTg4LDE1IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZShDb3JlSVBDOjpDb24KIHsKICAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7CiAKLSAgICBt
X2Nvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZSh0aGlzLCBzZXJ2
ZXJJZGVudGlmaWVyLCBydW5Mb29wKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKHNlcnZlcklkZW50aWZpZXIsIHRoaXMsIHJ1
bkxvb3ApOworICAgIG1fY29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWVDYWxsYmFjayhDaGlsZFByb2Nlc3M6OmRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmUo
dHJ1ZSk7CisgICAgbV9jb25uZWN0aW9uLT5hZGRRdWV1ZUNsaWVudCgmbV9ldmVudERpc3BhdGNo
ZXIpOworICAgIG1fY29ubmVjdGlvbi0+YWRkUXVldWVDbGllbnQodGhpcyk7CisgICAgbV9jb25u
ZWN0aW9uLT5vcGVuKCk7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+YWRkUXVl
dWVDbGllbnQoJm1fZXZlbnREaXNwYXRjaGVyKTsKLSAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKS0+YWRkUXVldWVDbGllbnQodGhpcyk7CisgICAgbV93ZWJDb25uZWN0aW9uID0gV2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOjpjcmVhdGUodGhpcyk7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS0+b3BlbigpOwogICAgIG1fcnVuTG9vcCA9IHJ1bkxvb3A7CiAKICAgICBzdGFy
dFJhbmRvbUNyYXNoVGhyZWFkSWZSZXF1ZXN0ZWQoKTsKQEAgLTY2MCw2ICs2NjMsOSBAQCB2b2lk
IFdlYlByb2Nlc3M6OnRlcm1pbmF0ZSgpCiAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7
CiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKIAorICAgIG1fd2ViQ29ubmVjdGlvbi0+aW52
YWxpZGF0ZSgpOworICAgIG1fd2ViQ29ubmVjdGlvbiA9IG51bGxwdHI7CisKICAgICBwbGF0Zm9y
bVRlcm1pbmF0ZSgpOwogICAgIG1fcnVuTG9vcC0+c3RvcCgpOwogfQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDEzNTE4OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTUg
KzExNSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemUoQ29yZUlQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciwgV2ViQ29yZTo6UnVuTG9vcCopOwogCi0gICAgQ29yZUlQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpOyB9CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogICAgIFdlYkNvcmU6OlJ1bkxvb3AqIHJ1bkxv
b3AoKSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3A7IH0KIAogICAgIHZvaWQgYWRkTWVzc2FnZVJl
Y2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3Jl
SVBDOjpNZXNzYWdlUmVjZWl2ZXIqKTsKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihDb3Jl
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKik7Ci0KICAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAKLSAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nl
c3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlv
bi5nZXQoKTsgfQorICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRv
VUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CiAKICAg
ICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CiAgICAgdm9pZCBjcmVh
dGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYpOwpAQCAtMzA5LDkgKzMwOCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlclNj
aGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFdURjo6U3RyaW5nJik7CiAjZW5kaWYKIAotICAg
IFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fY29ubmVjdGlvbjsKKyAgICBSZWZQ
dHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIENvcmVJUEM6Ok1lc3Nh
Z2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKIAorICAgIFJlZlB0cjxXZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKKwogICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxXZWJQYWdlPiA+IG1fcGFnZU1hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID4gbV9wYWdlR3JvdXBNYXA7CiAgICAgUmVmUHRyPElu
amVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwo=
</data>
<flag name="review"
          id="190632"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>