<?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>154620</bug_id>
          
          <creation_ts>2016-02-23 17:42:17 -0800</creation_ts>
          <short_desc>Fix downloads when using NetworkSession</short_desc>
          <delta_ts>2016-02-25 08:46:05 -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>WebKit 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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1167618</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-23 17:42:17 -0800</bug_when>
    <thetext>Fix downloads when using NetworkSession</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167619</commentid>
    <comment_count>1</comment_count>
      <attachid>272071</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-23 17:42:35 -0800</bug_when>
    <thetext>Created attachment 272071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167620</commentid>
    <comment_count>2</comment_count>
      <attachid>272071</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-23 17:43:33 -0800</bug_when>
    <thetext>Comment on attachment 272071
Patch

This first patch fixes all the API tests, but I&apos;m not sure if everything is necessary and there&apos;s probably a better way for some of the things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167851</commentid>
    <comment_count>3</comment_count>
      <attachid>272127</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-24 11:26:44 -0800</bug_when>
    <thetext>Created attachment 272127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167906</commentid>
    <comment_count>4</comment_count>
      <attachid>272127</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-02-24 13:22:11 -0800</bug_when>
    <thetext>Comment on attachment 272127
Patch

Makes things work, doesn&apos;t break other things, it must be right; Right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167911</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-24 13:44:06 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/197050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168095</commentid>
    <comment_count>6</comment_count>
      <attachid>272127</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-25 08:46:05 -0800</bug_when>
    <thetext>Comment on attachment 272127
Patch

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

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm:281
&gt;      auto downloadID = m_downloadMap.take(taskIdentifier);
&gt; -    ASSERT(downloadID.downloadID());
&gt;      return downloadID;

In a case like this, I would like to see us remove the local variable when refactoring to remove the line of code in between.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272071</attachid>
            <date>2016-02-23 17:42:35 -0800</date>
            <delta_ts>2016-02-24 11:26:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154620-20160223174218.patch</filename>
            <type>text/plain</type>
            <size>22470</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzAwOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTAyLTIzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IGRvd25s
b2FkcyB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmRhdGFUYXNr
QmVjYW1lRG93bmxvYWRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjp3
aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OmlzRG93bmxvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5n
RG93bmxvYWQ6OmRpZENvbnZlcnRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGVuZGlu
Z0Rvd25sb2FkOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3du
bG9hZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRh
dGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OnNldFBlbmRpbmdEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjb252
ZXJ0VGFza1RvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2V0UGVu
ZGluZ0Rvd25sb2FkSUQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBlbmRp
bmdEb3dubG9hZENhbmNlbGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZp
bmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2s6OmZhaWx1cmVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFzazo6dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6c3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrOjpmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFU
YXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb246OmRvd25sb2FkSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisKIDIw
MTYtMDItMjMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXS1dlYlZpZXcgc2hvdWxkIGltcGxlbWVudCBOU0NvZGluZwpJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDE5Njk4
NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTksMTAgKzExOSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VCghbV9wZW5kaW5nRG93bmxvYWQpOwogICAgICAgICBtX3BlbmRpbmdEb3dubG9hZCA9ICZwZW5k
aW5nRG93bmxvYWQ7CiAgICAgfQotICAgIHZvaWQgZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9u
KFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CiAgICAgY29uc3QgU3RyaW5nJiBwZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpIHsg
cmV0dXJuIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb247IH0KICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgY3VycmVudFJlcXVlc3QoKTsKKyAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUo
KTsKICAgICBib29sIHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsK
ICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2Fk
KERvd25sb2FkJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwCShyZXZpc2lvbiAxOTY5ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAg
dm9pZCBOZXR3b3JrTG9hZDo6c2V0RGVmZXJzTG9hZGluZyhib29sIAogdm9pZCBOZXR3b3JrTG9h
ZDo6Y2FuY2VsKCkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGlmIChtX3Rhc2sp
CisgICAgaWYgKG1fdGFzayAmJiAhbV90YXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpLmRvd25sb2Fk
SUQoKSkKICAgICAgICAgbV90YXNrLT5jYW5jZWwoKTsKICNlbmRpZgogICAgIGlmIChtX2hhbmRs
ZSkKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb252ZXJ0VGFza1RvRG93
bmxvYWQoCiAgICAgCiAgICAgQVNTRVJUKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgaWYgKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgbV90YXNrLT5maW5k
UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oV1RGTW92ZShtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmZpbmRQZW5kaW5nRG93
bmxvYWRMb2NhdGlvbigqbV90YXNrLmdldCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpzZXRQZW5kaW5nRG93bmxvYWRJRChE
b3dubG9hZElEIGRvd25sb2FkSUQpCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0dwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgaWYgKG1fdGFzayAmJiBtX3Rhc2stPnBlbmRpbmdEb3dubG9hZElEKCkuZG93bmxvYWRJ
RCgpKQotICAgICAgICBtX3Rhc2stPmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5maW5kUGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oKm1fdGFzay5nZXQoKSwgY29tcGxldGlvbkhhbmRsZXIpOwog
ICAgIGVsc2UgaWYgKHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSkgPT0gTmV0d29y
a0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpZZXMpCiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeVVzZSk7CiAgICAgZWxzZQpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNp
b24gMTk2OTg0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCkBAIC00NzEs
MTggKzQ3MiwyMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxTZW5kUmVxCiAg
ICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2VuZFJlcXVlc3QoZG93bmxvYWRJRCwg
cmVxdWVzdCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRM
b2NhdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzaywgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCBk
b3dubG9hZElEKQoreworICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OkRvd25sb2FkUHJveHk6OkRpZENhbmNlbCh7IH0pLCBkb3dubG9hZElELmRvd25sb2FkSUQo
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlv
bihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzaywgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0g
bmV0d29ya0RhdGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCkuZG93bmxvYWRJRCgpOwogICAgIGRv
d25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRp
ZFN0YXJ0KG5ldHdvcmtEYXRhVGFzay5jdXJyZW50UmVxdWVzdCgpKSwgZGVzdGluYXRpb25JRCk7
CiAgICAgCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkud2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERl
c3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzaywgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIGRvd25s
b2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMobmV0d29ya0RhdGFUYXNrLnBl
bmRpbmdEb3dubG9hZElEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKSwgZGVzdGluYXRpb25JRCk7Cisg
ICAgZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhuZXR3b3JrRGF0
YVRhc2sucGVuZGluZ0Rvd25sb2FkSUQoKSwgbmV0d29ya0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVu
YW1lKCkpLCBkZXN0aW5hdGlvbklEKTsKIH0KICAgICAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNv
bnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCBkb3dubG9h
ZElELCBTdHJpbmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlRGVj
aWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJp
bmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSAgICBkb3dubG9hZE1hbmFn
ZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQs
IGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBkb3dubG9hZE1hbmFn
ZXIoKS5jb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQs
IGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSk7CiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAxOTY5ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHZvaWQg
ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFN0cmluZyBzdWdn
ZXN0ZWRGaWxlbmFtZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBmaW5k
UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlcik7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYpOwpAQCAtMTM4LDYgKzEzOCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERlc3Ryb3lEb3dubG9hZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9u
KiBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgQXV0aGVu
dGljYXRpb25NYW5hZ2VyJiBkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKSBvdmVycmlk
ZTsKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIHZpcnR1YWwgdm9pZCBwZW5kaW5nRG93
bmxvYWRDYW5jZWxlZChEb3dubG9hZElEKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgLy8gTWVz
c2FnZSBIYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CkBAIC0xNjIsNyArMTY1LDcg
QEAgcHJpdmF0ZToKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgY29udGludWVD
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2Fu
QXV0aGVudGljYXRlKTsKICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2Fk
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgY29udGludWVE
ZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGlu
YXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CisgICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKTsKICNl
bmRpZgogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAgICAgdm9pZCBhbGxvd1Nw
ZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAxOTY5ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
ICAgICBDb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKQogICAgIENvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKLSAgICBDb250aW51ZURlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVz
dGluYXRpb24sIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpCisgICAgQ29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihX
ZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFs
bG93T3ZlcndyaXRlKQogI2VuZGlmCiAKICAgICBTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KGJvb2wgZmxhZykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTY5ODQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsNyBAQCBzdGQ6OnBhaXI8UmVmUHRy
PE5ldHdvcmtEYXRhVGFzaz4sIHN0ZDo6CiAKICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgZG93
bmxvYWRzIHN0YXJ0ZWQgd2l0aCBjb252ZXJ0VGFza1RvRG93bmxvYWQsIG90aGVyd2lzZSBpdCB3
aWxsIHJldHVybiBudWxscHRyLgogICAgIGF1dG8gZG93bmxvYWRBZnRlckxvY2F0aW9uRGVjaWRl
ZCA9IG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQudGFrZShkb3dubG9hZElEKTsK
LSAgICAKLSAgICBBU1NFUlQoISFwZW5kaW5nRG93bmxvYWQgIT0gISFkb3dubG9hZEFmdGVyTG9j
YXRpb25EZWNpZGVkKTsKLSAgICAKKwogICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBX
VEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFdURk1vdmUoZG93
bmxvYWRBZnRlckxvY2F0aW9uRGVjaWRlZCksIFdURk1vdmUocGVuZGluZ0Rvd25sb2FkKSk7CiB9
CkBAIC05NywxMSArOTUsMTMgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlV2lsbFNl
bmRSZQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERl
c3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9kb3dubG9hZHNXYWl0aW5nRm9yRGVzdGluYXRpb24uc2V0KG5ldHdvcmtEYXRhVGFzay5wZW5k
aW5nRG93bmxvYWRJRCgpLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcj4oJm5ldHdvcmtEYXRhVGFzaywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpKTsKKyAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2su
cGVuZGluZ0Rvd25sb2FkSUQoKTsKKyAgICBhdXRvIHBlbmRpbmdEb3dubG9hZCA9IG1fcGVuZGlu
Z0Rvd25sb2Fkcy50YWtlKGRvd25sb2FkSUQpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kb3du
bG9hZHNXYWl0aW5nRm9yRGVzdGluYXRpb24uc2V0KGRvd25sb2FkSUQsIHN0ZDo6bWFrZV9wYWly
PFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyPigmbmV0
d29ya0RhdGFUYXNrLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25s
b2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25sb2FkTWFuYWdl
cjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRv
d25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQogewogICAg
IGF1dG8gcGFpciA9IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLnRha2UoZG93bmxv
YWRJRCk7CiAgICAgYXV0byBuZXR3b3JrRGF0YVRhc2sgPSBwYWlyLmZpcnN0OwpAQCAtMTExLDYg
KzExMSwxMCBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgbmV0d29ya0RhdGFUYXNrLT5zZXRQZW5kaW5nRG93bmxv
YWRMb2NhdGlvbihkZXN0aW5hdGlvbiwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgCisg
ICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIGZpbGVFeGlzdHMoZGVzdGluYXRpb24pKQorICAgICAg
ICBkZWxldGVGaWxlKGRlc3RpbmF0aW9uKTsKKwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eURvd25sb2FkKTsKICAgICAKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlv
bkRlY2lkZWQuY29udGFpbnMoZG93bmxvYWRJRCkpOwpAQCAtMTQzLDExICsxNDcsMjMgQEAgdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFNlcwogCiB2b2lkIERvd25sb2FkTWFu
YWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQogewotICAgIERvd25s
b2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKTsKLSAgICBpZiAoIWRv
d25sb2FkKQorICAgIFdURkxvZ0Fsd2F5cygiRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9h
ZCBDQUxMRUQiKTsKKyAgICBpZiAoRG93bmxvYWQqIGRvd25sb2FkID0gbV9kb3dubG9hZHMuZ2V0
KGRvd25sb2FkSUQpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRE9XTkxPQUQiKTsKKyAgICAg
ICAgZG93bmxvYWQtPmNhbmNlbCgpOwogICAgICAgICByZXR1cm47Ci0KLSAgICBkb3dubG9hZC0+
Y2FuY2VsKCk7CisgICAgfQorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgaWYgKG1fZG93
bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQuZ2V0KGRvd25sb2FkSUQpKQorICAgICAgICBX
VEZMb2dBbHdheXMoIm1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQiKTsKKyAgICBp
ZiAobV9wZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9hZElEKSkKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJtX3BlbmRpbmdEb3dubG9hZHMiKTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLmdldChkb3dubG9hZElEKS5zZWNv
bmQpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5h
dGlvbiIpOworICAgICAgICBtX2NsaWVudC5wZW5kaW5nRG93bmxvYWRDYW5jZWxlZChkb3dubG9h
ZElEKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5SWdub3JlKTsKKyAgICB9Cisj
ZW5kaWYKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxv
YWQqIGRvd25sb2FkKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMTk2OTg0KQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZERlc3Ryb3lEb3dubG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCBJUEM6
OkNvbm5lY3Rpb24qIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCkgPSAwOwogICAgICAgICB2aXJ0
dWFsIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2Vy
KCkgPSAwOworI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
ZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEKSA9IDA7CisjZW5kaWYKICAgICB9Owog
CiAgICAgZXhwbGljaXQgRG93bmxvYWRNYW5hZ2VyKENsaWVudCYpOwpAQCAtNzcsNyArODAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2UoRG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwogICAgIHZvaWQgY29u
dGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgdm9pZCB3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24o
TmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBj
b250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmlu
ZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9p
ZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0
cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBh
bGxvd092ZXJ3cml0ZSk7CiAjZWxzZQogICAgIHZvaWQgY29udmVydEhhbmRsZVRvRG93bmxvYWQo
RG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAjZW5kaWYK
QEAgLTg2LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3du
bG9hZElEKTsKICAgICAKLSAgICBEb3dubG9hZCogZG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9h
ZElEKSB7IHJldHVybiBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7IH0KKyAgICBEb3dubG9h
ZCogZG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKSB7IHJldHVybiBkb3dubG9hZElELmRv
d25sb2FkSUQoKSA/IG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKSA6IG51bGxwdHI7IH0KIAog
ICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCopOwogICAgIGJvb2wgaXNEb3dubG9h
ZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX2Rvd25sb2Fkcy5pc0VtcHR5KCk7IH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuY3BwCShyZXZpc2lvbiAxOTY3NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIAorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCkBA
IC02OSw2ICs3MCwxMSBAQCB2b2lkIFBlbmRpbmdEb3dubG9hZDo6ZGlkQ29udmVydFRvRG93bmxv
CiAgICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7CiB9CiAgICAgCit2b2lkIFBlbmRpbmdEb3du
bG9hZDo6ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkRmFpbChlcnJvciwgeyB9
KSk7Cit9CisgICAgCiBJUEM6OkNvbm5lY3Rpb24qIFBlbmRpbmdEb3dubG9hZDo6bWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKQogewogICAgIHJldHVybiBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHJl
dmlzaW9uIDE5Njc3MikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwcml2
YXRlOiAgICAKICAgICB2aXJ0dWFsIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGUgeyByZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6Ok5vOyB9OwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRl
IHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpIG92ZXJyaWRlIHsgfQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0J
KHJldmlzaW9uIDE5Njc3MikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogCisjaW1wb3J0ICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMzksNyArNDAsMTAgQEAgdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6
RGF0YVJlZgogICAgIAogdm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKIHsKLSAgICBbbV9kb3dubG9h
ZCBjYW5jZWxdOworICAgIFttX2Rvd25sb2FkIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTog
XihOU0RhdGEgKnJlc3VtZURhdGEpCisgICAgeworICAgICAgICBkaWRDYW5jZWwoSVBDOjpEYXRh
UmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZXN1bWVEYXRhIGJ5
dGVzXSksIFtyZXN1bWVEYXRhIGxlbmd0aF0pKTsKKyAgICB9XTsKIH0KIAogdm9pZCBEb3dubG9h
ZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZp
c2lvbiAxOTY5ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkzLDExICsxOTMsNiBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFzazo6ZmFpbHVyZVRpbWVyRmlyZWQoCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjpmaW5kUGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24oUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZmluZFBlbmRpbmdEb3dubG9hZExvY2F0
aW9uKCp0aGlzLCBtX3Rhc2suZ2V0KCkucmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKLX0KLQogdm9pZCBOZXR3b3JrRGF0YVRhc2s6OnNldFBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIEFTU0VSVCgh
bV9zYW5kYm94RXh0ZW5zaW9uKTsKQEAgLTIzNCw2ICsyMjksMTEgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2s6OnRyYW5zZmVyU2FuZGJveEV4dAogICAgIGRvd25sb2FkLnNldFNhbmRib3hFeHRlbnNp
b24oV1RGTW92ZShtX3NhbmRib3hFeHRlbnNpb24pKTsKIH0KIAorU3RyaW5nIE5ldHdvcmtEYXRh
VGFzazo6c3VnZ2VzdGVkRmlsZW5hbWUoKQoreworICAgIHJldHVybiBtX3Rhc2suZ2V0KCkucmVz
cG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWU7Cit9CisKIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBO
ZXR3b3JrRGF0YVRhc2s6OmN1cnJlbnRSZXF1ZXN0KCkKIHsKICAgICByZXR1cm4gW21fdGFzayBj
dXJyZW50UmVxdWVzdF07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDE5Njk4
NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4OCwxNCArMTg4LDE1IEBAIC0gKHZvaWQpVVJM
U2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5h
Z2VyID0gV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRNYW5hZ2Vy
KCk7CiAgICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93
bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCk7CiAgICAgICAgIG5ldHdvcmtEYXRh
VGFzay0+dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZCgqZG93bmxvYWQpOwotICAg
ICAgICBBU1NFUlQoV2ViQ29yZTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdE
b3dubG9hZExvY2F0aW9uKCkpKTsKLSAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0
aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7Ci0gICAgICAg
IGRvd25sb2FkLT5kaWRSZWNlaXZlUmVzcG9uc2UoW2Rvd25sb2FkVGFzayByZXNwb25zZV0pOwot
ICAgICAgICBhdXRvIHBlbmRpbmdEb3dubG9hZCA9IGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0Jl
Y2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CisgICAgICAg
IGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24oKSkpIHsKKyAgICAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlv
bihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOworICAgICAgICAg
ICAgZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShbZG93bmxvYWRUYXNrIHJlc3BvbnNlXSk7
CisgICAgICAgICAgICBhdXRvIHBlbmRpbmdEb3dubG9hZCA9IGRvd25sb2FkTWFuYWdlci5kYXRh
VGFza0JlY2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAK
LSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRCZWNvbWVEb3dubG9hZCgpOworICAgICAgICAg
ICAgbmV0d29ya0RhdGFUYXNrLT5kaWRCZWNvbWVEb3dubG9hZCgpOwogCi0gICAgICAgIF9zZXNz
aW9uLT5hZGREb3dubG9hZElEKFtkb3dubG9hZFRhc2sgdGFza0lkZW50aWZpZXJdLCBkb3dubG9h
ZElEKTsKKyAgICAgICAgICAgIF9zZXNzaW9uLT5hZGREb3dubG9hZElEKFtkb3dubG9hZFRhc2sg
dGFza0lkZW50aWZpZXJdLCBkb3dubG9hZElEKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAt
MjY4LDYgKzI2OSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OmFkZERvd25sb2FkSUQoTmV0d28K
IAogRG93bmxvYWRJRCBOZXR3b3JrU2Vzc2lvbjo6ZG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2s6
OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyKQogeworICAgIFdURlJlcG9ydEJhY2t0cmFj
ZSgpOwogICAgIEFTU0VSVChtX2Rvd25sb2FkTWFwLmdldCh0YXNrSWRlbnRpZmllcikuZG93bmxv
YWRJRCgpKTsKICAgICByZXR1cm4gbV9kb3dubG9hZE1hcC5nZXQodGFza0lkZW50aWZpZXIpOwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuY3BwCShyZXZpc2lvbiAxOTY5ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQs
OSArMTg0LDkgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdAogICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlm
ICghZGVzdGluYXRpb24uaXNOdWxsKCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICAKKwogICAgIGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBu
ZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAg
IG5ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpDb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQs
IGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CisgICAgICAgIG5ldHdv
cmtQcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpD
b250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3Rp
bmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSksIDApOwogfQog
I2Vsc2UKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9v
bCYgYWxsb3dPdmVyd3JpdGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272127</attachid>
            <date>2016-02-24 11:26:44 -0800</date>
            <delta_ts>2016-02-24 13:22:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154620-20160224112626.patch</filename>
            <type>text/plain</type>
            <size>28099</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzAzOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE2LTAyLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IGRvd25s
b2FkcyB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGZpeGVzIGFsbCB0aGUgX1dLRG93bmxvYWQgQVBJ
IHRlc3RzIHdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAg
ICAgICBXaGVuIHdlIHN0b3JlIHRoZSBOZXR3b3JrRGF0YVRhc2sgaW4gbV9kb3dubG9hZHNXYWl0
aW5nRm9yRGVzdGluYXRpb24sIHdlIHdhbnQgdG8gcmVtb3ZlIGl0cyBvd25lcgorICAgICAgICBm
cm9tIG1fcGVuZGluZ0Rvd25sb2FkcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4KKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERl
c3RpbmF0aW9uKToKKyAgICAgICAgSWYgYSBmaWxlIGV4aXN0cyBhbmQgdGhlIFVJUHJvY2VzcyBo
YXMgdG9sZCB1cyB0byBvdmVyd3JpdGUgdGhlIGZpbGUsIGRlbGV0ZSB0aGUgZmlsZQorICAgICAg
ICBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgZG93bmxvYWQgaW4gaXRzIHBsYWNlLiAgVGhpcyB1c2Vk
IHRvIGJlIGRvbmUgYnkgQ0ZOZXR3b3JrIGluCisgICAgICAgIE5TVVJMRG93bmxvYWQncyBzZXRE
ZXN0aW5hdGlvbjphbGxvd092ZXJ3cml0ZTosIGJ1dCB0aGUgTlNVUkxTZXNzaW9uIGVxdWl2YWxl
bnQgKHNldHRpbmcKKyAgICAgICAgTlNVUkxTZXNzaW9uRGF0YVRhc2sncyBfcGF0aFRvRG93bmxv
YWRUYXNrRmlsZSBhdHRyaWJ1dGUpIGRvZXMgbm90IG92ZXJ3cml0ZSB0aGUgZmlsZSBmb3IgdXMu
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQpOgorICAg
ICAgICBJZiBhIGRvd25sb2FkIGlzIGNhbmNlbGVkIHdoaWxlIGl0IGlzIHdhaXRpbmcgZm9yIGl0
cyBkZXN0aW5hdGlvbiBmcm9tIHRoZSBVSVByb2Nlc3MsIHRoZSBEb3dubG9hZAorICAgICAgICBv
YmplY3QgZG9lcyBub3QgZXhpc3QgeWV0LiAgSW5zdGVhZCwgd2UgaGF2ZSBhIGNvbXBsZXRpb24g
aGFuZGxlciBzdG9yZWQgaW4gbV9kb3dubG9hZHNXYWl0aW5nRm9yRGVzdGluYXRpb24uCisgICAg
ICAgIEluIHRoaXMgY2FzZSwgd2Ugd2FudCB0byBzZW5kIHRoZSBVSVByb2Nlc3MgYSBEb3dubG9h
ZFByb3h5OjpEaWRDYW5jZWwgbWVzc2FnZSwgd2hpY2ggSSBkaWQgdGhyb3VnaAorICAgICAgICBO
ZXR3b3JrUHJvY2Vzczo6cGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQgYmVjYXVzZSB0aGUgRG93bmxv
YWRNYW5hZ2VyIGlzIG5vdCBhIE1lc3NhZ2VTZW5kZXIsIGFuZCB0aGVuCisgICAgICAgIGNhbGwg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciB3aXRoIFBvbGljeUlnbm9yZSB0byBjYW5jZWwgdGhlIGRv
d25sb2FkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNo
ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93
bmxvYWQ6OmRpZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25s
b2FkOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxv
YWQ6OmRpZENvbnZlcnRUb0Rvd25sb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkOjpjYW5jZWwpOgorICAgICAgICBTZW5kIGEgZGlkQ2FuY2VsIG1lc3NhZ2UgdG8gdGhl
IFVJUHJvY2VzcyB3aGVuIGEgZG93bmxvYWQgd2FzIGNhbmNlbGxlZC4KKyAgICAgICAgVXNlIGNh
bmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YSBzbyB3ZSBjYW4gcmVzdW1lIGNhbmNlbGVkIGRvd25s
b2Fkcy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICBkaWRDb252ZXJ0
VG9Eb3dubG9hZCBpcyBuZWVkZWQgd2hlbiB1c2luZyBOZXR3b3JrU2Vzc2lvbiB0byB0ZWxsIHRo
ZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgbm90IHRvIGNhbGwgY2FuY2VsIG9uIHRo
ZSBOZXR3b3JrTG9hZCBhZnRlciBjb252ZXJ0aW5nIGl0IHRvIGEgZG93bmxvYWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrOjpwZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
Y29udmVydFRhc2tUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNl
dFBlbmRpbmdEb3dubG9hZElEKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgRG9uJ3QgY2FsbCBmaW5kUGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24gYXMgYSBtZXRob2Qgb24gdGhlIE5ldHdvcmtEYXRhVGFzayB0
byBhdm9pZCBtZW1vcnkgbGVha3MKKyAgICAgICAgaW4gRG93bmxvYWRNYW5hZ2VyLm1fcGVuZGlu
Z0Rvd25sb2Fkcy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZEJlY29tZURvd25s
b2FkKToKKyAgICAgICAgQ2FsbCBtX2NsaWVudC5kaWRCZWNvbWVEb3dubG9hZCB3aGljaCBpcyBi
ZWluZyBzZXBhcmF0ZWQgZnJvbSBkaWRDb252ZXJ0VG9Eb3dubG9hZC4gIFRoZSBmb3JtZXIgaXMK
KyAgICAgICAgY2FsbGVkIGFmdGVyIHRoZSBOZXR3b3JrRGF0YVRhc2sgYmVjb21lcyBhIERvd25s
b2FkLCB0aGUgbGF0dGVyIGlzIGNhbGxlZCBhcyBzb29uIGFzIAorICAgICAgICBjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQgaXMgY2FsbGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGVuZGlu
Z0Rvd25sb2FkQ2FuY2VsZWQpOgorICAgICAgICBTZW5kIGEgRG93bmxvYWRQcm94eTo6RGlkQ2Fu
Y2VsIG1lc3NhZ2Ugd2hlbiBhIHBlbmRpbmcgZG93bmxvYWQgaXMgY2FuY2VsZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZENvbnZlcnRUb0Rvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRCZWNvbWVE
b3dubG9hZCk6CisgICAgICAgIFNlcGFyYXRlIHNldHRpbmcgbV9kaWRDb252ZXJ0VG9Eb3dubG9h
ZCwgd2hpY2ggbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSB0aGUgZGlkUmVjZWl2ZVJlc3BvbnNlIGNv
bXBsZXRpb24KKyAgICAgICAgaGFuZGxlciBpcyBjYWxsZWQgdG8gdGVsbCB0aGUgTmV0d29ya1Jl
c291cmNlTG9hZGVyIG5vdCB0byBjYWxsIGNhbmNlbCBpbiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmFib3J0LAorICAgICAgICBmcm9tIGRlbGV0aW5nIHRoZSBOZXR3b3JrTG9hZCwgd2hpY2ggY2Fu
IGJlIGRvbmUgYWZ0ZXIgdGhlIE5TVVJMU2Vzc2lvbkRhdGFUYXNrIGhhcyBiZWVuIGNvbnZlcnRl
ZCB0byBhCisgICAgICAgIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzay4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrOjpmYWlsdXJlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFzazo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OnN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpjdXJyZW50UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICBUYWtlIHRoZSBkb3du
bG9hZElEIGlmIGl0IGZhaWxlZCBiZWNhdXNlIHdlIHdpbGwgcmVwb3J0IHRoYXQgZG93bmxvYWQg
YXMgZmFpbGVkIGFuZCBub3QgdXNlIGl0IGFnYWluLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6dGFrZURvd25sb2FkSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6
CisKIDIwMTYtMDItMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgTW92ZSBGb2N1c05hdmlnYXRpb25TY29wZSBpbnRvIEZvY3VzQ29udHJvbGxlci5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5Njc3MikKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDggKzIwNCw4IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnYKICAgICAvLyBVbmJsb2NrIHRoZSBVUkwgY29ubmVjdGlv
biBvcGVyYXRpb24gcXVldWUuCiAgICAgbG9hZGVyLT5uZXR3b3JrTG9hZCgpLT5oYW5kbGUoKS0+
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKICAgICAKLSAgICBsb2FkZXItPmRpZENvbnZl
cnRUb0Rvd25sb2FkKCk7CiAjZW5kaWYKKyAgICBsb2FkZXItPmRpZENvbnZlcnRUb0Rvd25sb2Fk
KCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JE
T00oU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
IHVybCwgU3RyaW5nJiByZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMTk2OTg0KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOSwxMCArMTE5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX3BlbmRpbmdEb3du
bG9hZCk7CiAgICAgICAgIG1fcGVuZGluZ0Rvd25sb2FkID0gJnBlbmRpbmdEb3dubG9hZDsKICAg
ICB9Ci0gICAgdm9pZCBmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICAgICBj
b25zdCBTdHJpbmcmIHBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkgeyByZXR1cm4gbV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbjsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjdXJyZW50
UmVxdWVzdCgpOworICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgIGJvb2wgdHJ5
UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgd2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKTsKICAg
ICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHJl
dmlzaW9uIDE5Njk4NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgTmV0d29ya0xv
YWQ6OmNvbnZlcnRUYXNrVG9Eb3dubG9hZCgKICAgICAKICAgICBBU1NFUlQobV9yZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyKTsKICAgICBpZiAobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKQot
ICAgICAgICBtX3Rhc2stPmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihXVEZNb3ZlKG1fcmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCptX3Rhc2suZ2V0KCksIFdURk1vdmUo
bV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OnNl
dFBlbmRpbmdEb3dubG9hZElEKERvd25sb2FkSUQgZG93bmxvYWRJRCkKQEAgLTIyMSw3ICsyMjEs
NyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3CiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV90YXNrICYmIG1fdGFzay0+cGVuZGluZ0Rv
d25sb2FkSUQoKS5kb3dubG9hZElEKCkpCi0gICAgICAgIG1fdGFzay0+ZmluZFBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbigqbV90YXNrLmdldCgpLCBj
b21wbGV0aW9uSGFuZGxlcik7CiAgICAgZWxzZSBpZiAoc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlKSA9PSBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2U6OlllcykKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5VXNlKTsKICAg
ICBlbHNlCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVX
aXRoRXJyb3IoYwogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRCZWNvbWVEb3dubG9hZCgpCiB7Ci0g
ICAgbV9jbGllbnQuZGlkQ29udmVydFRvRG93bmxvYWQoKTsKKyAgICBtX2NsaWVudC5kaWRCZWNv
bWVEb3dubG9hZCgpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRf
dCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVu
dC5oCShyZXZpc2lvbiAxOTY3NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbnZlcnRUb0Rvd25sb2FkKCkgPSAwOworI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZURvd25sb2Fk
KCkgPSAwOworI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENhY2hlUmVzcG9uc2VBc3luYyhDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CShyZXZpc2lvbiAxOTY5ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlci5oIgorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIK
QEAgLTQ3MSwxOCArNDcyLDIzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNl
bmRSZXEKICAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChkb3du
bG9hZElELCByZXF1ZXN0KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdE
b3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBTdHJpbmcg
c3VnZ2VzdGVkRmlsZW5hbWUsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3du
bG9hZElEIGRvd25sb2FkSUQpCit7CisgICAgZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkQ2FuY2VsKHsgfSksIGRvd25sb2FkSUQuZG93
bmxvYWRJRCgpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9h
ZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQgPSBuZXR3b3JrRGF0YVRhc2sucGVuZGluZ0Rvd25sb2FkSUQoKS5kb3dubG9hZElEKCk7
CiAgICAgZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQ
cm94eTo6RGlkU3RhcnQobmV0d29ya0RhdGFUYXNrLmN1cnJlbnRSZXF1ZXN0KCkpLCBkZXN0aW5h
dGlvbklEKTsKICAgICAKICAgICBkb3dubG9hZE1hbmFnZXIoKS53aWxsRGVjaWRlUGVuZGluZ0Rv
d25sb2FkRGVzdGluYXRpb24obmV0d29ya0RhdGFUYXNrLCBjb21wbGV0aW9uSGFuZGxlcik7Ci0g
ICAgZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhuZXR3b3JrRGF0
YVRhc2sucGVuZGluZ0Rvd25sb2FkSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEb3du
bG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKG5l
dHdvcmtEYXRhVGFzay5wZW5kaW5nRG93bmxvYWRJRCgpLCBuZXR3b3JrRGF0YVRhc2suc3VnZ2Vz
dGVkRmlsZW5hbWUoKSksIGRlc3RpbmF0aW9uSUQpOwogfQogICAgIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElE
IGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29u
dGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2Fk
SUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQogewotICAgIGRvd25s
b2FkTWFuYWdlcigpLmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oZG93
bmxvYWRJRCwgZGVzdGluYXRpb24sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGRvd25s
b2FkTWFuYWdlcigpLmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oZG93
bmxvYWRJRCwgZGVzdGluYXRpb24sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3Zlcndy
aXRlKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDE5Njk4NCkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3
ICsxMDEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0g
ICAgdm9pZCBmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiwgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2
b2lkIGZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJik7CkBAIC0xMzgsNiArMTM4LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJUEM6OkNv
bm5lY3Rpb24qIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigp
IG92ZXJyaWRlOworI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgdmlydHVhbCB2b2lkIHBl
bmRpbmdEb3dubG9hZENhbmNlbGVkKERvd25sb2FkSUQpIG92ZXJyaWRlOworI2VuZGlmCiAKICAg
ICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKQEAgLTE2Miw3
ICsxNjUsNyBAQCBwcml2YXRlOgogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBj
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCwg
Ym9vbCBjYW5BdXRoZW50aWNhdGUpOwogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3Qo
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBj
b250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmlu
ZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKICAgICB2b2lk
IGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mLCBjb25zdCBTdHJpbmcmIGhvc3QpOwpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDE5Njk4NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmUKICNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogICAgIENvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZShXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAg
ICAgQ29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQotICAgIENvbnRpbnVlRGVjaWRlUGVu
ZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0
cmluZyBkZXN0aW5hdGlvbiwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKKyAgICBDb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3Rp
bmF0aW9uKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24s
IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IGJvb2wgYWxsb3dPdmVyd3JpdGUpCiAjZW5kaWYKIAogICAgIFNldFByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoYm9vbCBmbGFnKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTY3NzIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsMTIgKzIzNywxOSBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y2xlYW51cCgpCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRD
b252ZXJ0VG9Eb3dubG9hZCgpCiB7CisgICAgQVNTRVJUKCFtX2RpZENvbnZlcnRUb0Rvd25sb2Fk
KTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAgICAgbV9kaWRDb252ZXJ0VG9Eb3dubG9h
ZCA9IHRydWU7Cit9CisgICAgCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKK3ZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRCZWNvbWVEb3dubG9hZCgpCit7CisgICAgQVNTRVJUKG1fZGlk
Q29udmVydFRvRG93bmxvYWQpOworICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKICAgICBtX25l
dHdvcmtMb2FkID0gbnVsbHB0cjsKLSNlbmRpZgogfQorI2VuZGlmCiAKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjphYm9ydCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTk2Nzcy
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsMTEgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udmVydFRvRG93bmxvYWQoKSBvdmVycmlk
ZTsKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVE
b3dubG9hZCgpIG92ZXJyaWRlOworI2VuZGlmCisgICAgCisgICAgdm9pZCBkaWRDb252ZXJ0VG9E
b3dubG9hZCgpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcihjb25zdCBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVy
Zm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwCShyZXZpc2lvbiAxOTY5ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcs
MjAgKzk3LDI2IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZVdpbGxTZW5kUmUKIAog
dm9pZCBEb3dubG9hZE1hbmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlv
bihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzaywgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZG93bmxv
YWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLnNldChuZXR3b3JrRGF0YVRhc2sucGVuZGluZ0Rvd25s
b2FkSUQoKSwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4sIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXI+KCZuZXR3b3JrRGF0YVRhc2ssIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKSk7CisgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29ya0RhdGFUYXNrLnBlbmRpbmdE
b3dubG9hZElEKCk7CisgICAgYXV0byBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9h
ZHMudGFrZShkb3dubG9hZElEKTsKKyAgICBBU1NFUlQobmV0d29ya0RhdGFUYXNrLnBlbmRpbmdE
b3dubG9hZCgpID09IHBlbmRpbmdEb3dubG9hZC5nZXQoKSk7CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5hdGlvbi5zZXQoZG93bmxvYWRJRCwgc3RkOjpt
YWtlX3BhaXI8UmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4sIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXI+KCZuZXR3b3JrRGF0YVRhc2ssIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25s
b2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUp
CiB7CiAgICAgYXV0byBwYWlyID0gbV9kb3dubG9hZHNXYWl0aW5nRm9yRGVzdGluYXRpb24udGFr
ZShkb3dubG9hZElEKTsKICAgICBhdXRvIG5ldHdvcmtEYXRhVGFzayA9IHBhaXIuZmlyc3Q7CiAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHBhaXIuc2Vjb25kOwotICAgIGlmICghbmV0d29y
a0RhdGFUYXNrIHx8ICFjb21wbGV0aW9uSGFuZGxlcikgewotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBpZiAoIW5ldHdvcmtEYXRhVGFzayB8fCAhY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CisKICAgICBuZXR3b3JrRGF0YVRhc2stPnNldFBlbmRp
bmdEb3dubG9hZExvY2F0aW9uKGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
KyAgICAKKyAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgZmlsZUV4aXN0cyhkZXN0aW5hdGlvbikp
CisgICAgICAgIGRlbGV0ZUZpbGUoZGVzdGluYXRpb24pOworCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5RG93bmxvYWQpOwogICAgIAogICAgIEFTU0VSVCghbV9kb3dubG9hZHNBZnRlckRl
c3RpbmF0aW9uRGVjaWRlZC5jb250YWlucyhkb3dubG9hZElEKSk7CkBAIC0xNDMsMTEgKzE0OSwx
NyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoU2VzCiAKIHZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCiB7Ci0g
ICAgRG93bmxvYWQqIGRvd25sb2FkID0gbV9kb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpOwotICAg
IGlmICghZG93bmxvYWQpCisgICAgaWYgKERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRz
LmdldChkb3dubG9hZElEKSkgeworICAgICAgICBkb3dubG9hZC0+Y2FuY2VsKCk7CiAgICAgICAg
IHJldHVybjsKLQotICAgIGRvd25sb2FkLT5jYW5jZWwoKTsKKyAgICB9CisjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1fZG93bmxvYWRz
V2FpdGluZ0ZvckRlc3RpbmF0aW9uLnRha2UoZG93bmxvYWRJRCkuc2Vjb25kKSB7CisgICAgICAg
IG1fY2xpZW50LnBlbmRpbmdEb3dubG9hZENhbmNlbGVkKGRvd25sb2FkSUQpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lJZ25vcmUpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKERvd25s
b2FkKiBkb3dubG9hZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHJldmlzaW9uIDE5Njk4NCkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWREZXN0cm95RG93bmxvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgSVBD
OjpDb25uZWN0aW9uKiBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpID0gMDsKICAgICAgICAgdmly
dHVhbCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdl
cigpID0gMDsKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCkgPSAwOworI2VuZGlmCiAgICAgfTsK
IAogICAgIGV4cGxpY2l0IERvd25sb2FkTWFuYWdlcihDbGllbnQmKTsKQEAgLTc3LDcgKzgwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICAgICB2b2lkIGNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZvaWQgd2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQg
Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJp
bmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZv
aWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBT
dHJpbmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wg
YWxsb3dPdmVyd3JpdGUpOwogI2Vsc2UKICAgICB2b2lkIGNvbnZlcnRIYW5kbGVUb0Rvd25sb2Fk
KERvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAkocmV2aXNpb24gMTk2NzcyKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04p
CiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzcy5oIgpAQCAtNjQsMTEgKzY1LDE2IEBAIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjpjb250aW51
ZUNhbkF1dGhlbnQKICAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGljYXRlKTsKIH0KIAotdm9pZCBQZW5kaW5n
RG93bmxvYWQ6OmRpZENvbnZlcnRUb0Rvd25sb2FkKCkKK3ZvaWQgUGVuZGluZ0Rvd25sb2FkOjpk
aWRCZWNvbWVEb3dubG9hZCgpCiB7CiAgICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7CiB9CiAg
ICAgCit2b2lkIFBlbmRpbmdEb3dubG9hZDo6ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6RGlkRmFpbChlcnJvciwgeyB9KSk7Cit9CisgICAgCiBJUEM6OkNvbm5lY3Rpb24qIFBlbmRp
bmdEb3dubG9hZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKQogewogICAgIHJldHVybiBOZXR3
b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmgJKHJldmlzaW9uIDE5Njc3MikKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTcsOCArNTcsOCBAQCBwcml2YXRlOiAgICAKICAgICB2aXJ0dWFsIFNob3VsZENvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2U6Ok5vOyB9OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91Ymxl
IGZpbmlzaFRpbWUpIG92ZXJyaWRlIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgfTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29udmVydFRvRG93bmxvYWQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIG92ZXJyaWRlOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlIHsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvRG93bmxvYWRDb2NvYS5tbQkocmV2aXNpb24gMTk2NzcyKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAKKyNp
bXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSw3ICs0MCwxMCBAQCB2b2lkIERvd25sb2Fk
OjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmCiAgICAgCiB2b2lkIERvd25sb2FkOjpjYW5jZWwo
KQogewotICAgIFttX2Rvd25sb2FkIGNhbmNlbF07CisgICAgW21fZG93bmxvYWQgY2FuY2VsQnlQ
cm9kdWNpbmdSZXN1bWVEYXRhOiBeKE5TRGF0YSAqcmVzdW1lRGF0YSkKKyAgICB7CisgICAgICAg
IGRpZENhbmNlbChJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oW3Jlc3VtZURhdGEgYnl0ZXNdKSwgW3Jlc3VtZURhdGEgbGVuZ3RoXSkpOworICAgIH1d
OwogfQogCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUoKQpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHJldmlzaW9uIDE5Njc3MikKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpIG92ZXJyaWRlIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIHZp
cnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQ2FjaGVSZXNwb25zZUFzeW5jKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlIHsg
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMTk2OTg0KQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5MywxMSArMTkzLDYgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2s6OmZhaWx1cmVUaW1lckZpcmVkKAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIE5ldHdvcmtEYXRhVGFzazo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbigqdGhpcywgbV90
YXNrLmdldCgpLnJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7
Ci19Ci0KIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihj
b25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICAgICBBU1NFUlQoIW1fc2FuZGJveEV4dGVu
c2lvbik7CkBAIC0yMzQsNiArMjI5LDExIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjp0cmFuc2Zl
clNhbmRib3hFeHQKICAgICBkb3dubG9hZC5zZXRTYW5kYm94RXh0ZW5zaW9uKFdURk1vdmUobV9z
YW5kYm94RXh0ZW5zaW9uKSk7CiB9CiAKK1N0cmluZyBOZXR3b3JrRGF0YVRhc2s6OnN1Z2dlc3Rl
ZEZpbGVuYW1lKCkKK3sKKyAgICByZXR1cm4gbV90YXNrLmdldCgpLnJlc3BvbnNlLnN1Z2dlc3Rl
ZEZpbGVuYW1lOworfQorCiBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgTmV0d29ya0RhdGFUYXNr
OjpjdXJyZW50UmVxdWVzdCgpCiB7CiAgICAgcmV0dXJuIFttX3Rhc2sgY3VycmVudFJlcXVlc3Rd
OwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAxOTY5ODQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzQsOSArMTM0LDEyIEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxT
ZXNzaW9uICopc2Vzc2kKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Np
b24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcih0YXNrLnRhc2tJZGVudGlmaWVyKSkKICAgICAgICAg
bmV0d29ya0RhdGFUYXNrLT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvcik7Ci0gICAgZWxzZSBp
ZiAoYXV0byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5k
b3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChfc2Vzc2lvbi0+ZG93bmxvYWRJRCh0YXNrLnRhc2tJ
ZGVudGlmaWVyKSkpIHsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgZG93bmxvYWQt
PmRpZEZhaWwoZXJyb3IsIHsgfSk7IC8vIEZJWE1FOiBHaXZlIHNvbWUgYWN0dWFsIGRhdGEgaGVy
ZSBmb3IgcmVzdW1pbmcuCisgICAgZWxzZSBpZiAoZXJyb3IpIHsKKyAgICAgICAgYXV0byBkb3du
bG9hZElEID0gX3Nlc3Npb24tPnRha2VEb3dubG9hZElEKHRhc2sudGFza0lkZW50aWZpZXIpOwor
ICAgICAgICBpZiAoZG93bmxvYWRJRC5kb3dubG9hZElEKCkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBkb3dubG9hZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25s
b2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKQorICAgICAgICAgICAgICAgIGRvd25s
b2FkLT5kaWRGYWlsKGVycm9yLCB7IH0pOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0yNzUs
NyArMjc4LDYgQEAgRG93bmxvYWRJRCBOZXR3b3JrU2Vzc2lvbjo6ZG93bmxvYWRJRChOZQogRG93
bmxvYWRJRCBOZXR3b3JrU2Vzc2lvbjo6dGFrZURvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrOjpU
YXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGRvd25sb2FkSUQgPSBt
X2Rvd25sb2FkTWFwLnRha2UodGFza0lkZW50aWZpZXIpOwotICAgIEFTU0VSVChkb3dubG9hZElE
LmRvd25sb2FkSUQoKSk7CiAgICAgcmV0dXJuIGRvd25sb2FkSUQ7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cAkocmV2aXNpb24gMTk2OTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDkgKzE4NCw5IEBAIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXQKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWRlc3RpbmF0aW9u
LmlzTnVsbCgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGlu
YXRpb24sIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7Ci0gICAgCisKICAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3Mg
PSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBuZXR3b3JrUHJvY2Vz
cy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29udGludWVE
ZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihkb3dubG9hZElELCBkZXN0aW5hdGlvbiwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29udGludWVEZWNpZGVQ
ZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihkb3dubG9hZElELCBkZXN0aW5hdGlvbiwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3JpdGUpLCAwKTsKIH0KICNlbHNlCiB2b2lkIERv
d25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wmIGFsbG93T3Zlcndy
aXRlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCg==
</data>
<flag name="review"
          id="296925"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>